docs(joinir): clarify ValueId worlds and routing vs fallback

架構 overview の矛盾解消:
- ValueId の 3 つの世界を明文化(JoinIR/MIR/PHI dst)
- routing/fallback 語彙を不変条件に統合(Section 0.1 と整合)
- 章番号重複を解消(見出し参照へ統一)

Changes:
- Section 1: Added ValueId worlds clarification, routing/fallback definitions
- Removed duplicate section numbers (5, 6, 3 duplicates → renamed/unnumbered)
- Total: +25 lines, -7 lines (net +18)

No specification changes, readability improvements only

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-13 22:40:24 +09:00
parent 7dbc894629
commit 4df66e44d7

View File

@ -67,6 +67,24 @@ NYASH_JOINIR_DEBUG=1 cargo test --release --lib
JoinIR ラインで守るべきルールを先に書いておくよ:
**ValueId の 3 つの世界** (明文化):
1. **JoinIR 内部**: JoinParam (100-999) / JoinLocal (1000+) のみ。alloc_param()/alloc_local() が SSOT。
2. **MIR builder**: builder.variable_map で管理。JoinInst の operand には持ち込まない。
3. **PHI dst (メタ)**: LoopHeader PHI の dst は MIR builder が割り当て。JoinIR の reserve_phi() は衝突防止マークのみ。
**語彙統一**:
- `alloc_value()``alloc_local()` の alias実装上、概念上は Local を増やす)
- `LOCAL_MAX` は debug/verifier 上限(概念上無限ではない、図と実装の関係を明記)
**Routing vs Fallback の語彙 SSOT** (Section 0.1 と整合):
- **routing**: JoinIR Core 内での正規な経路選択Pattern1/2/3/4 ルータ、if-sum mode 選択等)
- **soft fallback**: 任意箱失敗時の同等意味論退避(例: pre-validation 失敗 → 別 JoinIR 経路)
- **prohibited fallback**: 非 JoinIR への退避LoopBuilder へ落ちる等)、サイレント退避、契約違反握りつぶし
不変条件 6 (Fail-Fast) はこの定義に基づく: prohibited fallback は絶対禁止、soft fallback は理由ログ必須。
---
1. **JoinIR 内部は JoinIR ValueId だけ**
- JoinIR lowering が発行する `JoinInst``ValueId` は JoinValueSpace の領域Param/Localのみを使う。
- `alloc_param()`Param 100999/ `alloc_local()`Local 1000+)が SSOT。
@ -925,7 +943,7 @@ Phase 210221 で「数値ループif-sum」を実戦投入し、JoinIR イ
---
## 5. selfhost / .hako JoinIR Frontend との関係
## selfhost / .hako JoinIR Frontend との関係
JoinIR は Rust 側だけでなく、将来的に .hako selfhost コンパイラ側でも生成・解析される予定だよ:
@ -950,17 +968,17 @@ JoinIR は Rust 側だけでなく、将来的に .hako selfhost コンパイラ
- 189193: Multi-function merge / Select bridge / ExitLine 箱化
- 171172 / 3310/13: ConditionEnv, ConditionBinding, JoinFragmentMeta, ExitLineRefactor 等
- `docs/development/current/main/loop_pattern_space.md`
- JoinIR ループパターン空間の整理メモ。
どの軸(継続条件 / break / continue / PHI / 条件変数スコープ / 更新パターン)でパターンを分けるか、
- JoinIR ループパターン空間の整理メモ。
どの軸(継続条件 / break / continue / PHI / 条件変数スコープ / 更新パターン)でパターンを分けるか、
そして P1P4 / Trim(P5) の位置づけと、今後追加候補のパターン一覧がまとまっている。
---
## 6. RoadmapJoinIR の今後のゴール)
## Roadmap 詳細版JoinIR の今後のゴール)
ここから先の JoinIR の「目指す形」を、箱レベルでざっくり書いておくよ。フェーズ詳細は各 phase ドキュメントに分散させて、このセクションは常に最新の方向性だけを保つ。
### 6.1 直近Phase 176-177 まわり)
### 直近Phase 176-177 まわり)
- **P5Trim/JsonParser 系)ループの複数キャリア対応** ✅ Phase 176 完了 (2025-12-08)
- 完了内容:
@ -1141,9 +1159,9 @@ JoinIR は Rust 側だけでなく、将来的に .hako selfhost コンパイラ
---
## 3. JoinIR → JoinIR 正規化レイヤ(構想 / Phase 26-H ライン)
## JoinIR 正規化レイヤ(構想 / Phase 26-H ライン)
### 3.1 Structured JoinIR と Normalized JoinIR概念レベル
### Structured JoinIR と Normalized JoinIR概念レベル
JoinIR ラインは、今後は「同じ JoinIR をフェーズごとに正規化していく」二段構成で扱う想定だよ: