Files
hakorune/docs/development/current/main/phases/phase-122/README.md

41 lines
1.7 KiB
Markdown
Raw Normal View History

2025-12-18 04:48:53 +09:00
# Phase 122: StepTree→Normalizedif-only 実生成 / dev-only
## 目的
- Phase 121 で導入した StepTree→Normalized の “shadow変換contract-only” を一段進め、if-only を対象に Normalized JoinModuleenv+継続)を実生成する。
- 既定挙動は不変:`joinir_dev_enabled()` のときだけ生成・検証し、本番経路の出力/動作は変えない。
- mismatch は strict のときだけ Fail-Fast`freeze_with_hint`、hint必須
## Scope
- 対象: if-onlyloopなし
- 非対象strictではcap不足でFail-Fast:
- Loop / Break / ContinuePhase 112/121 の guard 方針に従う)
## 実装方針SSOT
- 入力SSOT: `StepTree` + `StepTreeFacts` + `StepTreeContract`
- facts/contract は再解析しない(変換箱が AST を再走査して “推測” しない)
- 生成SSOT: “env + 継続” に統一し、PHI を直接扱わない
- merge: `join_k(env)` への tail-call
- env layout: `writes` で宣言された変数のみ
- 失敗時:
- dev-only: 理由ログ(タグ + 1行
- strict: `freeze_with_hint`1行hint必須、空hintは禁止
## 受け入れ基準
- `cargo test --lib` が PASS
- Phase 121 の既存 smokes が退行しない
- Phase 122 の dev-only 検証で mismatch が出ないstrict で Fail-Fast するなら、その時点で修正が必要)
## 関連
- Phase 119121: StepTree SSOT + shadow parity
- `docs/development/current/main/design/control-tree.md`
- `docs/development/current/main/phases/phase-121/README.md`
- StepTree 実装:
- `src/mir/control_tree/step_tree.rs`
- `src/mir/control_tree/step_tree_facts.rs`
- `src/mir/control_tree/step_tree_contract_box.rs`