Commit Graph

533 Commits

Author SHA1 Message Date
1ceadf361f phase29ap(p11): release adopt nested minimal coreplan 2025-12-31 07:56:14 +09:00
efe5e2deed phase29ap(p10): coreplan adopt nested minimal (strict/dev) 2025-12-31 07:49:48 +09:00
b209e17f3b phase29ap(p9): add nested minimal facts + strict shadow gate 2025-12-31 07:12:06 +09:00
02a312a522 phase29ap(p8): remove pattern4 legacy routing 2025-12-31 06:49:41 +09:00
822b67486b phase29ap(p3): route stdlib join via plan subset 2025-12-31 04:43:04 +09:00
6b851b2e62 phase29ap(p2): route stdlib to_lower via plan char-map subset 2025-12-30 23:50:30 +09:00
124c494738 phase29ao(p41): release adopt pattern5 subset 2025-12-30 18:36:24 +09:00
eef061ad2b phase29ao(p40): release adopt pattern3 if-phi subset 2025-12-30 18:16:52 +09:00
b105f82547 phase29ao(p39): release adopt pattern2 break subset 2025-12-30 18:04:39 +09:00
f46217d93f phase29ao(p38): release adopt pattern7 split-scan subset 2025-12-30 17:51:29 +09:00
7bb5ee56db phase29ao(p37): release adopt pattern6 scan_with_init subset 2025-12-30 17:40:00 +09:00
f6adf2a43f phase29ao(p35): ssot tag coverage and pattern1 negative gate 2025-12-30 16:55:38 +09:00
7307ff76f6 phase29ao(p34): prevent pattern2 shadow-adopt on negative cases 2025-12-30 16:06:24 +09:00
59a29a86d3 phase29ao(p33): planner-derive pattern2 loopbodylocal smokes 2025-12-30 15:58:19 +09:00
dd7f923b88 phase29ao(p32): strict adopt pattern2 realworld from facts 2025-12-30 15:28:40 +09:00
ac5231555f phase29ao(p29): require shadow adopt tags for all gate patterns 2025-12-30 14:11:17 +09:00
ab745e958a phase29ao(p28): add shadow adopt tags + gate smokes for p6/p7 2025-12-30 13:57:07 +09:00
52fc3f9353 phase29ao(p26): strict/dev adopt pattern2 break subset from facts 2025-12-30 13:30:28 +09:00
45369ba763 phase29ao(p25): strict/dev adopt pattern5 from facts 2025-12-30 10:58:08 +09:00
ac03b83ae6 phase29ao(p21): tighten pattern1 subset to step-only body 2025-12-30 09:38:27 +09:00
98d8eef8cb phase29ao(p19): gate pattern1 strict shadow in regression pack 2025-12-30 09:10:35 +09:00
090a0dbbaa phase29ao(p16): use block_params for pattern5 exit join 2025-12-30 08:31:00 +09:00
5be0ec1c66 phase29ao(p15): add pattern3 vm to joinir regression pack 2025-12-30 08:16:00 +09:00
14013cbe1f phase29ak(p5): ctx-aware planner candidates; fix phase1883 routing 2025-12-29 15:50:57 +09:00
d673bd4fbd docs(phase29aj): isolate phase286 pattern9 legacy smoke 2025-12-29 14:18:31 +09:00
d819fe0dae docs(phase29aj): define joinir regression gate; isolate phase143 legacy 2025-12-29 13:44:53 +09:00
2e1bb938b4 phase29ai(p15): observe pattern2 promotion hint under strict 2025-12-29 11:37:31 +09:00
0cf6749b4a phase29ai(p11): planner-first pattern2 break subset 2025-12-29 09:55:00 +09:00
92fd459a7c phase29ah(p0): add phase263 pattern2 to joinir regression pack 2025-12-29 06:45:34 +09:00
bd4937d89d phase29af(p2+p3): regression entrypoint + carrier layout ssot 2025-12-29 05:44:59 +09:00
dd8c2709bd fix(joinir): stabilize phase1883 latch/entry preds 2025-12-28 23:39:51 +09:00
d8786ebab9 phase29ad(p3): finalize pattern6/7 fixture naming ssot 2025-12-28 17:51:11 +09:00
9c44e990a9 phase29ad(p0): split pattern6 ok vs contract fixtures 2025-12-28 17:30:34 +09:00
432a8436c7 phase29ac(p3): keep Pattern7 contract freeze; add fixup OK fixture+smoke; closeout docs 2025-12-28 17:16:36 +09:00
44e9b88930 phase29ac(p2): defreeze pattern6 matchscan by fixing fixture 2025-12-28 17:00:29 +09:00
1e1679f361 phase29ac(p1): normalize pattern6 reverse scan and flip smoke to PASS 2025-12-28 16:54:01 +09:00
720468c3a5 phase29ab(p8): add pattern6/7 ok fixtures and smokes 2025-12-28 16:00:19 +09:00
4a67757170 phase29ab(p7): add pattern6 reverse+matchscan negative smokes 2025-12-28 15:41:34 +09:00
b52788b3f6 phase29ab(p6): freeze pattern6 scan-with-init near-miss with fixture+smoke 2025-12-28 15:38:19 +09:00
bea2a8d9bb phase29ab(p5): freeze pattern7 split-scan near-miss with fixture+smoke 2025-12-28 14:32:19 +09:00
5757eb740e runner: preserve UTF-8 in text-merge normalization 2025-12-28 13:51:44 +09:00
fe3eb9f1f7 config: centralize NYASH_STR_CP and add cp smoke 2025-12-28 13:44:53 +09:00
10e6a15552 refactor: unify string helpers and pattern2 derived slot 2025-12-28 13:22:02 +09:00
84e1cd7c7b phase29ab(p3): fix PromoteDecision contract and add negative smokes 2025-12-28 10:57:55 +09:00
bf9c5105c3 phase29ab(p2): add seg trim fixture+smoke and docs 2025-12-28 09:03:56 +09:00
3bd0c817be phase29ab(p1): pattern2 carrier binding policy + loopbodylocal fixture 2025-12-28 07:19:03 +09:00
d0527bcc2a feat(joinir): Phase 188.3-P3.3 - Pattern6 continuation generation + Call callee fix
Phase 3-3 完了: 4関数モデル JoinIR 生成
- nested_loop_minimal.rs (337行, 新規): 4関数モデル実装
  - main(): エントリーポイント
  - loop_step(i, sum): outer loop header
  - inner_step(j, i_outer, sum): inner loop (tail recursion)
  - k_inner_exit(i, sum): outer continuation after inner loop
  - k_exit(sum): 最終 exit
- pattern6_nested_minimal.rs: lowering pipeline 実装
  - boundary 構築 (continuation_func_ids 設定)
  - JoinIRConversionPipeline 呼び出し
- instruction_rewriter.rs: latch incoming 拡張
  - continuation→header 呼び出し対応

Call callee 修正:
- call_generator.rs: callee フィールドを Callee::Global に設定
- joinir_block_converter.rs: emit_call_pair 使用に統一

smoke test 追加:
- phase1883_nested_minimal_vm.sh (integration)

既知の問題 (次タスク):
- ValueId(104) undefined: PHI/merge 問題
- JoinIR 関数パラメータの MIR マッピングが不完全

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-27 06:51:43 +09:00
a2c5fd90fe feat(joinir): Phase 188.3 - Pattern6 (NestedLoopMinimal) 選択ロジック実装
## Phase 188.3 進捗: Phase 2 完了 (6/13 tasks)

### 実装完了 

**Phase 1: Fixture作成**
- apps/tests/phase1883_nested_minimal.hako 追加
  - Add/Compare のみ(乗算なし)
  - 期待 exit code: 9 (3×3 nested loops)
- 既存 lowering で fallback 動作確認

**Phase 2: 選択ロジック (SSOT)**
- LoopPatternContext に step_tree_max_loop_depth フィールド追加
- choose_pattern_kind() に Pattern6 選択ロジック実装:
  1. Cheap check (has_inner_loop)
  2. StepTree 構築 (max_loop_depth 取得)
  3. AST validation (is_pattern6_lowerable)
- pattern6_nested_minimal.rs モジュール作成 (stub)
- LOOP_PATTERNS に Pattern6 entry 追加
- **検証**: Pattern6 が正しく選択される 

### 設計原則 (確認済み)

1. **Fail-Fast**: Pattern6 選択後は Ok(None) で逃げない
2. **outer 変数 write-back 検出 → validation false** (Phase 188.4+)
3. **最小実装**: inner local だけ、Pattern1 モデル二重化
4. **cfg! 依存なし**: production で動作

### 検証結果

```
[choose_pattern_kind] has_inner_loop=true
[choose_pattern_kind] max_loop_depth=2
[choose_pattern_kind] is_pattern6_lowerable=true
 Pattern6 SELECTED!
```

Stub からの期待エラー:
```
[ERROR]  [Pattern6] Nested loop lowering not yet implemented
```

### 次: Phase 3 (Lowering 実装 - 推定4時間)

残りタスク:
- Phase 3-1: AST 抽出ヘルパー
- Phase 3-2: Validation ヘルパー
- Phase 3-3: Continuation 生成 (outer_step, inner_step, k_inner_exit)
- Phase 3-4: fixture が exit=9 を返すことを検証

### 変更ファイル

**新規**:
- apps/tests/phase1883_nested_minimal.hako
- src/mir/builder/control_flow/joinir/patterns/pattern6_nested_minimal.rs
- docs/development/current/main/phases/phase-188.{1,2,3}/README.md

**変更**:
- src/mir/builder/control_flow/joinir/routing.rs (Pattern6 選択)
- src/mir/builder/control_flow/joinir/patterns/router.rs (Context 拡張)
- src/mir/builder/control_flow/joinir/patterns/mod.rs (module 宣言)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-27 05:45:12 +09:00
2e99b14e24 phase-29y.1: add lifecycle pilot plumbing (ABI shim, rc pass skeleton, root summary) 2025-12-27 02:07:10 +09:00
095213c580 refactor(smoke): Clarify auto_detect.conf responsibilities with profile parameter
**Problem**:
- detect_optimal_config() took no arguments (line 11)
- Quick profile SSOT forcing scattered outside function (line 134-137)
- Profile-specific logic split between detect_optimal_config() and auto_configure()
- Hard to understand flow: "why is this logic duplicated?"

**Solution** (Task 4 - Low Priority):
- Accept profile parameter: `detect_optimal_config(profile)`
- Move quick profile SSOT forcing inside function (top priority)
- Eliminate duplicate logic in auto_configure()
- Update show_auto_config() to pass profile parameter

**Changes**:
- detect_optimal_config(): Add `local profile="${1:-quick}"`
- Quick SSOT check: Move to function top (early return)
- auto_configure(): Pass `"$profile"` to detect_optimal_config
- show_auto_config(): Pass `"${SMOKES_CURRENT_PROFILE:-quick}"`
- Remove 6 lines of duplicate quick forcing logic

**Benefits**:
- Single responsibility: Profile logic inside detect_optimal_config
- Clearer flow: All detection in one function
- Maintainability: One place to modify profile behavior
- Readability: Intent is explicit (profile parameter)

**Verification**:
-  detect_optimal_config "quick": returns rust_vm_dynamic (SSOT)
-  detect_optimal_config "integration": returns llvm_static
-  Quick profile: 154/154 PASS

**Note**: This is a low-impact refactoring (code organization only)
- Behavior unchanged (same logic, better location)
- No performance impact
- Future-proof for profile-specific detection

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-26 17:32:48 +09:00