fix(881): the docstring quoted an outcome the branch had already narrowed
The `Claim` docstring motivated the GREEN direction by enumerating three corpus
sites and restating what each asserts. The middle restatement said
`scripts/check-doc-narrative.py` "says removing its `/dev/null` arm reddens no
test" — the universal a9341d841 removed from that file when it narrowed the
comment to the scope the harness actually executes
("`test_check_doc_narrative.py` stays green with this arm removed"). The
docstring was written before that narrowing and kept re-asserting the wider
claim, attributed to a file that no longer makes it: `git grep -F "reddens no
test"` returned exactly one hit, the line asserting it. That is #881's own
defect #2 reproduced inside the fix.
Restating an outcome is what makes it drift, so the enumeration now names the
three sites and the mutation each describes, states the shape they share, and
says why the outcome wording is not repeated. The only two copies of that
outcome left in the tree are the site comment and the `CLAIMS` quote bound to
it, which is the binding by construction. Both other members were re-checked
today and hold: `.gitea/workflows/review-verdict.yml:2411` and
`scripts/tests/hook_fire_isolation.py:82`.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QqCpYFsKgnAnx6jVwrKiV
This commit is contained in:
@@ -124,15 +124,17 @@ class Claim:
|
||||
|
||||
`outcome` is `RED` or `GREEN`, and the GREEN direction is why this is not just another `Mutation`.
|
||||
A `MUTATION` row always claims a red, so the harness only ever had to recognise one. Prose does
|
||||
not, and the corpus carries the other direction too: `.gitea/workflows/review-verdict.yml` says of
|
||||
one arm that disarming it alone reddens nothing, `scripts/check-doc-narrative.py` says removing
|
||||
its `/dev/null` arm reddens no test, and `scripts/tests/hook_fire_isolation.py` says deleting a
|
||||
dead branch left that branch's own test green. Each is a claim that a mutation is NOT noticed,
|
||||
and the rule "declare it or do not write it" is unsatisfiable for them unless the harness can
|
||||
execute a negative. A GREEN entry therefore carries NO `expect`: there is no failing run to read a
|
||||
diagnostic out of, and the three things that could make a green vacuous — a run that errored, a
|
||||
run in which nothing passed, and a proof that never reaches the mutated clause at all — are
|
||||
checked in `verify_claim` instead.
|
||||
not, and the corpus carries the other direction too: `.gitea/workflows/review-verdict.yml`,
|
||||
`scripts/check-doc-narrative.py` and `scripts/tests/hook_fire_isolation.py` each name a mutation —
|
||||
an arm disarmed on its own, an arm removed, a dead branch deleted — and assert that nothing
|
||||
notices it. How each of those sentences words its outcome is deliberately not repeated here: a
|
||||
restatement is a second copy of an outcome, free to drift from the site while the entry that
|
||||
executes it stays green, which is the drift a `Claim` exists to close. What they share is the
|
||||
shape — a claim that a mutation is NOT noticed — and for that shape the rule "declare it or do
|
||||
not write it" is unsatisfiable unless the harness can execute a negative. A GREEN entry therefore
|
||||
carries NO `expect`: there is no failing run to read a diagnostic out of, and the three things
|
||||
that could make a green vacuous — a run that errored, a run in which nothing passed, and a proof
|
||||
that never reaches the mutated clause at all — are checked in `verify_claim` instead.
|
||||
|
||||
THE THIRD OF THOSE IS WHAT MAKES A GREEN READABLE, and it needs its own declaration. A red is
|
||||
self-checking: a proof that ignores the mutated file stays green and `verify_mutation` refuses it,
|
||||
|
||||
Reference in New Issue
Block a user