ADR 0010: インテント解析 — 決定論的セキュリティゲート + プラガブルな IntentParser
常時有効で決して差し替え不可能な決定論的セキュリティゲートを、プラガブルな IntentParser Protocol から切り離す — 重要なところは決定論的に、安全なところは柔軟に。
ステータス: accepted · 日付: 2026-06-17
不変の記録。ドリフト追跡の対象外(
coversなし)。編集ではなく、置き換え(supersede)で対応すること。
0002 のプロダクト方針の一部。0004 と 0007 によって必然となった。
コンテキスト
インテントパーサーはルールベースで、LLM を一切使わず、金融/中国語向けにチューニングされている(同義語マッチング、ハードコードされた _SUPPORTED_METRICS、インラインの _CHANNEL_SYNONYMS)。同時に、これはセキュリティ上重要な玄関口でもある。スコープ外/競合他社に対する拒否は決定論的であり、いかなる LLM 呼び出しや検索呼び出しよりも 前に 実行され、外部エンティティのマスキングもここに存在する。先行する 2 つの決定が、純粋なルールパーサーを成り立たなくする。完全な汎用性(0004)は、金融向けにチューニングされたパーサーには読み取れない任意のユーザー定義ディメンションを意味し、多言語対応(0007)は言語ごとの同義語テーブルをメンテナンスの爆発へと導く。
重要な洞察はこうだ。セキュリティの判断とインテントの判断は分離可能である。 「このエンティティはスコープ外/競合他社/RESTRICTED か?」はセキュリティ上重要であり、決定論的であり続けなければならない。「どのディメンション/期間が問われているか?」はそうではない — そこでの誤解析は確認のための問い返しや not-found をもたらすだけで、情報漏えいには決してつながらない。
決定
両者を分離する。
- セキュリティゲート(スコープ外/競合他社/RESTRICTED)は、独立した、常時有効で、決して差し替え不可能な決定論的ガードとなる。パーサーの出力に対して実行され、
DomainProfileを通じて宣言される。LLM には決して問い合わせない。 - インテント抽出は
IntentParserProtocol となる。デフォルトは LLM を使わない設定駆動のルール実装(0009 に基づくオフラインデフォルト)で、堅牢な多言語/任意ドメイン解析のためのオプションの LLM 分類器バックエンド(extra として提供)を持つ。
原則: 重要なところ(セキュリティ)は決定論的に、安全なところ(インテント)は柔軟に。
検討した代替案(不採用)
- 純粋なルールパーサー、設定駆動、LLM を一切使わない(オプション A): 純粋性は最大だが、すべてのユーザーにドメインごと/ロケールごとの同義語設定を手作業で書かせることを強いる — 形態論的に豊かな言語に対して脆く、導入時の摩擦も大きい。
- LLM 分類器を主パーサーとする(オプション C): 最も柔軟だが、玄関口を LLM 依存にしてしまい、誤解析がセキュリティゲートを無効化するリスクがある。LLM を使わないオフラインデフォルトも失われる。
帰結
- セキュリティ保証が強化される。「ルールパーサーがたまたま決定論的である」ことから創発的に生じる性質ではなく、明示的で、隔離された、差し替え不可能なコンポーネントとなる。
- LLM を使わないオフラインデフォルトを維持しつつ、汎用性/多言語対応にオプトインの道を用意する。
- 新しい成果物:
SecurityGateコンポーネントと、2 つの実装を持つIntentParserProtocol。