feat(edgecfg): Phase 268-270 savepoint (if_form adoption + Pattern9 minimal loop SSOT)
This commit is contained in:
@ -1,5 +1,37 @@
|
||||
# Self Current Task — Now (main)
|
||||
|
||||
## 2025-12-21:Phase 270(P0+P1)— JoinIR-only minimal loop SSOT ✅
|
||||
|
||||
- 目的: `loop(i < 3)` + `sum=sum+i` + `i=i+1` を JoinIR 経路で通すことを fixture/smoke で固定
|
||||
- 結果: Pattern1 は test-only stub のため不適合 → Pattern9(AccumConstLoop)を橋渡しとして追加し、fixture は exit=3 で PASS
|
||||
- 制約: `cf_loop` は JoinIR-only(非JoinIR loop 経路や env-var 分岐は追加しない)
|
||||
- 詳細: `docs/development/current/main/phases/phase-270/README.md`
|
||||
|
||||
## 2025-12-21:Phase 269 P0(Pattern8 Frag 適用 - test-only)🚧
|
||||
|
||||
**目的**: Pattern8 を EdgeCFG Fragment API で実装し、NormalizedShadow への適用パターンを確立
|
||||
**スコープ**: test-only lowerer + 最小 fixture + smoke test(既存実装は触らない)
|
||||
|
||||
**実装完了内容**:
|
||||
- ✅ Phase 269 README 作成(設計境界と適用順を SSOT 化)
|
||||
- ✅ Pattern8 Frag 版 lowerer(test-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-21:Phase 267 P0(BranchStub + emit_frag)✅
|
||||
|
||||
**目的**: Frag に Branch を第一級で追加し、wires(Jump/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-21:Phase 268 P1(compose::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-21:Phase 266(wires → MIR terminator 生成 - 最小 PoC)✅
|
||||
|
||||
**目的**: wires を MIR terminator に変換する最小 PoC を実装し、Phase 267 での本格適用に備える
|
||||
|
||||
Reference in New Issue
Block a user