docs: record Phase 265/266 EdgeCFG progress and research note
This commit is contained in:
31
docs/development/current/main/phases/phase-265/README.md
Normal file
31
docs/development/current/main/phases/phase-265/README.md
Normal file
@ -0,0 +1,31 @@
|
||||
# Phase 265 — EdgeCFG Fragments(compose/verify の合成則)
|
||||
|
||||
Status: Completed ✅
|
||||
SSOT (design): `docs/development/current/main/design/edgecfg-fragments.md`
|
||||
|
||||
## ゴール
|
||||
- Structured→CFG lowering を **ExitKind + Frag 合成**として表現する入口を育てる(pattern番号列挙を将来縮退させる)
|
||||
- 既存の JoinIR/merge/Pattern6/7/8 は触らず、**API と合成則だけ**を段階投入する
|
||||
|
||||
## 完了内容
|
||||
- P0: `compose`/`verify` の形を固定(入口SSOT迷子防止)
|
||||
- P1: `compose::loop_` の配線(Break/Continue → wires)を実装(test-only PoC)
|
||||
- P2: **wires/exits 分離**を導入し、`loop_`/`seq`/`if_` を合成則で実装
|
||||
- `exits`: `target=None` のみ(上位へ伝搬する未配線 exit)
|
||||
- `wires`: `target=Some(...)` のみ(内部で解決済み配線)
|
||||
- `if_` は `join_frag: Frag` を受け取り、Normal が「join 以降」を表すようにする
|
||||
|
||||
## 主要ファイル
|
||||
- `src/mir/builder/control_flow/edgecfg/api/compose.rs`
|
||||
- `src/mir/builder/control_flow/edgecfg/api/frag.rs`
|
||||
- `src/mir/builder/control_flow/edgecfg/api/edge_stub.rs`
|
||||
- `src/mir/builder/control_flow/edgecfg/api/verify.rs`
|
||||
|
||||
## コミット(参考)
|
||||
- `ab1510920` Phase 265 P0
|
||||
- `cda034fe8` Phase 265 P1
|
||||
- `21387f381` Phase 265 P2
|
||||
|
||||
## 次フェーズ
|
||||
- Phase 266: `wires → MIR terminator` の SSOT(test-only PoC)
|
||||
- Phase 267: Branch 生成 + JoinIR/NormalizedShadow への実適用(段階導入)
|
||||
31
docs/development/current/main/phases/phase-266/README.md
Normal file
31
docs/development/current/main/phases/phase-266/README.md
Normal file
@ -0,0 +1,31 @@
|
||||
# Phase 266 — EdgeCFG wires → MIR terminator(test-only PoC)
|
||||
|
||||
Status: Completed ✅
|
||||
SSOT (design): `docs/development/current/main/design/edgecfg-fragments.md`
|
||||
|
||||
## ゴール
|
||||
- `Frag.wires`(解決済み配線)を **MIR terminator** に落とす最小 PoC を作る
|
||||
- JoinIR/NormalizedShadow には触らず、**MIR BasicBlockId 層だけ**で証明する
|
||||
|
||||
## 完了内容
|
||||
- `emit_wires(function, wires)` を SSOT として追加(Jump/Return のみ)
|
||||
- `from` ごとにグループ化し **1 block = 1 terminator** を Fail-Fast で強制
|
||||
- `Return` は `target=None` を許可(target が意味を持たない)
|
||||
- `Jump` は `set_jump_with_edge_args()`(Phase 260 の SSOT ルール)
|
||||
- `Return` は `set_terminator(Return) + set_return_env()`(Return 専用メタ)
|
||||
- `verify_frag_invariants_strict()` を追加(段階導入)
|
||||
- 既存 `verify_frag_invariants()` は警告のまま維持
|
||||
- strict は `wires/exits` 分離契約を Err 化(PoC/emit 側のみ)
|
||||
|
||||
## 主要ファイル
|
||||
- `src/mir/builder/control_flow/edgecfg/api/emit.rs`
|
||||
- `src/mir/builder/control_flow/edgecfg/api/verify.rs`
|
||||
- `src/mir/builder/control_flow/edgecfg/api/mod.rs`
|
||||
|
||||
## テスト
|
||||
- `emit` のユニットテスト(Jump/Return/unwired/multiple-from)を追加し PASS
|
||||
|
||||
## 次フェーズ
|
||||
- Phase 267:
|
||||
- Branch の生成(wires → MIR)を追加
|
||||
- JoinIR/NormalizedShadow/Pattern6/7/8 の実適用(層境界を守って段階導入)
|
||||
Reference in New Issue
Block a user