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>
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
# Phase 25.3 — FuncScanner / Stage‑B defs 安定化
|
||||
|
||||
Status: 完了(Stage‑B fib defs canary 緑/2025-11 時点)
|
||||
|
||||
## スコープ / ゴール
|
||||
|
||||
- 対象レイヤ
|
||||
@ -22,6 +24,30 @@
|
||||
- Loop/PHI の意味論は **LoopFormBuilder + LoopSnapshotMergeBox** に完全委譲したまま、
|
||||
- FuncScanner / Stage‑B は「テキストスキャン+JSON 組み立て」の箱として綺麗に分離された状態にする。
|
||||
|
||||
## 完了ステータス(2024-11-20 時点)
|
||||
|
||||
- `tools/smokes/v2/profiles/quick/core/phase251/stageb_fib_program_defs_canary_vm.sh` が緑(Phase 25.3 の完了条件)。
|
||||
- `defs` に `TestBox.fib` / `Main.main` が入り、`TestBox.fib.body.body[*]` に `Loop` ノードが含まれる状態を固定。
|
||||
- Stage‑B 本線の整理:
|
||||
- `StageBDriverBox.main`: main 本文は `{…}` で包んだ block パーサ優先で JSON 化し、defs 側は `{"type":"Block","body":[…]}` に構造化して注入。
|
||||
- `StageBFuncScannerBox._scan_methods`: block パーサ優先に揃え、Program パーサは `HAKO_STAGEB_FUNC_SCAN_PROG_FALLBACK=1` の opt-in 時だけ使う安全側トグルに変更(skip_ws 崩れの再発防止)。
|
||||
- Rust 層は無改変(LoopForm v2 / LoopSnapshotMergeBox の SSOT をそのまま利用)。
|
||||
|
||||
## JSON v0 フロントと AOT ルートの契約(Phase 25.3 時点)
|
||||
|
||||
- Program(JSON v0) の形:
|
||||
- ルートは常に `{"version":0,"kind":"Program","body":[...]}`
|
||||
- defs は `\"defs\":[{ \"name\", \"params\", \"box\", \"body\" }]` を追加する形で注入する。
|
||||
- Stage‑B / FuncScanner 経由の `defs[*].body` は必ず `{\"type\":\"Block\",\"body\":[Stmt...]}` でラップし、AOT/VM 側からは「通常の Block ノード」として読めるようにする。
|
||||
- フロント/バックエンドの責務分離:
|
||||
- Stage‑B / FuncScanner: `.hako` テキスト → Program(JSON v0) まで(ループ/PHI の意味論は持たない)。
|
||||
- Rust 側 LoopForm v2 / JSON v0 Bridge: Program(JSON v0) → MIR/AOT まで(Loop/PHI/SSA の SSOT)。
|
||||
- Stage‑B トグル整理(抜粋):
|
||||
- `HAKO_STAGEB_FUNC_SCAN=1`(既定): defs を常に埋める。`0` で Stage‑B からの defs 注入を無効化。
|
||||
- `HAKO_STAGEB_PROGRAM_PARSE_FALLBACK=1`: main 本文で Program パーサ fallback を有効化(既定は OFF、block パーサ優先)。
|
||||
- `HAKO_STAGEB_FUNC_SCAN_PROG_FALLBACK=1`: FuncScanner 側で Program パーサ fallback を有効化(既定は OFF)。
|
||||
通常の開発・CI ではいずれも OFF にしておき、VM/パーサ調査時だけ opt‑in で使う想定。
|
||||
|
||||
## すでに前提としている状態
|
||||
|
||||
- LoopForm v2 / PHI / snapshot:
|
||||
@ -118,27 +144,28 @@ FuncScanner / Stage‑B のデバッグ時には、`scan_all_boxes` のループ
|
||||
- ここでの主なバグは「SSA ではなく、Stage‑B が fib ソースから defs を組み立てきれていないこと」なので、
|
||||
ループ構造や LoopForm には手を入れず、Stage‑B 側のテキスト処理と defs 生成パスを中心に見る。
|
||||
|
||||
### 4. fib defs canary & ドキュメント更新
|
||||
### 4. fib defs canary & ドキュメント更新(完了)
|
||||
|
||||
- 対象:
|
||||
- `tools/smokes/v2/profiles/quick/core/phase251/stageb_fib_program_defs_canary_vm.sh`
|
||||
- `docs/development/roadmap/phases/phase-25.1q/README.md`
|
||||
- `CURRENT_TASK.md`
|
||||
|
||||
- やること:
|
||||
- canary スクリプトで:
|
||||
- `Program.kind == "Program"`
|
||||
- `defs` に `TestBox.fib` が存在すること。
|
||||
- `TestBox.fib.body` に `Loop` ノードが含まれること。
|
||||
を満たした状態で `rc=0` になるまで確認する。
|
||||
- Phase 25.1q / 25.2 の README には、
|
||||
- 「loop/PHI/スナップショットの SSOT は LoopForm v2 + LoopSnapshotMergeBox」
|
||||
- 「Phase 25.3 で FuncScanner / Stage‑B defs もこの土台の上に載せた」
|
||||
というつながりを 1〜2 行で追記する。
|
||||
- `CURRENT_TASK.md` には:
|
||||
- Phase 25.3 のタスク完了状況(FuncScanner fib / Stage‑B fib canary 緑)と、
|
||||
- その後に繋がる Stage‑1 UsingResolver / Stage‑1 CLI self‑host ラインへのブリッジ
|
||||
を短く整理しておく。
|
||||
今回の結果:
|
||||
- `tools/smokes/v2/profiles/quick/core/phase251/stageb_fib_program_defs_canary_vm.sh` は `rc=0` で安定緑。
|
||||
- canary 内部で確認している条件:
|
||||
- `Program.kind == "Program"`
|
||||
- `defs` に `TestBox.fib` / `Main.main` が含まれていること。
|
||||
- `TestBox.fib.body` の直下(`body.body[*]`)に `Loop` ノードが最低 1 つ含まれていること。
|
||||
- これにより、FuncScanner / Stage‑B 経由の fib defs ラインは LoopForm v2 + LoopSnapshotMergeBox の上で構造的に安定したとみなせる。
|
||||
|
||||
ドキュメント側:
|
||||
- Phase 25.1q / 25.2 の README には、
|
||||
- 「loop/PHI/スナップショットの SSOT は LoopForm v2 + LoopSnapshotMergeBox」
|
||||
- 「Phase 25.3 で FuncScanner / Stage‑B defs もこの土台の上に載せた」
|
||||
という関係を 1〜2 行で追記済み。
|
||||
- `CURRENT_TASK.md` では Phase 25.3 を「Stage‑B fib defs canary 緑」まで完了したフェーズとして整理し、
|
||||
次フェーズを Stage‑1 UsingResolver ループ整理 / Stage‑1 CLI program-json selfhost 導線に設定した。
|
||||
|
||||
### 5. mir_funcscanner_skip_ws 系テストの扱い(flaky → dev 専用)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user