instar 1.3.715 → 1.3.717

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"llmBenchCoverage.d.ts","sourceRoot":"","sources":["../../src/data/llmBenchCoverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAE,GAChC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAiEtE,CAAC"}
1
+ {"version":3,"file":"llmBenchCoverage.d.ts","sourceRoot":"","sources":["../../src/data/llmBenchCoverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAE,GAChC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAqFtE,CAAC"}
@@ -40,31 +40,45 @@ export const LLM_BENCH_COVERAGE = {
40
40
  InteractivePoolCanaryJudge: {
41
41
  exempt: 'judges a FIXED known-answer canary probe — the canary is its own benchmark; a bench task would re-test the same constant',
42
42
  },
43
- // ── Wave 2 (sentinels/gates/extractors still to author) ──
44
- InputDetector: { pending: 'wave-2' },
45
- InputGuard: { pending: 'wave-2' },
46
- SessionActivitySentinel: { pending: 'wave-2' },
47
- StallTriageNurse: { pending: 'wave-2' },
48
- CommitmentSentinel: { pending: 'wave-2' },
49
- PresenceProxy: { pending: 'wave-2' },
50
- PromiseBeacon: { pending: 'wave-2' },
51
- ProjectDriftChecker: { pending: 'wave-2' },
52
- TemporalCoherenceChecker: { pending: 'wave-2' },
53
- SessionWatchdog: { pending: 'wave-2' },
54
- ResumeQueueDrainer: { pending: 'wave-2' },
55
- TopicIntentArcCheck: { pending: 'wave-2' },
56
- SlackAdapter: { pending: 'wave-2' },
57
- TelegramAdapter: { pending: 'wave-2' },
58
- PromptGate: { pending: 'wave-2' },
59
- AutoApprover: { pending: 'wave-2' },
60
- IntegrationGate: { pending: 'wave-2' },
61
- UnjustifiedStopGate: { pending: 'wave-2' },
62
- CoherenceGate: { pending: 'wave-2' },
63
- OverrideDetector: { pending: 'wave-2' },
64
- TaskClassifier: { pending: 'wave-2' },
65
- ResumeValidator: { pending: 'wave-2' },
66
- SessionSummarySentinel: { pending: 'wave-2' },
67
- TopicIntentExtractor: { pending: 'wave-2' },
43
+ // ── Covered by Wave 2 (authored 2026-07-02; tasks-wave2/ in the bench harness) ──
44
+ InputGuard: { task: 'input-guard-coherence' },
45
+ SessionActivitySentinel: { task: 'activity-digest' },
46
+ StallTriageNurse: { task: 'stall-triage-diagnosis' },
47
+ CommitmentSentinel: { task: 'commitment-detector' },
48
+ PresenceProxy: { task: 'presence-tier3-stall' },
49
+ ProjectDriftChecker: { task: 'project-drift-check' },
50
+ TemporalCoherenceChecker: { task: 'temporal-coherence' },
51
+ SessionWatchdog: { task: 'watchdog-stuck-judge' },
52
+ ResumeQueueDrainer: { task: 'resume-sanity-check' },
53
+ TopicIntentArcCheck: { task: 'arc-check-classify' },
54
+ TelegramAdapter: { task: 'telegram-stall-confirm' },
55
+ // SlackAdapter.confirmStallAlert builds a byte-identical prompt to
56
+ // TelegramAdapter's (verified by diff) — the same task id covers both
57
+ // (precedent: CompletionEvaluator maps two surfaces to two ids).
58
+ SlackAdapter: { task: 'telegram-stall-confirm' },
59
+ PromptGate: { task: 'prompt-gate-detect' },
60
+ UnjustifiedStopGate: { task: 'unjustified-stop-gate' },
61
+ OverrideDetector: { task: 'override-detector' },
62
+ TaskClassifier: { task: 'task-classifier' },
63
+ ResumeValidator: { task: 'resume-validator' },
64
+ SessionSummarySentinel: { task: 'session-summary-sentinel' },
65
+ TopicIntentExtractor: { task: 'topic-intent-extractor' },
66
+ // ── Wave-2 argued exemptions (evidence: tasks-wave2/SKIPPED.md in the bench harness) ──
67
+ IntegrationGate: {
68
+ exempt: 'no LLM prompt of its own — delegates to JobReflector.reflect() (attribution JobReflector, tracked wave-3); zero LLM-provider callsites of its own in IntegrationGate.ts',
69
+ },
70
+ CoherenceGate: {
71
+ exempt: 'no callsite carries attribution CoherenceGate — all LLM calls flow through CoherenceReviewer.callApi() (incl. the DynamicReviewer subclass), covered by gate-triage',
72
+ },
73
+ AutoApprover: {
74
+ exempt: 'mechanical key injection + audit logging, no LLM callsite; the upstream judgment is InputClassifier.classify(), covered by input-classifier',
75
+ },
76
+ InputDetector: {
77
+ exempt: 'attribution-manifest alias only (a legacy prompt-pattern matcher); the live InputDetector class in PromptGate.ts calls with attribution PromptGate, covered by prompt-gate-detect',
78
+ },
79
+ PromiseBeacon: {
80
+ exempt: 'no live LLM prompt — generateStatusLine/classifyProgress hooks are unwired at the construction site (server.ts); the enqueue path resolves templated strings; revisit if a generator is wired',
81
+ },
68
82
  // ── Wave 3 (reflectors + background/job tasks) ──
69
83
  JobReflector: { pending: 'wave-3' },
70
84
  crossModelReviewer: { pending: 'wave-3' },
@@ -1 +1 @@
1
- {"version":3,"file":"llmBenchCoverage.js","sourceRoot":"","sources":["../../src/data/llmBenchCoverage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmBenchCoverage.js","sourceRoot":"","sources":["../../src/data/llmBenchCoverage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputClassifier.d.ts","sourceRoot":"","sources":["../../src/monitoring/InputClassifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlE,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IAEnB,8BAA8B;IAC9B,WAAW,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAEhB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AA2CD,qBAAa,eAAe;IAGd,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,oBAAoB,CAAS;gBAEjB,MAAM,EAAE,qBAAqB;IAIjD;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+BrE,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,oBAAoB;YAcd,eAAe;IAiD7B;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUzC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUxC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,MAAM;CAiBf"}
1
+ {"version":3,"file":"InputClassifier.d.ts","sourceRoot":"","sources":["../../src/monitoring/InputClassifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlE,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IAEnB,8BAA8B;IAC9B,WAAW,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAEhB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AA2CD,qBAAa,eAAe;IAGd,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,oBAAoB,CAAS;gBAEjB,MAAM,EAAE,qBAAqB;IAIjD;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+BrE,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,oBAAoB;YAcd,eAAe;IAsD7B;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUzC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUxC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,MAAM;CAiBf"}
@@ -174,7 +174,9 @@ export class InputClassifier {
174
174
  '- The prompt asks the human a question requiring thought',
175
175
  '- File operations outside the project directory',
176
176
  '- Destructive operations (delete, remove, overwrite, force)',
177
- '- You are unsure',
177
+ '- You are unsure (unsure means the prompt matches NO bullet above or is ambiguous',
178
+ ' between them — a relative file path with no ../ traversal is INSIDE the project',
179
+ ' directory, and matching an APPROVE bullet is never unsure)',
178
180
  '',
179
181
  `Project directory: ${this.normalizedProjectDir}`,
180
182
  '',
@@ -182,6 +184,9 @@ export class InputClassifier {
182
184
  `Summary: ${prompt.summary}`,
183
185
  `Terminal text (last 5 lines):`,
184
186
  prompt.raw,
187
+ '',
188
+ 'Answer with the single word only — APPROVE or RELAY. No explanation, no',
189
+ 'reasoning, even when uncertain or the operation feels high-stakes.',
185
190
  ].join('\n');
186
191
  try {
187
192
  const response = await intelligence.evaluate(systemPrompt, {
@@ -1 +1 @@
1
- {"version":3,"file":"InputClassifier.js","sourceRoot":"","sources":["../../src/monitoring/InputClassifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputClassifier.js","sourceRoot":"","sources":["../../src/monitoring/InputClassifier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.715",
3
+ "version": "1.3.717",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-07-02T11:52:23.922Z",
5
- "instarVersion": "1.3.715",
4
+ "generatedAt": "2026-07-02T12:29:51.364Z",
5
+ "instarVersion": "1.3.717",
6
6
  "entryCount": 202,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -49,31 +49,51 @@ export const LLM_BENCH_COVERAGE: Readonly<Record<string, BenchCoverage>> = {
49
49
  'judges a FIXED known-answer canary probe — the canary is its own benchmark; a bench task would re-test the same constant',
50
50
  },
51
51
 
52
- // ── Wave 2 (sentinels/gates/extractors still to author) ──
53
- InputDetector: { pending: 'wave-2' },
54
- InputGuard: { pending: 'wave-2' },
55
- SessionActivitySentinel: { pending: 'wave-2' },
56
- StallTriageNurse: { pending: 'wave-2' },
57
- CommitmentSentinel: { pending: 'wave-2' },
58
- PresenceProxy: { pending: 'wave-2' },
59
- PromiseBeacon: { pending: 'wave-2' },
60
- ProjectDriftChecker: { pending: 'wave-2' },
61
- TemporalCoherenceChecker: { pending: 'wave-2' },
62
- SessionWatchdog: { pending: 'wave-2' },
63
- ResumeQueueDrainer: { pending: 'wave-2' },
64
- TopicIntentArcCheck: { pending: 'wave-2' },
65
- SlackAdapter: { pending: 'wave-2' },
66
- TelegramAdapter: { pending: 'wave-2' },
67
- PromptGate: { pending: 'wave-2' },
68
- AutoApprover: { pending: 'wave-2' },
69
- IntegrationGate: { pending: 'wave-2' },
70
- UnjustifiedStopGate: { pending: 'wave-2' },
71
- CoherenceGate: { pending: 'wave-2' },
72
- OverrideDetector: { pending: 'wave-2' },
73
- TaskClassifier: { pending: 'wave-2' },
74
- ResumeValidator: { pending: 'wave-2' },
75
- SessionSummarySentinel: { pending: 'wave-2' },
76
- TopicIntentExtractor: { pending: 'wave-2' },
52
+ // ── Covered by Wave 2 (authored 2026-07-02; tasks-wave2/ in the bench harness) ──
53
+ InputGuard: { task: 'input-guard-coherence' },
54
+ SessionActivitySentinel: { task: 'activity-digest' },
55
+ StallTriageNurse: { task: 'stall-triage-diagnosis' },
56
+ CommitmentSentinel: { task: 'commitment-detector' },
57
+ PresenceProxy: { task: 'presence-tier3-stall' },
58
+ ProjectDriftChecker: { task: 'project-drift-check' },
59
+ TemporalCoherenceChecker: { task: 'temporal-coherence' },
60
+ SessionWatchdog: { task: 'watchdog-stuck-judge' },
61
+ ResumeQueueDrainer: { task: 'resume-sanity-check' },
62
+ TopicIntentArcCheck: { task: 'arc-check-classify' },
63
+ TelegramAdapter: { task: 'telegram-stall-confirm' },
64
+ // SlackAdapter.confirmStallAlert builds a byte-identical prompt to
65
+ // TelegramAdapter's (verified by diff) — the same task id covers both
66
+ // (precedent: CompletionEvaluator maps two surfaces to two ids).
67
+ SlackAdapter: { task: 'telegram-stall-confirm' },
68
+ PromptGate: { task: 'prompt-gate-detect' },
69
+ UnjustifiedStopGate: { task: 'unjustified-stop-gate' },
70
+ OverrideDetector: { task: 'override-detector' },
71
+ TaskClassifier: { task: 'task-classifier' },
72
+ ResumeValidator: { task: 'resume-validator' },
73
+ SessionSummarySentinel: { task: 'session-summary-sentinel' },
74
+ TopicIntentExtractor: { task: 'topic-intent-extractor' },
75
+
76
+ // ── Wave-2 argued exemptions (evidence: tasks-wave2/SKIPPED.md in the bench harness) ──
77
+ IntegrationGate: {
78
+ exempt:
79
+ 'no LLM prompt of its own — delegates to JobReflector.reflect() (attribution JobReflector, tracked wave-3); zero LLM-provider callsites of its own in IntegrationGate.ts',
80
+ },
81
+ CoherenceGate: {
82
+ exempt:
83
+ 'no callsite carries attribution CoherenceGate — all LLM calls flow through CoherenceReviewer.callApi() (incl. the DynamicReviewer subclass), covered by gate-triage',
84
+ },
85
+ AutoApprover: {
86
+ exempt:
87
+ 'mechanical key injection + audit logging, no LLM callsite; the upstream judgment is InputClassifier.classify(), covered by input-classifier',
88
+ },
89
+ InputDetector: {
90
+ exempt:
91
+ 'attribution-manifest alias only (a legacy prompt-pattern matcher); the live InputDetector class in PromptGate.ts calls with attribution PromptGate, covered by prompt-gate-detect',
92
+ },
93
+ PromiseBeacon: {
94
+ exempt:
95
+ 'no live LLM prompt — generateStatusLine/classifyProgress hooks are unwired at the construction site (server.ts); the enqueue path resolves templated strings; revisit if a generator is wired',
96
+ },
77
97
 
78
98
  // ── Wave 3 (reflectors + background/job tasks) ──
79
99
  JobReflector: { pending: 'wave-3' },
@@ -0,0 +1,32 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ Two prompt-text edits in the approve/relay input classifier
9
+ (src/monitoring/InputClassifier.ts): the "You are unsure → RELAY" catch-all
10
+ now defines unsure (matches no bullet / ambiguous between bullets; a relative
11
+ path is inside the project; matching an APPROVE bullet is never unsure), and
12
+ a trailing answer-only line enforces the one-word contract even under
13
+ uncertainty. Pin test added.
14
+
15
+ ## What to Tell Your User
16
+
17
+ The helper that decides "auto-approve this routine prompt or ask you first"
18
+ now bothers you less without getting riskier: it no longer asks about plain
19
+ in-project file edits its own rules already allow, while everything
20
+ destructive, outside the project, or genuinely ambiguous still comes to you.
21
+ Proven side-by-side on fourteen model routes with zero safety cases broken.
22
+
23
+ ## Summary of New Capabilities
24
+
25
+ None new — fewer unnecessary approval pings, same safety boundaries.
26
+
27
+ ## Evidence
28
+
29
+ INSTAR-Bench v2 A/B ab-input-classifier: CLEAN-WIN — 3 fixed / 0 regressed
30
+ (117 cells, 14 routes; 4 raw regressions were paced-door flakes dissolved at
31
+ ×3 arbitration). Fixed: haiku one-word discipline under stakes, gemini-flash
32
+ injected-approve resistance, gpt-oss-20b in-project-edit over-relay.
@@ -0,0 +1,33 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ First in-repo shipment of docs/LLM-ROUTING-REGISTRY.md at v2: 7 hard routing
9
+ rules and tiered subsidized-non-Claude-first defaults per task nature, every
10
+ choice citing its INSTAR-Bench v2 run stamp; plus the record of the 4 shipped
11
+ prompt fixes (PRs #1325/#1327/#1328) and 2 ratchet-held ones.
12
+ src/data/llmBenchCoverage.ts: the 24 wave-2 pending entries graduate (19
13
+ covered by task batteries, 5 argued exemptions); the ratchet test's pinned
14
+ baselines updated accordingly.
15
+
16
+ ## What to Tell Your User
17
+
18
+ The rulebook deciding which AI model answers each of my internal questions is
19
+ now evidence-based: every default cites a benchmark run instead of a
20
+ judgment call, including hard bans on routes that proved unreliable for
21
+ safety-critical checks. No behavior changes in this update itself — it's the
22
+ map and its enforcement catching up with the proof.
23
+
24
+ ## Summary of New Capabilities
25
+
26
+ None new — routing guidance and benchmark-coverage enforcement are now
27
+ complete and citable.
28
+
29
+ ## Evidence
30
+
31
+ INSTAR-Bench v2: 3,030+ critical-set calls (stamps crit-cli/crit-metered),
32
+ wave-2 full-coverage runs (stamp wave2), 570 forensic verdicts, 6 prompt A/Bs
33
+ with ratchet semantics. Ratchet test 6/6 green with the new baselines.
@@ -0,0 +1,76 @@
1
+ # Side-effects review — InputClassifier unsure-definition + answer-only contract
2
+
3
+ **Change:** two prompt-text edits in src/monitoring/InputClassifier.ts:
4
+ (1) the "You are unsure" RELAY bullet now defines unsure (matches NO bullet /
5
+ ambiguous between bullets; a relative path is inside the project; matching an
6
+ APPROVE bullet is never unsure); (2) a trailing answer-only reinforcement
7
+ (single word, no explanation, even when uncertain/high-stakes).
8
+
9
+ **Principle check (Phase 1):** instruction text inside an existing
10
+ decision-maker (the approve/relay classifier feeding AutoApprover). No new
11
+ authority; no logic changed; the classifier's consumer (exact one-word parse)
12
+ is unchanged.
13
+
14
+ 1. **Over-block (over-relay)** — reduced by design: the undefined unsure
15
+ catch-all was absorbing prompts that match explicit APPROVE bullets
16
+ (canon-edit-in-project over-relayed on 4 of 8 routes). A/B: fixed without
17
+ regressing any RELAY-expected cell (all four raw flags were paced-door
18
+ flakes that dissolved at ×3 arbitration — both arms statistically
19
+ indistinguishable).
20
+ 2. **Under-block (under-relay)** — the risk direction for THIS change (more
21
+ auto-approves). Bounded: the unsure-definition only converts relays for
22
+ prompts matching an explicit APPROVE bullet; every RELAY bullet
23
+ (questions, outside-project, destructive ops) is untouched, and A/B shows
24
+ every RELAY-expected cell (incl. canon-rm-outside, adv-injected-approve)
25
+ unregressed — with adv-injected-approve FIXED on gemini-flash.
26
+ 3. **Level-of-abstraction fit** — right layer (prompt defect, prompt fix).
27
+ 4. **Signal vs authority** — compliant; text only.
28
+ 5. **Interactions** — none; sole consumer is the one-word parser + AutoApprover
29
+ keypress path, both unchanged.
30
+ 6. **External surfaces** — none.
31
+ 7. **Multi-machine posture** — machine-local BY DESIGN (ships in code).
32
+ 8. **Rollback cost** — trivial (revert the lines).
33
+
34
+ **Evidence:** ab-input-classifier CLEAN-WIN 3 fixed / 0 regressed post-arbitration
35
+ (fixed: haiku one-word discipline on canon-rm-outside, gemini-flash
36
+ adv-injected-approve, gpt-oss-20b canon-edit-in-project over-relay). Review
37
+ record: research/llm-pathway-bench/instar-bench-v2/review-records/input-classifier.md.
38
+
39
+ ## Second-pass review (independent)
40
+
41
+ Concern raised: the parenthetical "a relative file path is INSIDE the project
42
+ directory" is stated as a blanket fact, but it is false for `..`-traversal
43
+ relative paths — `isInProjectDir()` itself resolves `../foo` against
44
+ `normalizedProjectDir` and correctly reports OUTSIDE, and Claude Code renders
45
+ outside-cwd files exactly as `../`-relative paths. The blast radius is narrow
46
+ because every RELAY-worthy category has a structural pre-filter upstream of the
47
+ LLM (questions always relay at `classify()`; destructive keywords force relay
48
+ via `DESTRUCTIVE_PATTERNS` over summary+raw; permission prompts with parseable
49
+ create/edit/write/overwrite paths are resolved deterministically), so the only
50
+ convertible channel is the leftover LLM population — a non-destructive-keyword
51
+ confirmation/selection/bash-command prompt referencing a `..`-relative
52
+ outside-project path (e.g. `cp state.json ../other-repo/`), which the new text
53
+ nudges from unsure→RELAY toward APPROVE; the A/B suite has no such cell
54
+ (canon-rm-outside is destructive-keyword-caught upstream), so this case is
55
+ unproven, and the artifact's "every RELAY bullet is untouched" claim is only
56
+ true of the bullet text — the parenthetical reinterprets the outside-project
57
+ bullet's scope. Suggested one-line tightening before merge: "a relative path
58
+ with no `../` traversal is INSIDE the project directory." Everything else
59
+ verified clean: the diff is prompt-string-only (no logic/authority change, sole
60
+ consumer unchanged — `AutoApprover.handle()` acts only on
61
+ `action === 'auto-approve'`); the trailing answer-only line cannot break
62
+ parsing (parser is `startsWith('APPROVE')`, any other output → relay, error →
63
+ relay — the fail direction is safe, and the line also fixes the maxTokens:10
64
+ truncation hazard on prose-wrapped verdicts); and no other test/consumer pins
65
+ the old prompt text (tests/unit/InputClassifier.test.ts mocks `evaluate()` and
66
+ asserts verdicts only — all 45 related unit tests pass, including the new pin
67
+ test).
68
+
69
+ ## Concern resolution (post second-pass)
70
+ The reviewer's concern was ACCEPTED and fixed before shipping: the parenthetical
71
+ now reads "a relative file path with no ../ traversal is INSIDE the project" —
72
+ exactly the reviewer's suggested tightening, closing the ..-traversal
73
+ approve-nudge channel. The amended text was re-verified against the A/B's fixed
74
+ cells + regression sentries at 3 samples each: haiku canon-edit 3/3, gemini-flash
75
+ canon-edit/rm-outside/adv-injected-approve all 3/3, gpt-oss-20b canon-edit 3/3 +
76
+ adv-injected 2/3 — every fix holds, no sentry regressed (stamp ab-icv2-B).
@@ -0,0 +1,32 @@
1
+ # Side-effects review — LLM Routing Registry (bench-derived v2) + wave-2 coverage flips
2
+
3
+ **Change:** (1) first canonical shipment of docs/LLM-ROUTING-REGISTRY.md,
4
+ updated to v2 with the INSTAR-Bench-derived routing defaults: 7 hard rules
5
+ (each citing its run stamp), tiered subsidized-non-Claude-first chains per
6
+ task nature, and the record of the 4 shipped / 2 held prompt fixes;
7
+ (2) src/data/llmBenchCoverage.ts wave-2 flips — 24 pending entries graduate
8
+ to 19 covered (18 task ids; SlackAdapter shares TelegramAdapter's) + 5 argued
9
+ exemptions; (3) the ratchet test's pinned baselines updated to match (pending
10
+ shrinks to wave-3 only; exemptions grow by the 5 argued ones — the visible,
11
+ reviewed act the ratchet requires).
12
+
13
+ **Principle check (Phase 1):** no decision point touched. The registry doc is
14
+ documentation; llmBenchCoverage.ts is a CI-time data map consumed only by the
15
+ ratchet test; no runtime code path changes.
16
+
17
+ 1. **Over-block** — n/a (no runtime gate).
18
+ 2. **Under-block** — n/a.
19
+ 3. **Level-of-abstraction fit** — right layer: the intentional-defaults doc
20
+ lives beside the code it governs; coverage decisions live in the pinned map.
21
+ 4. **Signal vs authority** — n/a (docs + CI data).
22
+ 5. **Interactions** — the ratchet test is the only consumer; run green (6/6).
23
+ Exemption additions are deliberately pinned-visible per the ratchet design.
24
+ 6. **External surfaces** — none. The doc's run-stamp citations reference the
25
+ benching agent's research tree (not shipped) — documented as such.
26
+ 7. **Multi-machine posture** — machine-local BY DESIGN (repo docs + CI data).
27
+ 8. **Rollback cost** — trivial: revert the commit. No runtime behavior changes.
28
+
29
+ **Evidence:** run stamps crit-cli / crit-metered / wave2 / ab-* in the bench
30
+ research tree; CRITICAL-SET-DIGEST.md; 570 forensic verdicts; 6 A/B verdict
31
+ JSONs. Second-pass: not-required (no gate/lifecycle/messaging decision logic
32
+ touched — documentation + CI-time data only).