2.1 KiB
2.1 KiB
Plan/Frag Freeze Taxonomy (SSOT)
Status: Draft (Phase 29ai P2)
Scope: Facts → Plan(仕様不変)
目的: Result<Option<Plan>, Freeze> の “None と Freeze の境界” を規約として固定し、実装者の解釈差で挙動が揺れるのを防ぐ。
Return Contract (SSOT)
Ok(None) = NotApplicable
「plan 化の対象ではない」ため、既存経路に委譲して良い。
- 例:
- region が単純直列で、Plan/Frag を挟む必然がない
- 必須の入口条件が揃っていない(loop/header/exit が確定できない等)※ただし “対象っぽい” 場合は Freeze
Ok(Some(plan)) = Unique plan
候補が一意に確定し、emit に必要な情報が揃っている。
Err(Freeze) = Fail-Fast(silent fallback 禁止)
“対象っぽい” のに plan が一意化できない、または契約違反/禁止形が観測された。
Tags (recommended)
plan/freeze:contract- 形が契約を破っている(例: 必須 step が欠落、join 入力の整合が崩れている)
plan/freeze:ambiguous- 複数候補が成立し、一意化できない(将来のルール追加で解消される可能性がある)
plan/freeze:unstructured- Skeleton が確定できない(irreducible CFG / multi-entry loop など、構造化CFGの定義域外)
plan/freeze:unsupported- 一意に判定できるが、未実装で扱えない(“未対応” を誤って None にしない)
plan/freeze:bug- 不変条件が壊れている/到達してはいけない状態(実装バグ・内部矛盾)
Message format (SSOT)
コード側の Display は安定化する(例):
"[plan/freeze:{tag}] {message}"
必要なら hint を別枠で付ける(ログで検知しやすくする)。
References
- Entry:
docs/development/current/main/phases/phase-29ai/README.md - Plan/Frag overview:
docs/development/current/main/design/edgecfg-fragments.md - Pattern6/7 contracts:
docs/development/current/main/design/pattern6-7-contracts.md - CorePlan Skeleton/Feature model:
docs/development/current/main/design/coreplan-skeleton-feature-model.md