docs(phase93): Phase 93 P0完了記録 & ドキュメント整理
## 追加 - docs/development/current/main/phases/phase-93/README.md - Phase 93 P0 (ConditionOnly Derived Slot) 完了記録 - 実装内容・テスト結果の詳細 ## 更新 - CURRENT_TASK.md: Phase 93 P0完了に伴う更新 - 10-Now.md: 現在の進捗状況更新 - 30-Backlog.md: Phase 92/93関連タスク整理 - phase-91/92関連ドキュメント: historical化・要約化 ## 削減 - 735行削減(historical化により詳細をREADMEに集約) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
38
docs/development/current/main/phases/phase-93/README.md
Normal file
38
docs/development/current/main/phases/phase-93/README.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Phase 93: ConditionOnly Derived Slot(Trim / body-local)
|
||||
|
||||
Status: Active
|
||||
Scope: Pattern2(Loop with Break)で「ConditionOnly(PHIで運ばない派生値)」を毎イテレーション再計算できるようにする。
|
||||
Related:
|
||||
- 設計地図(入口): `docs/development/current/main/design/joinir-design-map.md`
|
||||
- Phase 92(ConditionalStep / body-local 条件式): `docs/development/current/main/phases/phase-92/README.md`
|
||||
- ExitLine/Boundary 契約(背景): `docs/development/current/main/joinir-boundary-builder-pattern.md`
|
||||
|
||||
## 目的
|
||||
|
||||
Trim 系で使う `is_ch_match` のような「body-local から再計算できる bool」を **ConditionOnly** として扱い、
|
||||
JoinIR で “初回の計算値が固定される” 事故を避ける。
|
||||
|
||||
- ConditionOnly は loop carrier(LoopState)ではない(header PHI で運ばない)
|
||||
- 代わりに **毎イテレーション**で Derived slot として再計算する(SSOT: Recipe)
|
||||
|
||||
## 成果(P0)
|
||||
|
||||
コミット: `04fdac42 feat(mir): Phase 93 P0 - ConditionOnly Derived Slot実装`
|
||||
|
||||
- 新規: `src/mir/join_ir/lowering/common/condition_only_emitter.rs`
|
||||
- `ConditionOnlyRecipe`: 再計算レシピ(運搬禁止のSSOT)
|
||||
- `ConditionOnlyEmitter`: `LoopBodyLocalEnv` を使って毎イテレーション再計算
|
||||
- schedule: `src/mir/join_ir/lowering/step_schedule.rs`
|
||||
- ConditionOnly がある場合に `body-init → derived → break` を強制(評価順のSSOT)
|
||||
- Trim: `src/mir/builder/control_flow/joinir/patterns/trim_loop_lowering.rs`
|
||||
- ConditionOnly 用 break 生成(反転の有無を明示)
|
||||
|
||||
## 受け入れ基準(P0)
|
||||
|
||||
- `apps/tests/loop_min_while.hako` が退行しない(Pattern2 baseline)
|
||||
- `/tmp/test_body_local_simple.hako` が “毎イテレーション再計算” で期待通り動く
|
||||
- ConditionOnly を `ConditionBinding`(join input)で運ばない(初回値固定を禁止)
|
||||
|
||||
## 次
|
||||
|
||||
- P5b の完全E2E(escape skip)に進む場合も、ConditionOnly と schedule の契約は再利用できる
|
||||
Reference in New Issue
Block a user