docs: record Phase 265/266 EdgeCFG progress and research note

This commit is contained in:
2025-12-21 17:20:58 +09:00
parent f8779df5a6
commit 655a8efbc6
10 changed files with 207 additions and 12 deletions

View File

@ -5,6 +5,7 @@ Scope: JoinIR→MIR の「暗黙 ABI」を消し、Join を第一級に扱う CF
Related:
- Navigation SSOT: `docs/development/current/main/design/joinir-design-map.md`
- Investigation (Phase 256): `docs/development/current/main/investigations/phase-256-joinir-contract-questions.md`
- Structured→CFG lowering SSOTFrag/ExitKind: `docs/development/current/main/design/edgecfg-fragments.md`
- Decisions: `docs/development/current/main/20-Decisions.md`
- Future features (catch/cleanup, cleanup/defer, async): `docs/development/current/main/design/exception-cleanup-async.md`
@ -122,3 +123,15 @@ Strangler 期間は “読む側だけ寄せる” と取りこぼしが起き
- `set_terminator(...)` のような入口に寄せ、successors/preds の同期漏れを構造で潰す
- **verifyFail-Fast**
- terminator から計算した successors と、キャッシュ `block.successors` の一致をチェックして “同期漏れ” を即死させる
## pattern番号の位置づけ収束のさせ方
重要: “pattern番号で分岐する” こと自体は長期的には消したい(臭い)。ただし **IR上の形terminator/exit種別で分岐する**のは普通で、むしろ正しい。
収束方針:
- EdgeCFG の基盤が固まった後、Structured→CFG lowering の中心概念を **pattern番号**ではなく **ExitKind と Fragfragment**に移す
- pattern は “Extractor形の認識/ Plan最小要件の抽出” までに縮退し、merge/配線層へ逆流させない
- 最終的に残る実装は `seq/if/loop/cleanup` 等の **合成則**と、`join(block params)` だけになる
設計SSOT: `docs/development/current/main/design/edgecfg-fragments.md`