diff --git a/docs/development/current/main/joinir-architecture-overview.md b/docs/development/current/main/joinir-architecture-overview.md index e675a964..9633e4b0 100644 --- a/docs/development/current/main/joinir-architecture-overview.md +++ b/docs/development/current/main/joinir-architecture-overview.md @@ -36,13 +36,32 @@ --- -## 0.1 用語(routing / fallback / fail-fast) +## 0.1 用語・デバッグフラグ(Glossary & Debug Flags) + +### 用語(routing / fallback / fail-fast) 本文では「fallback」という単語が文脈でぶれやすいので、先に用語を固定する: - **routing**: JoinIR Core 内での正規な経路選択(Pattern ルータ、if-sum mode ↔ legacy P3 など)。理由が分かる形でログ/タグを付ける。 - **soft fallback**: 任意箱(pre-validation / optional optimizer)が失敗したときに、同等意味論の別 JoinIR 経路へ退避すること(JoinIR Core 外へは出ない)。 - **prohibited fallback**: 非 JoinIR への退避(例: LoopBuilder)・サイレント退避・契約違反の握りつぶし。 +- **SSOT** (Single Source of Truth): 設計・実装・テストの情報が集約される唯一の場所(e.g., `is_joinir_debug()` for debug flag reading)。Phase ドキュメントより SSOT ドキュメントを優先参照。 +- **Fail-Fast**: エラー条件を明示的に検出・報告し、サイレント退避や暗黙的フォールバックを禁止する設計原則。 + +### デバッグフラグ(Phase 82 SSOT 統一) + +JoinIR デバッグログを有効にするには **`HAKO_JOINIR_DEBUG=1`** を使用(`NYASH_JOINIR_DEBUG=1` は deprecated): + +```bash +# 推奨(Phase 82 以降) +HAKO_JOINIR_DEBUG=1 cargo test --release --lib + +# Legacy(Phase 82 以前、後方互換保証) +NYASH_JOINIR_DEBUG=1 cargo test --release --lib +``` + +実装: `src/config/env/joinir_flags.rs::is_joinir_debug()` が両者をチェック。 +詳細: `docs/development/current/main/phase82-83-debug-flag-ssot-summary.md` ## 1. 不変条件(Invariants)