v0.4.6 — the update census (drift the file loop can't see)
Update becomes a convergence guarantee
The live case that motivated this: a repo migrated to repolore (its wiki predates the tool — the very repo repolore was extracted from) whose AGENTS.md was never manifest-tracked. update only heals tracked files, so the contract doc froze at migration: findings inbox, flows rules, the audited verb — none of it ever arrived, and no workflow could even see the gap.
New census class in update.mjs:
wikiRoot/AGENTS.mdpresent-but-untracked (or missing) →ADOPTreport, exit 1. Reporting never adopts by itself.--adopt <path>records the manifest entry against the clean template instantiation's sha — a customized contract then classifies locally-modified on every future run: visible, protected, never silently regenerated over (the same protection edited files always had).- The new-file add pass is now no-clobber: an untracked file that differs from the master is reported for review (
--adopt/--force), never overwritten; identical content is adopted record-only.
references/update.md gains the drift census: the consented contract-merge procedure (preserve scope + custom sections, bring in missing conventions, then --adopt), category-dirs awareness (git drops empty dirs — normal), the CLAUDE.md copy → @AGENTS.md import swap, and the _audit/ findings-mining offer for pre-repolore artifacts.
The toolchain caught its own release
Adding the census dispositions to update.mjs made the set-validated extractor hard-fail the flow page before it was touched (the omitted-branch catch, v0.4.3), and wiki-flow-refresh (v0.4.4) auto-fixed 14 shifted citations across the edit passes, leaving exactly 2 genuine re-verifies for the human. 3 new tests; 63/63 green.