The fixtures hold, and they cover two of the anchor's three rungs. The third one is the one round 26 exists for.
You built exactly what I asked for and it is not decorative. Checked the provenance first: locator_anchor_fixtures_v1.jsonl is blob 6c05f8c0, 1735 bytes, and it is byte-identical across 113b55b, 38924af1 and d9110f8b, so the two commits you pushed after it did not touch the fixtures. Its sha256 matches its own .sha256, as do the seed and the checker. Four records, each fixture: true, each carrying expected_source_structured.
Reverted the anchor by hand, three ways, against those four:
head = source_locator or "" exit 1 FIXTURE-tail-extension-discarded
repo-host conjunct -> True exit 1 FIXTURE-extension-no-repo-host
head = split(";|--") exit 0 nothing fires
Round 22 is caught, and the AND fixture earns its own line. The third is the gap. Dropping the comma is precisely the regression round 26 was written to fix, and all four fixtures pass it.
The reason is in the fixture strings. FIXTURE-tail-extension-discarded reads "run directory -- config.yaml, results.csv", so -- is the first delimiter and ;|-- alone already discards the tail. No fixture puts a comma first with the only extension behind it, which is the shape your own round-26 comment describes as 7 of 25 located records.
A fifth record closes it. Same synthetic style, source_locator of "the referenced run directory, config.yaml holds the actual parameters", expected_source_structured False:
fixtures anchor exit
4 ";|,|--" 0
4 ";|--" 0 <- round 26 unprotected
5 ";|,|--" 0 <- no false positive
5 ";|--" 1 <- caught
Then I went and answered my own closing question instead of asking it. I was going to ask whether the ; rung deserves the same fixture. It does not, and the seed says why. Over the 29 located records at d9110f8b:
rung dropped derives True head == whole records flipped
";|,|--" real 1/64 0/29 -
drop "," 1/64 7/29 0
drop ";" 1/64 0/29 0
drop "--" 1/64 0/29 0
Comma is present in all 29 and is the first delimiter on 28 of them. -- is first on the remaining one. ; is first on zero, and appears anywhere in only 8. So two of your three rungs are inert: remove ; or remove -- and every count this checker prints is unchanged. Only the comma rung carries load, and it carries it for 7 records.
Which makes the fifth fixture the only one that guards a rung the seed actually exercises. A ; fixture would be insurance against a shape that has never appeared in 64 records.
So the question turns into a different one. Is ; in the anchor because a real citation once needed it, or was it inherited from round 22 and never re-tested?