fix(bridge): give plan.md a reader, and close six more one-instance-named gaps - #3
Merged
Merged
Conversation
…amed gaps Follow-up audit of 1.2.0 for the defect shape that produced the plan.md bug: an instruction naming ONE instance where it means a CLASS, so the rule is honored for the thing it names and silently ignored for its siblings. Seven findings, all verified on disk. The 1.2.0 fix was itself incomplete, in exactly this shape — it amended one of the two places the §7 rule lives: - templates/verify.md carried the same unqualified "blank = PASS" sentence that schema.yaml was corrected to qualify. The template is what the verifier writes into, so the schema's caveat was defeated by its own template. Now qualified in both. - 1.2.0 added prose, not a reader. Nothing mechanically detected an unmaintained plan.md, so the new caveat was unenforced: PRECHECK grepped tasks.md alone. A ledger nobody reads is a ledger nobody maintains — that is why plan.md rotted while tasks.md never did. PRECHECK gains command 3 over plan.md (`[x]` or `[~]`, so an all-deferred plan still passes), and verify §2 now reports both files separately, because a ticked tasks.md beside an empty plan.md is the signature of a bookkeeping miss rather than unfinished work. Retroactively tested: command 3 returns 20 on a maintained plan.md, and 0 on both known instances of the bug — the pristine template and the 2026-07-02 correctness-pass plan, whose 53 boxes were never ticked while its work shipped. Also fixed, same shape: - The front-door leak detector watched `docs/superpowers/specs/` while the schema redirects `docs/superpowers/plans/` too, and both READMEs and both adopter fragments list both paths as leaks. A plans/ leak was invisible; observed live in a real cycle, where §6 reported one of the two files present. Both paths now checked (schema + template + prose). - The `<change-name>` substitution note sat on the verify PRECHECK only, while the retrospective PRECHECK has identical literal placeholders — an agent runs `test -f .../<change-name>/verify.md`, fails, and STOPs a passing cycle. Note added there. - retrospective §4's skill table omitted `openspec-verify-change`, the one skill with a documented manual fallback, so the skipped-skill discipline could never fire for the skip most likely to happen. Added to the table, and to apply step 0 as a WARNING (not a STOP, since the fallback exists). - Both READMEs still quoted the pre-fix indent-blind `grep -c '^- \[x\]'`, and now also carry the plan.md gate. - Both READMEs cited schema.yaml by line number (35-39 / 180-182; actual 38-41 / 181-183). Replaced with named blocks — line numbers are the same rot in miniature. VERSION 1.2.0 → 1.3.0 (new mechanical gate). Validated: `openspec schema validate superpowers-bridge` passes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up audit of 1.2.0 for the defect shape that produced the plan.md
bug: an instruction naming ONE instance where it means a CLASS, so the
rule is honored for the thing it names and silently ignored for its
siblings. Seven findings, all verified on disk.
The 1.2.0 fix was itself incomplete, in exactly this shape — it amended
one of the two places the §7 rule lives:
sentence that schema.yaml was corrected to qualify. The template is
what the verifier writes into, so the schema's caveat was defeated by
its own template. Now qualified in both.
unmaintained plan.md, so the new caveat was unenforced: PRECHECK
grepped tasks.md alone. A ledger nobody reads is a ledger nobody
maintains — that is why plan.md rotted while tasks.md never did.
PRECHECK gains command 3 over plan.md (
[x]or[~], so anall-deferred plan still passes), and verify §2 now reports both files
separately, because a ticked tasks.md beside an empty plan.md is the
signature of a bookkeeping miss rather than unfinished work.
Retroactively tested: command 3 returns 20 on a maintained plan.md, and
0 on both known instances of the bug — the pristine template and the
2026-07-02 correctness-pass plan, whose 53 boxes were never ticked while
its work shipped.
Also fixed, same shape:
docs/superpowers/specs/whilethe schema redirects
docs/superpowers/plans/too, and both READMEsand both adopter fragments list both paths as leaks. A plans/ leak was
invisible; observed live in a real cycle, where §6 reported one of the
two files present. Both paths now checked (schema + template + prose).
<change-name>substitution note sat on the verify PRECHECK only,while the retrospective PRECHECK has identical literal placeholders —
an agent runs
test -f .../<change-name>/verify.md, fails, and STOPs apassing cycle. Note added there.
openspec-verify-change, theone skill with a documented manual fallback, so the skipped-skill
discipline could never fire for the skip most likely to happen. Added
to the table, and to apply step 0 as a WARNING (not a STOP, since the
fallback exists).
grep -c '^- \[x\]', and now also carry the plan.md gate.38-41 / 181-183). Replaced with named blocks — line numbers are the
same rot in miniature.
VERSION 1.2.0 → 1.3.0 (new mechanical gate).
Validated:
openspec schema validate superpowers-bridgepasses.Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com