Skip to content

Extend the evidence-exception bound guard to the shipped document set #668

Description

@BaseInfinity

tests/test-evidence-exception-bound.sh (shipped in PR #615, issue #608) guards the evidence-exception bound in one file: CLAUDE_CODE_SDLC_WIZARD.md.

The predecessor it replaced scanned a document setfor f in FILES: — and #606's history is a count of restatements across documents. @webbrain-one's original snippet said the rule must be stated once and that "every other document must either use this line verbatim or reference it."

So the guard is narrower than the problem it inherited. Concretely, skills/sdlc/SKILL.md restates the rule and carries no [bound: CANONICAL:evidence-exception-bound] token. That file ships (package.json files, confirmed in npm pack --dry-run), so a consumer can read an unbound restatement of a rule whose whole point is that it is bounded.

This was deliberately left out of #615. #608's stated merge bar names the shipped wizard doc singular, and extending the scan to the doc set would have failed the guard across several files at once and cascaded edits through a PR that already carried five review findings. Widening scope mid-card is the failure the scope rule exists to stop.

What this issue is

Extend the guard's file list to the shipped document set, and mark the restatements it finds.

Acceptance criteria

  1. Enumerate every shipped file that restates the bound. Start from npm pack --dry-run output, not from the files field — npm auto-includes paths the field does not name.
  2. Decide per file whether the restatement should carry the token or be deleted in favour of a reference. A document that does not need to restate the rule should not restate it — that is the lesson of the diagram caption in fix: Guard the evidence-exception bound by construction, not by regex over prose #615, where the fix was to stop paraphrasing rather than to annotate the paraphrase.
  3. cowork/skills/sdlc/SKILL.md must stay byte-identical to skills/sdlc/SKILL.md; tests/test-cowork-drift.sh enforces this.
  4. Add a mutation per newly-scanned file proving the guard fails when that file's restatement is unbound. The existing harness reports the rejection reason per mutation, so a wrong-reason catch is visible — keep that property.
  5. Watch skills/sdlc/SKILL.md's size (~42kB, and skill listings are budget-clamped — see Audit: is the SDLC harness a workflow written as a skill? (sequencing and state vs atomic capability) #665). Prefer replacing a restatement with a reference over adding annotation on top of it.

Sequencing

Backlog. Not a v2.0.0 blocker: the bound is correctly stated and guarded in the doc that #608 named, and the residual is a doc-set consistency gap rather than a wrong rule.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions