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

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.rsbuild_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 名正規化(mainMain)はすでに導入済みで、本フェーズはその SSOT 化と VM 側フォールバックの整理にあたる。
    • 実際の「Global("Box.method") → Method{receiver=static singleton}」リライトは Phase 21.7 本体で実装する予定。
  • Phase 25.1Stage1 UsingResolver / CLI 本線):
    • 本フェーズは 25.1 の「片付け観測」側タスクとして扱い、CLI 本体や UsingResolver の仕様変更は行わない(構造整理のみ)。