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)¶
- 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-closeddata_missingrule — as code. - Amendment governance — the pilot's standing kills are hardcoded in the cron prompt. The framework's quorum process makes them versioned, evidence-gated rules.
- Provenance/OKF knowledge plane — the pilot's knowledge lives in prompts and reports; the wiki makes it queryable with per-claim citations.
- 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¶
- One EV engine:
ev_ladder.pywins. 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 inreferences/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. - 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.
- 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).
- ~~Immediate pilot bug~~ RESOLVED + verified (2026-09-15), then narrowed (2026-10-09, #84): the
_covers()directional inversion was patched in commiteb34572(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 genuinelyUNDEFINED-RISK._coversstill 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_coversmakes 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¶
- Framework charter · EV contract · Operating rhythm
- Pilot artifacts:
(ai-rig) ~/src/ocr/podcast/wiki/hermes-pilot/— round-state.json, team-insights.md, round-content-2026-09-14.md, ev-ladders-2026-09-14.json