Implementation plan — [feature/slice]

Plan as a view of the canonical .md — milestones, data-flow, risky code, risks, and open questions. Source commitments on the left; this render adds the spatial second dimension.

effort: ~[N] [d/w] surfaces: [N] flag: [feature_flag] source: docs/plans/...-plan.md

1 · Milestones

Ship in independently reviewable slices; nothing user-visible until the last one.

Slice 1 · [date range]

[First milestone — smallest provable step]

[What lands, what is NOT built yet, and the review gate.]

packages/…contract
Slice 2 · [date range]

[Middle milestone — the risky/novel part]

[Data-flow change, new seam, or the integration that could sink it.]

apps/…core
Slice 3 · [date range]

[Final milestone — flag ramp, docs, cutover]

[Feature flag ramp, verification, and what "done" means for this slice.]

docsops

2 · Data flow

Solid = request/response. The dashed path is never on the critical render path.

Entry[route/component]
→
API[handler]
→
Store[table/repo]
⇢
Fan-out[worker]
→
View[consumer]

3 · Key code

The two pieces most likely to be done wrong. The implementer should not be surprised by these.

[file path / seam #1]

// [the non-obvious invariant, the reason this is risky]
// [short snippet: the actual pattern, not pseudocode]

[file path / seam #2]

// [second risky seam — reconciliation, migration, ordering, etc.]

4 · Risks & mitigations

RiskSevMitigation
[Risk that could sink the slice]High[The hedge — an 80/20 fact or cheap step.]
[Risk that could waste a cycle]Med[Boundary / spike / checkpoint.]
[Risk already hedged]Low[Existing owner/path; keep visible.]

5 · Open questions

[The question that changes the plan if answered differently.]

Decide with [owner] · before [slice/gate]

[Second question — smaller, but still blocking a decision.]

Decide with [owner] · before [slice/gate]