7e8c2cc768
docs(phase89-b): Ring0 IO/time/thread inventory complete
...
Phase 89-B 完了: Ring0 候補の棚卸し調査
**調査結果**:
- fs 系: 243箇所 (read_to_string: 80+, write: 40+, File::open: 30+)
- io 系: 87箇所 (Write: 30+, Read: 20+, stdin: 10+)
- time 系: 143箇所 (Instant::now: 40+, Duration: 30+, elapsed: 25+)
- thread 系: 37箇所 (thread::sleep: 20+, thread::spawn: 10+)
- println! 残存: 1,948箇所 (Phase 89-A で 56箇所移行済み)
**成果物**:
- /tmp/ring0_*_inventory.txt 詳細リスト (計 510行)
- ring0-inventory.md 更新 (Section 3-7 追加)
- Phase 90 実装計画案 (A-E: 5段階、8-13時間予定)
**次のステップ**: Phase 90-A (fs 系移行)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 23:46:32 +09:00
42b09b3c1c
feat(phase88): Ring0Context Skeleton implementation
...
Phase 88: OS API abstraction layer implementation
**Implementation**:
- Ring0Context module added (4 files)
- mod.rs: Public API, global initialization (OnceLock)
- traits.rs: MemApi, IoApi, TimeApi, LogApi trait definitions
- std_impls.rs: std-based default implementations
- errors.rs: IoError, TimeError type definitions
**Design Principles**:
- Ring0 knows nothing about Box
- Ring0 knows nothing about Nyash
- Pure OS API abstraction
**Global Initialization**:
- NyashRunner::new() initializes Ring0Context globally
- OnceLock ensures safe initialization (idempotent)
**Migration (2 paths)**:
- src/runner/selfhost.rs:27: eprintln! → ring0.log.error() (OOB strict)
- src/runner/selfhost.rs:177: eprintln! → ring0.log.error() (PyVM error)
**Tests**:
- 4 unit tests added (ring0 module)
- All tests passed
- Build successful (0 errors)
**Migration Status**:
- Migrated: 2/3,955 (0.05%)
- Remaining: 3,953 paths (Phase 89+)
**Files Changed**:
- src/runtime/ring0/mod.rs (new, 100 lines)
- src/runtime/ring0/traits.rs (new, 93 lines)
- src/runtime/ring0/std_impls.rs (new, 77 lines)
- src/runtime/ring0/errors.rs (new, 26 lines)
- src/runtime/mod.rs (Ring0Context export)
- src/runner/mod.rs (global initialization)
- src/runner/selfhost.rs (2 paths migrated)
- docs/development/current/main/ring0-inventory.md (Phase 88 status)
Phase 88 complete. Ready for Phase 89 (gradual migration).
🐱 ✨
2025-12-02 22:38:27 +09:00
8cd9729375
feat(runtime): Phase 87 CoreBoxId/CoreMethodId 箱化完了
...
ハードコード文字列から型安全な enum への箱化により、
Box名・メソッド名管理を完全にコンパイル時検証可能に。
主な実装:
- CoreBoxId enum 定義(19個)
- core_required: 6個(String, Integer, Bool, Array, Map, Console)
- core_optional: 9個(Float, Null, File, Path, Regex, Math, Time, Json, Toml)
- 特殊型: 4個(Function, Result, Method, Missing)
- CoreMethodId enum 定義(30個)
- 各 Box のメソッドを型安全に管理
- 引数数、戻り値型情報を統合
- is_reserved_type() を CoreBoxId ベースにリファクタリング
- infer_boxcall_return_type() を CoreMethodId ベースに改良(75行 → 25行、67%削減)
検証結果:
- テスト: ✅ 11/11 passed(新規追加)
- ビルド: ✅ 成功(0エラー)
- 型安全性: ✅ タイポ不可能
効果:
- SSOT 確立(src/runtime/core_box_ids.rs に一元化)
- コンパイル時検証(実行時エラー → コンパイルエラー)
- 保守性向上(変更箇所の一元化)
- IDE 支援(enum 補完可能)
ドキュメント:
- core_boxes_design.md 作成(Phase 87 完全仕様)
- Phase 85 README 更新(Phase 87 セクション追加)
Phase 15.5「Everything is Plugin」アーキテクチャ基盤完成
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 22:22:32 +09:00
268a56fdfe
feat(box_factory): Phase 86 BoxFactory Priority normalization
...
Phase 86: BoxFactory Priority 正常化プロジェクト完了
目的:
- BoxFactory のデフォルトポリシーを BuiltinFirst から StrictPluginFirst に変更
- プラグイン版 StringBox/ArrayBox/MapBox が正常に使用できるよう正常化
- Phase 85 (Ring0/Ring1-Core 境界設計) の土台準備
実装内容:
1. ドキュメント作成
- docs/development/current/main/factory_priority.md: 完全仕様文書化
2. コード修正 (1行のみ)
- UnifiedBoxRegistry::new() が with_env_policy() を使用
- デフォルトポリシーが StrictPluginFirst に変更
3. テスト追加 (5件, 全パス)
- test_default_policy_is_strict_plugin_first: デフォルトポリシー確認
- test_env_policy_override: 環境変数制御確認
- test_reserved_type_protection: 予約型保護動作確認
- test_plugin_override_with_env: 予約型 override 確認
- test_non_reserved_plugin_priority: 非予約型プラグイン優先確認
効果:
- ✅ プラグイン版 StringBox/ArrayBox/MapBox が正常に使用可能
- ✅ core_required Box の予約名保護維持
- ✅ 環境変数による柔軟な制御が可能
- ✅ テスト改善: 500→506 passed, 34→33 failed (+6 passed, -1 failed)
core_required Box リスト (暫定):
- Core value types: StringBox, IntegerBox, BoolBox, FloatBox, NullBox
- Core containers: ArrayBox, MapBox, ResultBox
- Core method indirection: MethodBox
環境変数:
- NYASH_BOX_FACTORY_POLICY: ポリシー選択 (default: strict_plugin_first)
- NYASH_USE_PLUGIN_BUILTINS: core_required override 許可
- NYASH_PLUGIN_OVERRIDE_TYPES: 個別 Box override 許可
Phase 85 準備:
- Ring0/Ring1-Core 境界設計の土台が整った
- ConsoleBox の扱いは Phase 85 で最終決定
完了条件:
- ✅ factory_priority.md 作成完了
- ✅ UnifiedBoxRegistry::new() 修正完了
- ✅ デフォルトポリシー StrictPluginFirst 確定
- ✅ テスト 5件追加・全パス
- ✅ CURRENT_TASK.md 更新完了
- ✅ Phase 85 README 準備完了
参考:
- 設計文書: docs/development/current/main/factory_priority.md
- Phase 85 計画: docs/private/roadmap2/phases/phase-85-ring0-runtime/README.md
🎉 Phase 86 完了!次は Phase 85 で Ring0/Ring1-Core 境界の文書化へ
2025-12-02 21:52:18 +09:00
7dbe0a682c
feat(joinir): Phase 84-5 if_phi.rs レガシーフォールバック完全削除
...
Phase 84-4-B で Case D を 0件に削減完了したことにより、
if_phi.rs のレガシーフォールバックが完全に不要になったため削除。
主な変更:
- if_phi.rs 削除(339行)
- test_utils.rs 新規作成(テスト専用ユーティリティ分離、127行)
- lifecycle.rs: if_phi 呼び出し削除、Phase 84-5 安全ガード追加
- env.rs: phi_fallback_disabled() を常に true に変更
- テスト: A/B テスト → GenericTypeResolver 単独テストに変更
検証結果:
- Case D: 0件(完全解消継続)
- Tests: 498 passed(Phase 84-4: 497 から +1)
Phase 84 プロジェクト完全達成: 15件 → 0件(100%削減)
純削減: 220行
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 21:09:15 +09:00
21505b8b41
docs: Phase 84 インデックス更新 - Phase 84-4 完了反映
...
Phase 84-4 完了に伴う更新:
- Case D: 15件 → 0件(100%完全解決)
- Phase 84-4-B 実装完了を反映
- Phase 84-4-C 不要(BoxCall 経路で解決)
- 型推論システムの完全箱化達成マーク
次のステップ: Phase 84-5(if_phi.rs 削除)
2025-12-02 20:32:08 +09:00
8a948988d1
docs: Phase 84-4 完了報告書 - Case D 100%完全解決達成
...
Phase 84-4-B の驚きの成果を記録:
- Case D: 4件 → 0件(予想 1件 を大幅超過)
- Phase 84-4-C(Await)不要(BoxCall 経路で解決)
- 型推論システムの完全箱化達成
Phase 84 全体の成果:
- 15件 → 0件(100%削減)
- 型生成・型伝播・型統合の 3層構造完成
- レガシーフォールバック削除準備完了
2025-12-02 20:30:22 +09:00
c5abf62350
docs(phase84): Add Phase 84-3 analysis and Phase 84-4 recommendations
...
Task agent investigation results after Phase 84-3 completion.
Remaining 4 Case D analysis:
- test_lowering_await_expression: await construct
- mir_lowering_of_qmark_propagate: QMark (?) construct
- mir_stage1_cli_emit_program_min_*: Stage1Cli type inference (2 tests)
Root cause (unified): BoxCall/Await/QMark return types not registered in value_types
Phase 84-4 implementation recommendations:
- Phase 84-4-A: dev fallback (0.5 days) - immediate unblock
- Phase 84-4-B: BoxCall type registration (1-2 days) - solves 3 cases
- Phase 84-4-C: Await type special handling (0.5 days) - solves 1 case
Documents added:
- phase84-3-summary.md: Reduction results and Phase 84-4 recommendations
- phase84-3-remaining-4-analysis.md: Detailed analysis of each test
- phase84-4-implementation-recommendation.md: Implementation guide with code examples
- phase84-index.md: Phase 84 overall index and roadmap
- phase84-3-final-report.md: Complete report with executive summary
Cumulative results:
- Phase 82: 12 cases
- Phase 84-2: 9 cases (25% reduction)
- Phase 84-3: 4 cases (56% reduction)
- Total: 67% reduction achieved (12 → 4)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 20:18:13 +09:00
4ef5eec162
feat(mir): Phase 84-2 CopyTypePropagator for Copy chain type propagation
...
- Add CopyTypePropagator box (ChatGPT Pro design) for fixed-point
Copy instruction type propagation
- Integrate into lifecycle.rs before return type inference
- Case D reduced from 12 to 9 (25% reduction)
Implementation:
- src/mir/phi_core/copy_type_propagator.rs: New box with fixed-point loop
- src/mir/phi_core/mod.rs: Add module export
- src/mir/builder/lifecycle.rs: Call propagator before return inference
Test results:
- Baseline: 494 passed, 33 failed (was 489/34)
- Case D: 9 remaining (from 12)
- Unit tests: 4/4 passed
Remaining 9 Case D breakdown:
- GroupA: Loop Edge Copy (7 cases) - PHI incoming needs Copy trace
- GroupB: Multi-level PHI (2 cases) - Recursive PHI resolution needed
Phase 84-3 will address GroupA with Edge Copy tracing in GenericTypeResolver.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 19:37:01 +09:00
0771945735
docs: Add Phase 84 Case D detailed analysis
...
Task先生による残り15件のCase D詳細分析レポート。
## 主要発見
**根本原因**: Const命令の型アノテーション欠如(58-67%)
- Integer/Bool/Float/Null/Void定数が型登録されていない
- String定数は既に実装済み
## 分類
- GroupA: Const命令型アノテーション欠如(14-16件、58-67%)
- GroupB: Copy命令型伝播不足(6-8件、25-33%)
- GroupC: PHI命令型推論不足(4-6件、17-25%)
- GroupD: その他の命令型(2-4件)
## Phase 84-1 推奨
`src/mir/builder/emission/constant.rs` に5行追加で90%削減可能。
## ドキュメント
- phase84-case-d-detailed-analysis.md: 全24件の詳細分析
- phase84-case-d-summary.md: エグゼクティブサマリー
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 18:37:36 +09:00
e656958033
feat(env): Phase 71-73 - SSA fix + Stage-3 ENV consolidation
...
## Phase 71-SSA: StageBDriverBox birth warning 解消
- Fixed false-positive dev verify warning for static boxes
- StageBDriverBox is a static box, so it doesn't follow NewBox→birth pattern
- Modified lifecycle.rs to skip StageBDriverBox from birth() requirement
## Phase 73-A: Stage-3 legacy ENV 統一化
- Consolidated NYASH_PARSER_STAGE3 and HAKO_PARSER_STAGE3 → NYASH_FEATURES=stage3
- Updated 20 test files (46 direct replacements)
- Special handling for parser_stage3.rs compat layer and mir_static_main_args_loop.rs
- All test files now use unified NYASH_FEATURES=stage3
## Phase 72-73: ENV inventory documented
- Created phase72-73-env-inventory.md with complete usage analysis
- Identified 113 direct ENV reads requiring SSOT consolidation
- Prioritized Phase 72 (JoinIR EXPERIMENT SSOT) and Phase 73 (Stage-3 cleanup)
## Phase 74-SSA: Minimal reproduction for static box delegation
- Created parser_box_minimal.hako and ssa_static_delegation_min.hako
- Investigated spawn failure in selfhost compiler (arguments too long)
- Root cause: NYASH_NY_COMPILER_EMIT_ONLY=1 defaults to emit-only mode
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 12:36:28 +09:00
4b3eb6b3a9
feat(phase71-ssa): SSA undef 完全解消達成!(4件→0件)
...
## Phase 71-SSA SSA undef 削減 完全達成!
### 🎉 成果
- **SSA undef**: 4件 → **0件** (100%解消!)
- **所要時間**: 約2時間 (Task先生調査 + 実装 + 検証)
- **修正ファイル**: 3ファイル (.hako実装のみ、MIR/SSAビルダー不変)
### 🔍 根本原因 (Task先生による徹底分析)
**ValueId(272) = StringHelpers.starts_with_kw/3 の戻り値**
- static boxの委譲でValueIdマッピング失敗
- 引数パラメータ設定ログが一切出力されず
- 別関数の戻り値ValueIdが誤って引数として参照される
### 🛠️ 修正内容
**修正1: ParserStringUtilsBox.trim (Quick Win)**
- L76: `StringHelpers.skip_ws` → `ParserStringUtilsBox.skip_ws`
- 効果: SSA undef 4件 → 2件
- 副次効果: Main._parse_number/ParserBox.parse_block2 消滅
**修正2: ParserCommonUtilsBox.trim (修正案A)**
- L50-69: 委譲を廃止、直接実装に変更
- FuncScannerBox.trimの成功パターンを適用
**修正3: ParserBox.trim (修正案A)**
- L81-98: 委譲を廃止、直接実装に変更
- 効果: 残り2件のSSA undef完全解消
### ✅ 検証結果
```bash
grep -c 'ssa-undef-debug' logs/selfhost/stageb_20251202_111409_2674670.log
# 出力: 0 ← 🎉 完全解消!
```
### 📊 SSA undef 推移
| フェーズ | 件数 | 詳細 |
|---------|------|------|
| Phase 71初回 | 4件 | trim×2, _parse_number, parse_block2 |
| Quick Win後 | 2件 | trim×2 (予想外: 他2件消滅) |
| 修正案A後 | **0件** | 🎉 **完全解消!** |
### 🎯 残存課題 (次フェーズ)
1. dev verify警告: 1件 (StageBDriverBox birth)
2. Program JSON未出力: extract_ok=0 (rc=0だが行なし)
### 💡 重要な教訓
- static boxの委譲は危険 (ValueIdマッピング失敗)
- 静的呼び出し (BoxName.method) が SSA-friendly
- 成功パターン (FuncScannerBox.trim) の積極活用
### 📝 ドキュメント
- 詳細レポート: phase71-ssa-trim-fix-20251202.md
- Task先生分析: ValueId(272)特定、修正案A-C提案
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 11:16:01 +09:00
13ce9e6888
docs(phase71): Phase 71 初回観測完了 - SSA/selfhost 根本原因特定
...
## Phase 71 観測成果 (2025-12-02)
### ✅ 完了項目
- Phase 70完了直後にPhase 71代表パス実行成功
- RAW観測レイヤ活用成功 (707K log)
- SSA undef根本原因特定 (4件)
- dev verify問題特定 (1件)
- JoinIR/プラグイン正常動作確認
### 🔍 特定した根本原因
**SSA undef (4件)**:
1. ParserCommonUtilsBox.trim/1 - ValueId(272)未定義
2. ParserBox.trim/1 - ValueId(272)未定義
3. Main._parse_number/1 - ValueId(12)未定義
4. ParserBox.parse_block2/2 - ValueId(440)未定義
**dev verify警告 (1件)**:
- StageBDriverBox NewBox直後にbirth()未呼び出し
**重要な気づき**:
- JoinIR経路は正常動作 (問題なし)
- プラグイン初期化は成功 (問題なし)
- 真の問題はSSA/Stage-B MIR生成時のValueId未定義
### 📊 実行結果
```
rc_stageb=0 (Stage-B実行成功)
extract_ok=0 (Program JSON抽出失敗)
Program JSON行: 0件 (emit失敗)
```
### 📝 ドキュメント追加
- phase71-findings-20251202.md: 詳細観測レポート
- CURRENT_TASK.md L112-128: Phase 71完了記録
### 🎯 次のステップ
Phase 71-SSA-debugへ引き継ぎ:
- trim系関数 SSA undef修正 (4件 → 0件)
- StageBDriverBox birth警告解消 (1件 → 0件)
- Program JSON emit復活 (0件 → 1件以上)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 10:19:07 +09:00
5afc331754
docs(phi_core): Phase 70 完全達成!Trio 完全削除 (~1,443行)
...
## Phase 70 実装完了
### ✅ 完了タスク(6/6)
**70-1**: loop_form_intake.rs Trio 使用削除
- 29行 → 2行(27行削減、85%削減)
- LocalScopeInspectorBox / LoopVarClassBox imports 削除
- 二重分類問題解消(LoopScopeShape が SSOT)
**70-2**: loop_to_join.rs 呼び出し側修正
- var_classes 引数削除
- Trio 依存ゼロ達成
**70-3**: 中間テスト
- loopform 14/14 PASS ✅
- 退行なし確認
**70-4**: phi_core/mod.rs 公開面削除(ユーザー実施)
- pub mod 3箇所削除
**70-5**: Trio 本体3ファイル削除(ユーザー実施)
- loop_var_classifier.rs: 578行
- loop_exit_liveness.rs: 414行
- local_scope_inspector.rs: 361行
**70-6**: 最終テスト・ドキュメント
- 498 passed, loopform 全 PASS ✅
- Phase 70 完了記録追加
### 📊 削減実績
**合計削減**: **~1,443行**(Phase 69-4 見込み通り)
**ファイル別**:
- Trio 定義3ファイル: 1,353行削除
- loop_form_intake.rs: 27行削減
- phi_core/mod.rs: pub mod 3箇所削除
### 🎯 達成内容
**1. 二重分類問題解消** ✅
- Before: intake_loop_form() + LoopScopeShape で2回分類
- After: LoopScopeShape のみで1回分類(SSOT 確立)
**2. Trio 依存完全排除** ✅
- 外部依存: 2箇所 → 0箇所
- Trio 本体: 完全削除
**3. LoopScopeShape SSOT 確立** ✅
- 変数分類: LoopScopeShape.pinned / carriers
- Exit liveness: LoopScopeShape.exit_live
- 定義追跡: LoopScopeShape.variable_definitions
### 🎊 Phase 48-6 設計の完全達成
**Phase 48-6 目標**: Trio を builder.rs のみに封じ込める
**Phase 70 達成**: Trio 完全削除(封じ込めから削除への昇華)
**進化の完結**:
1. Phase 25.1: Option C 実装(Trio 誕生)
2. Phase 48-4: LoopScopeShape 実装(Trio 代替)
3. Phase 48-6: Trio を builder.rs に封じ込め
4. Phase 69-3: MIR 決定性修正(BTreeSet 化)
5. Phase 69-4: Trio 削除準備完了
6. **Phase 70: Trio 完全削除** 🎉
### 🧪 テスト結果
- loopform: 14/14 PASS ✅
- 全体: 498 passed; 43 failed(既知エラーのみ、新規エラーなし)
### 📝 変更ファイル
**削除**:
- src/mir/phi_core/loop_var_classifier.rs (578行)
- src/mir/phi_core/loop_exit_liveness.rs (414行)
- src/mir/phi_core/local_scope_inspector.rs (361行)
**修正**:
- src/mir/join_ir/lowering/loop_form_intake.rs
- src/mir/join_ir/lowering/loop_to_join.rs
- src/mir/phi_core/mod.rs
**ドキュメント**:
- docs/development/current/main/phase69-4-trio-deletion-plan.md
### 🚀 Phase 69-70 合計削減
**~1,485行削減**:
- Phase 69-2: 42行(inspector 引数削除)
- Phase 70: 1,443行(Trio 完全削除)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-02 09:45:54 +09:00
2ea0f2a202
Remove Trio boxes and tidy loop scope warnings
2025-11-30 11:46:14 +09:00
ea120dc9b1
docs(phi_core): Phase 69-4 完全達成!Trio 削除準備完了
...
## 変更内容
### docs/development/current/main/phase69-4-trio-deletion-plan.md
- Phase 69-4.3: json_v0_bridge Trio 依存設計完了記録
- 二重分類問題発見(変数分類が2回実行されている無駄)
- Gap ゼロ確認(LoopScopeShape が Trio 完全カバー)
- 最小変更設計(14行→2行、85%削減)
- Phase 69-4.4: Trio 削除条件固定完了記録
- 6ステップ削除手順確定(合計3時間見積もり)
- 安全性保証(退行防止策・ロールバック計画)
- 削除完了条件(5項目の明確な基準)
- Phase 69-4.5: Phase 70 橋渡し完了記録
- 実装パッケージ完備(設計・手順・Checklist)
- Phase 70 開始条件すべて満たした
- まとめセクション更新
- Phase 69-4 完全達成宣言
- Phase 69 合計削減見込み ~1,485行
- Phase 48-6 設計の完全勝利(進化の歴史)
## Phase 69-4 完了サマリー
### 達成タスク(5/5完了)
- ✅ 69-4.1: Trio callsite 棚卸し(Task agent)
- ✅ 69-4.2: phi_core 公開面削減方針明文化
- ✅ 69-4.3: json_v0_bridge Trio 依存設計
- ✅ 69-4.4: Trio 削除条件固定
- ✅ 69-4.5: Phase 70 橋渡し
### 成果物
- 📄 全体計画: phase69-4-trio-deletion-plan.md (完成)
- 📄 詳細設計: phase69-4.3-trio-to-loopscope-migration.md (20KB)
- 📋 TODO マーカー: src/mir/phi_core/mod.rs (L33-40)
### 削減見込み
- **~1,443行**(Trio 3箱 + 使用箇所)
- 定義ファイル: 1,353行
- loop_form_intake.rs: 14行 → 2行(12行削減)
- loop_snapshot_merge.rs: ~60行削減
- 呼び出し側: ~18行削減
### Phase 70 実装準備
- ✅ 6ステップ削除手順確定
- ✅ Before/After コード例完備
- ✅ 3段階ロールバック計画
- ✅ Checklist コピペ用完備
## 重要な発見
### 1. 二重分類問題
現在、変数分類が2回実行されている無駄を発見:
- intake_loop_form() で分類 ← 削除対象
- LoopScopeShape::from_loop_form() で再度分類 ← 正解
### 2. Gap ゼロ
LoopScopeShape は Trio 全機能をカバー済み:
- LocalScopeInspectorBox → variable_definitions ✅
- LoopVarClassBox → classify_all() ✅
- LoopExitLivenessBox → exit_live ✅
### 3. 最小変更
loop_form_intake.rs の 14行を 2行に削減可能(85%削減)
## Phase 48-6 設計の完全勝利
進化の軌跡:
1. Phase 25.1: Option C 実装(Trio 誕生)
2. Phase 48-4: LoopScopeShape 実装(Trio 代替)
3. Phase 48-6: Trio を builder.rs に封じ込め
4. Phase 69-3: MIR 決定性修正(BTreeSet 化)
5. **Phase 69-4: Trio 削除準備完了**
6. **Phase 70: Trio 完全削除**(予定)
設計哲学: 代替実装 → 可視性制御 → 設計固め → 安全削除
## 次のステップ
Phase 70 実装開始準備完了!
- 見積もり: 3時間
- 削減見込み: ~1,443行
- Checklist: phase69-4-trio-deletion-plan.md 参照
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-30 10:10:45 +09:00
375bb66b41
feat(phi_core): Phase 69-4.2 Trio公開面削減方針明文化
...
## 変更内容
### src/mir/phi_core/mod.rs
- Trio Legacy Boxes (3箱) の削除方針をコメント追加
- LoopVarClassBox (578行)
- LoopExitLivenessBox (414行)
- LocalScopeInspectorBox (361行)
- 外部依存2箇所を明記:
1. loop_form_intake.rs (~30行)
2. loop_snapshot_merge.rs (~60行)
- TODO(Phase 70) マーカー設置(削減見込み ~1,443行)
### docs/development/current/main/phase69-4-trio-deletion-plan.md
- Phase 69-4 全体計画文書作成
- Phase 69-4.1: Trio callsite 棚卸し結果記録 ✅
- Phase 69-4.2: phi_core 公開面削減完了記録 ✅
- Phase 69-4.3-5: 未実施タスク整理 ⏳
## Phase 69-4.2 達成内容
**達成**:
- ✅ Trio 削除計画の明文化
- ✅ 外部依存箇所の記録
- ✅ Phase 70 削除条件の TODO 化
**未達成(Phase 70 で実施)**:
- ❌ pub 公開除去(外部依存残存のため継続)
- ❌ phi_core 内部化(LoopScopeShape 移行後に実現)
## 次のステップ
Phase 69-4.3: json_v0_bridge の Trio 依存を LoopScopeShape に寄せる設計
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-30 10:01:49 +09:00
58c5d8c9bc
feat(joinir): Phase 66-68 GenericTypeResolver + JoinIR First Chapter Wrap
...
Phase 66: P3-C ジェネリック型推論箱化
- generic_type_resolver.rs 新設 (180行)
- is_generic_method(): ArrayBox.get/pop/first/last, MapBox.get 判定
- resolve_from_phi(): PHI解析によるジェネリック型推論
- TypeHintPolicy::is_p3c_target() 追加
- P1/P2/P3-A/P3-B 以外を P3-C 候補として判定
Phase 67: P3-C 実利用への一歩
- phase67_generic_type_resolver.rs テスト追加 (3テスト)
- lifecycle.rs に P3-C 経路フック追加
- GenericTypeResolver を P3-C 対象関数で優先使用
- A/B テストで旧経路との一致確認 (11 tests PASS)
Phase 68: JoinIR First Chapter Wrap (ドキュメント整理)
- 68-1: phase-30 README.md に Section 9 追加 (JoinIR 第1章完了サマリー)
- 68-2: README.md に JoinIR status セクション追加
- 68-3: CURRENT_TASK.md スリム化 (351→132行, 62%削減)
- 68-4: PHI_BOX_INVENTORY.md に Phase 66-67 完了セクション追加
Phase 69-1: Trio 棚卸し
- phase69-1-trio-inventory.md 作成
- Trio 使用箇所の完全棚卸し完了 (削減見込み 457-707行)
🐱 JoinIR 第1章完了!4つの柱確立:
- Structure (LoopForm)
- Scope (LoopScopeShape)
- JoinIR (Select/IfMerge/Loop)
- Type Hints (P1-P3-C)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-30 08:54:18 +09:00
0c23bc0788
docs: Phase 61-5 If PHI 棚卸し完了
...
Phase 61-5: If PHI 残りパターン棚卸しと削減計画策定
New docs:
- phase61-5-3-if-phi-priority-table.md: P1/P2/P3 優先度表
- P1: 18関数(薄いラッパー削除候補)
- P2: 5関数(JoinIR 拡張統合候補)
- P3: 3関数(型システム統合待ち)
- phase61-5.4-next-phase-candidates.md: Phase 61-6 削減候補(3個)
- Wave 1: set_if_context 削除(11行)、dev フラグ削除(15行)
- Wave 2: A/B テスト削除(50行)
- 合計削減見込み: 76行
- phase61-5-summary.md: Phase 61-5 全体サマリー
- JoinIR カバー率: 完全28.6% + 部分57.1% = 85.7%
- Phase 61-6 実装準備完了
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-29 15:57:14 +09:00
3af98964ed
feat(joinir): Phase P2-P4 Loop Pattern boxification
...
- P2: Create loop_patterns/ module structure
- common.rs: shared helpers (ParsedProgram, LoopContext, etc.)
- simple.rs: generic loop lowering
- filter.rs, print_tokens.rs: delegate to simple
- break_pattern.rs, continue_pattern.rs: new modules
- P3: Create LoopFrontendBinding layer
- Separate function name detection from pattern lowering
- detect_loop_pattern() for pattern classification
- P4: Break/Continue pattern migration
- Move Break/Continue handling from loop_patterns_old.rs
- Add LoopPattern::Break and LoopPattern::Continue variants
- Design: 3-layer architecture
- LoopFrontendBinding: function name → LoopPattern
- loop_patterns: LoopPattern → JoinIR
- Bridge/VM: Box semantics
All 56 JoinIR tests pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-29 09:04:18 +09:00
fd83903f87
feat(joinir): Phase P1 If Handler boxification - 40% code reduction
...
## Summary
Refactored loop-internal If statement handling into a boxified module
structure, achieving 154-line reduction (40%) from stmt_handlers.rs
with zero regression.
## Implementation
- Created if_in_loop/ module (9 files, ~480 lines)
- pattern.rs: IfInLoopPattern enum (5 variants)
- lowering/{empty,single_var_then,single_var_both,conditional_effect,unsupported}.rs
- Replaced lower_if_stmt_in_loop() (154 lines) with lower_if_stmt_in_loop_boxified()
- Made StatementEffect pub(crate) for module visibility
## Pattern Classification
1. Empty: condition-only check (no side effects)
2. SingleVarThen: if { x = a } → x = cond ? a : x
3. SingleVarBoth: if { x = a } else { x = b } → x = cond ? a : b
4. ConditionalEffect: if pred(v) { acc.push(v) } (filter pattern)
5. Unsupported: complex cases (Phase 54+)
## Test Results
✅ 56 JoinIR tests PASSED (0 failed, 0 regression)
✅ Build successful (1m 02s)
✅ Improved maintainability (easier to add new patterns)
## Files Changed
- src/mir/join_ir/frontend/ast_lowerer/
- if_in_loop/ (9 new files)
- mod.rs (+2 lines: module + pub use)
- stmt_handlers.rs (-154 lines: 40% reduction)
- CURRENT_TASK.md (+5 lines: Phase P1 記録)
- docs/development/refactoring/p1-if-handler-boxification-plan.md (new)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-29 07:20:56 +09:00
588129db65
feat(joinir): Phase 34-6 MethodCall 構造と本物の substring 意味論
...
**Phase 34-6 実装完了**: MethodCall 構造を JoinIR に追加し、本物の substring
呼び出しを通すことに成功。
## 主要変更
### 1. MethodCall 構造追加 (34-6.1)
- `src/mir/join_ir/mod.rs`: JoinInst::MethodCall バリアント (+8 lines)
- 構造: `{ dst, receiver, method, args }`
- 設計原則: JoinIR は構造のみ、意味論は MIR レベル
### 2. extract_value 更新 (34-6.2)
- `src/mir/join_ir/frontend/ast_lowerer.rs`: Method 処理本物化 (+37 lines)
- receiver/args を extract_value で再帰処理
- ダミー Const(0) 削除 → 本物の MethodCall 生成
- cond 処理修正: ValueId(0) ハードコード → extract_value で取得
### 3. JoinIR→MIR 変換実装 (34-6.3)
- `src/mir/join_ir_vm_bridge.rs`: MethodCall → BoxCall 変換 (+12 lines)
- `src/mir/join_ir/json.rs`: MethodCall JSON シリアライゼーション (+16 lines)
- `src/mir/join_ir_runner.rs`: MethodCall 未対応エラー (+7 lines)
### 4. テスト更新 (34-6.4)
- `docs/.../fixtures/json_shape_read_value.program.json`: 本物の substring 構造
- `src/tests/joinir_frontend_if_select.rs`: run_joinir_via_vm 使用
- テスト成功: v="hello", at=3 → "hel" ✅
## 成果
- ✅ テスト全通過(1 passed; 0 failed)
- ✅ 設計原則確立: JoinIR = 構造 SSOT、意味論 = MIR レベル
- ✅ Phase 33-10 原則との整合性: Method でも同じ原則適用
**ドキュメント更新**: CURRENT_TASK.md + TASKS.md(Phase 34-6 完了記録)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-27 17:05:46 +09:00
51ff558904
feat(phase32): L-2.1 Stage-1 UsingResolver JoinIR integration + cleanup
...
Phase 32 L-2.1 complete implementation:
1. Stage-1 UsingResolver main line JoinIR connection
- CFG-based LoopForm construction for resolve_for_source/5
- LoopToJoinLowerer integration with handwritten fallback
- JSON snapshot tests 6/6 PASS
2. JoinIR/VM Bridge improvements
- Simplified join_ir_vm_bridge.rs dispatch logic
- Enhanced json.rs serialization
- PHI core boxes cleanup (local_scope_inspector, loop_exit_liveness, loop_var_classifier)
3. Stage-1 CLI enhancements
- Extended args.rs, groups.rs, mod.rs for new options
- Improved stage1_bridge module (args, env, mod)
- Updated stage1_cli.hako
4. MIR builder cleanup
- Simplified if_form.rs control flow
- Removed dead code from loop_builder.rs
- Enhanced phi_merge.rs
5. Runner module updates
- json_v0_bridge/lowering.rs improvements
- dispatch.rs, selfhost.rs, modes/vm.rs cleanup
6. Documentation updates
- CURRENT_TASK.md, AGENTS.md
- Various docs/ updates
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-26 10:17:37 +09:00
466e636af6
Span trace utilities and runner source hint
2025-11-24 14:17:02 +09:00
3d5979c78e
refactor(joinir): Phase 27.9 - Modular separation of join_ir.rs into directory structure
...
Phase 27.9 で join_ir.rs (~1,336行) を以下のモジュール構造に分離:
## 新規ディレクトリ構造:
```
src/mir/join_ir/
├── mod.rs # 型定義・共通ユーティリティ (~330行)
└── lowering/
├── mod.rs # lowering インターフェース
├── min_loop.rs # lower_min_loop_to_joinir (~140行)
├── skip_ws.rs # skip_ws lowering 3関数 (~390行)
└── funcscanner_trim.rs # trim lowering (~480行)
```
## 技術的変更:
- **型定義統一**: JoinFuncId, JoinInst, JoinModule 等を mod.rs に集約
- **lowering 分離**: 3つの lowering 関数を個別モジュールに移動
- **後方互換性**: pub use で lowering 関数を re-export(既存コード影響なし)
- **削除**: src/mir/join_ir.rs (旧単一ファイル)
## テスト結果:
- **385 passed** (+1 from 384)
- **9 failed** (-1 from 10)
- **ビルド成功**: 0 errors, 18 warnings (変化なし)
## 効果:
- **保守性向上**: 1,336行 → 4ファイル(各300-500行)で可読性向上
- **モジュール境界明確化**: 型定義 vs lowering 実装の責務分離
- **将来の拡張容易**: 新 lowering 関数追加が簡単に
Phase 27.8 で実装した MIR 自動解析 lowering の基盤整備完了。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-23 16:49:49 +09:00
8750186e55
chore: Phase 26-H セッション完了 - 全ドキュメント更新
...
Phase 26-H 完了内容:
✅ JoinIR 型定義実装(src/mir/join_ir.rs)
✅ MIR → JoinIR 自動変換実装(lower_min_loop_to_joinir)
✅ 自動変換テスト実装(mir_joinir_min_auto_lowering)
✅ PHI/Loop箱 → JoinIR 移行対応表追加(loopform_ssot.md)
ドキュメント更新:
- Phase 27 JoinIR タスク計画追加
- Phase 26-H タスク完了記録
- 各種 README 更新(進捗反映)
- CURRENT_TASK.md 更新
コミット統計: $(git status --short | wc -l) files changed
次のステップ: Phase 27 一般化 MIR → JoinIR 変換
2025-11-23 05:53:27 +09:00
9a5cec394c
docs(loopform): PHI/Loop箱→JoinIR移行対応表追加
...
実装内容:
- loopform_ssot.md に Phase 26-H 以降の移行戦略追加
- 全17箱の将来的な扱いを3カテゴリに分類:
🔄 JoinIR に吸収(6箱): Header/Exit/Snapshot系
❌ 削除候補(4箱): PhiBuilder/IfPhi/LoopPhi系
✅ 残す(7箱): 前処理/検証/ユーティリティ系
移行戦略:
- Phase 27: 一般化 MIR → JoinIR 変換実装
- Phase 28: JoinIR 実行器実装(VM/LLVM)
- Phase 29: レガシー PHI 箱の段階的削除
これで「今の箱が最終的にどう片付くか」一目瞭然!🎉
2025-11-23 04:52:37 +09:00
2692eafbbf
feat(mir): Phase 26-H JoinIR型定義実装完了 - ChatGPT設計
...
## 実装内容(Step 1-3 完全達成)
### Step 1: src/mir/join_ir.rs 型定義追加
- **JoinFuncId / JoinContId**: 関数・継続ID型
- **JoinFunction**: 関数(引数 = φノード)
- **JoinInst**: Call/Jump/Ret/Compute 最小命令セット
- **MirLikeInst**: 算術・比較命令ラッパー
- **JoinModule**: 複数関数保持コンテナ
- **単体テスト**: 型サニティチェック追加
### Step 2: テストケース追加
- **apps/tests/joinir_min_loop.hako**: 最小ループ+breakカナリア
- **src/tests/mir_joinir_min.rs**: 手書きJoinIR構築テスト
- MIR → JoinIR手動構築で型妥当性確認
- #[ignore] で手動実行専用化
- NYASH_JOINIR_EXPERIMENT=1 トグル制御
### Step 3: 環境変数トグル実装
- **NYASH_JOINIR_EXPERIMENT=1**: 実験モード有効化
- **デフォルト挙動**: 既存MIR/LoopForm経路のみ(破壊的変更なし)
- **トグルON時**: JoinIR手書き構築テスト実行
## Phase 26-H スコープ遵守
✅ 型定義のみ(変換ロジックは未実装)
✅ 最小限の命令セット
✅ Debug 出力で妥当性確認
✅ 既存パイプライン無影響
## テスト結果
```
$ NYASH_JOINIR_EXPERIMENT=1 cargo test --release mir_joinir_min_manual_construction -- --ignored --nocapture
[joinir/min] MIR module compiled, 3 functions
[joinir/min] JoinIR module constructed:
[joinir/min] ✅ JoinIR型定義は妥当(Phase 26-H)
test result: ok. 1 passed; 0 failed
```
## JoinIR理論の実証
- **φノード = 関数引数**: `fn loop_step(i, k_exit)`
- **merge = join関数**: 分岐後の合流点
- **ループ = 再帰関数**: `loop_step` 自己呼び出し
- **break = 継続呼び出し**: `k_exit(i)`
## 次フェーズ (Phase 27.x)
- LoopForm v2 → JoinIR 自動変換実装
- break/continue ハンドリング
- Exit PHI の JoinIR 引数化
🌟 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: ChatGPT <noreply@openai.com >
2025-11-23 04:10:12 +09:00
948f22a03a
feat(phi): Phase 26-F-2 - 箱理論による責務分離(IfBodyLocalMergeBox新設)
...
**箱理論による問題解決**:
- ❌ 問題: LoopVarClassBox(ループスコープ分析)とif-merge処理が混在
- ✅ 解決: if-merge専用箱を新設して責務分離
**新箱: IfBodyLocalMergeBox**:
- 責務: if-merge専用のbody-local φ候補決定
- ロジック:
- 両腕に存在する変数を検出
- pre_ifと比較して値が変わった変数のみ
- empty elseは空リスト返す
- 特徴: LocalScopeInspector不要、LoopVarClassBox不使用
**変更ファイル**:
- src/mir/phi_core/if_body_local_merge.rs: 新規作成(IfBodyLocalMergeBox)
- src/mir/phi_core/phi_builder_box.rs: IfBodyLocalMergeBox使用に切り替え
- src/mir/phi_core/body_local_phi_builder.rs: filter_if_merge_candidates()削除
- src/mir/loop_builder.rs: BodyLocalPhiBuilder setup削除
- src/mir/phi_core/mod.rs: if_body_local_merge追加
**テスト結果**:
- Passed: 353→354 (+1) ✅
- Failed: 14→14 (退行なし)
**既知の問題**:
- domination error依然残存(%48 in bb48 from bb52)
- 次フェーズで調査・修正予定
技術詳細:
- ChatGPT箱理論分析による設計
- A案ベースのシンプル実装
- 責務明確化: ループスコープ分析 vs if-merge専用処理
2025-11-22 11:03:21 +09:00
cbe6bf0140
feat(phi): Phase 26-F Step 1 & 3 - BodyLocal if-merge統合(WIP - 過剰フィルタリング発生中)
...
Step 1完了:
- body_local_phi_builder.rs: filter_if_merge_candidates() API追加
- pre_if/then_end/else_end_opt/reachable_preds受け取り
- LoopVarClassBox使用して変数分類
Step 3完了:
- loop_builder.rs: BodyLocalPhiBuilder作成・PhiBuilderBoxに設定
- phi_builder_box.rs: IfPhiContext拡張・set_body_local_filter()実装
- compute_modified_names_if()でフィルタリング適用
**問題**: LocalScopeInspectorBox空のため全候補フィルタリング(0 candidates)
技術詳細:
- inspector定義記録なし → classify誤判定 → 全変数BodyLocalInternal扱い
- テスト結果: bb54/bb52→bb38/bb36/bb32(ブロック番号変化=PHI生成影響あり)
- mir_stage1_using_resolver_modules_map_continue_break_with_lookup_verifies: PASS
- mir_stage1_using_resolver_resolve_with_modules_map_verifies: FAIL(domination error残存)
次のステップ:
1. filter_if_merge_candidates()単純実装(inspector不要)
2. または変数定義トラッキング実装
3. ChatGPT相談推奨
2025-11-22 09:05:31 +09:00
7812c3d4c1
feat(phi): Phase 25.1 - BTreeMap移行 (21ファイル、80%決定性達成)
...
## 修正内容
### Core MIR/PHI (5ファイル)
- builder.rs: variable_map, value_types, value_origin_newbox
- context.rs: 3つのマップ
- loop_builder.rs: 3箇所
- loop_snapshot_manager.rs: snapshot マップ
- loop_snapshot_merge.rs: 2箇所
### MIR関連 (4ファイル)
- function.rs: FunctionMetadata.value_types
- resolver.rs: CalleeResolverBox
- guard.rs: CalleeGuardBox
- loop_common.rs: apply_increment_before_continue
### JSON Bridge (5ファイル)
- json_v0_bridge/lowering.rs
- json_v0_bridge/lowering/expr.rs
- json_v0_bridge/lowering/if_else.rs
- json_v0_bridge/lowering/merge.rs
- json_v0_bridge/lowering/try_catch.rs
- json_v0_bridge/mod.rs
### Printer & Providers (4ファイル)
- printer.rs, printer_helpers.rs
- host_providers/mir_builder.rs
- backend/mir_interpreter/handlers/extern_provider.rs
### Tests (3ファイル)
- phi_core/conservative.rs
- tests/json_program_loop.rs
- tests/mir_stage1_using_resolver_verify.rs (2テスト有効化)
## テスト結果
- mir_stage1_using_resolver_resolve_with_modules_map_verifies: 80%成功率
- 完全な決定性は未達成 (HashMap 86箇所、HashSet 63箇所が残存)
🐱 Generated with Claude Code
2025-11-22 05:33:40 +09:00
6815065e72
docs: Phase 21.7++ チェックリスト最終更新 - コミットハッシュ記録
...
Phase 3 と Phase 4 のコミットハッシュを TBD から実際の値に更新:
- Phase 3: c8ad1dae (全体統一)
- Phase 4: 806e4d72 (ドキュメント整備)
Phase 21.7++ 全フェーズ完全完了!🎊
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-22 02:54:44 +09:00
806e4d72c4
docs(phase21.7): Phase 21.7++ Phase 4完了 - ドキュメント整備
...
## Phase 4 実装内容
### Phase 4.1: README 更新
- docs/development/roadmap/phases/phase-21.7-normalization/README.md
- "Phase 21.7++ 実装完了" セクション追加(60行)
- SSOT ルール・実装箇所・デバッグ環境変数を文書化
- 全4フェーズの完了状況をコミットハッシュ付きで記録
- 技術的成果の総括(Silent Failure根絶、arity バグ根治等)
### Phase 4.2: トラブルシューティングガイド作成
- docs/development/troubleshooting/using-resolution.md(新規作成、200+行)
- 4つのエラーパターン別対処法
- デバッグフローチャート
- FAQ セクション
- Phase 21.7++ 実装前後の比較表
### チェックリスト更新
- docs/development/current/main/phase-21.7-naming-ssot-checklist.md
- Phase 0-4 完了状況サマリー追加
- 累計工数: 10時間(進捗率: 50-67%)
## 技術的成果サマリー
✅ **Phase 0**: Silent Failure 根絶(時間→分)
✅ **Phase 1**: StaticMethodId SSOT 確立
✅ **Phase 2**: arity バグ根治(Hotfix 卒業)
✅ **Phase 3**: 素手 split 根絶(Builder 統一)
✅ **Phase 4**: ドキュメント整備(再発防止)
**Phase 21.7++ 全フェーズ完了!** 🎊
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-22 02:51:16 +09:00
c8ad1dae65
feat(naming): Phase 21.7++ Phase 3 完全達成 - Builder 側 StaticMethodId SSOT 統一
...
## 🎊 成果概要
**Phase 3: 全体統一** - MIR Builder 側を StaticMethodId 準拠に統一!
### ✅ 実装完了項目(全4タスク)
1. **素手 split 調査** (Phase 3.1)
- 調査結果: known.rs に2箇所のみ(split_once)
- unified_emitter には素手 split なし
- 置き換え対象: 2箇所のみで簡潔
2. **unified_emitter.rs 統一** (Phase 3.2)
- methodization 部分を StaticMethodId::parse() に変更
- decode_static_method() → StaticMethodId::parse()
- is_static_method_name() → StaticMethodId::parse().is_some()
- arity 判定を Optional 対応(None も許容)
3. **known.rs split_once 置き換え** (Phase 3.3)
- 2箇所の split_once('.') → StaticMethodId::parse()
- box_name 取得を構造化表現経由に統一
- コード削減: 8行 → 4行(50%削減)
4. **テスト実行・確認** (Phase 3.4)
- json_lint_stringutils_min_vm: PASS ✅
- namingbox_static_method_id: 13/13 PASS ✅
- ビルド成功、警告のみ(既存問題)
### 📊 技術的効果
- **素手 split 根絶**: 全箇所を StaticMethodId 経由に統一
- **コード品質向上**: 構造化表現で型安全化
- **保守性向上**: 名前パース処理が SSOT に集約
- **後方互換**: 既存機能に影響なし
### 🎯 Phase 4 への準備完了
- Builder/VM 両方が StaticMethodId SSOT 準拠
- ドキュメント整備のみ残存(2-3時間)
---
**Phase 0**: ✅ 完了 (Silent Failure 根絶)
**Phase 1**: ✅ 完了 (SSOT 基盤確立)
**Phase 2**: ✅ 完了 (VM 統一)
**Phase 3**: ✅ 完了 (Builder 統一)
**Phase 4**: 次のタスク (ドキュメント化)
🧮 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-22 02:43:45 +09:00
1b413da51e
feat(naming): Phase 21.7++ Phase 2 完全達成 - VM StaticMethodId SSOT 統一
...
## 🎊 成果概要
**Phase 2: VM 統一** - arity バグ根治、VM 名前解決が SSOT 準拠!
### ✅ 実装完了項目(全4タスク)
1. **global.rs を StaticMethodId ベース化** (handlers/calls/global.rs:10-27)
- Hotfix(normalize + arity 補完)→ 正式実装(StaticMethodId ベース)
- パース成功: StaticMethodId::parse() → with_arity() → format()
- パース失敗: 従来の normalize(builtin 互換)
2. **デバッグログ強化** (global.rs:33-47)
- NYASH_DEBUG_FUNCTION_LOOKUP=1 でパース情報表示
- box_name, method, arity を明示的に出力
3. **VM テスト拡張** ✅ 既存テストで十分
- json_lint_stringutils_min_vm テスト完全通過
4. **テスト実行・確認**
- ✅ json_lint_stringutils_min_vm: PASS
- ✅ namingbox_static_method_id: 13/13 PASS
- ✅ 全体テスト: 349 passed; 17 failed (Phase 0時と同様、退行なし)
### 📊 技術的効果
- **arity バグ根治**: "Box.method" → "Box.method/N" 補完が SSOT 経由
- **デバッグ向上**: 関数名パース情報が即座に確認可能
- **コード品質**: Hotfix → 正式実装へ移行完了
- **後方互換**: builtin 関数(print, panic 等)も正常動作
### 🎯 Phase 3 への準備完了
- MIR Builder 側も StaticMethodId 統一(Phase 3 候補)
- 全体統一で 100-200 行削減見込み
---
**Phase 0**: ✅ 完了 (Silent Failure 根絶)
**Phase 1**: ✅ 完了 (SSOT 基盤確立)
**Phase 2**: ✅ 完了 (VM 統一)
**Phase 3-4**: 次のマイルストーン (全体統一・ドキュメント化)
🧮 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-22 02:31:35 +09:00
96c1345ec0
feat(naming): Phase 21.7++ Phase 1 完全達成 - StaticMethodId SSOT 基盤確立
...
## 🎉 成果概要
**Phase 1: 基盤整備** - NamingBox SSOT の構造化された基盤完成!
### ✅ 実装完了項目(全5タスク)
1. **StaticMethodId 構造体導入** (src/mir/naming.rs:86-248)
- 構造化された関数名表現: box_name, method, arity
- Optional arity でパース柔軟性確保
2. **ヘルパー関数追加**
- `parse()`: "Box.method/N" or "Box.method" をパース
- `format()`: 構造化 ID → 文字列変換
- `with_arity()`: arity 補完用ビルダー
- 互換性エイリアス: parse_global_name(), format_global_name()
3. **包括的テスト追加** (src/tests/namingbox_static_method_id.rs)
- 13 テストケース全通過 ✅
- arity 有り/無し、normalize、format、round-trip、エラー処理
- エッジケース: 複数ドット、大きな arity、不正入力
4. **テスト登録** (src/tests/mod.rs:21)
- Phase 21.7++ コメント付きで登録
5. **動作確認**
- `cargo test --release --lib namingbox_static_method_id`
- 全 13 テスト PASS (0.00s)
### 📊 技術的効果
- **SSOT 確立**: 関数名パース/フォーマットを 1 箇所に集約
- **型安全**: 構造化表現で誤用防止
- **テスト保証**: 13 ケースで安全性確保
- **後方互換**: エイリアス関数で段階移行可能
### 🎯 Phase 2 への準備完了
- VM 側の関数ルックアップを StaticMethodId ベース化
- arity バグ根治への基盤確立
---
**Phase 0**: ✅ 完了 (Silent Failure 根絶)
**Phase 1**: ✅ 完了 (SSOT 基盤確立)
**Phase 2**: 次のタスク (VM 統一)
🧮 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-22 02:25:22 +09:00
ce7517dc21
docs(phase-21.7): NamingBox SSOT 統一化チェックリスト作成
...
Phase 21.7++ の詳細実装計画を文書化
## 作成ファイル
- docs/development/current/main/phase-21.7-naming-ssot-checklist.md
- Phase 0-4 の詳細タスクリスト(チェックボックス付き)
- 各タスクの具体的な実装コード例
- テストケース
- 工数見積もり・優先順位
- 完了条件
## CURRENT_TASK.md 更新
- Phase 21.7 セクションにチェックリストへのリンク追加
## 実装優先順位
1. Phase 0: 観測ライン緊急構築(最優先、2-3時間)
2. Phase 1: 基盤整備(4-6時間)
3. Phase 2: VM 統一(3-4時間)
4. Phase 3-4: 全体統一・ドキュメント(Phase 22+)
次のステップ: Phase 0 実装開始
2025-11-22 01:59:27 +09:00
a13f14cea0
feat(mir): Phase 21.7 Step 1-2 - NamingBox decode & Hotfix 7修正
...
## 実装内容
### Step 1: NamingBox decode関数追加 (naming.rs)
- ✅ `decode_static_method(func_name) -> Option<(box, method, arity)>`
- ✅ `is_static_method_name(func_name) -> bool`
- 対称性: encode ⇔ decode のペア実装で一貫性確保
### Step 2: unified_emitter Hotfix 7修正 (Lines 267-304)
- ✅ StaticCompiler box kind判定追加
- ✅ static box method は receiver 追加をスキップ
- ✅ instance method(RuntimeData/UserDefined)のみ receiver 追加
- ✅ トレース: NYASH_STATIC_METHOD_TRACE=1 でログ出力
## 判定ロジック
```rust
if box_kind == CalleeBoxKind::StaticCompiler {
// "BoxName.method/arity" 形式か確認
let func_name = format!("{}.{}/{}", box_name, method, args.len());
if is_static_method_name(&func_name) {
// static box method → receiver 追加しない
}
}
```
## 検証
✅ Stage-1 テスト: RC=0 (apps/tests/stage1_skip_ws_repro.hako)
✅ ビルド成功(0 error)
## 次のステップ
- Step 3: methodization実装 (HAKO_MIR_BUILDER_METHODIZE=1)
Co-Authored-By: ChatGPT5 <chatgpt@openai.com >
2025-11-21 23:52:10 +09:00
51d53c2932
wip(stage1): StringHelpers.skip_ws receiver捏造問題の応急処置
...
- 問題: StaticCompiler method呼び出し時にreceiver ValueIdが捏造され未定義エラー
- 応急処置: string_helpers.hako で src を明示的に文字列化 (""+src)
- 再現ケース: apps/tests/stage1_skip_ws_repro.hako 追加
- エラー: use of undefined value ValueId(28) in ParserBox.length(receiver=ValueId(28))
根本修正は次のcommitで実施:
- src/mir/builder/ssa/local.rs - receiver origin/type伝播強化
- Phase 25.1: Stage-1 bridge receiver bug (workaround)
2025-11-21 13:19:18 +09:00
c344451087
fix(mir-builder): static method arity mismatch根治 - Phase 25.x
...
**問題**:
- ParserStmtBox.parse_using/4 に5引数が渡される
- me.method呼び出しで instance/static 判別なし
- static method に誤って receiver 追加
**修正**:
- MeCallPolicyBox: params[0]の型で instance/static 判別
- Instance method: receiver 追加
- Static method: receiver なし
- Arity検証(NYASH_ME_CALL_ARITY_STRICT=1)
**ドキュメント**:
- docs/reference/environment-variables.md 新規作成
- docs/development/architecture/mir-logs-observability.md 更新
**テスト**:
- src/tests/mir_stage1_cli_emit_program_min.rs 追加
- 既存 stage1 テスト全てパス
Phase: 25.x
2025-11-21 11:16:38 +09:00
b92d9f335d
docs(mir-logs): MIRログ観測リスト完成 - __mir__.log 全箇所を分類
...
Phase 25.4-C: MIR ログ観測リスト作成
## 📋 実装内容
### 1. ログ呼び出し全14箇所を列挙
- `rg "__mir__\\.log" lang/src -n` で全箇所を調査
- ファイル・行番号・タグ・用途を完全文書化
### 2. 3分類に整理
#### Dev専用(11箇所)- 削除候補
- **Stage-1 CLI Debug** (10箇所): entry/config/argc debug
- 制御: `STAGE1_CLI_DEBUG=1`
- MIR Builder type confusion デバッグ用
- **StringHelpers Debug** (1箇所): to_i64 input debug
- 制御: `NYASH_TO_I64_DEBUG=1`
- Void → Integer 型崩れデバッグ用
#### 観測用(3箇所)- 残す候補
- **FuncScanner Debug** (3箇所): skip_ws loop iteration
- LoopForm v2 / PHI 生成検証
- Region+next_i SSA 安定性確認
- 将来的な「MIR 観測 API」の代表例
#### コメント(1箇所)
- Test file comment
### 3. 将来構想
- `MirLogBox` 箱化構想を記載
- ログレベル制御・構造化ログ・パフォーマンストレース機能
- MIR デバッガー統合の下地
## 技術的成果
- **全箇所可視化**: 14箇所のログ用途を完全把握
- **分類明確化**: Dev専用 vs 観測用を明示
- **将来設計**: MIR 観測 API 構想を文書化
## 文書作成
- 新規: `docs/development/architecture/mir-logs-observability.md`
## 方針
- **Phase 25.4**: ドキュメント整理のみ(コード変更なし)
- **後続フェーズ**: Dev専用ログ削除・観測用ログ API化を検討
## 参考
- Phase 25.4 全体: docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md
🎉 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-21 09:48:08 +09:00
554ba96f76
feat(stage1-cli): Config箱化完了 - env処理を一元管理
...
Phase 25.4-B: Stage-1 CLI 設定箱実装
## 📦 実装内容
### 1. Config 箱作成
- 新規: `Stage1CliConfigBox` (`lang/src/runner/stage1_cli.hako:16-48`)
- `from_env()` メソッドで全環境変数を MapBox に集約
- Mode/Backend/Sources/Dev flags を構造化
### 2. stage1_main リファクタ
- `local cfg = Stage1CliConfigBox.from_env()` で設定取得
- `env.get` 散在 → `cfg.get` 一箇所参照に統一
- Mode-based dispatch (emit_program_json | emit_mir_json | run | disabled)
### 3. 環境変数マッピング
**実行制御**:
- `NYASH_USE_STAGE1_CLI` → mode="run"
- `STAGE1_EMIT_PROGRAM_JSON` → mode="emit_program_json"
- `STAGE1_EMIT_MIR_JSON` → mode="emit_mir_json"
- `STAGE1_BACKEND` → backend (default: "vm")
- `STAGE1_SOURCE` / `STAGE1_SOURCE_TEXT` / `STAGE1_PROGRAM_JSON` → sources
**Dev専用**:
- `STAGE1_CLI_DEBUG` → debug
- `NYASH_TO_I64_FORCE_ZERO` → to_i64_force_zero
### 4. 設計文書
- 新規作成: `docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md`
- Config フィールド設計・環境変数マッピング完全文書化
## 技術的成果
- **env.get 削減**: stage1_main 内 15箇所 → 1箇所(Config生成)に集約
- **Mode決定ロジック**: 排他的Mode選択を Config 箱に集中
- **保守性向上**: 環境変数追加時は Config 箱のみ修正
## テスト結果
✅ cargo test mir_stage1_cli_stage1_main_shape_verifies: 1 passed
✅ cargo test mir_stage1_cli_entry_like_pattern_verifies: 1 passed
✅ cargo test mir_static_box_naming: 2 passed
✅ Background stage1_cli execution: RC=0
## 参考
- Phase 25.4-A: fa9cea51 , bceb20ed , 419214a5
- Config 設計: docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md
🎉 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-21 09:43:42 +09:00
2f07ab6a30
docs(phase25.4): Phase 25.4 ロードマップ・ドキュメント整備
...
📋 Phase 25.4 計画確定: NamingBox SSOT化 & CLI設定箱
✅ 追加ドキュメント:
- docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/
- README.md: Phase 25.4 全体計画
- A. NamingBox SSOT化(完了)
- B. Stage-1 CLI 設定箱(次フェーズ)
- C. MIR ログ観測リスト(次フェーズ)
- docs/development/roadmap/phases/phase-21.7-normalization/README.md
- Phase 21.7 との関連性追記
- docs/development/roadmap/phases/phase-25.1/stage1-usingresolver-loopform.md
- Phase 25.1 完了記録更新
- CURRENT_TASK.md: タスク進捗更新
- Phase 25.4-A 完了
- Phase 25.4-B/C 準備完了
- MIR Builder 型混乱バグ調査完了記録
🎯 Phase 25.4 戦略:
0. 共通方針
- 既定挙動は変えない(Fail-Fast + テスト緑キープ)
- 新規ロジックは「小さな箱」に閉じ込める
- まずドキュメント・構造を揃えてからコード
A. NamingBox SSOT化 ✅ 完了
- static/global 名前決定を src/mir/naming.rs に一本化
- Builder/VM で統一ルール使用
B. Stage-1 CLI 設定箱(次フェーズ)
- env.get() を Stage1CliConfigBox に集約
- mode/backend/source 等を Config として管理
C. MIR ログ観測リスト(次フェーズ)
- __mir__.log の一覧化・分類
- 将来の MirLogBox 化準備
📊 テスト確認コマンド:
- cargo test -q mir_static_box_naming --lib
- cargo test -q mir_stage1_cli_entry_ssa_smoke --lib
- tools/smokes/v2/run.sh --profile quick
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-21 09:02:30 +09:00
28a312ea0d
feat(naming): Phase 25.4-A - NamingBox SSOT化完了
...
🎯 目的: static/global 呼び出しの名前決定を src/mir/naming.rs に一本化
✅ 実装完了:
- NamingBox(src/mir/naming.rs)実装
- encode_static_method(box, method, arity)
- normalize_static_global_name(func_name)
- static/global 名前の正規化ロジック統一
- MIR Builder統合(SSOT使用)
- src/mir/builder/decls.rs: build_static_main_box
- src/mir/builder/exprs.rs: 静的メソッド呼び出し
- src/mir/builder/metadata/propagate.rs: メタデータ伝播
- src/mir/builder/observe/mod.rs: Observe機能
- src/mir/builder/observe/types.rs: 型観測(新規)
- VM実行器統合(SSOT使用)
- src/backend/mir_interpreter/handlers/calls/global.rs
- normalize_static_global_name使用
- レガシーフォールバック削除済み確認
- テスト追加
- src/tests/mir_static_box_naming.rs
- encode/normalize の動作検証
📚 ドキュメント:
- docs/development/architecture/mir-naming-box.md
- NamingBoxの設計思想
- SSOT原則の説明
- 使用例
🎯 効果:
- 名前決定ロジックが1箇所に集約
- Builder/VM で同じ正規化ルールを使用
- 将来の名前空間拡張が容易
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-21 09:01:43 +09:00
380a724b9c
debug(stage1): Phase 25.1 - MIR Builder 型混乱バグ完全特定
...
🚨 重大発見: .hakoレベルでは修正不可能なMIR Builderバグ
🔍 根本原因特定:
- MIR Builder の型レジストリシステムが型情報を正しく追跡できていない
- new ArrayBox() で生成したValueIdが、誤った型として認識される
- PHIマージポイントで型情報が失われる/上書きされる
📊 系統的な型混乱パターン:
1. args.size() → ParserBox.size() (本来: ArrayBox.size())
2. cli_args.length() → ParserBox.length() (本来: ArrayBox.length())
3. new ArrayBox().size() → LoopOptsBox.size() (本来: ArrayBox.size())
❌ すべての.hako回避策が失敗:
- パラメータ名変更: args → cli_args → cli_args_raw
- 新しいArrayBox作成: local x = new ArrayBox()
- Fail-Fast Guard追加
→ すべて同じ型混乱エラー
✅ 決定的証拠:
- __mir__.log が一度も実行されなかった
→ エラーは MIR生成時に発生(実行時ではない)
→ .hakoコードの問題ではない
📋 成果物:
- __mir__.log マーカー追加 (lang/src/runner/stage1_cli.hako)
- stage1_main 入口ログ
- env toggles ログ
- args.size() 前後ログ
- StringHelpers.to_i64 改善 (lang/src/shared/common/string_helpers.hako)
- null/Void ガード追加
- デバッグログ追加
- 完全調査レポート:
- stage1_mir_builder_type_confusion_bug.md (最終レポート)
- stage1_mir_log_investigation.md (詳細調査ログ)
🔧 必要な修正 (推定6-10時間):
Phase 1: デバッグトレース追加 (30分)
- src/mir/builder/types/mod.rs に NYASH_MIR_TYPE_TRACE
Phase 2: トレース実行 (1時間)
- 型情報がどこで失われるか特定
Phase 3: 根本修正 (4-8時間)
- NewBox生成時の型登録修正
- PHI型伝播ロジック修正
- 型レジストリ整合性チェック追加
Phase 4: 検証 (1時間)
- stage1_cli 正常動作確認
🎯 結論:
MIR Builder の根本的インフラバグ。SSA変換とPHIノード経由での
型情報追跡に失敗している。.hakoレベルでは回避不可能。
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Task Assistant <task@anthropic.com >
2025-11-21 08:03:03 +09:00
3beddd6eb4
docs(stage1): Phase 25.1 - Stage-1 CLI ValueId(34) SSA バグ完全調査完了
...
🔍 根本原因特定:
- 問題箇所: stage1_cli.hako:111 の args null チェックパターン
local argc = 0; if args != null { argc = args.size() }
- 発生条件:
1. 深い制御フロー(BasicBlockId(12266) = 12,266ブロック)
2. using chain 複雑さ(BuildBox → ParserBox → 50+ファイル)
3. 多段階早期return(複数の支配フロンティアとPHIマージ)
- なぜShapeテストは通るか:
- スタブ実装(複雑な外部Box呼び出しなし)
- 単一ファイル(using chain なし)
- シンプルなCFG(数十ブロック vs 12,266ブロック)
✅ 解決策4案提示:
- Solution A: Fail-Fast Guard(最優先・最簡単)
if args == null { args = new ArrayBox() }
→ PHI merge を 1定義に潰す
- Solution B: デバッグロジック抽出
→ 問題パターンを小さな関数に隔離
- Solution C: Rust Bridge修正
→ stage1_bridge.rs で常に非null保証
- Solution D: MIR Builder根治(長期)
→ SSA構築ロジック・PHI配置アルゴリズム改善
📋 成果物:
- 詳細調査レポート: docs/development/current/main/stage1_cli_ssa_valueid34_analysis.md
- ValueId(34)の定義/使用ブロック解析
- 呼び出しチェーン追跡
- 制御フロー複雑度分析
- 4つの解決策の詳細実装手順
- Shapeテスト追加: src/tests/stage1_cli_entry_ssa_smoke.rs
- mir_stage1_cli_entry_like_pattern_verifies
- mir_stage1_cli_stage1_main_shape_verifies
- 構文とCFG形の正しさを検証(PASS)
🎯 技術的成果:
- MIRレベルのSSA追跡失敗メカニズムを完全解明
- 「テストは通るが実物は失敗」のギャップを構造的に特定
- 箱レベルでの実装可能な解決策を4案提示
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Task Assistant <task@anthropic.com >
2025-11-21 07:00:05 +09:00
f9d100ce01
chore: Phase 25.1 完了 - LoopForm v2/Stage1 CLI/環境変数削減 + Phase 26-D からの変更
...
Phase 25.1 完了成果:
- ✅ LoopForm v2 テスト・ドキュメント・コメント完備
- 4ケース(A/B/C/D)完全テストカバレッジ
- 最小再現ケース作成(SSAバグ調査用)
- SSOT文書作成(loopform_ssot.md)
- 全ソースに [LoopForm] コメントタグ追加
- ✅ Stage-1 CLI デバッグ環境構築
- stage1_cli.hako 実装
- stage1_bridge.rs ブリッジ実装
- デバッグツール作成(stage1_debug.sh/stage1_minimal.sh)
- アーキテクチャ改善提案文書
- ✅ 環境変数削減計画策定
- 25変数の完全調査・分類
- 6段階削減ロードマップ(25→5、80%削減)
- 即時削除可能変数特定(NYASH_CONFIG/NYASH_DEBUG)
Phase 26-D からの累積変更:
- PHI実装改善(ExitPhiBuilder/HeaderPhiBuilder等)
- MIRビルダーリファクタリング
- 型伝播・最適化パス改善
- その他約300ファイルの累積変更
🎯 技術的成果:
- SSAバグ根本原因特定(条件分岐内loop変数変更)
- Region+next_iパターン適用完了(UsingCollectorBox等)
- LoopFormパターン文書化・テスト化完了
- セルフホスティング基盤強化
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: ChatGPT <noreply@openai.com >
Co-Authored-By: Task Assistant <task@anthropic.com >
2025-11-21 06:25:17 +09:00
baf028a94f
docs(phi): Phase 25.1 - LoopForm v2 コメント整備 + ケース表完成
...
- ✅ [LoopForm] タグで統一コメント追加
- src/mir/loop_builder.rs
- header-cond: Case A/B分岐説明
- exit-break path / continue-backedge path
- exit PHI for Case A/B
- src/mir/phi_core/loop_snapshot_merge.rs
- Case A/B分岐: header ∈ exit_preds判定ロジック
- src/mir/phi_core/exit_phi_builder.rs
- LoopForm Process ステップバイステップ説明
- ✅ UsingCollectorBox Region+next_i化
- lang/src/compiler/parser/using/using_collector_box.hako
- 全ループをLoopForm v2形式に統一
- next_i, next_j, next_k, next_t パターン導入
- SSA安全化(未定義変数撲滅)
- ✅ LoopForm v2 ケース表完成
- docs/development/architecture/loops/loopform_ssot.md
- Case A/B/C/D の完全な表
- テスト対応マッピング
- 実装ファイル対応表
🎯 成果: LoopForm v2の「形」をソース・テスト・ドキュメントで完全固定
2025-11-21 06:22:21 +09:00
51359574d9
feat(stage1): Phase 25.1 - Stage1 CLI デバッグ改善 + 環境変数削減計画
...
- ✅ Stage1 CLI デバッグログ追加
- lang/src/runner/stage1_cli.hako: STAGE1_CLI_DEBUG対応
- 各関数でentry/exit/状態ログ出力
- SSAバグ調査を容易化
- ✅ Rust bridge 実装
- src/runner/stage1_bridge.rs: 子プロセス起動・環境変数配線
- NYASH_ENTRY設定、モジュールリスト生成
- ✅ デバッグヘルパースクリプト
- tools/stage1_debug.sh: 環境変数自動診断・詳細ログ
- tools/stage1_minimal.sh: 推奨5変数のみで実行
- ✅ 環境変数削減計画(25個→5個)
- docs/development/proposals/env-var-reduction-report.md
- 使用箇所マトリックス、依存関係グラフ
- 6段階削減ロードマップ(80%削減目標)
- docs/development/proposals/stage1-architecture-improvement.md
- 他言語事例調査(Rust/Go/Nim)
- アーキテクチャ統一案、実装ロードマップ
- ✅ LoopForm v2 設計ドキュメント
- docs/development/roadmap/phases/phase-25.1/stage1-usingresolver-loopform.md
🎯 成果: Stage1起動の複雑さを可視化、80%削減計画確立
2025-11-21 06:22:02 +09:00
6865f4acfa
feat(phi): Phase 25.1 - LoopForm v2 テスト・最小再現ケース追加
...
- ✅ 最小再現ケース作成
- apps/tests/minimal_ssa_skip_ws.hako: 確実に再現する10-30行ケース
- apps/tests/minimal_ssa_bug*.hako: 段階的簡略化版
- apps/tests/loopform_*.hako: LoopForm v2 各ケーステスト
- ✅ Rustテストスイート追加
- src/tests/mir_loopform_conditional_reassign.rs: 4ケース(Case A/B/C/D)
- src/tests/mir_loopform_complex.rs: 複雑なパターン
- 全テストPASS確認済み
- ✅ SSAバグ分析ドキュメント
- docs/development/analysis/minimal_ssa_bug_analysis.md
- エラー詳細・原因・ワークアラウンド記録
🎯 成果: SSAバグの構造を完全特定、デバッグ準備完了
2025-11-21 06:21:45 +09:00