Files
hakorune/docs/development/current/main/phases/phase-122
2025-12-18 04:48:53 +09:00
..
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-Fastfreeze_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_hint1行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