|
|
ae2a1d4339
|
refactor(joinir): boxify Pattern2 routing and schedule facts
|
2025-12-17 21:24:46 +09:00 |
|
|
|
7ab459503b
|
feat(joinir): Phase 94 - P5b escape full E2E (derived ch + +1/+2)
|
2025-12-17 00:59:33 +09:00 |
|
|
|
c213ecc3c0
|
refactor(mir): Phase 93 リファクタリング - 箱化モジュール化
## 概要
Phase 93 P0実装後のコード整理。スケジュール決定ロジックとbreak semanticsを
明確化し、デバッグログを統一。
## 変更内容
### 1. スケジュール決定ロジックの関数化 (step_schedule.rs)
- `ScheduleDecision`構造体追加(判定結果+理由+デバッグコンテキスト)
- `decide_pattern2_schedule()` - スケジュール決定のSSOT
- `build_pattern2_schedule_from_decision()` - 新しい決定ベースAPI
- 判定理由が4種類で明確化(ConditionOnly → body-local → loop-local → default)
- 後方互換性維持(`Pattern2ScheduleContext`はwrapperに)
### 2. ConditionOnlyRecipe強化 (condition_only_emitter.rs)
- `BreakSemantics` enum追加(WhenMatch vs WhenNotMatch)
- `generate_break_condition()` - semanticsに基づくAST生成
- `from_trim_helper_condition_only()` - factory method追加
- break semanticsがrecipeに明示的に含まれる
### 3. trim_loop_lowering.rs簡素化
- `generate_condition_only_break_condition()`削除(DRY原則)
- `recipe.generate_break_condition()`で統一
- break条件生成ロジックが1箇所に集約
### 4. デバッグログ統一
- `[phase93/schedule]` - スケジュール決定
- `[phase93/condition-only]` - ConditionOnlyレシピ作成
- `[phase93/break-cond]` - break条件生成
- 既存の`joinir_dev_enabled()`使用(新規env var不要)
## テスト結果
- step_schedule: 10 tests PASS
- condition_only_emitter: 4 tests PASS
- 後方互換性維持
## 統計
- 3ファイル変更
- +249行 / -57行 = +192 net
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2025-12-16 23:43:03 +09:00 |
|
|
|
04fdac42f2
|
feat(mir): Phase 93 P0 - ConditionOnly Derived Slot実装
## 概要
body-local変数を参照するbreak条件が毎イテレーション正しく再計算される
ConditionOnlyパターンを実装。
## 問題
- `is_ch_match`がConditionBindingで運ばれると初回計算値が固定
- loop header PHIで更新されず、毎周回同じ値がコピーされる
- 結果: `if ch == "b" { break }` が正しく動作しない
## 解決策 (B: ConditionOnly)
1. ConditionOnlyRecipe作成 - Derived slot再計算レシピ
2. setup_condition_env_bindings()でConditionBinding登録停止
3. Pattern2スケジュールでbody-init → break順序保証
4. break条件: ConditionOnlyでは非反転版を使用
## 変更ファイル
- condition_only_emitter.rs (NEW): Derived slot再計算ロジック
- step_schedule.rs: from_env()にhas_condition_only_recipe追加
- loop_with_break_minimal.rs: スケジュール決定でrecipe考慮
- trim_loop_lowering.rs: ConditionOnly用break条件生成追加
## テスト
- step_schedule: 6 tests PASS (新規1: condition_only_recipe_triggers_body_first)
- condition_only_emitter: 3 tests PASS
- Phase 92 baseline: 2 cases PASS
- E2E: /tmp/test_body_local_simple.hako → 出力 "1" ✓
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-16 23:24:11 +09:00 |
|
|
|
e404746612
|
refactor(mir): Phase 139-P3-B - RoutingDecision を enum 対応 + レガシー削除
- RoutingDecision の missing_caps を Vec<CapabilityTag> に変更(型安全化)
- error_tags は to_tag() メソッドで自動生成
- 全 callsite を enum variant に修正
- capability_tags モジュール(文字列定数群)を完全削除
- 全テスト PASS(型安全性向上を確認)
- フォーマット適用
|
2025-12-16 07:02:14 +09:00 |
|
|
|
342bcb8f50
|
fix(joinir): Phase 76 - Fix test struct initialization for promoted_bindings
|
2025-12-13 05:36:35 +09:00 |
|
|
|
386cbc1915
|
Phase47-B/C: extend P3 normalized shapes and quiet dev warnings
|
2025-12-12 07:13:34 +09:00 |
|
|
|
7200309cc3
|
feat(joinir): Phase 48-A - P4 (continue) Normalized minimal implementation
Pattern4 (continue) integration into Normalized JoinIR pipeline complete.
Key changes:
- P4 minimal fixture: skip i==2 pattern, single carrier (acc)
- ShapeGuard: Pattern4ContinueMinimal detector (structure-based)
- StepScheduleBox: ContinueCheck step (eval order: HeaderCond → ContinueCheck → Updates → Tail)
- normalize_pattern4_continue_minimal(): Delegates to P2 (95% infrastructure reuse)
- Tests: 4 integration tests (normalization/runner/VM Bridge comparison×2)
Design validation:
- P4 (continue) = reverse control flow of P2 (break)
- Same loop_step(env, k_exit) skeleton
- Same EnvLayout/ConditionEnv/CarrierInfo infrastructure
- Only difference: evaluation order and control flow direction
Architecture proof:
- Normalized JoinIR successfully handles P1/P2/P3/P4 uniformly
- Infrastructure reuse rate: 95%+ as designed
Tests: 939/939 PASS (+1 from baseline 938, target exceeded!)
Files modified: 10 files (~305 lines added, pure additive)
- pattern4_continue_min.program.json (NEW +126 lines) - P4 fixture
- fixtures.rs (+31 lines) - P4 fixture loader
- shape_guard.rs (+60 lines) - Shape detection
- step_schedule.rs (+18 lines) - Schedule + test
- normalized.rs (+35 lines) - Normalization function
- loop_with_break_minimal.rs (+4 lines) - ContinueCheck handler
- bridge.rs (+5 lines) - VM bridge routing
- ast_lowerer/mod.rs (+2 lines) - Function registration
- normalized_joinir_min.rs (+84 lines) - Integration tests
- CURRENT_TASK.md (+13 lines) - Phase 48-A completion
Next steps:
- Phase 48-B: Extended P4 (multi-carrier, complex continue)
- Phase 48-C: Canonical promotion (always use Normalized for P4)
|
2025-12-12 06:31:13 +09:00 |
|
|
|
c3a26e705e
|
feat(joinir): Phase 47-A-IMPL - P3 Normalized infrastructure
Implement Pattern3 (if-sum) Normalized infrastructure, extending existing P2
StepSchedule and ShapeGuard systems.
Key changes:
1. StepSchedule generalization (P2 → P2/P3):
- Renamed: pattern2_step_schedule.rs → step_schedule.rs
- Extended StepKind enum with P3 variants:
- IfCond (if condition in body)
- ThenUpdates (carrier updates in then branch)
- ElseUpdates (carrier updates in else branch)
- Added pattern3_if_sum_schedule() function
- Added unit test: test_pattern3_if_sum_schedule()
- Updated module references (mod.rs, loop_with_break_minimal.rs)
2. ShapeGuard extension:
- Added Pattern3IfSumMinimal variant to NormalizedDevShape
- Added is_pattern3_if_sum_minimal() detector (placeholder)
- Updated shape detector table
- Extended capability_for_shape() mapping
3. Bridge integration:
- bridge.rs: Added P3 shape handling in normalize_for_shape()
- normalized.rs: Added P3 roundtrip match (uses P2 temporarily)
4. P2/P3 separation:
- loop_with_break_minimal.rs: Added panic for P3 steps in P2 lowering
- Clear boundary enforcement (P2 lowerer rejects P3 steps)
5. Documentation:
- CURRENT_TASK.md: Phase 47-A-IMPL status
- phase47-norm-p3-design.md: Implementation status section
Benefits:
- Reuses 90% of P2 infrastructure (ConditionEnv, CarrierInfo, ExitLine)
- Clean P2/P3 separation via StepKind
- Pure additive changes (no P2 behavioral changes)
- Ready for Phase 47-A-LOWERING (full P3 Normalized implementation)
Tests: 938/938 PASS (+1 from step_schedule unit test)
- All existing P1/P2 tests pass (no regressions)
- P3 test uses Structured path temporarily (proper lowering in next phase)
Next phase: Implement full P3 Normalized→MIR(direct) lowering
|
2025-12-12 05:23:18 +09:00 |
|