docs: Phase 119 StepTree cond SSOT (AST handle)
This commit is contained in:
@ -44,13 +44,26 @@ lowering/PHI/CFG の判断にはまだ使わない(dev-only)だが、再解
|
||||
- `required_caps`: capability 宣言(例: `NestedLoop`, `TryCatch`, `Throw`, `Lambda` など)
|
||||
- `cond_sig`: if/loop 条件式の要約(下記)
|
||||
|
||||
### cond_sig の方針(SSOT)
|
||||
### cond の SSOT(Phase 119)
|
||||
|
||||
- cond_sig は **ASTNode 参照を保持しない**(巨大化・ライフタイム・clone コストの問題を避ける)。
|
||||
- cond_sig は **summary(要約)SSOT** とし、`AstSummary` 相当の安定表現に固定する。
|
||||
- 目的は「構造分類/契約の固定」であり、式同値(完全な等価判定)は非対象。
|
||||
- StepTree は当面 **観測/分類の SSOT(dev-only)** として運用する。
|
||||
- 将来 StepTree→Normalized(env+継続)を “本番導線” にする場合は、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(構造署名)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user