docs(phase260): checkpoint P0/P0.1 + update quick first fail

This commit is contained in:
2025-12-21 05:54:00 +09:00
parent 1fe5be347d
commit 8fa7e64f24
3 changed files with 25 additions and 11 deletions

View File

@ -18,20 +18,26 @@
## Current First FAIL (SSOT)
- **Before Phase 259 P0**: `json_lint_vm / StringUtils.is_integer/1`
- **After Phase 259 P0**: `json_lint_vm / Main.main/0 nested-loop with break`
- **After Phase 260 P0.1**: `core_direct_array_oob_set_rc_vm / Stage-B compile / JoinIR Pattern2 LoopBodyLocal(seg)`
### Next FAIL Details
- **Test**: `json_lint_vm`
- **Function**: `Main.main/0`
- **Error**: `[cf_loop/pattern2] Failed to extract break condition from loop body`
- **Pattern**: Nested loop外側 `loop(i < cases.length())` 内で内側 `loop(j < valid.length())` + break
- **Test**: `core_direct_array_oob_set_rc_vm`
- **Phase**: StageB compile (`stageb_compile_to_json`)
- **Error**: `[cf_loop/pattern2] Cannot promote LoopBodyLocal variables ["seg"] ... [pattern2/body_local_slot/contract/not_readonly]`
- **Reproduce**:
```bash
./target/release/hakorune --backend vm apps/examples/json_lint/main.hako
bash tools/smokes/v2/profiles/quick/core/core_direct_array_oob_set_rc_vm.sh
```
- **Note**: is_integer/1 自体は Pattern8 で解決済み。残りは nested-loop 処理の問題Phase 260+
- **Note**: Pattern2 の LoopBodyLocal promotionA-3 Trim / A-4 DigitPosに依存しており、StageB の bundle_resolver 系のループで露出している。
## 2025-12-20Phase 260 P0/P0.1edge-args Strangler🚧
- P0: MIR terminator の edge-args 併存導入(読む側 SSOT を `out_edges()`/`edge_args_to()` へ寄せた)
- P0.1: legacy layout の未設定を禁止verify fail-fast terminator 直代入を `set_terminator*()` へ寄せた
- Commits:
- P0: `4dfe3349b`
- P0.1: `1fe5be347`
## 2025-12-21Phase 259 P0Pattern8 BoolPredicateScan

View File

@ -1,8 +1,15 @@
# Phase 260: Block-Parameterized CFGedge-args段階導入
Status: Planned
Status: In progress
Last updated: 2025-12-20
## 進捗(セーブポイント)
- P0併存導入の芯: 完了(読む側 SSOT を `out_edges()`/`edge_args_to()` に寄せた)
- Commit: `4dfe3349b`
- P0.1hardening: 完了legacy layout 無し禁止 + DCE/verify の参照点整理)
- Commit: `1fe5be347`
## 目的P0
JoinIR→MIR の暗黙 ABIjump_args / carriers / expr_result slot / successorsを減らし、将来的な **block-parameterized CFG**edge-args を第一級に持つCFGへ収束するための「大工事パート」を開始する。