Wiki state lives inside the wiki; the tool keeps a registry of wikis¶
Pending ingest state used to live under ~/.auto-lorebook/pending/<source_id>/ so the wiki repo only contained human-approved canon — clean git log, "browsing only shows canon", and a narrow reject-ingest blast radius (see the previous "Why the split" rationale in repository layout). With multi-wiki support that split stops paying off: pending work isn't portable across machines, two wikis can collide on source_id, backing up a wiki doesn't back up its in-flight reviews, and per-setting defaults (perspective, source_nature) get stale on every wiki switch.
We move all wiki-scoped tool state into <wiki>/.wiki-state/ (pending/<source_id>/..., last-context.yaml, plus an auto-managed .gitignore covering pending/) and introduce a registry of wikis in ~/.auto-lorebook/config.yaml. The registry lists {nickname, path} entries with one active_wiki nickname; per-invocation override via --wiki <nickname>. Hand-edited canon (.wiki-context.yaml, .transcription-corrections.yaml, entity dirs, sources/, index.md) stays at the wiki root — the visible/hidden line is "user-meaningful & hand-edited stays visible; tool churn goes under the hidden dir." The clean-git log property survives via the auto-written .gitignore; the "browsing shows only canon" property survives via the leading dot.
Registry over single-pointer or stateless: nicknames give frequent switching a one-token verb (auto-lorebook wiki use scifi) without forcing every command to carry --wiki or grow CWD-discovery semantics, and with no per-wiki overrides the schema stays small (wikis: list[{nickname, path}] + active_wiki: str). Models, preamble budget, OpenRouter env-var name, and the API key stay global in ~/.auto-lorebook/; the API key in particular must not leak into a wiki that might be shared or pushed.