plans/prompts/wave_2/pr_a6b_chat_storage.md
STOP unless plans/g1-chat-stream-study.md exists and its recommendations have been accepted (check the plan's G1/A6b status lines). This PR implements the STUDY'S design, not the appendix recipes — the appendix's MessagesStore/QueueStore/accepted-plan-projection sections are evaluated inputs the study may have amended or rejected. If the study routed any item to the C3 host move instead, that item is out of scope here.
Read: plans/cleanup-state-machines.md (A6b section + rollout rules); plans/g1-chat-stream-study.md (the design of record for this PR); appendix recipes for chatMessagesByIdAtom, the queue pair, and planStateAtom (reader inventories and regression-test lists remain valid even where storage design changed). A6a has landed — status/error selectors and the plan_handoff facade exist; build on them.
Scope (as approved by the study — likely shape):
Rules: same-PR consumer migration + atom deletion per unit; allowlist entries removed; behavior-preserving with enumerated deltas; transition changes only where the study sanctioned them (isolated commits).
Verify: typecheck, full unit tests, lint, full streaming E2E. Suites per recipes: chat_stream tests trio, useStreamChat.test.tsx, useQueuePersistence.test.ts, version_preview/commands.test.ts, PlanPanel coverage, hybrid harness. /deep-review. Branch cleanup-a6b-chat-storage; /pr-push; update plan status.