# Implementation Plan: Localization coverage and reachability integrity

## Approach

One integrity check covering what nothing currently watches, and verification rather
than reimplementation of what something already does.

Already met: an in-scope file removed without a withdrawal declaration is a hard error
in `generate-manifest.mjs` (FR-002), and a partly translated surface is check 12 in
`qc-structure.mjs` (FR-005). Both are tested. Rebuilding either would give two answers
to one question.

What nothing watches is the correspondence between three hand-maintained lists. The
tracked inventory, the withdrawal declarations and the published route exclusions agree
today at fifteen entries each, and they agree because a person kept them in step. Any
one of them can drift alone:

a new page absent from the inventory is silently never translated, which is the
largest hole, because nothing fails and nothing is reported;

a withdrawal declaration removed while its translation stays on disk leaves content
tracked as absent and present at once;

a route exclusion removed makes a withdrawn corridor's translation readable again,
which is the one with a reader-visible consequence.

Interface references are the same shape of problem one layer along: a key called in
code and missing from a locale falls back silently, and a key in a locale that no code
calls is dead weight nobody notices.

FR-006 is a rename-fragility report rather than a defect. Prose resolves the product
name from a variable and interface text states it literally, so a rename updates one
and not the other. Naming the literals is the whole fix: the risk was never the editing
but not knowing which strings existed.

FR-007 is a rule, not a check. Whether content was replaced or withdrawn for later
return is a judgement about intent that no inspection of the tree can recover, so it
belongs in governance and is enforced by review.

Per-language reporting (AC-7) is structural: the check iterates configured locales
rather than assuming one, so a gap in a second language cannot be masked by the first.
Nothing exercises that today because there is no second language, which is recorded as
a deferral rather than pretended away.

## Rollback

The check reads and reports. Reverting the commit removes it and changes no content.

## Appendix

### Alternatives considered

**Folding these into `qc-structure.mjs`.** Rejected. That walks translated file pairs;
these questions are about inventories and configuration, and most of them are true or
false without opening a translated file at all.

**Auto-repairing the correspondence.** Rejected. Each of the three lists can be the
correct one depending on intent: the right response to a missing route exclusion is
sometimes to add it and sometimes to restore the corridor. A check that guesses would
make the wrong call silently.