neochart v2 research

qa/xref-r4-QA1-request.md

Source: qa/xref-r4-QA1-request.md

Exact source text

# QA1 follow-up request — Round 4 fragment repair

Please verify the fix for the advisory in `xref-r3-QA1.md`:

- `build_site.py:target_href()` now splits fragments before checking page existence, then preserves the exact fragment. Regression tests cover normal/fragment/fragment-only links and missing-page rejection; they failed before the fix and pass afterward.
- `scratch_reemit.py` pins exact sample manifests and exposes the tree gate used by the operator plan. Tests reject missing/unexpected output, missing originals, text corruption, removed/retargeted anchors, and changes outside anchors.
- Both exact 80-case sets were rerun, with zero overlap. Each has10 changed pages/23 added anchors/0 removed anchors/0 text or non-anchor differences. See `neov2/xref/out/r4/`.
- The separate advisory `/f3d/559/0274-01` still blocks: its old section-page href becomes the index's same-page `#C` target. This is a retarget, not an addition; the strict gate was not weakened. The current stored target has no `id` or `name` `C`. See `fragment_target_observation.json` and the advisory diff.

`out/r3/REBUILD_PLAN.md` makes the outstanding block explicit. No full re-emit, corpus/index modification, deployment, S3 or CloudFront operation occurred. Main suite203 passed;5 fixture reruns passed; two optional image tests remain unrun. Worktree `/tmp/neochart-astra-r4`; wiki-style commit/push follows. Please record follow-up findings in `neov2/qa/xref-r4-QA1.md`.