From 9feb575c47dbaf853b0830dfbc2ea79bbbf55327 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Thu, 20 Nov 2025 17:12:46 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20CLAUDE.md=E6=9B=B4=E6=96=B0=20-=20PHI?= =?UTF-8?q?=20Option=20C=E5=AE=8C=E4=BA=86=EF=BC=8BMIR=E3=83=87=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=B0=E3=82=AC=E3=82=A4=E3=83=89=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ 現在の開発状況セクション更新(2025-11-20) - PHI Bug Option C実装ほぼ完了(267/268テストPASS) - commit 461bdec4の成果サマリー ✅ MIRデバッグ完全ガイド追加(超重要!) - --dump-mir, NYASH_VM_DUMP_MIR, NYASH_OPTION_C_DEBUG等 - JSON形式解析、決定性テスト手順 - 実践的コマンド集 ✅ HashMap非決定性の発見記録 - 根本原因(HashDoS対策のランダムseed) - 解決策(BTreeSet/BTreeMap) - 残課題(variable_map) 📖 次回セッションでの即時参照用 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CLAUDE.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 6399dffb..17ba0f54 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,56 @@ --- -## 🔄 **現在の開発状況** (2025-11-15) +## 🔄 **現在の開発状況** (2025-11-20) + +### 🎊 **PHI Bug Option C実装ほぼ完了!** (2025-11-20 commit `461bdec4`) +- **267/268テスト PASS達成!** Option C実装大成功 🎉 +- **Step 5-5-H完了**: Phantom block検証実装(exit_preds検証) +- **PHI決定性向上**: BTreeSet/BTreeMap化(4ファイル修正) + - `if_phi.rs`, `loop_phi.rs`, `loop_snapshot_merge.rs`, `loopform_builder.rs` +- **根本原因解明**: HashMap非決定的イテレーションによるValueId変動 + - 詳細: `docs/development/current/main/valueid-*.md` +- **退行なし**: 267テスト全てPASS(1テストのみ非決定性残存) +- **次タスク**: Stage-B型エラー修正(String > Integer(13)) +- **後回し**: variable_map決定性化(builder.rs等のHashMap→BTreeMap) + +#### 🔍 **MIRデバッグ完全ガイド**(超重要!) +```bash +# 基本MIR確認(最優先!) +./target/release/nyash --dump-mir program.hako +NYASH_VM_DUMP_MIR=1 ./target/release/nyash program.hako + +# 詳細MIR + エフェクト情報 +./target/release/nyash --dump-mir --mir-verbose --mir-verbose-effects program.hako + +# JSON形式で詳細解析 +./target/release/nyash --emit-mir-json mir.json program.hako +jq '.functions[0].blocks' mir.json # ブロック構造確認 + +# Option C デバッグ(PHI関連) +NYASH_OPTION_C_DEBUG=1 cargo test --release TEST_NAME 2>&1 | grep "Option C" + +# LoopForm デバッグ +NYASH_LOOPFORM_DEBUG=1 cargo test --release TEST_NAME 2>&1 | grep "loopform" + +# 完全MIRダンプ(テスト時) +NYASH_MIR_TEST_DUMP=1 cargo test --release TEST_NAME 2>&1 > /tmp/mir_dump.log + +# VM実行トレース +NYASH_CLI_VERBOSE=1 ./target/release/nyash program.hako + +# 決定性テスト(3回実行して一貫性確認) +for i in 1 2 3; do + echo "=== Run $i ===" + cargo test --release TEST_NAME 2>&1 | grep -E "(ValueId|test result)" +done +``` + +#### 📊 **重要な発見:HashMap非決定性** +- Rustの`HashMap`/`HashSet`はHashDoS対策でランダムseed使用 +- PHI生成順序が毎回変わる → ValueId割り当てが変動 +- **解決**: `BTreeSet`/`BTreeMap`で決定的イテレーション保証 +- **残課題**: `variable_map: HashMap` (builder.rs等) ### 🎉 **Phase 25 MVP 完全成功!** (2025-11-15) - **numeric_core BoxCall→Call変換** 完全動作!