docs: Phase 119 StepTree cond SSOT (AST handle)

This commit is contained in:
nyash-codex
2025-12-18 04:03:50 +09:00
parent 052040e59c
commit 84d63ac11b

View File

@ -44,13 +44,26 @@ lowering/PHI/CFG の判断にはまだ使わないdev-onlyだが、再解
- `required_caps`: capability 宣言(例: `NestedLoop`, `TryCatch`, `Throw`, `Lambda` など)
- `cond_sig`: if/loop 条件式の要約(下記)
### cond_sig の方針SSOT
### cond の SSOTPhase 119
- cond_sig は **ASTNode 参照を保持しない**巨大化・ライフタイム・clone コストの問題を避ける)
- cond_sig は **summary要約SSOT** とし、`AstSummary` 相当の安定表現に固定する
- 目的は「構造分類/契約の固定」であり、式同値(完全な等価判定)は非対象
- StepTree は当面 **観測/分類の SSOTdev-only** として運用する
- 将来 StepTree→Normalizedenv+継続)を “本番導線” にする場合は、cond の lowering 用に `AstExprId` 等を保持する **別SSOT**(例: `StepTreeRef`を追加し、cond_sig は署名/ログ用途として維持する
**SSOT**: `cond`**AST 参照ID/ハンドル)** を保持する
- `StepNode::If` / `StepNode::Loop``cond_ast: Option<AstNodeHandle>` を追加
- `AstNodeHandle` は AST 参照の軽量表現(将来的に `AstExprId` 等に移行可能)
- **Phase 119**: `&ASTNode` 直接参照(ライフタイム制約あり)として実装
- dev-only 用途なので、将来の ID 化は別 Phase で対応可能
**派生**: `cond_sig` は署名/ログ/差分検知用の派生表現。
- `AstSummary` から計算される要約文字列(比較・統計・ログ用)。
- `StepTreeSignature``signature_basis_string()` に含まれる。
- **Span は含めない**(決定性保証)。
**不変条件**:
- `cond_ast``signature_basis_string()` に混ぜない(既存の署名安定性を維持)。
- `AstSummary``cond_ast` から計算され、構造分類/契約固定の責務を持つ。
**将来計画**Phase 119 以降):
- StepTree→Normalized 変換箱を実装する際は、`cond_ast` を lowering 入力として活用する。
- `cond_sig` は表示/署名用途として維持される。
## StepTreeSignature構造署名