docs(edgecfg): define bridge-pattern removal criteria (Phase 271)

This commit is contained in:
2025-12-21 23:16:44 +09:00
parent df715e909e
commit a681298889
3 changed files with 25 additions and 0 deletions

View File

@ -1,5 +1,10 @@
# Self Current Task — Now (main)
## Next: Phase 271docs-only— Bridge pattern 撤去条件SSOT
- 目的: bridge pattern例: `Pattern9_AccumConstLoop`)を「汎用化せず、吸収して消す」ための撤去条件を SSOT 化
- 変更: `docs/development/current/main/design/edgecfg-fragments.md``docs/development/current/main/30-Backlog.md` のみ
## 2025-12-21Phase 270P0+P1— JoinIR-only minimal loop SSOT ✅
- 目的: `loop(i < 3)` + `sum=sum+i` + `i=i+1` を JoinIR 経路で通すことを fixture/smoke で固定

View File

@ -13,6 +13,11 @@ Related:
- Pattern1 は test-only stub のため不適合 → Pattern9AccumConstLoopを橋渡しとして追加
- 詳細: `phases/phase-270/README.md`
- **Phase 271planned, docs-only: Bridge pattern 撤去条件SSOT**
- 対象: bridge pattern例: `Pattern9_AccumConstLoop`
- 目的: 「汎用化しない」「Frag 合成へ吸収して削除する」を SSOT 化
- SSOT: `docs/development/current/main/design/edgecfg-fragments.md`
- **Phase 269 P1planned: Pattern8 Frag lowerer 実装**
- stub → 実装compose::loop_() + emit_frag()
- MIR terminator 生成確認Branch/Jump/Return

View File

@ -138,6 +138,21 @@ Frag = { entry_block, exits: Map<ExitKind, Vec<EdgeStub>> }
- Pattern1simple_while_minimalは test-only stub のため、一般ループの “基準” には使えない。
- Phase 270 では “最小の固定形” を Pattern9AccumConstLoopとして追加し、後で Frag 合成側へ吸収される前提で橋渡しにする。
## Bridge patterns撤去条件SSOT
ここで言う “bridge pattern” は、既存の JoinIR ルートを壊さずに **最小の固定形を先に通す**ための一時パターン。
(例: Phase 270 の `Pattern9_AccumConstLoop`
- 原則:
- bridge pattern は **汎用化しない**固定形SSOT + fixture/smoke で仕様を固定するだけ)。
- 将来は `Frag/ExitKind` 合成側へ **吸収して削除**する前提で追加する。
- 撤去条件(最低限):
1. loop の EdgeCFG 実戦投入が 1 箇所以上済みBasicBlockId 層で `Frag + emit_frag` を使っている)
2. bridge pattern の fixture が “Frag 合成経路” で PASS する
3. quick/integration の FAIL 位置が悪化しないことを確認済み
- 撤去手順(最小):
- router から bridge pattern を外す → fixture/smoke で PASS 維持 → ファイル削除
## 実装入口(コード SSOT
**Phase 264 で入口API を作成完了**