コンテンツにスキップ

LT Runtime Lane Architecture

Purpose

この文書は、2026-04-13 時点の LT runtime lane を説明する。 現状は Rust への全面移行完了ではなく、Python 主系 + Rust 並走である。 そのため、役割を「execution の source of truth」と「shadow / parity / collector sidecars」に分けて理解する必要がある。

Executive summary

  • Primary execution: Python aegis-wft
  • Shadow / observation: Rust aegis-lt-rustlt-* sidecars
  • Shared contracts: token cache, replay/state JSONL, quote sample directories
  • Migration status: strategy field parity は完了、未解消 drift は runtime-only keys / legacy config / constructor drift 側に残る

Coexistence map

flowchart LR
    subgraph PythonMain["Python main lane"]
        EntryPy["run_multi_scenario_pt.py"]
        EnginePy["MultiScenarioPTEngine"]
        PT["aegis-wft"]
        PyState["PT state / replay artifacts"]
    end

    subgraph Shared["Shared host contracts"]
        Tokens["/volume1/aegis/tokens"]
        State["/volume1/aegis/wft_state/lt_rust"]
        Quotes["/volume1/aegis/quote_samples\n/quote_samples_rust"]
        Configs["/volume1/aegis/repo/aegis_v3/configs"]
    end

    subgraph RustLane["Rust LT lane"]
        Shadow["aegis-lt-rust / lt-shadow"]
        Scan["aegis-lt-scan-cycle"]
        TokenKeeper["aegis-lt-token-keeper"]
        QuoteCollector["aegis-lt-quote-collector"]
        Validator["aegis-lt-validator"]
        Parity["aegis-lt-parity"]
        IBKR["aegis-lt-ibkr-gateway\n+\naegis-lt-ibkr-quote-collector"]
    end

    EntryPy --> EnginePy --> PT
    PT --> PyState
    PT --> Tokens
    PT --> Quotes

    Tokens --> Shadow
    Tokens --> Scan
    Tokens --> QuoteCollector
    Tokens --> TokenKeeper

    PyState --> Shadow
    State --> Validator
    State --> Parity
    State --> Scan
    Quotes --> QuoteCollector
    Quotes --> Parity
    Configs --> Scan
    Configs --> QuoteCollector
    Configs --> TokenKeeper
    Configs --> IBKR

Lane responsibilities

Python main lane

  • run_multi_scenario_pt.py から MultiScenarioPTEngine を起動し、LT_RC / WFT / PT_XW などの scenario 群を運用する。
  • 実発注、Saxo balance / position handling、既存 PT state の source of truth は依然として Python 側にある。
  • replay / state artifact を生成し、Rust 側の観測材料を供給する。

Rust LT lane

Service Primary role Notes
aegis-lt-rust replay/shadow summary legacy replay を読み、Rust summary を出力
aegis-lt-scan-cycle Rust-native multi-scenario scan runner 現状は observation/dry-run 前提
aegis-lt-token-keeper Rust token refresh daemon Python keeper と別 token file で並走
aegis-lt-quote-collector Rust quote sample daemon Python collector と別 output / port
aegis-lt-parity parity / diff checks summary/comparison の継続監視
aegis-lt-validator cutover gate / validator runtime artifact の健全性確認
aegis-lt-ibkr-* IBKR shadow lane Saxo 問題切り分け用の paper-side observation

Data contracts

Token contract

  • Python aegis-token-keeper-live が canonical token cache を維持する。
  • Rust aegis-lt-token-keeper は migration 観測中は別 file を使い、race を避ける。
  • aegis-lt-scan-cycleaegis-lt-rust は shared token path を read して動作する。

State / parity contract

  • Rust observation artifacts は /volume1/aegis/wft_state/lt_rust に集約される。
  • 代表 artifact:
  • runtime_status.json
  • cursor.json
  • parity_log.jsonl
  • lt_wft_comparison.jsonl
  • lt_shadow_summary.json

Quote contract

  • Python collector は既存 quote_samples を維持する。
  • Rust collector は quote_samples_rust:8094 の status API を使い、並走観測中の衝突を避ける。

Deployment topology

  • 各 Rust service は lt-rust-docker/docker-compose.<service>.yml と専用 workflow を持つ。
  • deploy は deploy-lt-scan-cycle.yml, deploy-lt-token-keeper.yml, deploy-lt-quote-collector.yml, deploy-lt-ibkr-*.yml のように service ごとに独立する。
  • Why: Python PT を巻き込まずに rollout / rollback 粒度を最小化するため。

Current migration reading

What is already aligned

  • config loader / resolver / schema の大半は Rust 側に移行済み。
  • 7 strategy block (beat_shield, spear, crisis_alpha, bear_call, put_bwb, put_calendar, deep_bear_put) は Python/Rust field parity 完了。

What is still Python-primary

  • paper_trading.py
  • multi_scenario_pt.py
  • PT state persistence and replay orchestration
  • decision log / runtime boundary helpers

What still blocks full cutover

  • runtime-only LT/PT keys と BT/shared loader の contract drift
  • 一部 legacy YAML field の cleanup
  • Python tests に残る ResolvedParams constructor drift
  • market-open observation での parity / Polygon parse error の再確認

Operational rule of thumb

  • Python lane を止めずに Rust lane を観測する。
  • shared path を変えるときは source-of-truth を明示してから行う。
  • cutover 判定は parity / validator / runtime_status の evidence が揃ってから行う。

Source references

  • AEGIS/WORK_LOG/2026-04-12_codex_python_rust_migration_coverage.md
  • AEGIS/WORK_LOG/2026-04-12_codex_strategy_parity_fix_plan.md
  • AEGIS/aegis-docs/docs/operations/live-runtime-rust-strangler-architecture.md
  • AEGIS/aegis-docs/docs/operations/lt-scan-cycle-runbook.md
  • AEGIS/aegis-docs/docs/operations/lt-token-keeper-runbook.md
  • AEGIS/aegis-docs/docs/operations/lt-quote-collector-runbook.md