diff --git a/docs/development/current/main/10-Now.md b/docs/development/current/main/10-Now.md index 2ace86a2..acf566ba 100644 --- a/docs/development/current/main/10-Now.md +++ b/docs/development/current/main/10-Now.md @@ -1,6 +1,6 @@ # Self Current Task — Now (main) -## Current Focus: Phase 29aa P6(Multi-predecessor Return join - intersection) +## Current Focus: Phase 29aa P7(Deterministic ReleaseStrong ordering) **2025-12-28: Phase 29aa P5 完了** ✅ - 目的: Return block が複数 predecessor のとき、incoming state が完全一致する場合のみ ReturnCleanup を成立させる @@ -17,6 +17,10 @@ - Selfcheck: Case 3.9(部分一致→cleanup)/ Case 3.10(intersection空→no cleanup)PASS - 検証: quick 154/154 PASS / selfcheck PASS +**2025-12-28: Phase 29aa P7 進行中** +- 目的: ReleaseStrong の `values` 順序を決定的にする(HashSet/HashMap 由来の非決定性排除) +- 入口: `docs/development/current/main/phases/phase-29aa/README.md` + **2025-12-27: Phase 29aa P4 完了** ✅ - 目的: Jump の直列チェーン(単一 predecessor)を通して ReturnCleanup を成立させる(cleanup は Return block のみ) - 入口: `docs/development/current/main/phases/phase-29aa/README.md` diff --git a/docs/development/current/main/30-Backlog.md b/docs/development/current/main/30-Backlog.md index e933564d..77a6316e 100644 --- a/docs/development/current/main/30-Backlog.md +++ b/docs/development/current/main/30-Backlog.md @@ -68,12 +68,13 @@ Related: - 入口: `docs/development/current/main/phases/phase-29z/README.md` - 指示書: `docs/development/current/main/phases/phase-29z/P0-RC_INSERTION_MINIMAL-INSTRUCTIONS.md` -- **Phase 29aa(P5 COMPLETE / P6 planned): RC insertion safety expansion(CFG-aware)** +- **Phase 29aa(P6 COMPLETE / P7 planned): RC insertion safety expansion(CFG-aware)** - 進捗: P2 ✅ 完了(Jump/Branch 終端で cleanup を入れない契約の SSOT 化) - 進捗: P3 ✅ 完了(Jump→Return single-predecessor state 伝播) - 進捗: P4 ✅ 完了(Jump-chain propagation to Return) - 進捗: P5 ✅ 完了(Multi-predecessor Return join: state完全一致のみ) - - 次: P6(Multi-predecessor Return join: intersection) + - 進捗: P6 ✅ 完了(Multi-predecessor Return join: intersection) + - 次: P7(Deterministic ReleaseStrong ordering) - 入口: `docs/development/current/main/phases/phase-29aa/README.md` - **Phase 29x(planned, post self-host): De-Rust runtime for LLVM execution** diff --git a/docs/development/current/main/phases/phase-29aa/README.md b/docs/development/current/main/phases/phase-29aa/README.md index 4789a499..64c594df 100644 --- a/docs/development/current/main/phases/phase-29aa/README.md +++ b/docs/development/current/main/phases/phase-29aa/README.md @@ -1,6 +1,6 @@ # Phase 29aa: RC insertion safety expansion(CFG-aware design) -Status: P6 Complete (Multi-predecessor Return join - intersection) +Status: P7 Ready (Deterministic ReleaseStrong ordering) Scope: Phase 29z の単一block限定実装から、誤releaseを起こさない形で CFG-aware に拡張するための設計を固める。 Entry: @@ -26,6 +26,7 @@ Progress: - 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 維持) +- P7: ReleaseStrong の values 順序を決定的にする(HashSet/HashMap 由来の非決定性を排除) P3 SSOT: - Contract: @@ -90,6 +91,17 @@ P6 SSOT: - PHI/loop/early-exit の cleanup - value が一致しない ptr を release 対象に含めること - Jump block への release 挿入(P2維持) + +P7 SSOT: +- Objective: + - ReleaseStrong の `values: Vec` の順序を決定的にし、再現性と差分追跡性を上げる。 +- Contract: + - 生成する `values` は常に `ValueId` 昇順に sort する + - dedup は “順序固定後に隣接重複を除去” で OK(または BTreeSet) + - 挙動は不変(release される集合は同じ、順序だけを固定) +- Scope: + - ReturnCleanup(単一block / P4 chain / P6 join)の `values` が対象 + - Overwrite/ExplicitNull の単一要素 vec はそのままで OK - Conservative: - intersection は「安全だが保守的」。value 不一致の ptr は release されない=リーク方向 - P5 でも同じく release できてなかったケースなので回帰にはならないが、完全なメモリ回収には将来の PHI 対応が必要