Files
boocode/docs/plans/post-review-backlog/artifacts/implementation-iteration-history.md
indifferentketchup 2a05d2f9fe docs: archive shipped openspec batches; add feature/plan/research notes
Move 13 shipped openspec change docs under openspec/changes/archived/.
Add docs/features/git-diff-panel, docs/plans/post-review-backlog, and
docs/research/cross-app-contract-ssot.md (the research behind the
@boocode/contracts SSOT work). Update BOOCHAT.md, BOOCODER.md, and
boocode_roadmap.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 21:20:33 +00:00

5.4 KiB
Raw Blame History

Implementation Iteration History: Post-Review Backlog (F1F9)

R1: Parallel six-specialist backlog review

  • Specialists engaged: on-call-engineer, behavioral-analyst, software-architect, test-engineer, user-experience-designer, junior-developer, project-manager (coordinator). Team size: large (cross-subsystem; user chose scope "everything we discussed"). Round cap 3; converged in 1.

  • New input provided: Initial inputs — the scope brief (ground-truth spec stand-in; two items live-verified 2026-06-02 with file:line evidence) and the discovery notes (per-item code touch points). No prior round; this is the initial sweep.

  • Claim ledger: (consolidated, deduped — see synthesis-input.md for the full table)

    # Claim State Spec-maturity
    C1 F1 cancel route never aborts external child; no registry/export Evidenced plan-level
    C2 F1 catch blocks leave message streaming; success path writes complete on abort — fix same batch Evidenced plan-level
    C3 F2 = prune-now-minimal: unexport 8 zero-caller symbols, keep extractToolCallBlocks+stripToolMarkup Evidenced plan-level
    C4 F2 <invoke>-text fallback untested → add gate test before prune Evidenced plan-level
    C5 F3 optional logger param, do with F2 (same file) Evidenced plan-level
    C6 F6 stall-timeout via AbortSignal.any, 90s; NO retry (non-idempotent deltas) Evidenced plan-level
    C7 F7 inline MCP tool, messages_with_parts, role!='system', limit 50/200 Evidenced plan-level
    C8 F9 delete SPA block, keep routes; GET / unprobed → safe Evidenced plan-level
    C9 F4 hook-firing in unattended mode UNVERIFIED; goose hook mechanism unknown Anecdotal (premise) spec-level
    C10 F4 dedup rule: confirm running before blocked; suppress hook done Evidenced plan-level
    C11 F5 pinned @opencode-ai/sdk exposes no compaction arm → blocked on capability check Evidenced spec-level
    C12 F5 UI treatment sentinel-row vs ephemeral-frame Disputed spec-level
    C13 F8 no line-selection infra; diff source ambiguous; needs own spec Evidenced spec-level
  • Open Questions raised:

    • F1: terminal state (→ D-7, cancelled); registry key (→ D-1, taskId); shared finalize helper (→ D-1, yes); warm re-throw on abort (→ D-1, short-circuit on ac.signal.aborted).
    • OQ-F2a (sidecar jinja) → moot under D-3 option A; OQ-F2c (a vs b) → D-3 option A.
    • OQ-F6a/b/c → D-5 (AbortSignal.any, no retry, 90s).
    • OQ-F7a (session vs chat id) → D-6 (both, chat_id optional, + limit).
    • OQ-F9a (GET / probe) → D-11 (unprobed, safe).
    • OQ-F4a (hooks fire unattended?), OQ-F4b (goose hook format) → UNRESOLVED, spec-level → OI-1, route F4 to plan-a-feature (D-12).
    • OQ-F5a (SDK compaction event existence/name) → UNRESOLVED, capability check → OI-2, blocks F5 (D-12).
    • OQ-F5b (sentinel vs ephemeral UI) → UNRESOLVED → OI-3, settle once event confirmed (D-12).
    • OQ-F8a/b/c (diff source, serialization, new viewer) → UNRESOLVED, spec-level → OI-4, route F8 to plan-a-feature (D-12).
    • OI-5 (F1 best-effort session-stop leg) → non-blocking, decided at implementation.
  • Spec-maturity tags: plan-level — C1-C8, C10 (9 claims). spec-level — C9, C11, C12, C13, plus OQ-F4b and OQ-F8a (≥5 across junior, behavioral, UX). Spec-maturity gate TRIPPED, concentrated in the three WANT items F4/F5/F8; F1/F2/F3/F6/F7/F9 are all plan-level and ready. No T#-contradictions.

  • Resolution source: evidence (Step 6 specialist findings) for every plan-level OQ (F1, F2, F3, F6, F7, F9); user input for the gate disposition (Sam's standing override → D-12); deferred-to-spec for OQ-F4a/F4b, OQ-F5a/F5b, OQ-F8a/b/c (recorded as OI-1..OI-4, routed out rather than resolved in this loop). The YAGNI gate ran during synthesis: F6 retry, F2 option B, F4 interface, F5 extra compaction arms, F7 reader interface all deferred.

  • Decisions produced: D-1, D-2, D-3, D-4, D-5, D-6, D-7, D-8, D-9, D-10, D-11, D-12 (all 12; the loop converged in one round so every decision originates here).

  • Changed in plan: all sections (initial authoring) — Source Specification, Outcome, Context, Implementation Approach (TIER 1 READY / TIER 2 BLOCKED), Decomposition and Sequencing, RAID Log, Testing Strategy, Security Posture, Operational Readiness, On-Call Resilience Posture, Definition of Done, Specialist Handoffs, Deferred (YAGNI), Open Items, Summary.

  • Project-manager next-step recommendation: Go to synthesis (done — this plan). Build the READY cluster in order F1 → F2+F3 → F6 → F7 → F9 as sequential patch tags; route F4 and F8 to plan-a-feature and F5 to an @opencode-ai/sdk capability check before any build on those three.