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:
nyash-codex
2025-12-16 07:44:57 +09:00
parent 91d7607682
commit 632e495e51
2 changed files with 50 additions and 2 deletions

View File

@ -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 greenskip_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行/ファイル)

View File

@ -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;
// }
// ```
} }
} }
} }