diff --git a/CHANGELOG/2026.299.0822.md b/CHANGELOG/2026.299.0822.md index 37c30893..b206a450 100644 --- a/CHANGELOG/2026.299.0822.md +++ b/CHANGELOG/2026.299.0822.md @@ -51,6 +51,8 @@ $ grep -n 'FAIL:' .github/scripts/test_check_dependency_advisories.py .github/sc Both harnesses now carry the marker on **both** failure paths, and the marker is asserted by a test that can fail — the harness itself, whose every mutant must turn the self-test red. **Nothing asserts on these messages; they are read by a human.** The gate's *outcome* is unchanged: five mutants per harness, every one still turning the self-test red on the case that covers the mechanism it removes. +**Correction (opencharly/docs#193).** The clause *"the marker is asserted by a test that can fail"* above is **false**, and the sentence right after it says so. Nothing asserts on the `FAIL:` marker: the mutation harness asserts that a mutant turns the **self-test** red — on the case that covers the mechanism it removes — and no CI step greps for the prefix, so the marker is a **human-facing** convention that makes the two failure paths of one tool read alike in a log. The **code** is unaffected by this note, and the change's central property is unchanged and still proven: every mutant in each harness turns the self-test red, five per harness, ten in total. This correction is appended rather than written over the sentence above, so the two can be read beside each other; the merged PR body carries the same text and is left standing for the same reason. + **Rebutted — the missing `timeout=`.** The validator notes that the harness's `subprocess.run` calls carry no `timeout=`, and calls it harmless. It is, and adding one would be a **regression in the failure mode**: - the step already carries a deadline, and this repo's own gate asserts that every step does (5 min for the step-deadline harness, 10 min for the advisory one), so the set of child processes is bounded;