feat(edgecfg): Phase 268-270 savepoint (if_form adoption + Pattern9 minimal loop SSOT)

This commit is contained in:
2025-12-21 23:12:52 +09:00
parent 86a51cad2b
commit df715e909e
18 changed files with 1661 additions and 21 deletions

View File

@ -1,5 +1,37 @@
# Self Current Task — Now (main)
## 2025-12-21Phase 270P0+P1— JoinIR-only minimal loop SSOT ✅
- 目的: `loop(i < 3)` + `sum=sum+i` + `i=i+1` を JoinIR 経路で通すことを fixture/smoke で固定
- 結果: Pattern1 は test-only stub のため不適合 → Pattern9AccumConstLoopを橋渡しとして追加し、fixture は exit=3 で PASS
- 制約: `cf_loop` は JoinIR-only非JoinIR loop 経路や env-var 分岐は追加しない)
- 詳細: `docs/development/current/main/phases/phase-270/README.md`
## 2025-12-21Phase 269 P0Pattern8 Frag 適用 - test-only🚧
**目的**: Pattern8 を EdgeCFG Fragment API で実装し、NormalizedShadow への適用パターンを確立
**スコープ**: test-only lowerer + 最小 fixture + smoke test既存実装は触らない
**実装完了内容**:
- ✅ Phase 269 README 作成(設計境界と適用順を SSOT 化)
- ✅ Pattern8 Frag 版 lowerertest-only stub作成
- ✅ Unit test 追加test_pattern8_frag_lowering_stub
- ✅ 最小 fixture 作成apps/tests/phase269_p0_pattern8_frag_min.hako
- ✅ 最小 smoke test 作成VM のみ、tools/smokes/v2/profiles/integration/apps/phase269_p0_pattern8_frag_vm.sh
**テスト結果**:
- ✅ cargo build --release: **成功**
- ✅ cargo test --lib --release: **1389/1389 PASS**+1 新規テスト)
- ✅ smoke test: **PASS**exit code 7
- ✅ quick smoke: **45/46 PASS**(既存状態維持)
**次のステップP1**:
- Frag 版 lowerer の実装stub → 実装)
- compose::loop_() を使った Loop Frag 生成
- emit_frag() による MIR terminator 生成
**詳細**: `docs/development/current/main/phases/phase-269/README.md`
## 2025-12-21Phase 267 P0BranchStub + emit_frag
**目的**: Frag に Branch を第一級で追加し、wiresJump/Returnと同様に MIR terminator へ落とせる入口SSOTを作る
@ -10,9 +42,33 @@
-`emit_frag(function, frag)` 追加(`verify_frag_invariants_strict` を先頭で実行、1 block = 1 terminator を Fail-Fast
-`cargo test -p nyash-rust --lib` PASS
**注意P1**: NormalizedShadow/JoinIR への実適用は層ミスマッチがあるため Phase 268 に繰り越し
**注意P1**: NormalizedShadow/JoinIR への実適用は層ミスマッチがあるため Phase 268 に繰り越し
**詳細**: `docs/development/current/main/phases/phase-267/README.md`
## 2025-12-21Phase 268 P1compose::if_ entry edge-args SSOT化
**目的**: compose::if_() の then/else entry edge-args を呼び出し側 SSOT にし、TODO 削除Phase 267 P2+ からの継続)
**実装完了内容**:
- ✅ compose::if_() シグネチャ変更then_entry_args, else_entry_args パラメータ追加)
- ✅ emission/branch.rs::emit_conditional_edgecfg() から空 EdgeArgs を then/else 両方に渡す
- ✅ EdgeCFG テスト更新compose.rs 2箇所、emit.rs 1箇所
- ✅ TODO コメント削除完了Phase 267 P2+ TODO 解消)
**テスト結果**:
- ✅ cargo build --release: **成功**0エラー
- ✅ cargo test --lib --release: **1444/1444 PASS**
- ✅ quick smoke: **45/46 PASS**(既存状態維持)
**核心的な設計判断**:
1. **SSOT 原則**: compose::if_() 内部で then/else entry edge-args を "勝手に空 Vec で生成" しない → 呼び出し側が明示的に渡す
2. **P0 との整合性**: P0 で emission/branch.rs に薄いラッパーを作ったので、edge-args も同じ層で SSOT として渡す
**次フェーズへの橋渡し**:
- Phase 269: Pattern6/7/8 への Frag 適用 + fixture/smoke test
**詳細**: `docs/development/current/main/phases/phase-268/README.md`
## 2025-12-21Phase 266wires → MIR terminator 生成 - 最小 PoC
**目的**: wires を MIR terminator に変換する最小 PoC を実装し、Phase 267 での本格適用に備える