Skip to content

Summary

A parallel TOMIC-like system has been running on ai-rig since 2026-09-04 (Hermes cron, paper-only, Telegram delivery). Decision (owner, 2026-09-15): the final TOMIC(mod) system runs as a Hermes script on ai-rig, reusing the pilot's tooling, with Telegram as the human-in-the-loop channel. This concept maps the two systems and fixes the consolidation direction.

Pilot Tooling Inventory (adopted as-is)

Tool What it does Framework role
tastytrade-mcp/bin/capture_snapshot.py Live broker marks: spot (SPX/VIX + 8 underlyings), per-underlying metrics (IV30, HV30, IV rank), OCC-keyed option quotes (C+P), live observations Data layer — supersedes the ThetaData-first plan for the daily loop; known cron-auth pitfall (fixed via dedicated env file)
bin/ev_ladder.py EV engine: BS + region grid, EV_RN and EV_PHYS per region, breakevens, sigma anchors (rn_source: trade-straddle-implied; phys = IV30·√(HV30/IV30)), Kelly sizing (f_star/quarter/capped), risk_flags, confidence notes, --selftest. Council-reviewed, 5 security patches, 0.24s/5 ladders The attested EV engine — wiki AC contracts point at it (see consolidation below)
bin/sizing.py Fractional Kelly post-EV, per-trade + bucket caps, scenario-consistency gate, hedges-sized-by-pairing (never Kelly) Risk gate sizing
~~bin/approval_server.py~~ not migrated to hermes; recovered 2026-09-20 from ai-rig into ops/recovered/ai-rig-bin/ (not on the deploy path). Superseded in design by Telegram approval flow M1; kept as reference for that rebuild Localhost approval UI (127.0.0.1:8787): proposals + approve/reject + contracts → approvals JSON Human-gate substrate — extend to Telegram (owner decision)
~~bin/execute_approved.py~~ not migrated to hermes; recovered 2026-09-20 into ops/recovered/ai-rig-bin/ and deliberately kept off the deploy path: its --live mode runs dry-run → confirmation token → place_order. Its absence is why no order path exists on the host the agent drives — charter principle 3 holds until a stage-8 adapter is separately approved Post-approval execution adapter (paper/read-only per job contract) The external control plane the charter excluded — now it exists; boundary respected: framework still ends at approval
tastytrade-mcp/bin/news_call.py + economic-calendar feed Morning headlines + CPI/FOMC/NFP gate Intelligence intake (step 2)
round-state.json Canonical book: entries, exits, notes, decisions, tool contract — orchestrator-owned, versioned schema ~~The position ledger (closes framework hole #1)~~ — retired 2026-09-17: orphaned since 2026-09-06, when the pi orchestrator stopped writing it. The book is now carried in each round's round-content-<date>.json; see Hermes round prompts. Framework hole #1 is open again: no ledger records entry fills or dates
team-insights.md Append-only dated findings ledger Decision-log/learning substrate
gen_report_viz.py (build_index.py not migrated; recovered to ops/recovered/ai-rig-bin/, unused by the report-builder job) Round reports + viz Proposal artifacts

What the Framework Contributes (the pilot's gaps)

  1. Formal regime layer — the pilot's "tape/regime summary" is freeform LLM prose. The framework supplies ex-ante bands, the fitted HAR-RV forecast (now live in tools/), hysteresis, transition states, and the fail-closed data_missing rule — as code.
  2. Amendment governance — the pilot's standing kills are hardcoded in the cron prompt. The framework's quorum process makes them versioned, evidence-gated rules.
  3. Provenance/OKF knowledge plane — the pilot's knowledge lives in prompts and reports; the wiki makes it queryable with per-claim citations.
  4. Position greeks/heat — round-state has notes, not numbers; the risk gate needs computable heat and delta-posture (add greeks snapshot to the ledger).

Consolidation Decisions

  1. One EV engine: ev_ladder.py wins. Battle-tested, dual-probability, richer flags. The wiki's four AC concepts become contracts pointing at ev_ladder invocations (receipt = ladder JSON); the four python stubs in references/computations/ are retained only as the independent cross-check for the attestation comparison. Physical-vol reconciliation is an open item: pilot uses IV30·√(HV30/IV30), wiki uses HAR-RV — run both, record the delta, pick per evidence.
  2. Long-vol book archetypes must join the mapping. The pilot's book is straddles (EV_RN≈0 at entry is the validation signature; edge lives in the exit path) — a fundamentally different edge model from VRP harvesting. The regime→structure mapping needs a long-vol column; attested coverage for straddle exit management is required.
  3. Telegram approval flow is new work: the pilot delivers reports via Telegram; approvals are localhost-web. The human-in-the-loop channel must become Telegram bidirectional (owner decision made — implementation pending).
  4. ~~Immediate pilot bug~~ RESOLVED + verified (2026-09-15), then narrowed (2026-10-09, #84): the _covers() directional inversion was patched in commit eb34572 (any same-cp same-expiry long+short pair = bounded vertical, regardless of strike order). Behaviorally verified on ai-rig: selftest PASS, NVDA bull-call debit no longer false-flags, naked short call still flags. The 9/14 ledger 'patch pending' note was stale. NARROWED BY #84: that blanket rule now holds only quantity-wise — a pair is bounded when the long quantity covers the short quantity per cp, so a 1×1 vertical is bounded but a RATIO (more short contracts than long) is genuinely UNDEFINED-RISK. _covers still answers True per short leg; the ratio is caught by the quantity-aware allocation in _allocate_cover(). Strike order remains irrelevant to coverage at the same expiry (for later-expiry longs _covers makes strike order decisive — see #93).

Operation Lessons Already Paid For (from the ledger)

  • Cron shells silently got 401s → 0KB snapshots with exit 0: fail-closed must be exit-code-enforced, not assumed (capture_snapshot now needs hard-fail on empty spot).
  • Holding a rich-VRP straddle statically costs real EV (SPY 765: EV_PHYS −21.9% of risk by exit day) — the exit path IS the edge; static holding burns it.
  • IV rank ~99% with HV30 0.946 (EIX/PCG) means the crash is already in the windows — "expensive vol" alone is not a signal. The regime layer's VRP-size logic must respect this.
  • Stale expiry-IV artifacts in metrics can be cosmetic but must be checked (key to actual expiry).

Links