Orbiter · Outcomes & Leverage Loops

Scope-1 Punch List — Status Report

Mark's 6/1 + 6/3 calls drew a hard line: stop spreading effort, finish things. Get Outcomes + Leverage Loops (UI + submit/modify/draft) to 100%, then Mem0, then docs. This report shows every item's status, the live dogfood proof, and where we sit against the full 5-scope plan. Dated 2026-06-04.

Scope 1  100% complete PR #415dev · MERGEABLE / CLEAN CI: Build · Lint · Netlify pass Tests 1559 / 1559 · 98 files 0 merge conflicts

Where we are in the plan

Five scopes, strictly ordered — each gates the next. Scope 1 is the deliverable in PR #415; Scopes 2–3 are gated on Robert's go; 4–5 are paused per the 6/3 call.

SCOPE 1
Outcomes / LL UI + submit / modify / draft
✅ 100% — in PR #415
SCOPE 2
Deploy Mem0 (retire Zep)
◷ Gated — next
SCOPE 3
Document how every chat works (Mintlify)
◷ Gated
SCOPE 4
Meeting Prep — true multi-turn
⏸ Paused
SCOPE 5
How I Know X — finish + integrate
⏸ Paused

Scope-1 items — status

Every punch-list item from the 6/1 + 6/3 calls. All shipped on branch feat/outcomes-punchlist-100 and verified green.

Cosmetic 12 / 12 ✅

  • #38
    Tonal Submit Outcome restyle — was "too loud"; quiet primary-tint fill, hover-gated shimmer, no outset glow. Shared by Outcomes + LL.
  • #42
    Removed the word / char counter from the summary panel.
  • #40
    Waveform glyph: lucide AudioWaveformIcon → cleaner bars glyph.
  • #53
    Mic device chevron dropdown — real enumerateDevices list + localStorage pick (shared QueryInput).
  • #41
    Summary panel reconciled to target — 12-default Results + Deliver picker + Submit; textarea fills the column.
  • #25/#43
    Context Inspector glyph → an actual conical flask.
  • #24
    Show Options — icon+text tiles + collapse/close affordance (top & foot).
  • #28
    Tile rename purchase_real_estate → "Real Estate Transaction".
  • #29
    Summary shimmer per-turn + grow-down.
  • #9
    Delivery-format labels: Suggestions / CSV / PDF / Create Collection.
  • #10/#37
    Raw-asterisk strip, cut-off fix, stray helper-text removal.

Functional 12 / 12 ✅

  • #35
    Removed the in-chat InterviewSummaryConfirm card — right-rail panel + Submit is now the sole confirm surface (no auto-dispatch).
  • #39 / F1
    Modify a completed suggestion → mints a NEW suggestion_request row on resubmit (not the unused modified boolean). backend writeback gap — see below
  • #57 / F2
    Draft click opens its chat + hydrates the rail; editable summary + Submit (not read-only).
  • #63
    Legacy empty drafts auto-resume their stored query.
  • #1/#2
    Submit lifecycle → processing + persist N/format; "Outcome submitted" toast + reset to compose.
  • #3
    Draft-on-engage in Outcomes (mirrors Leverage Loops).
  • #5/#6/#26
    State reset on mode switch + when starting a new conversation; kill stale last-thread content.
  • #8
    find_speakers tile fix — click works, no UI trap.
  • #27
    Dispatch-ready state must not un-arm once ON.
  • #58
    Conversation history no longer empty in the Outcomes sidebar.
  • #59/#61
    Right-panel + welcome-page content flash on navigation/switch — fixed.
  • #60
    Welcome hero — Show Options no longer clips the top of the hero.

Flask levers (demo-clean default) 2 / 2 ✅

  • #62
    Flask-gated the right-rail "Active dispatch levers" mirror — OFF = absent, ON = visible.
  • #64
    Flask-gated the right-rail Modify tab — identical gate; no empty tab shell with the flask off.

Leverage Loops parity 3 / 3 ✅

  • #56
    Fork composer parity — mic dropdown + waveform + attach on the minimal input.
  • #7
    Ported voice controls (waveform + mic + device selector + tooltips) into the LL composer.
  • #23
    LL right-panel no longer flashes the legacy ContextPanel on arrival.

Memory plumbing (Zep → Mem0 pivot) 5 / 5 ✅

  • #31
    Frontend stable per-conversation thread id.
  • #32
    Backend ep 8497 user+thread provisioning.
  • #33
    Verified durable + user-linked round-trip.
  • #30/#34
    Integration history doc + temporary proof endpoint cleaned up.
  • note
    Per the 6/2 Coda pivot, Zep is superseded by Mem0 (Scope 2). Shipped Zep code stays in dev for now.

Gated / paused / deferred

  • #44–49
    Scope 2 — Mem0 client, login provisioning, backfill, retrieve/write, ep 8497 swap. awaiting go
  • #50
    Scope 3 — document how every chat works in Mintlify. awaiting go
  • #51/#52
    Scope 4/5 — Meeting Prep multi-turn · How I Know X. paused
  • #55
    9 pre-existing tsc errors on the branch — predate this work; Robert/Charles scope call.

One open item — backend, not frontend

#39 modify→new-row is frontend-complete and server-confirmed end-to-end, but the new row never renders cards. Live 6/4: Submit on suggestion 245 minted row 1718 (start-outcome 200 → submit-request-meta 200), and the find-investors dispatch reached the server (/openui05/dispatch ep 8497 200 + /openui05/find-investors ep 8491 200).

But row 1718 stays processing / outcome_suggestion_count:0 at +285s (find_investors completes in ~74s — stuck, not slow). The dispatch returns 200 yet its results are never written back as outcome_suggestions + a status flip — the M10 backend lifecycle automation gap that affects every row. Charles/Mark backend territory. F1's actual subject (new ROW on resubmit, history preserved) is done.

Live dogfood proof

click any image to open full size · captured 2026-06-04 against pnpm dev, authed session

Cosmetics & composer (C1–C4)

Flask levers — demo-clean off, tooling on

#39 — Modify → new row, fired live

Draft restore (F2 / #57 / #63)

Leverage Loops parity + welcome hero

Read-only fork & the one P2 finding (documented, not fixed)