docs: Phase 120 StepTree facts/contract SSOT
This commit is contained in:
@ -44,6 +44,29 @@ lowering/PHI/CFG の判断にはまだ使わない(dev-only)だが、再解
|
|||||||
- `required_caps`: capability 宣言(例: `NestedLoop`, `TryCatch`, `Throw`, `Lambda` など)
|
- `required_caps`: capability 宣言(例: `NestedLoop`, `TryCatch`, `Throw`, `Lambda` など)
|
||||||
- `cond_sig`: if/loop 条件式の要約(下記)
|
- `cond_sig`: if/loop 条件式の要約(下記)
|
||||||
|
|
||||||
|
### Facts→Decision→Emit 設計(Phase 120)
|
||||||
|
|
||||||
|
**責務分離(Box-First原則)**:
|
||||||
|
1. **StepTreeBuilderBox**: 構造 + facts 抽出まで
|
||||||
|
- AST を StepNode 木に変換
|
||||||
|
- `StepTreeFacts` を収集(exits/writes/required_caps/cond_sig の生データ)
|
||||||
|
- 意思決定・整形・署名生成はしない
|
||||||
|
|
||||||
|
2. **StepTreeContractBox**: facts → contract の整形のみ
|
||||||
|
- `StepTreeFacts` を受け取り `StepTreeContract` に整形
|
||||||
|
- BTreeSet で安定性保証(順序決定性)
|
||||||
|
- 意思決定はしない(facts をそのまま contract に移す)
|
||||||
|
|
||||||
|
3. **StepTree→Normalized**: contract を読むだけ
|
||||||
|
- AST 再解析禁止
|
||||||
|
- contract に含まれる情報のみで lowering 判断
|
||||||
|
- 将来実装時の契約
|
||||||
|
|
||||||
|
**不変条件**:
|
||||||
|
- `signature_basis_string()` の決定性維持(既定挙動不変)
|
||||||
|
- facts は順序に依存しない(BTreeSet 使用)
|
||||||
|
- contract 生成は冪等(同じ facts から同じ contract)
|
||||||
|
|
||||||
### cond の SSOT(Phase 119)
|
### cond の SSOT(Phase 119)
|
||||||
|
|
||||||
**SSOT**: `cond` は **AST 参照(ID/ハンドル)** を保持する。
|
**SSOT**: `cond` は **AST 参照(ID/ハンドル)** を保持する。
|
||||||
|
|||||||
Reference in New Issue
Block a user