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` など) - `required_caps`: capability 宣言(例: `NestedLoop`, `TryCatch`, `Throw`, `Lambda` など)
- `cond_sig`: if/loop 条件式の要約(下記) - `cond_sig`: if/loop 条件式の要約(下記)
### cond_sig の方針SSOT ### cond の SSOTPhase 119
- cond_sig は **ASTNode 参照を保持しない**巨大化・ライフタイム・clone コストの問題を避ける) **SSOT**: `cond`**AST 参照ID/ハンドル)** を保持する
- cond_sig は **summary要約SSOT** とし、`AstSummary` 相当の安定表現に固定する - `StepNode::If` / `StepNode::Loop``cond_ast: Option<AstNodeHandle>` を追加
- 目的は「構造分類/契約の固定」であり、式同値(完全な等価判定)は非対象 - `AstNodeHandle` は AST 参照の軽量表現(将来的に `AstExprId` 等に移行可能)
- StepTree は当面 **観測/分類の SSOTdev-only** として運用する - **Phase 119**: `&ASTNode` 直接参照(ライフタイム制約あり)として実装
- 将来 StepTree→Normalizedenv+継続)を “本番導線” にする場合は、cond の lowering 用に `AstExprId` 等を保持する **別SSOT**(例: `StepTreeRef`を追加し、cond_sig は署名/ログ用途として維持する - 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構造署名 ## StepTreeSignature構造署名