Found reviewing PR #522, which removes the five scripts that could never start (#410).
docs/AUTOMATION_TOOLS.md:204 carries a bare, unannotated instruction:
uv run python scripts/curate_evidence_with_pdfs.py --file FILENAME.yaml
No warning, no "not functional" marker — it reads as a working tool. It was already wrong before #522 (the script has never been able to start in any commit), and after #522 the file is gone as well.
docs/CURATION_PROGRESS_REPORT.md mentions the same script three times but each is prefixed # NOT FUNCTIONAL (#410):, so a reader is warned. AUTOMATION_TOOLS.md is the one that isn't.
Why this keeps happening: #410's guard, and the stronger one #522 replaces it with, both check scripts. test_no_working_script_points_at_a_script_that_cannot_run walks scripts/*.py looking at print/subprocess calls. Nothing walks docs/. So a dead pointer in prose is exactly the case neither test can see — and prose is where a curator is most likely to be reading, since they are following instructions rather than reading source.
This is the same shape as #442 (published pages still showing a corrected id): the fix landed in the code and the docs kept saying the old thing.
Fix applied in #522: AUTOMATION_TOOLS.md updated to name the working replacement (scripts/cache_fulltext.py then just validate-references), the CURATION_PROGRESS_REPORT.md markers changed from "NOT FUNCTIONAL" to "REMOVED", the stale .gitignore comment corrected, and a test added that walks docs/*.md for scripts/<name>.py references and requires the file to exist unless the line is explicitly marked as historical.
Found reviewing PR #522, which removes the five scripts that could never start (#410).
docs/AUTOMATION_TOOLS.md:204carries a bare, unannotated instruction:No warning, no "not functional" marker — it reads as a working tool. It was already wrong before #522 (the script has never been able to start in any commit), and after #522 the file is gone as well.
docs/CURATION_PROGRESS_REPORT.mdmentions the same script three times but each is prefixed# NOT FUNCTIONAL (#410):, so a reader is warned.AUTOMATION_TOOLS.mdis the one that isn't.Why this keeps happening: #410's guard, and the stronger one #522 replaces it with, both check scripts.
test_no_working_script_points_at_a_script_that_cannot_runwalksscripts/*.pylooking atprint/subprocesscalls. Nothing walksdocs/. So a dead pointer in prose is exactly the case neither test can see — and prose is where a curator is most likely to be reading, since they are following instructions rather than reading source.This is the same shape as #442 (published pages still showing a corrected id): the fix landed in the code and the docs kept saying the old thing.
Fix applied in #522:
AUTOMATION_TOOLS.mdupdated to name the working replacement (scripts/cache_fulltext.pythenjust validate-references), theCURATION_PROGRESS_REPORT.mdmarkers changed from "NOT FUNCTIONAL" to "REMOVED", the stale.gitignorecomment corrected, and a test added that walksdocs/*.mdforscripts/<name>.pyreferences and requires the file to exist unless the line is explicitly marked as historical.