fix(artifacts): register RETROSPECTIVE.md as canonical planning artifact (#3200)
* fix(artifacts): register RETROSPECTIVE.md as canonical planning artifact Adds RETROSPECTIVE.md to CANONICAL_EXACT in artifacts.cjs so gsd-health no longer raises W019 after any /gsd-complete-milestone run. The file was established as a living artifact in PR #644 but omitted from the W019 registry created in PR #2488. Closes #3198 * chore(changeset): point pr metadata to #3200
This commit is contained in:
5
.changeset/3198-retrospective-canonical.md
Normal file
5
.changeset/3198-retrospective-canonical.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
type: Fixed
|
||||
pr: 3200
|
||||
---
|
||||
`gsd-health` no longer raises W019 for `RETROSPECTIVE.md` — the file is now registered in `CANONICAL_EXACT` in `artifacts.cjs`, matching its established status as a living artifact produced by `/gsd-complete-milestone`.
|
||||
@@ -22,6 +22,7 @@ const CANONICAL_EXACT = new Set([
|
||||
'THREADS.md',
|
||||
'config.json',
|
||||
'CLAUDE.md',
|
||||
'RETROSPECTIVE.md',
|
||||
]);
|
||||
|
||||
// Pattern-match canonical file names (regex tests on the basename)
|
||||
|
||||
@@ -22,6 +22,7 @@ These files live directly at `.planning/` — not inside phase subdirectories.
|
||||
| `THREADS.md` | *(inline)* | `/gsd-thread` | Persistent discussion threads |
|
||||
| `config.json` | `config.json` | `/gsd-new-project`, `/gsd-health --repair` | Project-specific GSD configuration |
|
||||
| `CLAUDE.md` | `claude-md.md` | `/gsd-profile` | Auto-assembled Claude Code context file |
|
||||
| `RETROSPECTIVE.md` | *(inline)* | `/gsd-complete-milestone` | Living milestone retrospective updated at each milestone close |
|
||||
|
||||
### Version-stamped artifacts (pattern: `vX.Y-*.md`)
|
||||
|
||||
|
||||
@@ -47,6 +47,10 @@ describe('artifacts.cjs — isCanonicalPlanningFile', () => {
|
||||
assert.ok(isCanonicalPlanningFile('v2.3.1-MILESTONE-AUDIT.md'));
|
||||
});
|
||||
|
||||
test('returns true for RETROSPECTIVE.md (produced by /gsd-complete-milestone)', () => {
|
||||
assert.strictEqual(isCanonicalPlanningFile('RETROSPECTIVE.md'), true);
|
||||
});
|
||||
|
||||
test('returns false for clearly non-canonical names', () => {
|
||||
assert.strictEqual(isCanonicalPlanningFile('MY-NOTES.md'), false);
|
||||
assert.strictEqual(isCanonicalPlanningFile('scratch.md'), false);
|
||||
|
||||
Reference in New Issue
Block a user