Files
hakorune/docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md
nyash-codex 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

56 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 25.4 — Naming & Stage1 CLI Cleanup
Status: design only小さな箱の片付けフェーズ
目的:
- static box / global 呼び出しまわりの命名規約を NamingBox に一本化し、レガシーなフォールバック経路を整理する。
- Stage1 CLI の env/トグル解釈を 1 箇所の「設定箱」にまとめ、stage1_main の責務を薄くする。
- MIR デバッグログ(`__mir__.log`)のタグと配置をドキュメントで見える化し、将来の正式機能化に備える。
## 1. NamingBox SSOT 化static box naming
- 対象:
- `src/mir/naming.rs`
- `src/mir/builder/decls.rs``build_static_main_box` など)
- `src/backend/mir_interpreter/handlers/calls/global.rs`
- ゴール:
- static box 名に触るコードはすべて NamingBox (`canonical_box_name`, `encode_static_method`, `normalize_static_global_name`) 経由に揃える。
- VM 側の global 呼び出しは canonical 名(例: `Main._nop/0`)のみを見る。レガシーな「元名での再探索」フォールバックは撤去済みの状態を維持。
- テスト: `src/tests/mir_static_box_naming.rs` を維持し、`apps/tests/minimal_to_i64_void.hako` が Main._nop/0 → StringHelpers.to_i64 経由で実行されることを固定。
## 2. Stage1 CLI 設定箱env→Config 変換)
- 対象:
- `lang/src/runner/stage1_cli.hako`
- 新規: `Stage1CliConfigBox`(案)
- ゴール:
- NYASH_USE_STAGE1_CLI / STAGE1_EMIT_* / STAGE1_BACKEND / STAGE1_SOURCE / STAGE1_PROGRAM_JSON / NYASH_TO_I64_* などの env を、1 箇所で構造体 `Config` に変換する箱を作る。
- stage1_main(args) は、この `Config` に対する分岐ロジックだけを持つenv.get を散在させない)。
- env の一覧と既定値/優先順位を docsPhase 25.x or env-var reduction reportに反映し、将来の環境変数削減フェーズの入力にする。
## 3. MIR ログ観測リスト__mir__.log の整理)
- 対象:
- `__mir__.log` を使用している .hako ファイル(例: `lang/src/runner/stage1_cli.hako`, `lang/src/shared/common/string_helpers.hako`
- docs 新規: `docs/development/architecture/mir-logs-observability.md`(案)
- ゴール:
- どのタグ(例: `[stage1_main] ...`, `[string_helpers/to_i64] ...`)がどのレイヤ/目的のためのデバッグかを一覧にする。
- dev 用ログと将来残したい観測ログを分けておき、Phase 25.x 以降で `__mir__` を正式な「MIR 観測 API」として設計するための下地にする。
## 4. Fixture の最小化optional / 後続タスク)
- 対象:
- `apps/tests/minimal_to_i64_void.hako`
- StringHelpers 系のテスト用 .hako将来新設
- ゴール:
- Void → 数値変換など、特定の型崩れバグを再現するための fixture を「本当に必要な最小の箱」に分解する。
- 代表テストの MIR ログが過度に肥大化しないようにしつつ、numeric core / to_i64 の仕様を小さな .hako で固定していく。
## 5. 他フェーズとの関係
- Phase 21.7Normalization / Methodize Static Boxes:
- NamingBox による static 名正規化(`main``Main`)はすでに導入済みで、本フェーズはその SSOT 化と VM 側フォールバックの整理にあたる。
- 実際の「Global(\"Box.method\") → Method{receiver=static singleton}」リライトは Phase 21.7 本体で実装する予定。
- Phase 25.1Stage1 UsingResolver / CLI 本線):
- 本フェーズは 25.1 の「片付け観測」側タスクとして扱い、CLI 本体や UsingResolver の仕様変更は行わない(構造整理のみ)。