# F-015: The rewrite mapping list does what it promises — 251 of 251 rows verified category: works-well confidence: high evidence: `analysis/scripts/inv_shas.py` -> `analysis/data/sha_refs.tsv`, every row of `shared/commit-zuordnung-2026-08-07.md` re-checked against the actual repositories. - Row count matches the claim exactly: 117 (gitops) + 78 (management) + 47 (ThreadNet-Web) + 9 (threadnet-call) = **251**, and `CLAUDE.md:136` says "251 Commits neue SHAs". - Of the 251 pairs: **209 `ok`** (new SHA resolves, old one gone as expected) and **42 `ok-both-present`** (new resolves, old still reachable — all 42 explained by the stale branches in F-006, not by a mapping error). - **0 inverted** (new missing while old resolves) and **0 unresolvable** (neither present). There is no row in the table that does not describe a real commit pair. - Consequently no accidental orphan reference exists in the docs: all six unresolvable SHA citations have individual, benign explanations (F-012). - The document is honest about its own boundaries in a way that measurably helped: `shared/commit-zuordnung-2026-08-07.md:39-44` states what is *not* in the table (pre-boundary commits, 147 in gitops, 3 in ThreadNet-Web) — which is what let this session classify unresolved SHAs correctly instead of reporting them as breakage. - It records the operational trap it hit rather than quietly fixing it (`:24-37`): the tag force-push restarted three release pipelines, and the reason nothing was overwritten is named as luck, not design — "**Das war Glück, keine Planung**" — with the follow-up tracked as ThreadNet-Web#14. impact: A destructive, irreversible operation was made auditable after the fact by one hand-written document, and the audit passes three days later. The unusual quality is the self-criticism: the near-miss is written down as a near-miss, which is exactly the material a future session needs and exactly what usually gets smoothed over. root-cause pattern: **A risky operation paired with a written reconstruction of what it did.** Note the limit, recorded as F-004's sibling: the `backup-vor-rewrite` branches the document names as its verification basis (`:14-17`) exist on **no** remote today, so the mapping can no longer be re-derived — only, as here, spot-checked against surviving refs. neckbeard mechanism: `docs/aar/` is the home for this document type — `AGENTS.md:83`, "Standalone After Action Reviews (incidents, major deviations only)", with the required frontmatter at `schema.yaml:67-74` (`type`, `status` from `[open, harvested]`, `date`) and the content shape at `WORKFLOW.md:84-89` (planned / actual / why the difference / learnings, then harvest into the wiki). `WORKFLOW.md:105` makes it mandatory rather than optional: "Incidents and major misdiagnoses get a standalone AAR in `docs/aar/`". The `status: harvested` transition is the piece this project lacks — it writes AARs but has no mechanism that marks a learning as absorbed.