docs: Phase 120 StepTree facts/contract SSOT

This commit is contained in:
nyash-codex
2025-12-18 04:16:04 +09:00
parent 708accc853
commit 4e863c7cd8

View File

@ -44,6 +44,29 @@ lowering/PHI/CFG の判断にはまだ使わないdev-onlyだが、再解
- `required_caps`: capability 宣言(例: `NestedLoop`, `TryCatch`, `Throw`, `Lambda` など)
- `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 の SSOTPhase 119
**SSOT**: `cond`**AST 参照ID/ハンドル)** を保持する。