Commentary Section - #282
Conversation
Rename the section to say what it holds rather than which pipeline stage it is addressed to, and remove the /speckit.specify hand-off a docs-tidy commit invented: /speckit.specify takes a natural-language description and has no notion of a GitHub issue, so nothing ever read it. Drop the duplicate routing rule in the Technical gaps paragraph alongside it. State the boundary the section never had — source, not force, decides: a fact already true of the codebase is commentary however binding it proves to be, while a choice only the author can make or an obligation this issue would newly impose is a numbered gap. Add the filter that gates what reaches the section at all: non-obviousness, so a bullet restating a rule the implementer already holds, or amounting to "nothing to do here", is left out. Remove the two examples the filter bans (acceptance-scenario naming conventions from CLAUDE.md, and test-structure conventions) and add a local-convention example the filter is meant to admit.
Blocker: the frontmatter example asserted a convention this repo does not have — 6 of 31 files under .claude/commands/ and .claude/skills/ match "a single description: line", and this file has no frontmatter at all. /speckit.reviewissue posts publicly and its CI workflow tells the agent to cite real conventions, so the example invited publishing a false one. Replaced with an illustration that asserts nothing about this repo. Also: narrow "hands nothing on to a later command", which was false — speckit.draftissue.md:37 ingests the whole speckit:review comment as brief material. Only the claim that nothing parses the section is true. Make the boundary decidable: a pre-existing convention that this issue is merely the first to trigger stayed ambiguous between the two halves of the rule, and anything wrongly pushed out of commentary becomes a numbered gap that must manufacture a question and an answer for confirmissue to fold in. Remove three restatements the section did not need — a second definition at line 74, the no-answer property stated three times over, and an omit rule the template already carries. Stating one rule twice in two wordings is the drift this issue exists to correct. Rename the last straggler: the chat-output line still counted "notes", and asked for a count of a section that is now often absent by design.
|
@claude Review this pull request. Analyse the code changes and provide feedback covering:
End the review with a recommendation whether to merge the PR, and if not, what you suggest needs addressing first. |
|
Claude finished @FrankRay78's task in 2m 47s —— View job Review
Scope: Bugs / correctnessNone found. I independently re-verified the claims in the PR description rather than taking them on trust:
One pre-existing wart, correctly not fixed here and explicitly called out as deferred in the PR body: the SecurityNone applicable — markdown/prompt-only change, no code execution paths, no secrets. CLAUDE.md / constitution adherence
Test coverageAdequate for the change's nature. Since this is a prompt file, not production code, "tests" are the grep-based RED/GREEN evidence — and it's real: I reproduced the GREEN grep independently against the actual committed Spec/test-plan mismatchesNone — this issue has no RecommendationMerge. The change is small, self-contained, already went through one review-and-fix cycle ( |
Why
/speckit.reviewissueemitted a section called Notes for SDD — a name that describes a pipeline stage rather than its content, and that only resolves for a reader who already knows the answer. A "Speckit Docs Tidy" commit (e2996b0) had also given it a second flavour: items "deferred to/speckit.specify". That hand-off never worked and never could —/speckit.specifyis stock spec-kit taking a natural-language description via$ARGUMENTS, with no notion of a GitHub issue, a comment or a review. The same commit stated the deferral rule twice, in two different wordings, two paragraphs apart.The section also had no written boundary and no bar for entry, so it had already absorbed content outside its own definition once and was carrying bullets of the right kind and no value ("three hooks will fire, all of them no-ops here").
What changes
/speckit.specifyhand-off is gone, along with the duplicate routing rule that expressed the same drift without naming a destination.RED–GREEN evidence
Constitution Principle I's configuration/tooling carve-out applies: this is a prompt, so the evidence is the real check failing and then passing, not a bespoke test. No hand-rolled checker was written.
RED — before the change:
GREEN — after:
Full suite green throughout: 648 passed, 0 failed, 0 skipped, 0 warnings.
dotnet format styleanddotnet format whitespaceboth exit 0 with no changes.Non-obvious things a reviewer should know
6c5cbc3, not in the original commit. The first draft added an example bullet asserting "frontmatter in this repo is a singledescription:line". That is true of 6 of the 31 files under.claude/commands/and.claude/skills/— andspeckit.reviewissue.mditself carries no frontmatter at all, so the file asserted a convention it violated. It matters beyond tidiness: this command posts to a public issue, and.github/workflows/speckit-reviewissue.yml:106instructs the CI agent that "the review must cite real paths and real conventions from this repository". The example is now an illustration that asserts nothing about this repo.speckit.draftissue.md:37ingests the whole<!-- speckit:review -->comment as brief material in migration mode, so only the parsing claim is true./speckit.confirmissueto fold into the issue body as a Confirmed decision./speckit.confirmissueis untouched and unaffected. It keys on**N. <title>**blocks ending in> _Answer:_and on the two gap headings; Commentary is unnumbered plain bullets with no answer slot, under a heading it never reads.:172(Commentary) and:161(Technical gaps) sit inside the fenced block that defines the posted comment body, where sibling blockquotes are literal published output. Fixing it properly means touching the pre-existing Technical-gaps guard, which is a second mission.docs/study/279.mdrecords six findings from this branch — five Execution, one Plan-spec.How to verify
grep -nEi "\bnotes?\b|Notes for SDD" .claude/commands/speckit.reviewissue.mdreturns nothing.git diff main...HEAD --name-onlylists only.claude/commands/speckit.reviewissue.mdanddocs/study/279.md— no other command file changed.CLAUDE.mdor the constitution.Related
Closes #279
/speckit.reviewissueand should land on the corrected name and the stated boundary..claude/commands/speckit.confirmissue.md— the downstream consumer, unchanged, whose parser constrains the template.