fix: operational-learning fixture copies lib/jsonl-store.ts with the bin

gstack-learnings-log imports $SCRIPT_DIR/../lib/jsonl-store.ts (hasInjection,
v1.57.5.0) — copying only the bin scripts into the temp fixture broke the
script with exit 1 since then. Latent because diff-based selection rarely
runs this test; surfaced when hermetic-env.ts joined GLOBAL_TOUCHFILES and
selected everything. Reproduced outside the hermetic env to confirm blame.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-06-12 15:27:19 -07:00
parent 778042be5c
commit 6b715c7fb6
+5 -1
View File
@@ -192,13 +192,17 @@ Report the exact output — either "READY: <path>" or "NEEDS_SETUP".`,
run('git', ['add', '.']);
run('git', ['commit', '-m', 'initial']);
// Copy bin scripts
// Copy bin scripts — preserving the bin/../lib layout:
// gstack-learnings-log imports $SCRIPT_DIR/../lib/jsonl-store.ts
// (hasInjection, added v1.57.5.0), so the lib must travel with the bin.
const binDir = path.join(opDir, 'bin');
fs.mkdirSync(binDir, { recursive: true });
for (const script of ['gstack-learnings-log', 'gstack-slug']) {
fs.copyFileSync(path.join(ROOT, 'bin', script), path.join(binDir, script));
fs.chmodSync(path.join(binDir, script), 0o755);
}
fs.mkdirSync(path.join(opDir, 'lib'), { recursive: true });
fs.copyFileSync(path.join(ROOT, 'lib', 'jsonl-store.ts'), path.join(opDir, 'lib', 'jsonl-store.ts'));
// gstack-learnings-log will create the project dir automatically via gstack-slug