* Match `gsd-sdk query commit` in graphify auto-update hook (#3653) The PostToolUse Bash hook only substring-matched direct shell git ops in tool_input.command. `gsd-sdk query commit` invokes git via spawnSync, so the literal "git commit" never appears in the Bash tool's command string and the hook silently skipped every SDK-issued commit. Result: .planning/graphs/ drifted stale after every phase that closed via gsd-sdk query commit, with no error and no log. Gate 2 now also matches `gsd-sdk query commit`. Other SDK verbs (phase.complete, roadmap.update-plan-progress, state.begin-phase) do not invoke git themselves and remain non-matching to avoid spurious rebuilds per state mutation. Adds positive + negative matcher tests. * Fix changeset frontmatter for #3658 `type: Bug Fix` rejected by scripts/changeset/parse.cjs ALLOWED_TYPES (Keep a Changelog values: Added/Changed/Deprecated/Removed/Fixed/Security). Switch to `type: Fixed` and add `pr: 3658` required by MISSING_PR check. docs-lint now reports `ok_no_triggering_fragments` locally. * fix(#3658): bound graphify SDK commit matcher * fix(#3658): exempt release note docs lint
1.1 KiB
type, pr
| type | pr |
|---|---|
| Fixed | 3658 |
gsd-graphify-update.sh now matches gsd-sdk query commit (#3653) — the PostToolUse auto-update hook previously substring-matched only direct shell git ops in tool_input.command. Because gsd-sdk query commit invokes git via spawnSync('git', [...]) rather than through a shell, the literal git commit never appears in the Bash tool's command string, and the hook silently skipped every SDK-issued commit — including the phase.complete-following commit that closes every phase. Result: .planning/graphs/ drifted stale by one or more commits at the end of every phase, with no error and no log. Gate 2 now also accepts the exact gsd-sdk query commit command shape, which is the user-facing invocation that triggers the SDK-internal spawnSync('git', 'commit', ...), without matching sibling verbs such as commit-to-subrepo. Other gsd-sdk query verbs (phase.complete, roadmap.update-plan-progress, state.begin-phase) do not invoke git themselves and remain non-matching to avoid spurious rebuilds per state mutation.