fix(#1865): runtime launcher honors CLAUDE_CONFIG_DIR (#2024)

* fix(#1865): runtime launcher honors CLAUDE_CONFIG_DIR

The gsd_run preamble resolved the Claude global install only at
$HOME/.claude/gsd-core/bin/, but the installer honors CLAUDE_CONFIG_DIR —
so a global install redirected via CLAUDE_CONFIG_DIR was invisible to every
gsd_run call (every command failed with 'gsd-tools.cjs not found').

The Claude resolver arm now uses ${CLAUDE_CONFIG_DIR:-$HOME/.claude},
matching the installer + the other runtimes' ${VAR:-default} pattern.
Default $HOME/.claude behavior is unchanged.

- _runtime-launcher.snippet.sh: Claude arm honors CLAUDE_CONFIG_DIR.
- sync-runtime-launcher.cjs re-run: 95 workflows/agents re-synced.
- review.md / discuss-phase.md: trimmed to stay under their byte budgets.
- runtime-launcher-parity.test.cjs: (A) substring updated for the new form
  + explicit #1865 assertion that the snippet honors CLAUDE_CONFIG_DIR.
- goldens + size baselines recaptured.

Closes #1865

* docs(#1865): backfill changeset pr 2024
This commit is contained in:
Tom Boucher
2026-07-05 14:20:52 -04:00
committed by GitHub
parent 0656f2e831
commit a62079b2da
115 changed files with 1656 additions and 1643 deletions

View File

@@ -1622,13 +1622,21 @@ describe('bug-444: resolver finds repo-local .claude install', () => {
`Found snippet content:\n${content.trim()}`,
);
// Must still contain the $HOME/.claude fallback arm
const homeClaudeIdx = content.indexOf('$HOME/.claude/gsd-core/bin/');
// Must still contain the $HOME/.claude fallback arm (#1865: now carried as
// the ${CLAUDE_CONFIG_DIR:-$HOME/.claude} fallback, so match the stem).
const homeClaudeIdx = content.indexOf('$HOME/.claude');
assert.ok(
homeClaudeIdx !== -1,
`Snippet must still contain the $HOME/.claude fallback arm.`,
);
// #1865: the Claude arm must honor CLAUDE_CONFIG_DIR (the installer writes
// there when it is set), with $HOME/.claude as the fallback.
assert.ok(
content.includes('${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/'),
`Snippet's Claude arm must honor CLAUDE_CONFIG_DIR via \${CLAUDE_CONFIG_DIR:-$HOME/.claude}.`,
);
// Repo-local check must appear BEFORE $HOME/.claude check (local overrides global)
assert.ok(
localClaudeIdx < homeClaudeIdx,