bb-cc-lite 0.1.6 → 0.1.7

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.
Files changed (48) hide show
  1. package/README.md +36 -27
  2. package/dist/baseline-builder.js +64 -64
  3. package/dist/baseline-builder.js.map +1 -1
  4. package/dist/baseline-refresh.d.ts +66 -0
  5. package/dist/baseline-refresh.js +214 -0
  6. package/dist/baseline-refresh.js.map +1 -0
  7. package/dist/baseline.d.ts +11 -1
  8. package/dist/baseline.js +128 -4
  9. package/dist/baseline.js.map +1 -1
  10. package/dist/cli.js +33 -2
  11. package/dist/cli.js.map +1 -1
  12. package/dist/doctor.d.ts +1 -0
  13. package/dist/doctor.js +29 -0
  14. package/dist/doctor.js.map +1 -1
  15. package/dist/event-store-persistence.js +21 -3
  16. package/dist/event-store-persistence.js.map +1 -1
  17. package/dist/event-store-queries.d.ts +4 -1
  18. package/dist/event-store-queries.js +38 -11
  19. package/dist/event-store-queries.js.map +1 -1
  20. package/dist/failure-episodes.d.ts +21 -0
  21. package/dist/failure-episodes.js +266 -0
  22. package/dist/failure-episodes.js.map +1 -0
  23. package/dist/historical-replay.d.ts +21 -0
  24. package/dist/historical-replay.js +263 -0
  25. package/dist/historical-replay.js.map +1 -0
  26. package/dist/hook-payload.js +11 -7
  27. package/dist/hook-payload.js.map +1 -1
  28. package/dist/hook-summary.d.ts +4 -5
  29. package/dist/hook-summary.js +37 -11
  30. package/dist/hook-summary.js.map +1 -1
  31. package/dist/recovery-stats.d.ts +57 -0
  32. package/dist/recovery-stats.js +234 -0
  33. package/dist/recovery-stats.js.map +1 -0
  34. package/dist/settings.d.ts +1 -1
  35. package/dist/settings.js +7 -0
  36. package/dist/settings.js.map +1 -1
  37. package/dist/signals.js +137 -58
  38. package/dist/signals.js.map +1 -1
  39. package/dist/statusline.d.ts +5 -1
  40. package/dist/statusline.js +8 -3
  41. package/dist/statusline.js.map +1 -1
  42. package/dist/tool-metadata.d.ts +10 -0
  43. package/dist/tool-metadata.js +50 -2
  44. package/dist/tool-metadata.js.map +1 -1
  45. package/dist/transcript.js +106 -25
  46. package/dist/transcript.js.map +1 -1
  47. package/dist/types.d.ts +53 -0
  48. package/package.json +1 -1
@@ -0,0 +1,234 @@
1
+ export const FAILURE_RECOVERY_CATEGORIES = [
2
+ "tests",
3
+ "lint",
4
+ "typecheck",
5
+ "build",
6
+ "read",
7
+ "grep",
8
+ "glob",
9
+ "ls",
10
+ "edit",
11
+ "mcp",
12
+ "tool"
13
+ ];
14
+ export function emptyRecoveryBuildCounters() {
15
+ const result = {};
16
+ for (const category of FAILURE_RECOVERY_CATEGORIES) {
17
+ result[category] = {
18
+ episodes: 0,
19
+ recovered: 0,
20
+ unrecovered: 0,
21
+ activeEnded: 0,
22
+ attemptsBeforeRecovery: [],
23
+ blindRetryEpisodes: 0,
24
+ blindRetryRecovered: 0,
25
+ blindRetryUnrecovered: 0,
26
+ blindRetryCarefulLikeEpisodes: 0,
27
+ blindRetryStopLikeEpisodes: 0
28
+ };
29
+ }
30
+ return result;
31
+ }
32
+ export function mergeRecoveryBuildCounters(target, source) {
33
+ for (const category of FAILURE_RECOVERY_CATEGORIES) {
34
+ target[category].episodes += source[category].episodes;
35
+ target[category].recovered += source[category].recovered;
36
+ target[category].unrecovered += source[category].unrecovered;
37
+ target[category].activeEnded += source[category].activeEnded;
38
+ target[category].attemptsBeforeRecovery.push(...source[category].attemptsBeforeRecovery);
39
+ target[category].blindRetryEpisodes += source[category].blindRetryEpisodes;
40
+ target[category].blindRetryRecovered += source[category].blindRetryRecovered;
41
+ target[category].blindRetryUnrecovered += source[category].blindRetryUnrecovered;
42
+ target[category].blindRetryCarefulLikeEpisodes += source[category].blindRetryCarefulLikeEpisodes;
43
+ target[category].blindRetryStopLikeEpisodes += source[category].blindRetryStopLikeEpisodes;
44
+ }
45
+ }
46
+ export function addFailureEpisodeToRecoveryCounters(target, episode) {
47
+ const counters = target[episode.category];
48
+ counters.episodes += 1;
49
+ counters.recovered += episode.recovered ? 1 : 0;
50
+ counters.unrecovered += episode.recovered ? 0 : 1;
51
+ counters.activeEnded += episode.activeEnded ? 1 : 0;
52
+ if (episode.recovered) {
53
+ counters.attemptsBeforeRecovery.push(episode.attemptCount);
54
+ }
55
+ if (episode.blindRetryFailureCount >= 2) {
56
+ counters.blindRetryEpisodes += 1;
57
+ counters.blindRetryRecovered += episode.recovered ? 1 : 0;
58
+ counters.blindRetryUnrecovered += episode.recovered ? 0 : 1;
59
+ counters.blindRetryCarefulLikeEpisodes += 1;
60
+ counters.blindRetryStopLikeEpisodes += episode.blindRetryFailureCount >= 3 ? 1 : 0;
61
+ }
62
+ }
63
+ export function recoveryAggregatesFromCounters(counters) {
64
+ const result = {};
65
+ for (const category of FAILURE_RECOVERY_CATEGORIES) {
66
+ const source = counters[category];
67
+ if (source.episodes === 0) {
68
+ continue;
69
+ }
70
+ result[category] = {
71
+ episodes: source.episodes,
72
+ recovered: source.recovered,
73
+ unrecovered: source.unrecovered,
74
+ activeEnded: source.activeEnded,
75
+ recoveryRate: rate(source.recovered, source.recovered + source.unrecovered),
76
+ medianAttemptsBeforeRecovery: percentile(source.attemptsBeforeRecovery, 0.5),
77
+ p75AttemptsBeforeRecovery: percentile(source.attemptsBeforeRecovery, 0.75),
78
+ blindRetryEpisodes: source.blindRetryEpisodes,
79
+ blindRetryRecovered: source.blindRetryRecovered,
80
+ blindRetryUnrecovered: source.blindRetryUnrecovered,
81
+ confidence: confidenceForAggregate(source)
82
+ };
83
+ }
84
+ return result;
85
+ }
86
+ export function blindRetryAggregatesFromCounters(counters) {
87
+ const result = {};
88
+ for (const category of FAILURE_RECOVERY_CATEGORIES) {
89
+ const source = counters[category];
90
+ if (source.blindRetryEpisodes === 0) {
91
+ continue;
92
+ }
93
+ result[category] = {
94
+ episodes: source.blindRetryEpisodes,
95
+ recovered: source.blindRetryRecovered,
96
+ unrecovered: source.blindRetryUnrecovered,
97
+ recoveryRate: rate(source.blindRetryRecovered, source.blindRetryRecovered + source.blindRetryUnrecovered),
98
+ carefulLikeEpisodes: source.blindRetryCarefulLikeEpisodes,
99
+ stopLikeEpisodes: source.blindRetryStopLikeEpisodes,
100
+ confidence: confidenceForSeen(source.blindRetryEpisodes)
101
+ };
102
+ }
103
+ return result;
104
+ }
105
+ export function recoveryInsight(baseline, category, attempts) {
106
+ const aggregate = normalizeAggregate(baseline?.failureRecovery?.[category]) || legacyValidationAggregate(baseline, category);
107
+ if (!aggregate) {
108
+ return undefined;
109
+ }
110
+ return recoveryInsightFromAggregate(category, aggregate, attempts);
111
+ }
112
+ export function recoveryInsightFromAggregate(category, aggregate, attempts) {
113
+ const relevantEpisodes = aggregate.recovered + aggregate.unrecovered;
114
+ if (relevantEpisodes < 5) {
115
+ return undefined;
116
+ }
117
+ const confidence = confidenceForAggregateLike(aggregate);
118
+ if (confidence === "low") {
119
+ return undefined;
120
+ }
121
+ if (aggregate.recoveryRate >= 0.75 && aggregate.medianAttemptsBeforeRecovery > 0 && aggregate.medianAttemptsBeforeRecovery <= 2) {
122
+ return {
123
+ kind: "usually_recovers",
124
+ confidence,
125
+ category,
126
+ diagnosis: `${categoryFailurePlural(category)} failed twice; usually recovers after one focused fix`,
127
+ baselineNote: `${categoryFailureSingular(category)} failures usually recovered after one focused fix`
128
+ };
129
+ }
130
+ if (aggregate.unrecovered >= 5 && aggregate.recoveryRate <= 0.4) {
131
+ return {
132
+ kind: "usually_unrecovered",
133
+ confidence,
134
+ category,
135
+ diagnosis: `${categoryFailureSingular(category)} loop rarely recovered after ${attempts} failures`,
136
+ baselineNote: `${categoryFailureSingular(category)} loops rarely recovered after ${attempts} failures`
137
+ };
138
+ }
139
+ return undefined;
140
+ }
141
+ export function confidenceForSeen(seen) {
142
+ if (seen >= 10) {
143
+ return "high";
144
+ }
145
+ if (seen >= 5) {
146
+ return "medium";
147
+ }
148
+ return "low";
149
+ }
150
+ export function categoryFailureSingular(category) {
151
+ switch (category) {
152
+ case "tests":
153
+ return "test";
154
+ case "mcp":
155
+ return "MCP tool";
156
+ case "typecheck":
157
+ return "typecheck";
158
+ default:
159
+ return category;
160
+ }
161
+ }
162
+ export function categoryFailurePlural(category) {
163
+ switch (category) {
164
+ case "tests":
165
+ return "tests";
166
+ case "mcp":
167
+ return "MCP tool";
168
+ case "typecheck":
169
+ return "typecheck";
170
+ default:
171
+ return category;
172
+ }
173
+ }
174
+ export function rate(count, total) {
175
+ return total > 0 ? Number((count / total).toFixed(4)) : 0;
176
+ }
177
+ export function average(values) {
178
+ return values.length > 0 ? Number((values.reduce((total, value) => total + value, 0) / values.length).toFixed(4)) : 0;
179
+ }
180
+ export function percentile(values, percentileValue) {
181
+ if (values.length === 0) {
182
+ return 0;
183
+ }
184
+ const sorted = [...values].sort((left, right) => left - right);
185
+ const index = Math.max(0, Math.ceil(sorted.length * percentileValue) - 1);
186
+ return sorted[index] ?? 0;
187
+ }
188
+ function confidenceForAggregate(counters) {
189
+ return confidenceForSeen(counters.recovered + counters.unrecovered);
190
+ }
191
+ function confidenceForAggregateLike(aggregate) {
192
+ return confidenceForSeen(aggregate.recovered + aggregate.unrecovered);
193
+ }
194
+ function legacyValidationAggregate(baseline, category) {
195
+ if (category !== "tests" && category !== "lint" && category !== "typecheck" && category !== "build") {
196
+ return undefined;
197
+ }
198
+ const aggregate = baseline?.validation?.[category];
199
+ if (!aggregate) {
200
+ return undefined;
201
+ }
202
+ return {
203
+ episodes: (aggregate.recovered || 0) + (aggregate.unrecovered || 0),
204
+ recovered: aggregate.recovered || 0,
205
+ unrecovered: aggregate.unrecovered || 0,
206
+ activeEnded: aggregate.unrecovered || 0,
207
+ recoveryRate: aggregate.recoveryRate || 0,
208
+ medianAttemptsBeforeRecovery: aggregate.medianFailuresBeforeRecovery || 0,
209
+ p75AttemptsBeforeRecovery: aggregate.p75FailuresBeforeRecovery || 0,
210
+ blindRetryEpisodes: 0,
211
+ blindRetryRecovered: 0,
212
+ blindRetryUnrecovered: 0,
213
+ confidence: confidenceForSeen((aggregate.recovered || 0) + (aggregate.unrecovered || 0))
214
+ };
215
+ }
216
+ function normalizeAggregate(value) {
217
+ if (!value) {
218
+ return undefined;
219
+ }
220
+ return {
221
+ episodes: value.episodes || 0,
222
+ recovered: value.recovered || 0,
223
+ unrecovered: value.unrecovered || 0,
224
+ activeEnded: value.activeEnded || 0,
225
+ recoveryRate: value.recoveryRate || 0,
226
+ medianAttemptsBeforeRecovery: value.medianAttemptsBeforeRecovery || 0,
227
+ p75AttemptsBeforeRecovery: value.p75AttemptsBeforeRecovery || 0,
228
+ blindRetryEpisodes: value.blindRetryEpisodes || 0,
229
+ blindRetryRecovered: value.blindRetryRecovered || 0,
230
+ blindRetryUnrecovered: value.blindRetryUnrecovered || 0,
231
+ confidence: value.confidence || confidenceForSeen((value.recovered || 0) + (value.unrecovered || 0))
232
+ };
233
+ }
234
+ //# sourceMappingURL=recovery-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-stats.js","sourceRoot":"","sources":["../src/recovery-stats.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export interface UninstallOptions {
20
20
  force?: boolean;
21
21
  }
22
22
  export interface InstallResult {
23
- status: "installed" | "updated";
23
+ status: "installed" | "updated" | "refused";
24
24
  target: SettingsTarget;
25
25
  message: string;
26
26
  command?: string;
package/dist/settings.js CHANGED
@@ -34,6 +34,13 @@ export async function installStatusLine(options = {}) {
34
34
  const targetRead = await readSettings(target.settingsPath);
35
35
  const existing = targetRead.settings.statusLine;
36
36
  const existingHooks = targetRead.settings.hooks;
37
+ if (existing && !isBbStatusLine(existing) && !options.replace) {
38
+ return {
39
+ status: "refused",
40
+ target,
41
+ message: `Existing Claude statusLine found in ${describeSettingsTarget(target)}; pass --replace to replace it with bb-cc-lite.`
42
+ };
43
+ }
37
44
  const launchers = await ensureRuntimeLaunchers(options.cliFilePath || cliPath(), target.homeDir);
38
45
  const statusLine = {
39
46
  type: "command",
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
package/dist/signals.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { sessionKeyFromId } from "./session.js";
2
2
  import { mergeUsage } from "./status-input.js";
3
+ import { recoveryInsight } from "./recovery-stats.js";
3
4
  export function decide(input, transcript, options = {}) {
4
5
  const now = new Date().toISOString();
5
6
  const usage = mergeUsage(input.usage, transcript.usage);
@@ -23,37 +24,78 @@ export function decide(input, transcript, options = {}) {
23
24
  costSource
24
25
  });
25
26
  }
27
+ if (transcript.blindRetry && transcript.blindRetry.blindRetryFailureCount >= 3) {
28
+ const blindRetry = transcript.blindRetry;
29
+ return baseDecision({
30
+ state: "Stop",
31
+ reasonCode: "blind_retry_loop",
32
+ diagnosisCode: "blind_retry_loop",
33
+ diagnosis: `blind retry loop: same failure ${blindRetry.blindRetryFailureCount}x without fix evidence`,
34
+ confidence: "high",
35
+ primaryEvidence: `same ${blindRetry.label} failed ${blindRetry.blindRetryFailureCount}x without fix evidence`,
36
+ impact: "Claude is retrying the same failure without meaningful intervention",
37
+ action: "stop and inspect first failure",
38
+ input,
39
+ usage,
40
+ transcript,
41
+ now,
42
+ sessionKey,
43
+ costUsd,
44
+ costSource
45
+ });
46
+ }
26
47
  const repeatedFailure = transcript.repeatedFailures
27
48
  .filter((item) => item.count >= 3)
28
49
  .sort((a, b) => b.count - a.count)[0];
29
50
  if (repeatedFailure) {
30
51
  const runningTests = repeatedFailure.toolName === "Bash" && repeatedFailure.purpose === "tests";
31
- const baselineUnrecoveredTestLoop = runningTests && supportsUnrecoveredTestLoopStop(options.baseline);
52
+ const mcpFailure = isMcpFailure(repeatedFailure);
53
+ const validationPurpose = validationPurposeForFailure(repeatedFailure);
54
+ const baselineInsight = validationPurpose
55
+ ? recoveryInsight(options.baseline, validationPurpose, repeatedFailure.count)
56
+ : mcpFailure
57
+ ? recoveryInsight(options.baseline, "mcp", repeatedFailure.count)
58
+ : undefined;
59
+ const baselineUnrecoveredLoop = baselineInsight?.kind === "usually_unrecovered";
32
60
  const baselineStopLike = runningTests && supportsValidationLoopStop(options.baseline);
33
61
  return baseDecision({
34
62
  state: "Stop",
35
63
  reasonCode: "repeated_tool_failure",
36
- diagnosisCode: runningTests ? "validation_command_loop" : "tool_failure_repeated",
37
- diagnosis: runningTests
38
- ? baselineUnrecoveredTestLoop
39
- ? "test loop: usually unrecovered after 3x"
40
- : baselineStopLike
41
- ? "test loop: past runs ended badly"
42
- : `test loop: failed ${repeatedFailure.count}x`
43
- : undefined,
44
- confidence: "high",
45
- baselineNote: baselineUnrecoveredTestLoop
46
- ? "recent test loops were usually unrecovered after 3 failures"
64
+ diagnosisCode: runningTests ? "validation_command_loop" : mcpFailure ? "mcp_tool_failure_repeated" : "tool_failure_repeated",
65
+ diagnosis: mcpFailure
66
+ ? baselineUnrecoveredLoop && baselineInsight
67
+ ? baselineInsight.diagnosis
68
+ : `MCP tool failed ${repeatedFailure.count}x`
69
+ : runningTests
70
+ ? baselineUnrecoveredLoop && baselineInsight
71
+ ? baselineInsight.diagnosis
72
+ : baselineStopLike
73
+ ? "test loop: past runs ended badly"
74
+ : `test loop: failed ${repeatedFailure.count}x`
75
+ : undefined,
76
+ confidence: baselineInsight?.confidence || "high",
77
+ baselineNote: baselineUnrecoveredLoop && baselineInsight
78
+ ? baselineInsight.baselineNote
47
79
  : baselineStopLike
48
80
  ? "usually Stop-like for you"
49
81
  : undefined,
50
- primaryEvidence: `${repeatedFailure.toolName} failed ${repeatedFailure.count}x${runningTests ? " running tests" : ""}`,
51
- impact: runningTests ? "Claude is retrying a broken test loop" : "Claude is retrying the same failing tool",
52
- action: runningTests
53
- ? "inspect first failure"
54
- : repeatedFailure.toolName === "Bash"
55
- ? "fix the failing command manually, then ask Claude to rerun only that command"
56
- : `inspect the failing ${repeatedFailure.toolName} step manually before more retries`,
82
+ primaryEvidence: repeatedFailureEvidence(repeatedFailure),
83
+ impact: mcpFailure
84
+ ? "Claude is retrying the same failing MCP tool"
85
+ : runningTests
86
+ ? "Claude is retrying a broken test loop"
87
+ : "Claude is retrying the same failing tool",
88
+ action: mcpFailure
89
+ ? baselineUnrecoveredLoop
90
+ ? "stop retrying and inspect first failure"
91
+ : "inspect MCP server/tool config before more retries"
92
+ : runningTests
93
+ ? baselineUnrecoveredLoop
94
+ ? "stop retrying and inspect first failure"
95
+ : "inspect first failure"
96
+ : repeatedFailure.toolName === "Bash"
97
+ ? "fix the failing command manually, then ask Claude to rerun only that command"
98
+ : `inspect the failing ${repeatedFailure.toolName} step manually before more retries`,
57
99
  input,
58
100
  usage,
59
101
  transcript,
@@ -79,29 +121,63 @@ export function decide(input, transcript, options = {}) {
79
121
  costSource
80
122
  });
81
123
  }
124
+ if (transcript.blindRetry && transcript.blindRetry.blindRetryFailureCount >= 2) {
125
+ const blindRetry = transcript.blindRetry;
126
+ return baseDecision({
127
+ state: "Careful",
128
+ reasonCode: "blind_retry",
129
+ diagnosisCode: "blind_retry_loop",
130
+ diagnosis: `retry looks blind: same ${blindRetry.label} failed twice`,
131
+ confidence: "medium",
132
+ primaryEvidence: `same ${blindRetry.label} failed twice without fix evidence`,
133
+ impact: "Claude retried without a successful edit or validation in between",
134
+ action: "inspect first failure",
135
+ input,
136
+ usage,
137
+ transcript,
138
+ now,
139
+ sessionKey,
140
+ costUsd,
141
+ costSource
142
+ });
143
+ }
82
144
  const earlyRepeatedFailure = transcript.repeatedFailures
83
145
  .filter((item) => item.count >= 2)
84
146
  .sort((a, b) => b.count - a.count)[0];
85
147
  if (earlyRepeatedFailure) {
86
148
  const runningTests = earlyRepeatedFailure.toolName === "Bash" && earlyRepeatedFailure.purpose === "tests";
149
+ const mcpFailure = isMcpFailure(earlyRepeatedFailure);
87
150
  const validationPurpose = validationPurposeForFailure(earlyRepeatedFailure);
88
- const quickRecovery = validationPurpose ? supportsQuickValidationRecovery(options.baseline, validationPurpose) : false;
89
- const validationLabel = validationPurpose || "validation";
90
- const validationFailureLabel = validationPurpose === "tests" ? "test" : validationLabel;
151
+ const baselineInsight = validationPurpose
152
+ ? recoveryInsight(options.baseline, validationPurpose, earlyRepeatedFailure.count)
153
+ : mcpFailure
154
+ ? recoveryInsight(options.baseline, "mcp", earlyRepeatedFailure.count)
155
+ : undefined;
156
+ const quickRecovery = baselineInsight?.kind === "usually_recovers";
91
157
  return baseDecision({
92
158
  state: "Careful",
93
159
  reasonCode: "tool_failure_repeated",
94
- diagnosisCode: validationPurpose ? "validation_command_loop" : "tool_failure_repeated",
95
- diagnosis: quickRecovery ? `${validationLabel} failed twice; usually recovers after one fix` : undefined,
96
- confidence: quickRecovery ? "medium" : undefined,
97
- baselineNote: quickRecovery ? `${validationFailureLabel} failures usually recovered after one focused fix` : undefined,
98
- primaryEvidence: `${earlyRepeatedFailure.toolName} failed ${earlyRepeatedFailure.count}x${runningTests ? " running tests" : ""}`,
99
- impact: runningTests ? "Tests are failing repeatedly" : "A tool is starting to repeat failures",
100
- action: quickRecovery
101
- ? "inspect first failure"
160
+ diagnosisCode: validationPurpose ? "validation_command_loop" : mcpFailure ? "mcp_tool_failure_repeated" : "tool_failure_repeated",
161
+ diagnosis: mcpFailure
162
+ ? `MCP tool failed ${earlyRepeatedFailure.count}x`
163
+ : quickRecovery
164
+ ? baselineInsight.diagnosis
165
+ : undefined,
166
+ confidence: quickRecovery ? baselineInsight.confidence : undefined,
167
+ baselineNote: quickRecovery ? baselineInsight.baselineNote : undefined,
168
+ primaryEvidence: repeatedFailureEvidence(earlyRepeatedFailure),
169
+ impact: mcpFailure
170
+ ? "Claude is retrying the same failing MCP tool"
102
171
  : runningTests
103
- ? "pause and inspect the failing test before another retry"
104
- : `inspect the failing ${earlyRepeatedFailure.toolName} step before another retry`,
172
+ ? "Tests are failing repeatedly"
173
+ : "A tool is starting to repeat failures",
174
+ action: mcpFailure
175
+ ? "inspect the failing MCP step before another retry"
176
+ : quickRecovery
177
+ ? "inspect first failure"
178
+ : runningTests
179
+ ? "pause and inspect the failing test before another retry"
180
+ : `inspect the failing ${earlyRepeatedFailure.toolName} step before another retry`,
105
181
  input,
106
182
  usage,
107
183
  transcript,
@@ -143,7 +219,7 @@ export function decide(input, transcript, options = {}) {
143
219
  costSource
144
220
  });
145
221
  }
146
- if (transcript.compactionEvents > 0) {
222
+ if (hasOpenCompactionBoundary(transcript)) {
147
223
  return baseDecision({
148
224
  state: "Careful",
149
225
  reasonCode: "compaction_boundary",
@@ -180,7 +256,7 @@ export function decide(input, transcript, options = {}) {
180
256
  costSource
181
257
  });
182
258
  }
183
- if (cacheWritesHigh(usage)) {
259
+ if (cacheWritesHigh(cacheRiskUsage(input.usage, transcript))) {
184
260
  return baseDecision({
185
261
  state: "Careful",
186
262
  reasonCode: "cache_writes_high",
@@ -327,6 +403,24 @@ function cacheWritesHigh(usage) {
327
403
  const reads = usage.cacheReadInputTokens || 0;
328
404
  return writes >= 10_000 && reads < writes * 0.2;
329
405
  }
406
+ function cacheRiskUsage(inputUsage, transcript) {
407
+ if (hasCacheUsage(inputUsage)) {
408
+ return inputUsage;
409
+ }
410
+ return hasFreshTranscriptCacheUsage(transcript) ? transcript.latestUsage || {} : {};
411
+ }
412
+ function hasFreshTranscriptCacheUsage(transcript) {
413
+ if (!transcript.latestUsage || !hasCacheUsage(transcript.latestUsage)) {
414
+ return false;
415
+ }
416
+ if (!transcript.latestTimestamp || !transcript.latestUsageTimestamp) {
417
+ return true;
418
+ }
419
+ return transcript.latestUsageTimestamp >= transcript.latestTimestamp;
420
+ }
421
+ function hasCacheUsage(usage) {
422
+ return usage.cacheCreationInputTokens !== undefined || usage.cacheReadInputTokens !== undefined;
423
+ }
330
424
  function cacheWarm(usage) {
331
425
  const reads = usage.cacheReadInputTokens || 0;
332
426
  const writes = usage.cacheCreationInputTokens || 0;
@@ -339,6 +433,9 @@ function isReadHeavyCurrentSession(transcript) {
339
433
  transcript.failedToolResults === 0 &&
340
434
  !transcript.hasUnvalidatedEdits);
341
435
  }
436
+ function hasOpenCompactionBoundary(transcript) {
437
+ return transcript.compactionEvents > 0 && transcript.postCompactionActivity === 0;
438
+ }
342
439
  function supportsReadHeavyHealthy(baseline) {
343
440
  const scenario = baseline?.scenarios?.read_heavy_debugging;
344
441
  const healthyCount = baseline?.outcomes?.healthyLike?.readHeavyNoFailure || 0;
@@ -352,20 +449,7 @@ function supportsReadHeavyHealthy(baseline) {
352
449
  function supportsValidationLoopStop(baseline) {
353
450
  const scenario = baseline?.scenarios?.validation_command_loop;
354
451
  const stopCount = baseline?.outcomes?.stopLike?.validationLoopUnrecovered || 0;
355
- return Boolean(scenario && scenario.seen >= 3 && scenario.confidence !== "low" && stopCount > 0);
356
- }
357
- function supportsUnrecoveredTestLoopStop(baseline) {
358
- const scenario = baseline?.scenarios?.validation_command_loop;
359
- const tests = baseline?.validation?.tests;
360
- const unrecovered = tests?.unrecovered || 0;
361
- const recovered = tests?.recovered || 0;
362
- const recentSeen = scenario?.recentSeen || 0;
363
- return Boolean(scenario &&
364
- recentSeen >= 3 &&
365
- scenario.confidence !== "low" &&
366
- unrecovered >= 3 &&
367
- unrecovered > recovered &&
368
- (tests?.recoveryRate || 0) <= 0.5);
452
+ return Boolean(scenario && scenario.seen >= 5 && scenario.confidence !== "low" && stopCount >= 5);
369
453
  }
370
454
  function validationPurposeForFailure(failure) {
371
455
  if (failure.toolName !== "Bash") {
@@ -375,16 +459,11 @@ function validationPurposeForFailure(failure) {
375
459
  ? failure.purpose
376
460
  : undefined;
377
461
  }
378
- function supportsQuickValidationRecovery(baseline, purpose) {
379
- const aggregate = baseline?.validation?.[purpose];
380
- const recovered = aggregate?.recovered || 0;
381
- const unrecovered = aggregate?.unrecovered || 0;
382
- const recoveryTotal = recovered + unrecovered;
383
- return Boolean(aggregate &&
384
- recoveryTotal >= 5 &&
385
- recovered >= 3 &&
386
- (aggregate.recoveryRate || 0) >= 0.75 &&
387
- (aggregate.medianFailuresBeforeRecovery || 0) <= 1);
462
+ function isMcpFailure(failure) {
463
+ return failure.category === "MCP" || failure.toolName === "MCP tool";
464
+ }
465
+ function repeatedFailureEvidence(failure) {
466
+ return `${isMcpFailure(failure) ? "MCP tool" : failure.toolName} failed ${failure.count}x${failure.toolName === "Bash" && failure.purpose === "tests" ? " running tests" : ""}`;
388
467
  }
389
468
  function hasUnusualEditValidationLag(transcript, baseline) {
390
469
  const currentLag = transcript.unvalidatedEditToolSteps;