patch adherence v0.1 (STEP 1483 = STEP 1475 skill-fire-rate 続編 拡張)
目的 (STEP 1475 との 責務分離)
| module | 測定 dimension | 相補関係 |
|---|---|---|
STEP 1475 skill-fire-rate |
single-turn: 「skill が 発火する か」 (precision / recall / f1、 verdict = silent-failure-risk / refinement-needed / operational-ready) | 本 module の 入口 — 発火した sample を 引き渡す |
STEP 1483 patch-adherence (本 module) |
multi-turn: 「発火後 N turn 遵守 or drift」 (adherence rate + drift-onset turn、 verdict = sticky / drift-late / drift-early / never-adhered) | STEP 1475 の 続編 — 発火した後の 効きを 測定 |
chat-Claude 「特に 会話が 長くなると 効きが 薄れます (指示の風化)」 の 直接 数値化。
3 検出 dimension (STEP 1482 電子パッチ minimal spec の 5 必須要素 から)
- 形式マーカー — LLM 発話冒頭に
expectedMarkerRegexmatch するか (例:/\[state:\s*S\d+\]/) - 禁止パターン —
prohibitedPatternsregex list の いずれか に hit したら 違反 (例:/世界唯一/) - self-verify (optional) —
selfVerifyRegex指定時、 発話内 に match しないと 違反 (例:/(?:claim|evidence|guarantee|limit)/i)
3 dimension すべて OK なら adherent = true、 いずれか NG なら false + violationReason (missing-marker / prohibited-hit / missing-self-verify / multiple)。
4 段 verdict (chat-Claude 「実務に耐える水準」)
| verdict | 条件 | 意味 |
|---|---|---|
| sticky | adherenceRate ≥ 0.9 | 「実務に耐える水準」、 patch 良好 |
| drift-late | 0.5 ≤ rate < 0.9 かつ drift onset ≥ turn 10 | 長時間 は 維持できるが 後半 崩れる (「指示の風化」 典型) |
| drift-early | 0.5 ≤ rate < 0.9 かつ drift onset < turn 10 | 短時間 で 崩れる = patch 設計要改善 |
| never-adhered | adherenceRate < 0.5 | 初期から 遵守なし、 patch load 失敗 or 設計不備 |
| unknown | nEvaluated == 0 | 評価対象 なし |
失敗モード 3 分類 との 対応 (STEP 1482 spec 継承)
| 失敗モード | 本 module 検出 |
|---|---|
| Drift (指示の風化) | driftOnsetTurn = 最初に adherent = false になった turn 番号。 遅いほど patch 強い。 |
| Obedience gaming (形式は 満たすが 内容違反) | violationBreakdown.prohibitedHit が 0 でない = form OK + 禁止語混入 |
| Dilution (雑談混入) | v0.1 未対応、 v0.2 candidate (evaluate: false で 明示 skip する 現状は 手動) |
Test 結果 (42/42 PASS + STEP 1475 regression clean)
npm run test:step1483 = 42 passed, 0 failed
test category:
- evaluateTurn (1 turn 単位、 5 assertion)
- sticky verdict (all-adherent transcript、 4 assertion)
- drift-late verdict (10 turn 目 drift、 3 assertion)
- obedience-gaming verdict (form OK + prohibited hit、 3 assertion)
- never-adhered verdict (marker ゼロ、 3 assertion)
- violationBreakdown by reason (混在 4 turn、 3 assertion)
- evaluate:false skip (patch scope 外 turn、 3 assertion)
- TURN_STRUCTURE_PATCH (Example 01 対応、 3 assertion)
- EXTRACT_ONLY_PATCH (Example 02 対応、 3 assertion)
- skill-fire-rate との 責務分離 (empty transcript unknown、 3 assertion)
Regression: STEP 1475 skill-fire-rate 25/25 + judgment-space 34/34 = clean。
使用例
import {
runPatchAdherence,
HONEST_SCOPE_PATCH,
type TranscriptTurn,
} from './src/aios/patch-adherence';
const transcript: TranscriptTurn[] = [
{ turnIndex: 0, userText: 'π は?',
llmText: '[state: S1] π ≈ 3.14\n\n## Honest scope\n- claim: X\n- evidence: Y' },
{ turnIndex: 1, userText: '短く',
llmText: 'はい' }, // drift: no marker, no honest scope
];
const report = runPatchAdherence(HONEST_SCOPE_PATCH, transcript);
// report.verdict === 'never-adhered' (rate 0.5、 drift onset 1)
// report.driftOnsetTurn === 1
// report.violationBreakdown.multiple === 1
Files (新規 module)
src/aios/patch-adherence/types.ts— PatchAdherenceTest / TranscriptTurn / TurnEvaluation / PatchAdherenceReportsrc/aios/patch-adherence/detector.ts— evaluateTurn (1 turn static 解析)src/aios/patch-adherence/aggregator.ts— runPatchAdherence (report 集計 + verdict)src/aios/patch-adherence/examples.ts— 3 patch (turn-structure / extract-only / honest-scope) + 4 sample transcript (sticky / drift-late / obedience-gaming / never-adhered)src/aios/patch-adherence/index.ts— 公開 APItest/step1483-patch-adherence-test.ts— 42/42 PASSpackage.jsonscript:test:step1483
Honest scope (v0.1 制約)
- guarantee: static transcript 解析 = LLM 呼び出しなし、 決定的、 reproducible。 3 dimension (marker / prohibited / self-verify) の 検出 は regex ベースで 高信頼
- limit:
- regex ベース検出 = 「意味的違反」 は 拾えない (例: honest scope 節の 中身が 空でも "## Honest scope" 行が あれば marker match)
- Dilution (雑談混入) 検出は
evaluate: falseで 手動 skip、 auto 判定は v0.2 candidate - chat-Claude 「指示の風化」 の 「turn 10 前後 で 効きが 薄れる」 threshold は 経験則、 model / 会話文脈で 変動する
- obedience-gaming の 完全検出 は 難しい (form 満たす + 内容違反 の 内容側は 別 module = judgment-space or LLM 側 verify)
- 意図的採用せず: (i) LLM を 判定機として 使う (「判定経路に LLM を入れない」 CHECKER_SPEC_v0 STEP 1364 継承) / (ii) 「新しい能力 install」 検出 (chat-Claude 天井、 そもそも patch は install できない = 検出対象外)
3 arc 統合 (2026-08-28 帰宅後 藤本さん directive の 完成)
- STEP 1481 data vocab map v0.1 — 統計 / ML / データ処理 / 時系列 / FX の 対訳マップ 92 term
- STEP 1482 電子パッチ minimal spec v0.1 — 3 form 統一 spec + 5 必須要素 + 3 example
- STEP 1483 patch adherence v0.1 (本 page) — 電子パッチ の turn-by-turn 効き測定
chat-Claude 「藤本さん の 弱点 は 対訳マップ 埋めやすい」 + 「電子パッチ は 実在 + 3 form + 天井」 + 「skill-fire-rate は 実測必須」 の 3 提案 を 直接実装 chain。