docs(phase29aa): queue P6 intersection join

This commit is contained in:
2025-12-28 04:44:18 +09:00
parent 02c01758b3
commit c8c99174af
3 changed files with 24 additions and 4 deletions

View File

@ -1,6 +1,6 @@
# Phase 29aa: RC insertion safety expansionCFG-aware design
Status: P5 Complete (Multi-predecessor Return join)
Status: P6 Ready (Multi-predecessor Return join - intersection)
Scope: Phase 29z の単一block限定実装から、誤releaseを起こさない形で CFG-aware に拡張するための設計を固める。
Entry:
@ -25,6 +25,7 @@ Progress:
- P3: Jump→Return単一 predecessorで state 伝播し ReturnCleanup を成立させるP2維持
- P4: Jump-chain単一 predecessor 直列)で state 伝播し ReturnCleanup を成立させるP2/P3 維持)
- P5: Multi-predecessor Return で incoming state が完全一致する場合のみ ReturnCleanup を成立させるP2/P3/P4 維持)
- P6: Multi-predecessor Return で incoming state の「安全な共通部分intersection」のみ cleanup するP2-P5 維持)
P3 SSOT:
- Contract:
@ -75,3 +76,17 @@ P5 SSOT:
- selfcheck Case 3.7state一致 → Return block に 1 cleanupPASS
- selfcheck Case 3.8state不一致 → 全ブロック 0 cleanupPASS
- 既定OFF維持featureなしは no-op
P6 SSOT:
- Objective:
- Return block が multi-predecessor のとき、incoming state が完全一致しない場合でも
「全経路で必ず保持されている ptr→value」のみを ReturnCleanup で release する。
- Contract:
- cleanup は Return block の BeforeTerminator のみJump/Branch block には入れない)
- join state は `intersection`(全 predecessor の end_state に同じ ptr が存在し、かつ value が同一のものだけ)
- intersection が empty の場合は cleanup しない
- subset/partial merge は許可するが、PHI 的な “値の合成” はしない(同一値のみ)
- Non-goals:
- PHI/loop/early-exit の cleanup
- value が一致しない ptr を release 対象に含めること
- Jump block への release 挿入P2維持