2.2 KiB
Round 2: spec-revocation-check — --tag must scope the malformed-marker check
Rules
Same as round 1 (context/briefs/spec-revocation-check.md): stay in the worktree, don't push, don't work
around permission prompts, stdlib only, spec-first (update specs/spec-revocation-check.spec.md in the same
commit). Do not commit scripts/__pycache__/* changes (a tracked .pyc gets regenerated by run-all —
git checkout -- scripts/__pycache__ before committing; the supervisor gate fails on a dirty tree).
Defect (found by running round 1 on a real repo)
Run against a real amended repo with --tag M33, the script reported 57 "malformed markers" — every one a
valid revocation of a DIFFERENT tag or the untagged form, e.g.
*(Amended M23: … — Revokes prior text: "the values.yaml accelerator: key is informational only …".)*
or > **Revokes prior text:** the pre-2026-09-23 wording named the keys (an older free-prose style).
With --tag X, the user is asking to check tag X's amendment only.
Required behaviour
- With
--tag X: only lines containing the literalRevokes prior text (X)are parsed; such a line that does not parse is malformed. Lines with other tags, untagged markers or free-prose styles are ignored entirely (not counted, not reported), and their quotes are NOT used to cover deletions either. - Without
--tag: current behaviour (any tag + untagged form), but free-prose markers with no quote (e.g.**Revokes prior text:** the pre-… wording) are reported as malformed only with--strict; default is to count them in the summary asignored (unquoted-style)without failing. - Summary line gains the ignored count.
- Tests: add a fixture reproducing the real case (an older untagged mid-line marker, an M23-tagged marker
and a free-prose
**Revokes prior text:**line alongside a valid(M33)amendment) →--tag M33exits 0; a malformed(M33)line → exits 1; no--tag→ the free-prose line is ignored by default and malformed with--strict. Prove the new negatives fail with the check disabled, as in round 1.
Done when
./tests/test-spec-revocation-check.sh passes on a CLEAN tree; report files, tests, open questions.