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>
This commit is contained in:
nyash-codex
2025-11-21 09:45:27 +09:00
parent 554ba96f76
commit b92d9f335d

View File

@ -0,0 +1,156 @@
# MIR ログ観測 (`__mir__.log`)
**目的**: `__mir__.log` の全使用箇所を一覧化し、dev専用か観測用かを分類する。
---
## 概要
`__mir__.log` は MIR レベルの観測・デバッグ用ログ出力。将来的にはdev向けの一時的なログと、本番でも使うMIR観測 APIに分離する予定。
---
## 使用箇所一覧表
### 1. Stage-1 CLI Debug10箇所
**場所**: `lang/src/runner/stage1_cli.hako`
| 行番号 | タグ | 説明 | 用途 |
|-------|------|-----|------|
| 157 | `[stage1_main] args_safe at entry` | stage1_main entry point args debug | Dev専用 |
| 171 | `[stage1_main] config` | Config box values debug | Dev専用 |
| 231 | `[_cmd_emit] args before size check` | _cmd_emit args debug | Dev専用 |
| 235 | `[_cmd_emit] argc after size` | _cmd_emit argc debug | Dev専用 |
| 254 | `[_cmd_emit_program_json] args before size check` | _cmd_emit_program_json args debug | Dev専用 |
| 258 | `[_cmd_emit_program_json] argc after size` | _cmd_emit_program_json argc debug | Dev専用 |
| 282 | `[_cmd_emit_mir_json] args before size check` | _cmd_emit_mir_json args debug | Dev専用 |
| 286 | `[_cmd_emit_mir_json] argc after size` | _cmd_emit_mir_json argc debug | Dev専用 |
| 348 | `[_cmd_run] args before size check` | _cmd_run args debug | Dev専用 |
| 352 | `[_cmd_run] argc after size` | _cmd_run argc debug | Dev専用 |
**有効化環境変数**: `STAGE1_CLI_DEBUG=1`
**説明**:
- Stage-1 CLI の entry point / config 値のデバッグ
- MIR Builder type confusion およびValueId 伝搬の検証用
- argv/argc の SSA 変数追跡
**用途と削除時期**:
- Phase 25.x 完了後に MIR Builder type confusion 修正完了で削除予定
- Config box の初期化検証が完了したら不要になる debug ログが含まれる可能性あり
---
### 2. FuncScanner Debug3箇所
**場所**: `lang/src/compiler/entry/func_scanner.hako`
| 行番号 | タグ | 説明 | 用途 |
|-------|------|-----|------|
| 315 | `skip_ws/head` | skip_ws loop head (i, n) | 観測用 |
| 319 | `skip_ws/loop` | skip_ws loop iteration (i, n) | 観測用 |
| 326 | `skip_ws/exit` | skip_ws loop exit (i, n) | 観測用 |
**有効化環境変数**: 現在明示的な環境変数なし
**説明**:
- FuncScanner の skip_ws ループの反復をMIR レベルで観測
- LoopForm v2 / PHI 機能の正しさを検証
- Region+next_i 伝播の SSA 動作確認
**用途と削除時期**:
- **保持推奨**: 将来的な MIR 観測は、用途に応じてMIR観測 APIとして昇格が望ましい
- 当面は明示的な環境変数(例: `NYASH_FUNCSCANNER_DEBUG=1`)で制御することも検討
---
### 3. StringHelpers Debug1箇所
**場所**: `lang/src/shared/common/string_helpers.hako`
| 行番号 | タグ | 説明 | 用途 |
|-------|------|-----|------|
| 27 | `[string_helpers/to_i64] x` | to_i64 input value debug | Dev専用 |
**有効化環境変数**: `NYASH_TO_I64_DEBUG=1`
**説明**:
- Void 型が Integer として扱われる問題の検証用
- `NYASH_TO_I64_FORCE_ZERO` workaround の正しさを確認
**用途と削除時期**:
- Phase 25.x 完了後に型伝播が正しく修正されたら削除予定
- 型強制処理の妥当性が確立したら不要になる
---
### 4. Test Comment1箇所
**場所**: `lang/src/compiler/tests/funcscanner_skip_ws_min.hako`
| 行番号 | タグ | 説明 | 用途 |
|-------|------|-----|------|
| 6 | (コメント内) | テスト場所の注釈 | コメント |
**説明**: `__mir__.log` の使用例をコメントで示す
---
## 用途別集計表
| 用途 | 件数 | 内容 | 用途と削除時期 |
|-----|-------|-----|----------|
| **Dev専用** | 11 | Stage-1 CLI / StringHelpers デバッグ用 | 削除予定Phase 25.x 完了) |
| **観測用** | 3 | FuncScanner ループ反復観測 | 保持推奨MIR観測 API 昇格) |
| **コメント** | 1 | テスト場所の注釈 | - |
---
## 用途に応じたMIR観測 API 設計Phase 25.x 完了後)
将来的な `__mir__.log` は暫定的な環境変数制御から脱却し、用途に応じて `MirLogBox` 等の箱化されたAPI経由で呼び出す形に整理することが望ましい。
### 設計例
```nyash
static box MirLogBox {
// Structured logging with levels
method debug(tag, ...values) {
if env.get("NYASH_MIR_LOG_LEVEL") != "debug" { return }
// ... implementation
}
method trace(tag, ...values) {
if env.get("NYASH_MIR_LOG_LEVEL") != "trace" { return }
// ... implementation
}
// Performance tracing
method trace_loop_iteration(loop_id, iteration, vars) {
// ... implementation
}
}
```
### 利点
- ログレベル設定debug/trace/info
- 条件付き出力JSON形式等
- 統合デバッグ機能拡張
- 用途に応じたMIR 観測とデバッグの分離
---
## コードの削除方針Phase 25.4
**現在の戦略では `__mir__` 使用箇所そのものには変更を加えず、分類と削除方針のみを記録。**
削除や統合は将来的な環境変数整理や機能分類時に実施する。
---
## 参考
- Phase 25.4 計画: `docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md`
- Stage-1 CLI: `lang/src/runner/stage1_cli.hako`
- FuncScanner: `lang/src/compiler/entry/func_scanner.hako`
- StringHelpers: `lang/src/shared/common/string_helpers.hako`