refactor(edgecfg): add Frag/ExitKind API entrypoint (Phase 264 design-first)
Phase 264 P0: EdgeCFG Fragment 入口API作成(実装置換なし) - 入口フォルダ作成: src/mir/builder/control_flow/edgecfg/api/ - コア型定義: ExitKind, EdgeStub, Frag - 合成関数シグネチャ: seq, if_, loop_, cleanup(中身TODO、pub(crate)) - 最小テスト: 3個のユニットテスト追加(frag.rs) - ドキュメント連動: edgecfg-fragments.md に実装入口追記 制約遵守: - 既存 pattern6/7/8 未改変 - merge/EdgeCFG 未改変 - 既存LoopId使用(control_form.rs に PartialOrd, Ord 追加) - MIR側EdgeArgs使用(JoinIRと混線回避) - BTreeMap採用(決定的順序保証、Phase 69-3 教訓) 次フェーズ: Phase 265 で Pattern8 適用時に compose::loop_ を実装 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -64,14 +64,25 @@ Related:
|
||||
- 最小再現 fixture + smoke で固定(先に失敗を SSOT 化)
|
||||
- Pattern2 が不成立のときは “部分続行” せず `Ok(None)` で fallback(既定挙動不変)
|
||||
|
||||
- **Phase 263+(planned / refactor): Pattern2 PromoteDecision API hardening**
|
||||
- ねらい: “Reject でも続行して後段で落ちる” を構造で不可能にする(迷子防止)
|
||||
- 形(最小):
|
||||
- `PromoteStepBox::try_promote(...) -> Result<PromoteDecision, String>`
|
||||
- `PromoteDecision::{Promoted, NotApplicable, Freeze}`
|
||||
- 受け入れ条件:
|
||||
- orchestrator が `NotApplicable` を受け取ったら Pattern2 を `Ok(None)` で抜けて fallback(SSOT)
|
||||
- “Reject=continue” のような曖昧挙動がコードから消える
|
||||
- **(DONE)Phase 263 P0.2: Pattern2 PromoteDecision API hardening**
|
||||
- 入口SSOT: `src/mir/builder/control_flow/joinir/patterns/pattern2/api/`
|
||||
- `PromoteDecision::{Promoted, NotApplicable, Freeze}` と `try_promote(...)` に参照点を収束(Option揺れを撤去)
|
||||
|
||||
- **Phase 264(✅ 入口作成完了): EdgeCFG Fragment 入口作成(design-first)**
|
||||
- **ステータス**: ✅ 入口作成完了(適用は次フェーズ)
|
||||
- **実装内容**:
|
||||
- `edgecfg/api/` フォルダに SSOT 入口作成
|
||||
- `ExitKind`, `EdgeStub`, `Frag` の型定義
|
||||
- `seq`, `if_`, `loop_`, `cleanup` のシグネチャ固定(pub(crate))
|
||||
- 最小ユニットテスト 3個
|
||||
- ドキュメント連動(edgecfg-fragments.md)
|
||||
- **制約遵守**:
|
||||
- 既存 pattern6/7/8 未改変
|
||||
- merge/EdgeCFG 未改変
|
||||
- cargo test -p nyash-rust --lib --no-run 成功確認
|
||||
- **次フェーズへの橋渡し**:
|
||||
- Phase 265 で Pattern8 適用時に `compose::loop_` を実装
|
||||
- 再利用確認後、pattern番号分岐を段階的に削減
|
||||
|
||||
- **real-app loop regression の横展開(VM + LLVM EXE)**
|
||||
- ねらい: 実コード由来ループを 1 本ずつ最小抽出して fixture/smoke で固定する(段階投入)。
|
||||
|
||||
Reference in New Issue
Block a user