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-rustとlt-*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-cycleやaegis-lt-rustは shared token path を read して動作する。
State / parity contract¶
- Rust observation artifacts は
/volume1/aegis/wft_state/lt_rustに集約される。 - 代表 artifact:
runtime_status.jsoncursor.jsonparity_log.jsonllt_wft_comparison.jsonllt_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.pymulti_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 に残る
ResolvedParamsconstructor 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.mdAEGIS/WORK_LOG/2026-04-12_codex_strategy_parity_fix_plan.mdAEGIS/aegis-docs/docs/operations/live-runtime-rust-strangler-architecture.mdAEGIS/aegis-docs/docs/operations/lt-scan-cycle-runbook.mdAEGIS/aegis-docs/docs/operations/lt-token-keeper-runbook.mdAEGIS/aegis-docs/docs/operations/lt-quote-collector-runbook.md