§1 — The problem, with evidence

Lead, 2026-06-03: "We seem to be very good at producing new plans (the imas-efit repo has ~800) but very bad at keeping them in-sync, updating their status and archiving them once done. This needs major thought and consideration."

Measured state (reckon audit, 2026-06-03): 819 docs, 811 schema-conformant. Dashboard symptoms and their diagnosed causes:

§2 — Design principles

§3 — Proposed mechanisms (tracked below as milestones)

  1. Write-time lifecycle invariants (reckon server):
    • resolve-final-followup OR status→shipped/done ⟹ require impl set in the same edit (reject or auto-set 1.0 with warning);
    • status shipped/done + no section-landed card in prose ⟹ WARN on write + audit ERROR after N days;
    • research docs: verdict-delivered marker (informs + a resolved outcome) ⟹ prompt status done.
  2. Audit cadence: a scheduled (cron/CI) reckon audit + staleness sweep — plans modified >30d with status active and impl <1 get flagged into a weekly hygiene report; the lead sees a SHORT list, not 819 docs.
  3. Archive waves: quarterly (or per-sprint-close) pass setting plan-archived=1 on done/superseded docs older than a threshold; consistent home (docs/archive/) for per-stage records; the dashboard default view shows ONLY live docs.
  4. Plan-creation diet: reckon-create gains a pre-flight question — "does an existing plan own this lifecycle?" — and research docs default to plan-informs-linked notes rather than standalone status-bearing docs unless they carry followups.
  5. Sprint-close checklist as code: reckon-edit close-sprint intent refuses to close while sprint items have unresolved followups, unset impl, or uncollapsed shipped sections — turning the S8-style deferral into a hard gate.
  6. Backfill wave: one supervised fleet pass over the existing inventory (batched ~50/worker, haiku/sonnet) applying §3.1 invariants retroactively: set impl, flip delivered RCAs to done, archive superseded docs. Lead reviews the diff summary, not each doc.

§4 — Milestone progress

§5 — Open questions for the lead

§ Decisions

Write-time lifecycle invariants: reject-on-write or warn+audit?

§ Followups

Design review with the lead — lock strictness, then land the remaining reckon lifecycle gates

The audit command and archive-policy groundwork are now landed in reckon. Remaining server-side enforcement changes (§3.1, §3.5) still need the lead's §5 answers before implementation.

Project: imas-efit (mechanisms land in ~/Code/reckon)
Plan:    plan-lifecycle-hygiene
Section: SS3.1 + SS3.5 after SS5 answers
Tier:    opus

Context
  ~819 reckon docs; sync defects diagnosed in SS1 (impl never set, RCAs left active,
  SS5b skipped under fleet pressure, no archive waves). M2 audit command and M3 archive
  policy groundwork are landed; the strictness-sensitive gates remain open.

State to read
  GET /plan/imas-efit/plan-lifecycle-hygiene  (SS5 answers locked as decisions)
  ~/Code/reckon/PLAN-FORMAT.md + reckon/_plan_html.py + reckon/mcp.py (_set_impl, patch_plan)

Done-when
  1. SS3.1 write-time invariants landed in reckon (per locked strictness) + tests.
  2. SS3.5 close-sprint gate landed.
  3. Audit cadence (SS3.2) scheduled; first hygiene report produced.
  4. Backfill wave (SS3.6) dispatched if the lead approved it.
  5. Outcomes recorded; this followup resolved.