Split project state into independently versioned resources
Design the resource grammar, lock storage decisions, and migrate the current index only after composed-state parity is proven.
Project: reckon Plan: distributed-sprint-state (http://localhost:8765/reckon/distributed-sprint-state.html) Section: full plan Tier: opus Context The project index is required today but combines unrelated mutable resources. Replace it safely with separate sprint and project-state files. State to read docs/state/reckon/index.json, reckon/_schema.py, reckon/mcp.py reckon/_store.py, reckon/serve.py, skills/reckon-sprint/ Scope locks / constraints Do not delete the current index until migration parity and rollback are proven. Done-when 1. decomposed storage, migration and composed discovery land with concurrency tests 2. tests still green 3. followup written into plan + this followup marked resolved
Distributed storage landed in 44c39cc, independent review corrections landed in 40e6cd6, and final race/precedence corrections landed in a837fc7. Seven canary resources retain byte-identical source/snapshot f6aa91f66811… and parity 11edeeebb748…. The 41 project-state regressions are included in a 1,349-test passing full suite; targeted multiprocessing and executable SPA scenarios also pass. Marker-gated reads/writes, strict legacy index precedence, single-winner activation, fail-closed HTTP/MCP/SPA behavior, migration rollback, durable contained journals, strict references, and append-only history are verified. done — no followup here; downstream closure is already tracked by reckon-ci-build and mcp-readable-responses.