What
A scoped mutation run over scripts/check_doc_claims.py leaves 25 surviving
mutants, all in the canonical-source helpers, none in the scan/report path:
| Function |
Survivors |
canonical_reference_count |
10 |
canonical_tool_counts |
7 |
canonical_version |
3 |
canonical_mechanism_count |
3 |
read |
2 |
Reproduce
scripts/mutation_check.sh tests_py/scripts/test_check_doc_claims.py scripts/check_doc_claims.py
Why it is filed rather than fixed
These are pre-existing gaps in functions the exemption-registry change does not
modify. That change's own surface — scannable_lines, exemption_registry,
scan_claims, check_counts, collect_failures — is at 0 survivors, which
is the §12.4 standard for changed code. Closing the remaining 25 means writing
new tests for four untouched helpers, which is its own unit of work rather than
a rider on a gate fix (§14.3, §15.1 sequencing).
Note this run was only possible after that PR made scripts/ reachable by the
mutation runner at all — previously source_paths was mcp_server-only, so
these survivors had never been measured.
Acceptance criteria
What
A scoped mutation run over
scripts/check_doc_claims.pyleaves 25 survivingmutants, all in the canonical-source helpers, none in the scan/report path:
canonical_reference_countcanonical_tool_countscanonical_versioncanonical_mechanism_countreadReproduce
Why it is filed rather than fixed
These are pre-existing gaps in functions the exemption-registry change does not
modify. That change's own surface —
scannable_lines,exemption_registry,scan_claims,check_counts,collect_failures— is at 0 survivors, whichis the §12.4 standard for changed code. Closing the remaining 25 means writing
new tests for four untouched helpers, which is its own unit of work rather than
a rider on a gate fix (§14.3, §15.1 sequencing).
Note this run was only possible after that PR made
scripts/reachable by themutation runner at all — previously
source_pathswasmcp_server-only, sothese survivors had never been measured.
Acceptance criteria
scripts/check_doc_claims.py.use site or in the run notes (§12.1) — "ignore" is not an option.
canonical_reference_count's entry filter is pinned against a bibliographycontaining headings, separators and blank lines (partially covered by
test_reference_entries_exclude_headings_and_separators).