Landed outcome

Shipped in 7dbac54. Reckon now resolves plans, research, evidence, and sprints through stable typed identities and canonical typed routes, with bounded legacy aliases and type-local archives. Server, MCP, SPA, static build, audit, and skills share the resolver.

The explicit migration is idempotent, rewrites links without stripping non-HTML asset extensions, retains cumulative move and rewrite provenance, rejects path traversal and identity collisions, and restores files after process-level failures. Typed MCP reads and writes select the same resource and reject ambiguous leaf slugs.

Independent review found six integration blockers; all were corrected before merge. Final verification: 1,308 tests passed and Ruff passed. The complete design and verification record is preserved in the landed-stage archive.

Proposed docs hierarchy with separate plans, research, evidence, and sprint directories.
Typed location reinforces resource identity while metadata remains the validation contract.

§ Decisions

Where should completed stage history live after typed directories land?

Completed stage records remain immutable HTML audit trails beside their owning artifact type, preserving the current archive contract without returning to one mixed directory.

Should canonical URLs include the artifact type?

Typed canonical routes make resource kind unambiguous while compatibility aliases preserve existing flat links during migration.

§ Followups

Implement typed artifact roots and migration

Define the canonical directory and identity contract, then migrate discovery and authoring through a compatibility-tested resolver.

Project: reckon
Plan:    typed-artifact-layout (http://localhost:8765/reckon/typed-artifact-layout.html)
Section: full plan
Tier:    opus

Context
  Plan, research and evidence types are shipped but remain physically interleaved.
  Introduce typed roots without losing stable references or historical state.

State to read
  reckon/serve.py, reckon/_store.py, reckon/_plan_html.py, reckon/mcp.py
  docs/ui/, skills/reckon-create/, skills/reckon-sync/, PLAN-FORMAT.md

Scope locks / constraints
  Preserve HTML-first state and provide an idempotent mixed-layout migration.

Done-when
  1. typed roots, resolver and migration land with cross-layout fixtures
  2. tests still green
  3. followup written into plan + this followup marked resolved

Typed roots, stable resource identities, canonical typed and archive routes, safe idempotent migration, typed MCP read/write selection, SPA graph identity, and typed audit resolution landed in 5dec5be and 74ddd7b; integrated by 7dbac54. Independent review found six blockers, all corrected. Full integration: 1,308 tests passed; Ruff clean. done — no followup; downstream work continues in distributed-sprint-state.