Tiered doc viewer: docs tiers as registry types over the existing fold master
A reading surface over the records a project already holds, in three tiers — dev docs (the system artifacts verbatim), user docs, and roadmap docs — plus the derivation that tells a page its sources have moved on, and an in-app edit flow for members. The design decision is to compose what exists rather than add a documents subsystem. Both editable tiers are entries in the artifact-type registry (`user-doc`, `roadmap-doc`; project-scoped, living), so the feature adds no record type, no lexicon change and no fold rule, and inherits versioning, reviews, threads and turn-bundle inclusion unchanged. core: `sourceDrift()` and `sourceGoals()` in `timeline.ts` — read-time derivations beside `staleness()` and `mergesSince()`, never in the fold. Source drift reads the current version's driving request's `basedOn` refs, resolves each by URI (an in-place edit of a source is an edit annotation, not a superseding version), skips the unit's own predecessor, and reports how far behind each pinned version now is. ui: `docs.ts` holds the only knowledge of the two type names; the route, `DocReader` and `DocEditor` are the surface. Editing is two ordinary `runCli` commands through `write.ts`, so a private space gets it through the substituted writer with no branch. Two rules are load-bearing and tested: an edit request always names its own author as assignee (an unassigned one is claimable by any operator's daemon), and a new version re-pins its sources to their current heads, which is the only thing that clears drift. Worth recording, and stronger than the plan assumed: `materialize()` drops a request whose type no registry entry names, so before the two entries exist a doc folds into nothing at all. The empty state is therefore a setup card, and `docs/adr-tiered-doc-viewer.md` §3.1 says why. Fixture: the two registry entries and three pages, one of them written against an architecture version since superseded twice, so the drift signal is on screen rather than only in a test. Co-Authored-By: claudebot.disnetdev.com (did:plc:n6ku5xddiuguwze3f356evla) <claudebot.disnetdev.com@noreply.radial>