docs(mir): Phase 137-6-S3 - Router委譲の準備コメント追加
## 目的 将来の Router → Canonicalizer 委譲に備えた TODO コメント拡充 ## 変更内容 ### routing.rs の TODO コメント拡充 - 有効化条件を明記(新フラグ or 既存フラグ) - 注意事項追加(全 Pattern の parity green 必須) - コード例を追加(将来実装時の参考) ### Phase 137 README 更新 - Phase 137-6(完了)セクション追加 - S1/S2/S3 の実装内容を記録 - 効果と受け入れ基準達成を記録 ## 効果 - ✅ 将来の委譲に備えた明確なガイド - ✅ Phase 137-6 完了記録 - ✅ 既定挙動不変(フラグOFF時) ## Phase 137-6 完了サマリー ### 実装完了内容 - **S1**: choose_pattern_kind SSOT 入口(61行追加) - **S2**: dev-only parity check 統合(52行追加) - **S3**: Router 委譲準備コメント(ドキュメント拡充) ### 受け入れ基準 - ✅ strict parity green(skip_whitespace) - ✅ 既定挙動不変(フラグOFF時) - ✅ 新 env 追加なし - ✅ choose_pattern_kind が SSOT 入口として機能 - ✅ 全テスト PASS(退行なし) ### テスト結果 - ✅ `cargo build --release`: 成功 - ✅ スモークテスト(simple_*): 5/5 PASS - ✅ parity check 動作確認: ``` NYASH_JOINIR_DEV=1 HAKO_JOINIR_STRICT=1 ./target/release/hakorune \ tools/selfhost/test_pattern3_skip_whitespace.hako → [choose_pattern_kind/PARITY] OK ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -51,13 +51,48 @@
|
|||||||
- ExitContract が pattern 選択の決定要因として明確化
|
- ExitContract が pattern 選択の決定要因として明確化
|
||||||
- 構造的特徴(if-else 等)は `notes` に記録(将来の Pattern 細分化に備える)
|
- 構造的特徴(if-else 等)は `notes` に記録(将来の Pattern 細分化に備える)
|
||||||
|
|
||||||
## Phase 6(次): Router 委譲(dev-only / 段階投入)
|
## Phase 6(完了): Router 委譲(dev-only / 段階投入)
|
||||||
|
|
||||||
- 目標: “既存 router の結果” を最終SSOTとして維持したまま、dev-only で Canonicalizer の `RoutingDecision` を router 選択に使う経路を用意する。
|
- 目標: "既存 router の結果" を最終SSOTとして維持したまま、dev-only で Canonicalizer の `RoutingDecision` を router 選択に使う経路を用意する。
|
||||||
- 方針:
|
- 方針:
|
||||||
- まず dev-only で `RoutingDecision.chosen` を router に反映し、strict 時は parity を維持する(ズレたら Fail-Fast)。
|
- まず dev-only で `RoutingDecision.chosen` を router に反映し、strict 時は parity を維持する(ズレたら Fail-Fast)。
|
||||||
- 既定挙動(dev flags OFF)では現行 router をそのまま使う。
|
- 既定挙動(dev flags OFF)では現行 router をそのまま使う。
|
||||||
|
|
||||||
|
### Phase 137-6(完了): Router 委譲の段階投入
|
||||||
|
|
||||||
|
- **S1(完了)**: choose_pattern_kind SSOT 入口を新設
|
||||||
|
- Pattern 選択ロジックを `routing.rs` の1関数に集約
|
||||||
|
- `LoopPatternContext::new()` から使用
|
||||||
|
- 重複コード削減
|
||||||
|
|
||||||
|
- **S2(完了)**: dev-only で canonicalizer decision を提案として受け取る
|
||||||
|
- `choose_pattern_kind()` に parity check 統合
|
||||||
|
- dev-only 時に Canonicalizer を呼び出し
|
||||||
|
- 不一致時: strict mode は panic、debug mode はログのみ
|
||||||
|
- 既定挙動: `router_choice` を維持(Canonicalizer は提案のみ)
|
||||||
|
|
||||||
|
- **S3(完了)**: Router 委譲の準備コメント追加(TODO のみ)
|
||||||
|
- 将来の委譲に備えた TODO コメント拡充
|
||||||
|
- 有効化条件と注意事項を明記
|
||||||
|
- コード例を追加
|
||||||
|
|
||||||
|
### 効果
|
||||||
|
- ✅ Pattern 選択ロジックの SSOT 化(choose_pattern_kind)
|
||||||
|
- ✅ Canonicalizer → Router の parity check 統合
|
||||||
|
- ✅ 将来の委譲に備えた構造確立
|
||||||
|
- ✅ 新 env 追加なし(既存の `joinir_dev_enabled()` と `strict_enabled()` を使用)
|
||||||
|
|
||||||
|
### 受け入れ基準達成
|
||||||
|
- ✅ strict parity green(skip_whitespace)
|
||||||
|
```
|
||||||
|
NYASH_JOINIR_DEV=1 HAKO_JOINIR_STRICT=1 ./target/release/hakorune \
|
||||||
|
tools/selfhost/test_pattern3_skip_whitespace.hako
|
||||||
|
→ [choose_pattern_kind/PARITY] OK
|
||||||
|
```
|
||||||
|
- ✅ 既定挙動不変(フラグOFF時)
|
||||||
|
- ✅ スモークテスト(simple_*): 5/5 PASS
|
||||||
|
- ✅ 全テスト PASS(退行なし)
|
||||||
|
|
||||||
## Phase 138(完了): 基盤整備(箱化モジュール化)
|
## Phase 138(完了): 基盤整備(箱化モジュール化)
|
||||||
|
|
||||||
- **P1-A**: loop_canonicalizer を 4 モジュール分割(931行 → 最大414行/ファイル)
|
- **P1-A**: loop_canonicalizer を 4 モジュール分割(931行 → 最大414行/ファイル)
|
||||||
|
|||||||
@ -66,6 +66,19 @@ pub(in crate::mir::builder) fn choose_pattern_kind(
|
|||||||
|
|
||||||
// TODO (Phase 137-6-S3): ここで canonical_choice を返す
|
// TODO (Phase 137-6-S3): ここで canonical_choice を返す
|
||||||
// 現時点では router_choice を維持(既定挙動不変)
|
// 現時点では router_choice を維持(既定挙動不変)
|
||||||
|
//
|
||||||
|
// 有効化条件(将来実装):
|
||||||
|
// 1. joinir_dev_enabled() && 新フラグ(例: canonicalizer_preferred())
|
||||||
|
// 2. または joinir_dev_enabled() をそのまま使用
|
||||||
|
//
|
||||||
|
// 注意: 有効化時は全 Pattern の parity が green であること
|
||||||
|
//
|
||||||
|
// 有効化後のコード例:
|
||||||
|
// ```rust
|
||||||
|
// if crate::config::env::canonicalizer_preferred() {
|
||||||
|
// return canonical_choice;
|
||||||
|
// }
|
||||||
|
// ```
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user