Phase47-B/C: extend P3 normalized shapes and quiet dev warnings
This commit is contained in:
@ -1404,32 +1404,43 @@ Pattern3 (if-sum) ループを Normalized JoinIR に対応させる。P2 と同
|
||||
- ✅ shape_guard に `Pattern3IfSumMinimal` を追加し、構造ベースで P3 最小 if-sum 形状を検出
|
||||
- ✅ `normalize_pattern3_if_sum_minimal` を通じて P3 最小ケースを Normalized→MIR(direct) パイプラインに載せ、P1/P2 と同じ direct ブリッジで実行結果一致を確認(dev-only)
|
||||
|
||||
**Phase 47-B**: array_filter (dev-only, body-local + method calls)
|
||||
**Phase 47-B**: Extended dev(sum+count / JsonParser if-sum mini)
|
||||
- ✅ フィクスチャ追加: `pattern3_if_sum_multi_min`(sum+count)/ `jsonparser_if_sum_min`(JsonParser 由来)
|
||||
- ✅ ShapeGuard: `Pattern3IfSumMulti` / `Pattern3IfSumJson` 追加、capability=P3IfSum
|
||||
- ✅ Normalizer/Bridge: P3 if-sum multi/json を Structured→Normalized→MIR(direct) で dev A/B(Structured と一致)
|
||||
- ✅ VM Bridge テスト: `normalized_pattern3_if_sum_multi_vm_bridge_direct_matches_structured` / `normalized_pattern3_json_if_sum_min_vm_bridge_direct_matches_structured`
|
||||
|
||||
**Phase 47-C**: Canonical promotion (P3 minimal → canonical)
|
||||
**Phase 47-C**: Canonical promotion(P3 minimal/multi/json → canonical Normalized)
|
||||
- Canonical set 拡張: P3 if-sum minimal/multi/json を `is_canonical_shape()` に追加、mode/env 無視で Normalized→MIR(direct) ルートを使用
|
||||
- Bridge/runner: canonical shapes は Structured fallback せず fail-fast(dev logs は normalized-dev プレフィックスに統一)
|
||||
|
||||
**スコープ外**: P4 (continue) 対応(NORM-P4 フェーズで実施)、Complex P3 patterns(後続フェーズ)
|
||||
|
||||
### 3.25 Phase 48-NORM-P4 – Normalized P4 (Continue) Design 📋 DESIGN PHASE (2025-12-12)
|
||||
### 3.25 Phase 48-NORM-P4 – Normalized P4 (Continue) 🏗️ DESIGN + PHASE 48-A MINIMAL DEV COMPLETE (2025-12-12)
|
||||
|
||||
**設計詳細**: [phase48-norm-p4-design.md](./phase48-norm-p4-design.md)
|
||||
**設計詳細 / 実装サマリ**: [phase48-norm-p4-design.md](./phase48-norm-p4-design.md)
|
||||
|
||||
P4 (continue) will use the **same `loop_step(env, k_exit)` skeleton** as P1/P2/P3.
|
||||
|
||||
**Key insight**: `continue` = immediate `TailCallFn(loop_step, env', k_exit)` (skip to next iteration early), not a new instruction.
|
||||
P4 (continue) は P1/P2/P3 と同じ `loop_step(env, k_exit)` 骨格を使う設計だよ。
|
||||
**Key insight**: `continue` = 「更新済み Env での `TailCallFn(loop_step, env', k_exit)`」で表現できる(新しい命令種別は不要)。
|
||||
|
||||
**Target loops** (JsonParser):
|
||||
- ◎ _parse_array (skip whitespace) - PRIMARY (Phase 48-A)
|
||||
- ○ _parse_object (skip whitespace) - Extended
|
||||
- △ _unescape_string, _parse_string - Later
|
||||
- ◎ `_parse_array` (skip whitespace) – PRIMARY(Phase 48-A 対象)
|
||||
- ○ `_parse_object` (skip whitespace) – Extended
|
||||
- △ `_unescape_string`, `_parse_string` – Later
|
||||
|
||||
**Infrastructure reuse**: 95%+ of P2/P3 Normalized code works for P4
|
||||
- Same: EnvLayout, ConditionEnv, CarrierInfo, ExitLine, JpInst
|
||||
- New: `ContinueCheck` step kind in StepScheduleBox
|
||||
**Infrastructure reuse**: P2/P3 Normalized の 95% 以上をそのまま再利用
|
||||
- 共通: EnvLayout / ConditionEnv / CarrierInfo / ExitLine / JpInst
|
||||
- 追加: StepScheduleBox に `ContinueCheck` step kind を追加
|
||||
|
||||
**Phase 48 doc is SSOT** for P4 Normalized design.
|
||||
**Phase 48-A(Minimal continue, dev-only)実装ステータス**:
|
||||
- Fixture: `pattern4_continue_min.program.json`(`i == 2` を `continue` でスキップする最小 P4 ループ)
|
||||
- ShapeGuard: `NormalizedDevShape::Pattern4ContinueMinimal` を追加し、構造ベースで minimal continue 形状を検出
|
||||
- StepSchedule: `HeaderCond → ContinueCheck → Updates → Tail` の順序を固定
|
||||
- Normalized lowering: `normalize_pattern4_continue_minimal()` を実装し、P2 正規化ロジックを約 95% 再利用
|
||||
- テスト:
|
||||
- Normalized dev スイートに P4 minimal の比較テストを 4 本追加
|
||||
(Structured→Normalized→MIR(direct) vs Structured→MIR / runner / VM bridge)
|
||||
- `cargo test --release` ベースで **939/939 tests PASS**(Phase 48-A 実装時点)
|
||||
|
||||
**Implementation phases**:
|
||||
- Phase 48-A: Minimal continue (dev-only)
|
||||
- Phase 48-B: Extended patterns (multi-carrier)
|
||||
- Phase 48-C: Canonical promotion
|
||||
**Phase 48 doc is SSOT** for P4 Normalized design + 48-A 実装サマリだよ。
|
||||
Phase 48-B(multi-carrier / string ops 拡張)と 48-C(canonical 昇格)は今後のフェーズで扱う。
|
||||
|
||||
Reference in New Issue
Block a user