refactor(pattern2): move promotion decision into pattern2/api SSOT

Phase 263 P0.2: pattern2/api/ フォルダ化 - 入口SSOTの物理固定

目的: PromoteDecision/try_promote の参照点を1箇所に閉じ込めて、迷子防止

Changes:
1. 新規フォルダ構造:
   - pattern2/api/mod.rs - 入口SSOT(try_promote と PromoteDecision を再export)
   - pattern2/api/promote_decision.rs - PromoteDecision/PromoteStepResult 型定義
   - pattern2/api/promote_runner.rs - try_promote(...) 実装(SSOT entry point)
   - pattern2/mod.rs - api モジュールを公開

2. 移動/抽出:
   - PromoteDecision enum を promote_step_box.rs → pattern2/api/promote_decision.rs へ
   - promote_and_prepare_carriers を try_promote として pattern2/api/promote_runner.rs へ抽出

3. promote_step_box.rs を薄いラッパに縮退(35行, -177行):
   - pattern2::api::try_promote を呼び出すだけの互換用ラッパ
   - 将来的に削除予定(deprecated)

4. orchestrator を新API に書き換え:
   - use super::pattern2::api::{try_promote, PromoteDecision};
   - try_promote(...) を直接呼び出し

5. 参照確認:
   - rg で確認: すべての参照が pattern2::api 経由に収束 

検証:
- cargo test --lib: 1368/1368 PASS 
- quick smoke: 45/46 PASS (悪化なし)
- 参照点が pattern2/api に一本化され、迷子防止を物理的に保証
This commit is contained in:
2025-12-21 11:07:36 +09:00
parent abdb860e7e
commit e17902a443
7 changed files with 249 additions and 193 deletions

View File

@ -60,6 +60,7 @@ pub(in crate::mir::builder) mod escape_pattern_recognizer; // Phase 91 P5b
pub(in crate::mir::builder) mod common_init;
pub(in crate::mir::builder) mod loop_true_counter_extractor; // Phase 104: loop(true) counter extraction for Pattern2
pub(in crate::mir::builder) mod read_digits_break_condition_box; // Phase 104: break cond normalization for read_digits(loop(true))
pub(in crate::mir::builder) mod pattern2; // Phase 263 P0.2: Pattern2 module (api/ SSOT entry point)
pub(in crate::mir::builder) mod pattern2_break_condition_policy_router; // Phase 105: policy router box for Pattern2 break condition
pub(in crate::mir::builder) mod pattern2_policy_router; // Phase 108: unified Pattern2 policy router (balanced/read_digits/default)
pub(in crate::mir::builder) mod pattern2_inputs_facts_box; // Phase 105: Pattern2 input facts (analysis only)