mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-07 05:56:41 +02:00
v1.26.1.0 fix: gbrain-sync orchestrator resolves sibling via import.meta.dir (#1312)
* fix: gbrain-sync orchestrator resolves brain-sync sibling via import.meta.dir Codex M9: runBrainSyncPush hardcoded ~/.claude/skills/gstack/bin/gstack-brain-sync, so any host that wasn't Claude Code (Codex CLI, dev workspace) hit the existsSync guard and silently skipped curated-artifact push. Replace with the sibling-resolution pattern already in runMemoryIngest at line 193. Regression test asserts the orchestrator no longer takes the lying-skip path when HOME has no ~/.claude/skills/gstack tree. * chore: bump plan-review preamble ratchet + regenerate ship goldens The 33 KB preamble byte budget hadn't been bumped through v1.25.1.0 (AskUserQuestion recommendation pattern) and v1.26.0.0 (gbrain sync block). plan-ceo-review SKILL.md sat at 33,018 bytes — 18 over the ratchet. Comment in the test already authorizes this kind of intentional-growth bump. Lifted to 34 KB which gives ~700 B of headroom for the next preamble change. claude-ship-SKILL.md and factory-ship-SKILL.md golden fixtures regenerated against the live /ship template — v1.25.1.0 added the canonical "Recommendation: <action> because ..." line to the adversarial subagent prompts but the goldens were never re-baked. * chore: bump version and changelog (v1.26.1.0) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -137,4 +137,26 @@ describe("gstack-gbrain-sync CLI", () => {
|
||||
expect(state.last_stages.length).toBe(0);
|
||||
rmSync(home, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
it("brain-sync stage resolves the sibling binary, not a HOME-rooted path", () => {
|
||||
// Regression for Codex M9: pre-fix the orchestrator looked up
|
||||
// ~/.claude/skills/gstack/bin/gstack-brain-sync, which silently no-op'd
|
||||
// on Codex installs and dev workspaces with the misleading summary
|
||||
// "skipped (gstack-brain-sync not installed)". Post-fix it resolves
|
||||
// a sibling via import.meta.dir and actually invokes the script.
|
||||
const home = makeTestHome();
|
||||
const gstackHome = join(home, ".gstack");
|
||||
mkdirSync(gstackHome, { recursive: true });
|
||||
|
||||
const r = runScript(
|
||||
["--incremental", "--no-code", "--no-memory", "--quiet"],
|
||||
{ HOME: home, GSTACK_HOME: gstackHome },
|
||||
);
|
||||
|
||||
// Don't assert exit code (sibling spawn may legitimately error in a
|
||||
// sandboxed test). Assert only that we did NOT take the lying-skip path.
|
||||
const combined = r.stdout + r.stderr;
|
||||
expect(combined).not.toContain("skipped (gstack-brain-sync not installed)");
|
||||
rmSync(home, { recursive: true, force: true });
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user