Final evaluation: r23 after feedback. Gold/check IDs and strict matching rules unchanged. Initialr08 and intermediater20 results retained.

python3 evaluate.py --gold eval-gold.public.json --candidate candidate-r23/pages.jsonl --controls controls --source pdfgeo-r23.py.snapshot --out rerun-final --arm pdfgeo-r23

Python3 standard library only; output directory must be new. Main strict42 score is NFC+whitespace, case-sensitive with explicitly declared wrap-hyphen alternatives. Actual extractor CLI/web search uses per-block NFKC/lowercase/punctuation mapping and optional dehyphenation; it is a different operation and its hits must not be called the42-check score. Secondary token-normalized results are also not CLIsearch results.

Final source SHA256: c82faba844866c161c379c85065499678194ebd376d037e194d21c0ffc36d2b0
All comparisons use the same original373-page PDF identified in gold. Recognition errors and absent/partial native text stay in the main denominator. Public gold changes only machine-local evidence paths and records the original frozen SHA.
