docs(phase29aa): mark P7 complete and queue P8

This commit is contained in:
2025-12-28 06:00:34 +09:00
parent d3cf73f2ae
commit 6d17a0f988
3 changed files with 20 additions and 4 deletions

View File

@ -1,6 +1,6 @@
# Phase 29aa: RC insertion safety expansionCFG-aware design
Status: P7 Complete (Deterministic ReleaseStrong ordering)
Status: P8 Ready (Null propagation across CFG; Copy-only)
Scope: Phase 29z の単一block限定実装から、誤releaseを起こさない形で CFG-aware に拡張するための設計を固める。
Entry:
@ -27,6 +27,7 @@ Progress:
- P5: Multi-predecessor Return で incoming state が完全一致する場合のみ ReturnCleanup を成立させるP2/P3/P4 維持)
- P6: Multi-predecessor Return で incoming state の「安全な共通部分intersection」のみ cleanup するP2-P5 維持)
- P7: ReleaseStrong の values 順序を決定的にするHashSet/HashMap 由来の非決定性を排除)
- P8: Null 伝播を CFG を跨いで扱う(最初は Copy-only + single-predecessor
P3 SSOT:
- Contract:
@ -102,6 +103,16 @@ P7 SSOT:
- Scope:
- ReturnCleanup単一block / P4 chain / P6 join`values` が対象
- Overwrite/ExplicitNull の単一要素 vec はそのままで OK
P8 SSOT:
- Objective:
- `Store null`explicit dropの追跡を CFG 越しに正しく扱い、誤 release を避ける。
- Contract:
- 最初は Copy-only の null 伝播のみ(`Copy dst, src`
- single-predecessorJump-chain / single-pred Return範囲に限定
- multi-predecessor では null 伝播は合流しない(保守的に Unknown 扱い)
- Acceptance:
- selfcheck: null を A で作って B で Store に使うJump で跨ぐ)ケースを追加し PASS
- Conservative:
- intersection は「安全だが保守的」。value 不一致の ptr は release されない=リーク方向
- P5 でも同じく release できてなかったケースなので回帰にはならないが、完全なメモリ回収には将来の PHI 対応が必要