Advisor loop · live

FM26 Deepener — Mission Control

Iteration 2 Updated 2026-07-19 · audits done, wave 1 running Mode Fable architect · delegated lanes

Mission

Drive every FM26 Deepener product to 100% polished completion under an expansive definition: functionality complete, decode confidence graded, tests green, docs current, and outputs staged so the only remaining layer is Jimmy's taste.

The session acts as architect only — all implementation goes to Sonnet/Opus implementer lanes and Codex cross-vendor lanes. Durable work items get slotted into beads; this page is the single view of progress.

Lanes running now

  • Done fan_forum → PR #947 — mood-spread + thread-dialectic spine, 21 new tests, all gates green locally
  • Running pre_match_preview → analysis standard (Sonnet, fresh lane)
  • Running season_review → analysis standard (Opus — season-arc synthesis needs the judgment tier)
  • Done newspaper_back_page → PR #946 — 23 new tests; fast/pr/harden all green locally
  • Running Shortlist wiring + transfer_briefing → analysis standard (Sonnet, stacked on PR #948)
  • Done Shortlist bridge → PR #948 — ref→person join, evidence-graph grade (honest label), 99.6% Save-B portable; semantic pin needs an FMRTE session
  • Done fm_data_mcp rebuild-per-call fix → PR #945 — cached service on BundleHandle, regression test, both verify tiers green locally
  • Done Docs currency refresh → PR #944 — 10 drift corrections, local fast tier green (9,554 passed / 0 failed)
  • Done Beads slotting — 12 new beads under advisor-loop label + 1 pre-existing cross-linked, no errors
  • Done Estate audit → outputs/advisor_loop/estate_audit_2026-07-19.md
  • Done Refactor scout → outputs/advisor_loop/refactor_scout_2026-07-19.md
  • Done PR #943 lane — no code fix needed; blocked on CI billing (see decisions)

All lanes verify locally with scripts/verify.py fast/pr; CI confirmation is blocked until the billing lockout clears.

Decisions waiting on Jimmy

  • BlockerGitHub Actions billing lockout since Jul 18 ~01:20 UTC — every workflow on every branch fails with "recent account payments have failed or your spending limit needs to be increased". Confirmed live by re-running a job. Fix: GitHub → Settings → Billing & plans, then re-run checks. Until then no PR can show green CI.
  • ReadyMerge queue once CI is restored: PR #943 (red-suite fix, code-correct, main already green locally at 9,568 passed), PR #944 (docs currency refresh, local fast green 9,554), PR #945 (fm_data_mcp service caching, fast + pr lanes green locally), PR #946 (newspaper_back_page to analysis standard, fast/pr/harden green locally), PR #947 (fan_forum to analysis standard, fast/pr/harden green locally), PR #948 (shortlist bridge, evidence-graph grade, verify green locally; merge before its stacked follow-up). Holding merges until checks can actually run — gate-verdict-before-merge discipline.
  • Directionfm_save_read framing: its README claims it's "the shared read contract both Chronicle and Oracle sit on", but fm_oracle never imports it and fm_storytelling only has dormant support (tests only). Call needed: correct the README to match reality, or fund wiring Chronicle/Oracle through save_read.v1 as a real near-term plan.

Product scoreboard — pre-audit baseline

ProductStatusRead on distance to done
fm_storytellingIn playMost active surface. At the analysis standard: match_report + press_conference (on main), newspaper_back_page (PR #946), fan_forum (PR #947). In flight: pre_match_preview (Sonnet), season_review (Opus). Blocked on shortlist bridge (Codex, running): transfer_briefing + transfer_rumours. Then a whole-catalogue taste pass.
fm_save_extractStructurally closedFrame 3 ledger 99.60% known, beyond-F3 unowned 0 bytes. Remaining decode gaps are FMRTE-session-gated (need Jimmy at the machine), not code work — except shortlist/scout surfaces (lane running). Warm re-decode ≈0.35s via fmdecode world already shipped.
fm_save_read / fm_oracleUndocumentedReal consolidation layer the audit found that CLAUDE.md never mentions — docs lane is wiring it in; contract-drift audit queued.
fm_data_accessQueuedCanonical access layer, but fm_applications bypasses it (architectural drift, scout item 7); consolidation spec split into 3 landable steps.
fm_mcp_server / fm_data_mcpIn playfm_mcp_server stale ~3 months; plan is consolidation into fm_data_mcp (queued). Real perf bug in fm_data_mcp — DataAccessService rebuilt per call — fix lane running.
fm_applicationsQueuedWorks but bypasses fm_data_access; reroute is step 2 of the consolidation spec.
fm_tactics_creatorTo grade.fmf create/inspect/edit shipped; polish bar assessment queued behind higher-leverage lanes.
fm_pilotRoughestHighest TODO density in the estate (56 per 10K LOC). TODO triage + restriction-policy bead queued; armed captures remain operator-gated.
fm_save_patchCaveatRe-parse-validated only, never FM-load-validated — honest ceiling until an FM-load test is designed (operator-gated).
fm_live_bridgeScoped-doneDeliberately narrow read-only proof oracle; no gaps found within scope.
fm_html_extractLegacy-frozenFM24/25 only by design (FM26 removed HTML export). Docs lane removing overstated claims.
docs + testsIn playFast tier verified green on main (9,568 passed / 0 failed, run live today). STATUS.md + comprehensive plan stale — docs lane running. verify.py fast measured 194s vs stale "sub-minute" claim; speed-up beaded.

Evidence-backed as of the 2026-07-19 estate audit + refactor scout (reports in outputs/advisor_loop/). Beads: 72 tracked — 38 open, 17 blocked (mostly FM-session-gated), 7 in progress; 8 stale draft PRs (#881–#891) awaiting triage.

Queue — next up

  • Fired season_review (Opus) + pre_match_preview (Sonnet) — moved from queue to lanes
  • Next Stale draft PR triage — 8 drafts from Jul 8–9 (#881–#891): keep/close/land list
  • Next PR #942 cross-career portability regression (dbid join 0.196 vs ≥0.9)
  • Queued data_bridge real-bundle contract test (scout #3 — the silent-drift killer)
  • Queued Fast-tier speed-up: 194s → target sub-2-min honest, fix worker imbalance (scout #4)
  • Queued Bridge-scaffolding thinning ~500–1,000 lines across 9 modules (scout #6)
  • Queued MCP consolidation + fm_applications reroute, 3 landable steps (scout #7)
  • Queued Reconcile 7 recovery/ WIP snapshots; archive 3 dead decoder modules (scout #5)
  • Queued fm_pilot TODO triage; chronicle absence-commentary prompt clause
  • Queued Root-docs follow-up pass: NEXT_DECODING_BRIEF / AGENT_HANDOFF / CURRENT_STATUS_BRIEFING stale claims; add fmdecode to CLAUDE.md architecture
  • Operator FMRTE edit-diff session to upgrade the shortlist bridge to a true semantic pin (scoping doc Phase 2 — needs Jimmy at the machine)
  • Resolved Cached-frames fast path — already shipped 2026-07-08 (frame_plan.py + fmdecode world); was a stale premise

Log

  • 07-19Loop started in dynamic mode. Fable-advisor orchestration doctrine loaded.
  • 07-19Estate audit + refactor scout launched in background (Sonnet lanes).
  • 07-19Dashboard v1 published; scoreboard seeded from repo docs and memory.
  • 07-19Dashboard now also on Cloudflare Pages for off-Mac access.
  • 07-19Estate audit + refactor scout complete; fast tier verified green on main (9,568 passed).
  • 07-19Scout refuted the "cache unwired" premise — fmdecode world already does 0.35s warm re-decodes; memory corrected.
  • 07-19Wave 1 fired: 2 story types, shortlist bridge (Codex), docs refresh, fm_data_mcp fix, beads slotting.
  • 07-19Found: GitHub Actions billing lockout since Jul 18 blocks all CI account-wide. Push notification sent.
  • 07-19Backlog beaded: 12 new advisor-loop beads (fm26-17s3 … fm26-yrkn); transfer story types marked blocked on shortlist bridge.
  • 07-19Codex shortlist lane parked on a detached process; nudged back to foreground completion.
  • 07-19Docs PR #944 opened: STATUS.md rebuilt, superseded plan doc tagged, fm_save_read/fm_oracle documented, story-type count corrected to 9. fm_save_read direction question raised.
  • 07-19Operator directive: codex lanes now run gpt-5.6-sol (agent template was silently pinning gpt-5.5).
  • 07-19PR #945 opened: fm_data_mcp DataAccessService now cached per handle instead of rebuilt per tool call.
  • 07-19PR #946 opened: newspaper_back_page at analysis standard (splash-spine thesis, tabloid quote policy, back_page schema).
  • 07-19Wave 2 story lanes fired: pre_match_preview (Sonnet), season_review (Opus). 4 of 9 types now landed or in PR.
  • 07-19PR #947 opened: fan_forum at analysis standard. 5 PRs now queued on the CI billing fix.
  • 07-19PR #948 opened (Codex): shortlist ref→person bridge — discriminating top-vs-bottom-of-list signal with clean negative control; unknowns preserved. Transfer wiring lane fired, stacked on it.