@telora/daemon 0.22.85 → 0.22.91

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 (317) hide show
  1. package/build-info.json +4 -3
  2. package/dist/backends/index.d.ts +1 -1
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +1 -1
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/resolve.d.ts +37 -8
  7. package/dist/backends/resolve.d.ts.map +1 -1
  8. package/dist/backends/resolve.js +62 -28
  9. package/dist/backends/resolve.js.map +1 -1
  10. package/dist/ci/ci-escalation.d.ts +17 -1
  11. package/dist/ci/ci-escalation.d.ts.map +1 -1
  12. package/dist/ci/ci-escalation.js +51 -3
  13. package/dist/ci/ci-escalation.js.map +1 -1
  14. package/dist/ci/ci-red-attribution.d.ts +85 -0
  15. package/dist/ci/ci-red-attribution.d.ts.map +1 -0
  16. package/dist/ci/ci-red-attribution.js +108 -0
  17. package/dist/ci/ci-red-attribution.js.map +1 -0
  18. package/dist/ci/ci-sensor-loop.d.ts +84 -80
  19. package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
  20. package/dist/ci/ci-sensor-loop.js +132 -129
  21. package/dist/ci/ci-sensor-loop.js.map +1 -1
  22. package/dist/cli/connect/config-write.d.ts +7 -4
  23. package/dist/cli/connect/config-write.d.ts.map +1 -1
  24. package/dist/cli/connect/config-write.js +13 -7
  25. package/dist/cli/connect/config-write.js.map +1 -1
  26. package/dist/cli/connect.d.ts.map +1 -1
  27. package/dist/cli/connect.js +11 -1
  28. package/dist/cli/connect.js.map +1 -1
  29. package/dist/cli/update-commands.d.ts.map +1 -1
  30. package/dist/cli/update-commands.js +2 -1
  31. package/dist/cli/update-commands.js.map +1 -1
  32. package/dist/completion/coverage-stabilized.d.ts.map +1 -1
  33. package/dist/completion/coverage-stabilized.js +1 -1
  34. package/dist/completion/coverage-stabilized.js.map +1 -1
  35. package/dist/completion/escalations.d.ts +40 -5
  36. package/dist/completion/escalations.d.ts.map +1 -1
  37. package/dist/completion/escalations.js +19 -11
  38. package/dist/completion/escalations.js.map +1 -1
  39. package/dist/completion/event-escalations.d.ts +12 -1
  40. package/dist/completion/event-escalations.d.ts.map +1 -1
  41. package/dist/completion/event-escalations.js +73 -37
  42. package/dist/completion/event-escalations.js.map +1 -1
  43. package/dist/completion/event.d.ts +4 -1
  44. package/dist/completion/event.d.ts.map +1 -1
  45. package/dist/completion/event.js +1 -1
  46. package/dist/completion/event.js.map +1 -1
  47. package/dist/completion/human-only-act.d.ts +1 -1
  48. package/dist/completion/human-only-act.js +1 -1
  49. package/dist/completion/machine-remediable-demotion.d.ts +28 -1
  50. package/dist/completion/machine-remediable-demotion.d.ts.map +1 -1
  51. package/dist/completion/machine-remediable-demotion.js +9 -6
  52. package/dist/completion/machine-remediable-demotion.js.map +1 -1
  53. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  54. package/dist/completion/read-only-pristine.js +4 -0
  55. package/dist/completion/read-only-pristine.js.map +1 -1
  56. package/dist/completion/review-exit-deps.js +1 -1
  57. package/dist/completion/review-exit-deps.js.map +1 -1
  58. package/dist/completion/review-exit-escalations.d.ts +10 -0
  59. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  60. package/dist/completion/review-exit-escalations.js +38 -3
  61. package/dist/completion/review-exit-escalations.js.map +1 -1
  62. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  63. package/dist/completion/review-exit-phase.js +8 -7
  64. package/dist/completion/review-exit-phase.js.map +1 -1
  65. package/dist/completion/review-exit-shortfall.d.ts +5 -1
  66. package/dist/completion/review-exit-shortfall.d.ts.map +1 -1
  67. package/dist/completion/review-exit-shortfall.js +8 -3
  68. package/dist/completion/review-exit-shortfall.js.map +1 -1
  69. package/dist/completion/status-advance-phase.d.ts +2 -0
  70. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  71. package/dist/completion/status-advance-phase.js +2 -1
  72. package/dist/completion/status-advance-phase.js.map +1 -1
  73. package/dist/completion/terminated-work-reconcile.js +2 -2
  74. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  75. package/dist/delivery/delivery-advance-block.d.ts +3 -3
  76. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  77. package/dist/delivery/delivery-advance-block.js +13 -8
  78. package/dist/delivery/delivery-advance-block.js.map +1 -1
  79. package/dist/delivery/delivery-lifecycle.d.ts +10 -0
  80. package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
  81. package/dist/delivery/delivery-lifecycle.js +12 -6
  82. package/dist/delivery/delivery-lifecycle.js.map +1 -1
  83. package/dist/delivery/delivery-merge-ops.d.ts.map +1 -1
  84. package/dist/delivery/delivery-merge-ops.js +39 -21
  85. package/dist/delivery/delivery-merge-ops.js.map +1 -1
  86. package/dist/delivery/external-hold.d.ts +8 -2
  87. package/dist/delivery/external-hold.d.ts.map +1 -1
  88. package/dist/delivery/external-hold.js +12 -5
  89. package/dist/delivery/external-hold.js.map +1 -1
  90. package/dist/delivery/operator-hold.d.ts +6 -1
  91. package/dist/delivery/operator-hold.d.ts.map +1 -1
  92. package/dist/delivery/operator-hold.js +31 -10
  93. package/dist/delivery/operator-hold.js.map +1 -1
  94. package/dist/delivery/paused-revival.d.ts +6 -0
  95. package/dist/delivery/paused-revival.d.ts.map +1 -1
  96. package/dist/delivery/paused-revival.js +3 -1
  97. package/dist/delivery/paused-revival.js.map +1 -1
  98. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  99. package/dist/directive/directive-dispatch.js +6 -3
  100. package/dist/directive/directive-dispatch.js.map +1 -1
  101. package/dist/directive/directive-queue.d.ts.map +1 -1
  102. package/dist/directive/directive-queue.js +4 -1
  103. package/dist/directive/directive-queue.js.map +1 -1
  104. package/dist/drift/staleness-sensor.d.ts +20 -0
  105. package/dist/drift/staleness-sensor.d.ts.map +1 -1
  106. package/dist/drift/staleness-sensor.js +54 -21
  107. package/dist/drift/staleness-sensor.js.map +1 -1
  108. package/dist/drift/staleness.d.ts +18 -5
  109. package/dist/drift/staleness.d.ts.map +1 -1
  110. package/dist/drift/staleness.js +28 -15
  111. package/dist/drift/staleness.js.map +1 -1
  112. package/dist/focus/focus-executor.d.ts.map +1 -1
  113. package/dist/focus/focus-executor.js +6 -8
  114. package/dist/focus/focus-executor.js.map +1 -1
  115. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  116. package/dist/focus/focus-loop-registry.js +23 -13
  117. package/dist/focus/focus-loop-registry.js.map +1 -1
  118. package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
  119. package/dist/focus/focus-respawn-guard.js +21 -4
  120. package/dist/focus/focus-respawn-guard.js.map +1 -1
  121. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  122. package/dist/focus/listener-auto-advance.js +10 -6
  123. package/dist/focus/listener-auto-advance.js.map +1 -1
  124. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  125. package/dist/focus/verify-open-issues.js +21 -1
  126. package/dist/focus/verify-open-issues.js.map +1 -1
  127. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  128. package/dist/focus-stage-lifecycle/wedge-watchdog.js +35 -14
  129. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  130. package/dist/loops/index.d.ts.map +1 -1
  131. package/dist/loops/index.js +2 -1
  132. package/dist/loops/index.js.map +1 -1
  133. package/dist/merge/focus-merge.d.ts +1 -1
  134. package/dist/merge/focus-merge.d.ts.map +1 -1
  135. package/dist/merge/focus-merge.js +5 -1
  136. package/dist/merge/focus-merge.js.map +1 -1
  137. package/dist/merge/merge-back-loop.d.ts +2 -1
  138. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  139. package/dist/merge/merge-back-loop.js +15 -12
  140. package/dist/merge/merge-back-loop.js.map +1 -1
  141. package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
  142. package/dist/merge/merge-conflict-escalation.js +4 -0
  143. package/dist/merge/merge-conflict-escalation.js.map +1 -1
  144. package/dist/nexus/return.d.ts +14 -15
  145. package/dist/nexus/return.d.ts.map +1 -1
  146. package/dist/nexus/return.js +41 -31
  147. package/dist/nexus/return.js.map +1 -1
  148. package/dist/prompt-sections/execution-sections.d.ts +13 -5
  149. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  150. package/dist/prompt-sections/execution-sections.js +78 -18
  151. package/dist/prompt-sections/execution-sections.js.map +1 -1
  152. package/dist/prompt-sections/routing-decider-sections.d.ts +60 -0
  153. package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -0
  154. package/dist/prompt-sections/routing-decider-sections.js +197 -0
  155. package/dist/prompt-sections/routing-decider-sections.js.map +1 -0
  156. package/dist/queries/agent-resolvable-aging.d.ts +4 -3
  157. package/dist/queries/agent-resolvable-aging.d.ts.map +1 -1
  158. package/dist/queries/agent-resolvable-aging.js +5 -4
  159. package/dist/queries/agent-resolvable-aging.js.map +1 -1
  160. package/dist/queries/agent-resolvable-promotion.d.ts +172 -124
  161. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  162. package/dist/queries/agent-resolvable-promotion.js +332 -307
  163. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  164. package/dist/queries/agent-resolvable-retirement.d.ts +105 -0
  165. package/dist/queries/agent-resolvable-retirement.d.ts.map +1 -0
  166. package/dist/queries/agent-resolvable-retirement.js +227 -0
  167. package/dist/queries/agent-resolvable-retirement.js.map +1 -0
  168. package/dist/queries/cause-key.d.ts +109 -0
  169. package/dist/queries/cause-key.d.ts.map +1 -1
  170. package/dist/queries/cause-key.js +93 -1
  171. package/dist/queries/cause-key.js.map +1 -1
  172. package/dist/queries/deliveries.d.ts +14 -0
  173. package/dist/queries/deliveries.d.ts.map +1 -1
  174. package/dist/queries/deliveries.js +20 -2
  175. package/dist/queries/deliveries.js.map +1 -1
  176. package/dist/queries/delivery-gate-state.d.ts +130 -5
  177. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  178. package/dist/queries/delivery-gate-state.js +111 -2
  179. package/dist/queries/delivery-gate-state.js.map +1 -1
  180. package/dist/queries/escalation-consumption.d.ts +95 -15
  181. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  182. package/dist/queries/escalation-consumption.js +162 -24
  183. package/dist/queries/escalation-consumption.js.map +1 -1
  184. package/dist/queries/escalation-dispositions.d.ts +19 -7
  185. package/dist/queries/escalation-dispositions.d.ts.map +1 -1
  186. package/dist/queries/escalation-dispositions.js +7 -0
  187. package/dist/queries/escalation-dispositions.js.map +1 -1
  188. package/dist/queries/escalation-suppression.d.ts +63 -19
  189. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  190. package/dist/queries/escalation-suppression.js +64 -35
  191. package/dist/queries/escalation-suppression.js.map +1 -1
  192. package/dist/queries/escalations.d.ts +127 -70
  193. package/dist/queries/escalations.d.ts.map +1 -1
  194. package/dist/queries/escalations.js +170 -188
  195. package/dist/queries/escalations.js.map +1 -1
  196. package/dist/queries/filing-observation.d.ts +82 -0
  197. package/dist/queries/filing-observation.d.ts.map +1 -0
  198. package/dist/queries/filing-observation.js +157 -0
  199. package/dist/queries/filing-observation.js.map +1 -0
  200. package/dist/queries/holds.d.ts +69 -2
  201. package/dist/queries/holds.d.ts.map +1 -1
  202. package/dist/queries/holds.js +106 -11
  203. package/dist/queries/holds.js.map +1 -1
  204. package/dist/queries/incident-correlation.d.ts +291 -0
  205. package/dist/queries/incident-correlation.d.ts.map +1 -0
  206. package/dist/queries/incident-correlation.js +408 -0
  207. package/dist/queries/incident-correlation.js.map +1 -0
  208. package/dist/queries/routing-measurement.d.ts +48 -1
  209. package/dist/queries/routing-measurement.d.ts.map +1 -1
  210. package/dist/queries/routing-measurement.js +64 -2
  211. package/dist/queries/routing-measurement.js.map +1 -1
  212. package/dist/queries/routing-quality.d.ts +8 -0
  213. package/dist/queries/routing-quality.d.ts.map +1 -1
  214. package/dist/queries/routing-quality.js +12 -3
  215. package/dist/queries/routing-quality.js.map +1 -1
  216. package/dist/queries/shared.js +1 -1
  217. package/dist/shell/crash-recovery.d.ts.map +1 -1
  218. package/dist/shell/crash-recovery.js +6 -6
  219. package/dist/shell/crash-recovery.js.map +1 -1
  220. package/dist/shell/heartbeat-metadata.d.ts +18 -0
  221. package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
  222. package/dist/shell/heartbeat-metadata.js +24 -0
  223. package/dist/shell/heartbeat-metadata.js.map +1 -1
  224. package/dist/shell/heartbeat.d.ts.map +1 -1
  225. package/dist/shell/heartbeat.js +6 -17
  226. package/dist/shell/heartbeat.js.map +1 -1
  227. package/dist/shell/install-probe-tick.d.ts.map +1 -1
  228. package/dist/shell/install-probe-tick.js +3 -1
  229. package/dist/shell/install-probe-tick.js.map +1 -1
  230. package/dist/shell/model-resolution.d.ts +9 -4
  231. package/dist/shell/model-resolution.d.ts.map +1 -1
  232. package/dist/shell/model-resolution.js +46 -7
  233. package/dist/shell/model-resolution.js.map +1 -1
  234. package/dist/shell/unified-init.d.ts +24 -0
  235. package/dist/shell/unified-init.d.ts.map +1 -1
  236. package/dist/shell/unified-init.js +22 -17
  237. package/dist/shell/unified-init.js.map +1 -1
  238. package/dist/spawn/model-id-guards.d.ts +50 -0
  239. package/dist/spawn/model-id-guards.d.ts.map +1 -0
  240. package/dist/spawn/model-id-guards.js +110 -0
  241. package/dist/spawn/model-id-guards.js.map +1 -0
  242. package/dist/spawn/model-routing.d.ts +1 -43
  243. package/dist/spawn/model-routing.d.ts.map +1 -1
  244. package/dist/spawn/model-routing.js +3 -94
  245. package/dist/spawn/model-routing.js.map +1 -1
  246. package/dist/spawn/respawn-cycle-escalation.d.ts +10 -2
  247. package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
  248. package/dist/spawn/respawn-cycle-escalation.js +16 -2
  249. package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
  250. package/dist/spawn/routing-decider-spawn.d.ts +93 -0
  251. package/dist/spawn/routing-decider-spawn.d.ts.map +1 -0
  252. package/dist/spawn/routing-decider-spawn.js +185 -0
  253. package/dist/spawn/routing-decider-spawn.js.map +1 -0
  254. package/dist/spawn/routing-decider.d.ts +42 -0
  255. package/dist/spawn/routing-decider.d.ts.map +1 -0
  256. package/dist/spawn/routing-decider.js +95 -0
  257. package/dist/spawn/routing-decider.js.map +1 -0
  258. package/dist/spawn/shared.d.ts +8 -0
  259. package/dist/spawn/shared.d.ts.map +1 -1
  260. package/dist/spawn/shared.js +1 -1
  261. package/dist/spawn/shared.js.map +1 -1
  262. package/dist/spawn/spawn-decision.d.ts +24 -16
  263. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  264. package/dist/spawn/spawn-decision.js +28 -11
  265. package/dist/spawn/spawn-decision.js.map +1 -1
  266. package/dist/spawn/worktree-session.d.ts +23 -7
  267. package/dist/spawn/worktree-session.d.ts.map +1 -1
  268. package/dist/spawn/worktree-session.js +54 -22
  269. package/dist/spawn/worktree-session.js.map +1 -1
  270. package/dist/testing/fixtures/index.js +1 -1
  271. package/dist/types/index.js +1 -1
  272. package/dist/update/auto-update.d.ts +20 -3
  273. package/dist/update/auto-update.d.ts.map +1 -1
  274. package/dist/update/auto-update.js +8 -24
  275. package/dist/update/auto-update.js.map +1 -1
  276. package/dist/update/self-update.d.ts +43 -4
  277. package/dist/update/self-update.d.ts.map +1 -1
  278. package/dist/update/self-update.js +61 -38
  279. package/dist/update/self-update.js.map +1 -1
  280. package/dist/update/version-check.d.ts +29 -45
  281. package/dist/update/version-check.d.ts.map +1 -1
  282. package/dist/update/version-check.js +48 -79
  283. package/dist/update/version-check.js.map +1 -1
  284. package/dist/verify/failure-signature.d.ts +91 -0
  285. package/dist/verify/failure-signature.d.ts.map +1 -0
  286. package/dist/verify/failure-signature.js +233 -0
  287. package/dist/verify/failure-signature.js.map +1 -0
  288. package/dist/verify/shortfall-repeat.d.ts +12 -9
  289. package/dist/verify/shortfall-repeat.d.ts.map +1 -1
  290. package/dist/verify/shortfall-repeat.js +38 -14
  291. package/dist/verify/shortfall-repeat.js.map +1 -1
  292. package/dist/verify/stall-detectors.d.ts +19 -43
  293. package/dist/verify/stall-detectors.d.ts.map +1 -1
  294. package/dist/verify/stall-detectors.js +26 -101
  295. package/dist/verify/stall-detectors.js.map +1 -1
  296. package/dist/verify/unreviewed-settle-detector.d.ts +8 -0
  297. package/dist/verify/unreviewed-settle-detector.d.ts.map +1 -1
  298. package/dist/verify/unreviewed-settle-detector.js +15 -1
  299. package/dist/verify/unreviewed-settle-detector.js.map +1 -1
  300. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  301. package/dist/verify/verification-deps-default.js +14 -2
  302. package/dist/verify/verification-deps-default.js.map +1 -1
  303. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  304. package/dist/verify/verification-evidence-unavailable-feedback.js +8 -2
  305. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  306. package/dist/verify/verification-feedback.d.ts +62 -14
  307. package/dist/verify/verification-feedback.d.ts.map +1 -1
  308. package/dist/verify/verification-feedback.js +101 -28
  309. package/dist/verify/verification-feedback.js.map +1 -1
  310. package/dist/verify/verify-gate-stall.d.ts +116 -0
  311. package/dist/verify/verify-gate-stall.d.ts.map +1 -0
  312. package/dist/verify/verify-gate-stall.js +169 -0
  313. package/dist/verify/verify-gate-stall.js.map +1 -0
  314. package/dist/verify/verify-restatement.d.ts.map +1 -1
  315. package/dist/verify/verify-restatement.js +2 -1
  316. package/dist/verify/verify-restatement.js.map +1 -1
  317. package/package.json +3 -3
@@ -1,26 +1,12 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 30 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/queries/escalations.ts
2
+ // Pinned by: 35 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/queries/escalations.ts
3
3
  // PINNED-BY-END
4
- /**
5
- * Escalation queries: creation, open-escalation dedup reads, and resolution.
6
- *
7
- * Split out of queries/issues.ts (file-size limit); the issue CRUD stays there
8
- * and re-exports this module so existing importers of queries/issues.js keep
9
- * working -- the same shape as the queries/holds.ts split.
10
- *
11
- * This module must NOT take a runtime (value) import of `@telora/daemon-core`
12
- * (only the type import below). Under the node:test module-mock loader a bare
13
- * `@telora/*` value specifier resolves RELATIVE TO THIS FILE
14
- * (.../src/queries/@telora/daemon-core) and dies with ERR_MODULE_NOT_FOUND --
15
- * so every test that registers a mock.module and transitively loads this file
16
- * fails to even start. The disposition vocabulary is therefore mirrored as
17
- * type-pinned local literals (DISPOSITION_AGENT_RESOLVABLE / _NEEDS_INTENT);
18
- * the same quirk keeps src/shell/log.ts daemon-local.
19
- */
20
4
  import { callApi } from './shared.js';
21
5
  import { resolveProvenance } from '../completion/escalation-provenance.js';
22
6
  import { createLogger } from '../shell/log.js';
23
7
  import { DISPOSITION_AGENT_RESOLVABLE } from './escalation-dispositions.js';
8
+ import { routeFilingDisposition } from './filing-observation.js';
9
+ import { correlateFiling, incidentIoOver, isOpenFocusKindRow, isOpenWorktreeDirtyMatch, readSymptoms, resolveFilingIncidentKey, retireClearedSymptoms, rowAnswersForKind, rowNamesDelivery, stampIncidentMetadata, } from './incident-correlation.js';
24
10
  // The agent-resolvable / demotable consumption reads live in
25
11
  // queries/escalation-consumption.ts; importers reference that module directly
26
12
  // (this module deliberately does NOT re-export it -- no facade, per the daemon's
@@ -32,11 +18,28 @@ const log = createLogger({ module: 'escalations' });
32
18
  * Every daemon-side producer that composes a description MUST fit it under this
33
19
  * ONE number rather than compose blind and let the edge reject on length --
34
20
  * the disagreement that let an over-cap description be re-submitted forever
35
- * (Nexus notifications, and the agent_resolvable promotion refile). The Nexus
36
- * producer (nexus/return.ts) and the promotion refile (agent-resolvable-promotion.ts)
37
- * both import it from here so producer and server agree on the limit.
21
+ * (Nexus notifications, and the former agent_resolvable promotion refile, which
22
+ * the daemon no longer files). The Nexus producer (nexus/return.ts) imports it
23
+ * from here so producer and server agree on the limit.
38
24
  */
39
25
  export const ESCALATION_DESCRIPTION_MAX = 5000;
26
+ /**
27
+ * Create an escalation request -- the single filing chokepoint. Provenance is
28
+ * derived from `anchor` via resolveProvenance (explicit productId/focusId/deliveryId
29
+ * win; a derivation miss degrades, never aborts). The disposition is routed by
30
+ * routeFilingDisposition: a daemon filing enters the machine lane WHATEVER
31
+ * disposition it names -- needs_operator / external_wait / needs_intent /
32
+ * needs_clarification are sent agent_resolvable as an observation carrying the
33
+ * proposed disposition and any proposed human act. The daemon files no
34
+ * human-facing row; only an agent that has assembled the intent ladder makes a
35
+ * filing human-facing (MCP escalate). A stop or hold the detector reported stays
36
+ * in force on its observation (queries/holds.ts isMachineStopObservation and
37
+ * findOpenOperatorHoldForDelivery). The RESOLVED provenance (plus a branch the site carries) yields metadata.incident_key
38
+ * (a key already in metadata wins; inbound-notification kinds carry none), and the
39
+ * ONE incident reducer (queries/incident-correlation.ts correlateFiling) either
40
+ * attaches the filing to its incident's open row in the same lane -- no row filed
41
+ * -- or the row is filed stamped with the key and its own symptom.
42
+ */
40
43
  export async function createEscalation(params, deps = {}) {
41
44
  const call = deps.callApi ?? callApi;
42
45
  const resolveProvenanceFn = deps.resolveProvenance ?? resolveProvenance;
@@ -44,23 +47,39 @@ export async function createEscalation(params, deps = {}) {
44
47
  const productId = params.productId ?? derived.productId;
45
48
  const focusId = params.focusId ?? derived.focusId;
46
49
  const deliveryId = params.deliveryId ?? derived.deliveryId;
50
+ const key = resolveFilingIncidentKey(params, { productId, focusId, deliveryId });
51
+ const routed = routeFilingDisposition(params, ESCALATION_DESCRIPTION_MAX);
52
+ if (routed.route === 'observation') {
53
+ log.info(`[escalations] ${params.disposition} filing (kind ${params.escalationKind ?? 'none'}) sent to the machine lane as an observation${params.humanAct ? ' carrying its proposed human act' : ''}`);
54
+ }
55
+ const filing = { ...params, metadata: routed.metadata };
56
+ const observedAt = (deps.now ?? (() => new Date().toISOString()))();
57
+ const correlation = key
58
+ ? await correlateFiling({ key, filing, disposition: routed.disposition, focusId, observedAt }, incidentIoOver(call))
59
+ : null;
60
+ if (correlation?.note)
61
+ log[correlation.warn ? 'warn' : 'info'](`[escalations] ${correlation.note}`);
62
+ if (correlation?.outcome === 'attached' || correlation?.outcome === 'already_carried') {
63
+ return { escalationId: null, correlated: true, incidentEscalationId: correlation.incidentRowId };
64
+ }
65
+ const metadata = stampIncidentMetadata(filing, key, observedAt);
47
66
  const res = await call('escalation_create', {
48
67
  issueId: params.issueId,
49
68
  fields: {
50
69
  reasonType: params.reasonType,
51
- description: params.description,
70
+ description: routed.description,
52
71
  whatWasTried: params.whatWasTried,
53
- helpNeeded: params.helpNeeded,
72
+ helpNeeded: routed.helpNeeded,
54
73
  ...(params.escalationKind ? { escalationKind: params.escalationKind } : {}),
55
- ...(params.metadata ? { metadata: params.metadata } : {}),
74
+ ...(metadata ? { metadata } : {}),
56
75
  ...(productId ? { productId } : {}),
57
76
  ...(focusId ? { focusId } : {}),
58
77
  ...(deliveryId ? { deliveryId } : {}),
59
78
  ...(params.targetProductId ? { targetProductId: params.targetProductId } : {}),
60
- ...(params.disposition ? { disposition: params.disposition } : {}),
79
+ ...(routed.disposition ? { disposition: routed.disposition } : {}),
61
80
  },
62
81
  });
63
- return { escalationId: res.escalation?.id ?? null };
82
+ return { escalationId: res.escalation?.id ?? null, correlated: false, incidentEscalationId: correlation?.incidentRowId ?? null };
64
83
  }
65
84
  /**
66
85
  * List open (not-yet-resolved) escalations for the organization.
@@ -85,6 +104,7 @@ export async function listPendingEscalations(deps = {}) {
85
104
  whatWasTried: e.whatWasTried ?? null,
86
105
  helpNeeded: e.helpNeeded ?? null,
87
106
  escalationKind: e.escalationKind ?? null,
107
+ focusId: e.focusId ?? null,
88
108
  metadata: e.metadata ?? null,
89
109
  }));
90
110
  }
@@ -118,11 +138,24 @@ export async function hasOpenTeamFailureEscalation(focusId, deps = {}, opts = {}
118
138
  e.metadata?.focusId === focusId);
119
139
  // TEL-2: the respawn guard passes excludeAgentResolvable so a MACHINE-owned
120
140
  // (agent_resolvable) team_failure does NOT gate the spawn -- it is a RECORD the
121
- // incoming team resolves (ridden in by the agent-resolvable transport), not a
122
- // hold. A null / needs_intent / needs_operator disposition still blocks
123
- // (conservative: pre-TEL-1 rows were human-owned). The idempotency callers pass
124
- // no opts, so they still count EVERY open team_failure (no duplicate filings).
125
- return forThisFocus.some((e) => !(opts.excludeAgentResolvable && e.disposition === DISPOSITION_AGENT_RESOLVABLE));
141
+ // incoming team resolves, not a hold. EXCEPT a machine-stop observation
142
+ // (queries/holds.ts isMachineStopObservation): the chokepoint sends every daemon
143
+ // filing agent_resolvable, so a detector that proposed the act ending its stop
144
+ // (non-advanceable, advancement-stalled) keeps blocking on that proposal. A null /
145
+ // needs_intent / needs_operator row (agent-filed or legacy) still blocks. The
146
+ // idempotency callers pass no opts, so they count EVERY open team_failure.
147
+ return forThisFocus.some((e) => !(opts.excludeAgentResolvable && e.disposition === DISPOSITION_AGENT_RESOLVABLE && !isMachineStopObservation(e)));
148
+ }
149
+ /**
150
+ * DEDUP-only sibling of hasOpenTeamFailureEscalation, for the team_failure RE-FILE
151
+ * guards (completion/event.ts): also counts an open row on the focus answering for
152
+ * team_failure as a promotion refile (originalKind / original_cause_key) or a
153
+ * carried symptom, so a promoted team_failure is not re-filed. The respawn guard
154
+ * keeps the kind-column read -- a HOLD must not match a condition whose kind-keyed
155
+ * close-half would never release it.
156
+ */
157
+ export async function hasOpenTeamFailureEscalationForDedup(focusId, deps = {}) {
158
+ return hasOpenFocusEscalation(focusId, 'team_failure', deps, { matchCorrelated: true });
126
159
  }
127
160
  /**
128
161
  * Returns true when an open (status pending or in_review) escalation exists
@@ -134,7 +167,9 @@ export async function hasOpenTeamFailureEscalation(focusId, deps = {}, opts = {}
134
167
  * COLUMNS in preference to the metadata bag. A metadata fallback is retained
135
168
  * for back-compat with rows already open at deploy time (filed before this
136
169
  * promotion, which carry the discriminator only in metadata.kind /
137
- * metadata.deliveryId).
170
+ * metadata.deliveryId). A pure DEDUP read, so it also sees a promotion refile
171
+ * (metadata.originalKind + the delivery's carried incident_key) and a symptom
172
+ * correlated onto the delivery's incident row (rowAnswersForKind / rowNamesDelivery).
138
173
  *
139
174
  * Used by the delivery advance-block path so a delivery stuck across many
140
175
  * polls files exactly one open escalation instead of one per tick.
@@ -144,21 +179,11 @@ export async function hasOpenEscalationForDelivery(deliveryId, escalationKind) {
144
179
  fields: { statuses: ['pending', 'in_review'] },
145
180
  limit: 500,
146
181
  });
147
- return (result.escalations ?? []).some((e) => {
148
- // Preferred: match on the typed columns.
149
- if (e.escalationKind === escalationKind && e.deliveryId === deliveryId) {
150
- return true;
151
- }
152
- // Back-compat: rows filed before the column promotion carry the
153
- // discriminator in the metadata bag.
154
- const meta = e.metadata ?? null;
155
- return meta?.kind === escalationKind && meta?.deliveryId === deliveryId;
156
- });
182
+ return (result.escalations ?? []).some((e) => rowNamesDelivery(e, deliveryId) && rowAnswersForKind(e, escalationKind));
157
183
  }
158
- // OPEN_ESCALATION_STATUSES is the only holds symbol this module consumes; the
159
- // operator-hold lookup family lives in queries/holds.ts and importers reference
160
- // it there directly (no re-export facade here).
161
- import { OPEN_ESCALATION_STATUSES } from './holds.js';
184
+ // The holds symbols this module consumes; the operator-hold lookup family lives in
185
+ // queries/holds.ts and importers reference it there directly (no re-export facade).
186
+ import { OPEN_ESCALATION_STATUSES, isMachineStopObservation } from './holds.js';
162
187
  /**
163
188
  * escalation_kind discriminators for the two focus-merge worktree-dirty
164
189
  * classes. Declared as daemon-local string constants (not imported from
@@ -188,34 +213,6 @@ export const WORKTREE_DIRTY_ESCALATION_KINDS = [
188
213
  MERGE_CONFLICT_ESCALATION_KIND,
189
214
  MERGE_REFUSED_DIRTY_ESCALATION_KIND,
190
215
  ];
191
- /**
192
- * True when `e` is an OPEN worktree-dirty-class escalation for `focusId` whose
193
- * kind is in `kindSet`. Shared by hasOpenWorktreeDirtyEscalation (dedup) and
194
- * resolveOpenWorktreeDirtyEscalations (auto-close) so both agree on what counts.
195
- *
196
- * The status re-check is defense-in-depth. The live escalation_list handler
197
- * (issue-handlers.listEscalations) already honors the `statuses` filter
198
- * server-side, so the daemon normally receives only pending/in_review rows --
199
- * but we re-check here so the invariant "a RESOLVED worktree-dirty row must
200
- * never suppress (or be re-resolved as) a legitimate new escalation" holds
201
- * regardless of how the rows were fetched (custom `kinds`, a future caller that
202
- * forgets the statuses filter, etc.).
203
- */
204
- function isOpenWorktreeDirtyMatch(e, focusId, kindSet) {
205
- if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
206
- return false;
207
- // Preferred: match on the typed columns.
208
- if (e.focusId === focusId && e.escalationKind && kindSet.has(e.escalationKind)) {
209
- return true;
210
- }
211
- // Back-compat: rows filed before the column promotion carry the focus / kind
212
- // in the metadata bag.
213
- const meta = e.metadata ?? null;
214
- const metaKind = meta?.kind;
215
- return (meta?.focusId === focusId &&
216
- typeof metaKind === 'string' &&
217
- kindSet.has(metaKind));
218
- }
219
216
  /**
220
217
  * Returns true when an open (status pending or in_review) worktree-dirty-class
221
218
  * escalation exists for the given FOCUS.
@@ -250,7 +247,7 @@ export async function hasOpenWorktreeDirtyEscalation(focusId, kinds = WORKTREE_D
250
247
  fields: { statuses: ['pending', 'in_review'], focusId },
251
248
  limit: 500,
252
249
  });
253
- return (result.escalations ?? []).some((e) => isOpenWorktreeDirtyMatch(e, focusId, kindSet));
250
+ return (result.escalations ?? []).some((e) => isOpenWorktreeDirtyMatch(e, focusId, kindSet, true));
254
251
  }
255
252
  /** The escalation_kind filed by the planning-wedge watchdog. */
256
253
  export const WEDGED_FOCUS_ESCALATION_KIND = 'wedged_focus';
@@ -263,40 +260,13 @@ export const WEDGED_FOCUS_ESCALATION_KIND = 'wedged_focus';
263
260
  * (the 172-duplicate storm class). Keying on the focus + escalation_kind COLUMNS
264
261
  * collapses the threshold-crossing escalation to at most one open row per focus.
265
262
  *
266
- * Mirrors hasOpenWorktreeDirtyEscalation: the request narrows server-side by
267
- * focusId + open statuses (both honored by the live escalation_list handler) so
268
- * a busy org cannot page the matching row off the 500-row window, and the
269
- * status + focus + kind predicate is ALSO applied client-side as defense-in-depth.
270
- * Because it queries the DB rather than an in-memory Set, the dedup SURVIVES A
271
- * DAEMON RESTART -- a restart cannot re-storm a focus that is still wedged.
263
+ * Delegates to hasOpenFocusEscalation (server-side focusId + open-status narrowing,
264
+ * client-side re-check). Because it queries the DB rather than an in-memory Set,
265
+ * the dedup SURVIVES A DAEMON RESTART -- a restart cannot re-storm a wedged focus.
272
266
  */
273
267
  export async function hasOpenWedgedFocusEscalation(focusId) {
274
- const result = await callApi('escalation_list', {
275
- fields: { statuses: ['pending', 'in_review'], focusId },
276
- limit: 500,
277
- });
278
- return (result.escalations ?? []).some((e) => {
279
- if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
280
- return false;
281
- if (e.focusId === focusId && e.escalationKind === WEDGED_FOCUS_ESCALATION_KIND)
282
- return true;
283
- // Back-compat: a row filed before the column promotion carries focus / kind
284
- // in the metadata bag.
285
- const meta = e.metadata ?? null;
286
- return meta?.focusId === focusId && meta?.kind === WEDGED_FOCUS_ESCALATION_KIND;
287
- });
268
+ return hasOpenFocusEscalation(focusId, WEDGED_FOCUS_ESCALATION_KIND, {}, { matchCorrelated: true });
288
269
  }
289
- /**
290
- * Returns true when an OPEN (status pending or in_review) escalation of the
291
- * given `escalationKind` already exists for the given FOCUS. Generic per-focus
292
- * dedup, mirroring hasOpenWedgedFocusEscalation but parameterized on the kind.
293
- *
294
- * Used by the targeted stall detectors (review_window_stalled) so a focus that
295
- * stays stalled across many poll ticks files exactly one open escalation
296
- * instead of one per tick. Queries the DB (not an in-memory Set), so the dedup
297
- * survives a daemon restart. Narrows server-side by focusId + open statuses and
298
- * re-applies the status/focus/kind predicate client-side as defense-in-depth.
299
- */
300
270
  /**
301
271
  * The escalation_kind the review-exit drift-streak breaker files when a focus
302
272
  * branch keeps advancing DURING each review pass (review-exit-escalations.ts).
@@ -311,52 +281,45 @@ export const REVIEW_COVERAGE_INCOMPLETE_ESCALATION_KIND = 'review_coverage_incom
311
281
  * fired parks its re-review spawns instead of burning a review cycle every
312
282
  * spawn cooldown while the escalation sits open (the 2026-08-06 incident: the
313
283
  * breaker fired 4 minutes in, but nothing stopped the loop for 4.5h). Mirrors
314
- * hasOpenTeamFailureEscalation; delegates to the generic per-focus dedup query.
284
+ * hasOpenTeamFailureEscalation's excludeAgentResolvable (TEL-2), but the respawn
285
+ * guard does NOT pass it: the coverage hold is a machine wait-state the coverage
286
+ * stabilizer clears, so it parks the spawn whatever its disposition.
315
287
  */
316
- export async function hasOpenReviewCoverageIncompleteEscalation(focusId) {
317
- return hasOpenFocusEscalation(focusId, REVIEW_COVERAGE_INCOMPLETE_ESCALATION_KIND);
288
+ export async function hasOpenReviewCoverageIncompleteEscalation(focusId, deps = {}, opts = {}) {
289
+ return hasOpenFocusEscalation(focusId, REVIEW_COVERAGE_INCOMPLETE_ESCALATION_KIND, deps, opts);
318
290
  }
319
- export async function hasOpenFocusEscalation(focusId, escalationKind) {
320
- const result = await callApi('escalation_list', {
291
+ /**
292
+ * Returns true when an OPEN (status pending or in_review) escalation of the
293
+ * given `escalationKind` already exists for the given FOCUS. Generic per-focus
294
+ * dedup (review_window_stalled, wedged_focus, the review breakers): one open row
295
+ * per focus across poll ticks and daemon restarts. Narrows server-side by
296
+ * focusId + open statuses and re-applies status/focus/kind client-side.
297
+ * Dedup callers pass no opts (every open row counts, observations included).
298
+ *
299
+ * `matchCorrelated` is for PURE dedup reads only: it also counts a promotion
300
+ * refile (metadata.originalKind) and a symptom correlated onto an open incident
301
+ * row on the focus. It is opt-in because two callers read this as a HOLD (the
302
+ * respawn guard's review_coverage_incomplete, the state cascade's breaker hold),
303
+ * and a promoted or absorbed condition has no close-half that would release it.
304
+ */
305
+ export async function hasOpenFocusEscalation(focusId, escalationKind, deps = {}, opts = {}) {
306
+ const call = deps.callApi ?? callApi;
307
+ const result = await call('escalation_list', {
321
308
  fields: { statuses: ['pending', 'in_review'], focusId },
322
309
  limit: 500,
323
310
  });
324
311
  return (result.escalations ?? []).some((e) => {
325
- if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
312
+ if (opts.excludeAgentResolvable && e.disposition === DISPOSITION_AGENT_RESOLVABLE && !isMachineStopObservation(e))
326
313
  return false;
327
- if (e.focusId === focusId && e.escalationKind === escalationKind)
328
- return true;
329
- // Back-compat: a row filed before the column promotion carries focus / kind
330
- // in the metadata bag.
331
- const meta = e.metadata ?? null;
332
- return meta?.focusId === focusId && meta?.kind === escalationKind;
314
+ return isOpenFocusKindRow(e, focusId, escalationKind, opts.matchCorrelated ?? false);
333
315
  });
334
316
  }
335
- /**
336
- * The close half for a per-FOCUS escalation kind: resolve every open (pending or
337
- * in_review) escalation of `escalationKind` for the focus, once the daemon has
338
- * observed its clearing condition. Mirrors resolveOpenWorktreeDirtyEscalations
339
- * (the delivery-scoped precedent) for the focus-scoped blocking kinds that
340
- * applyRespawnGuard reads as a spawn block (team_failure) -- so a machine-filed
341
- * spawn block clears itself the moment its own condition (genuine progress)
342
- * clears, and the armed focus resumes spawning with no human act.
343
- *
344
- * Best-effort: a resolve failure for one row is logged and skipped, never thrown,
345
- * so the caller's primary work (advancing a delivery) is not blocked. Returns the
346
- * count resolved.
347
- */
348
- /**
349
- * Read the OPEN (pending or in_review) escalations of `escalationKind` for a
350
- * focus, returning each row's id + metadata. The read sibling of
351
- * resolveOpenFocusEscalationsOfKind, for close-halves whose clearing condition
352
- * is per-row (e.g. review_coverage_incomplete clears only when the focus branch
353
- * has stabilized at the tip recorded in the row's metadata at filing).
354
- */
355
317
  /**
356
318
  * List the escalation_kind of every OPEN (pending/in_review) escalation naming a
357
- * focus -- the raw evidence the wedge-cause arbiter (TEL-3) draws on. Any-kind
358
- * (no server kind filter); the caller narrows to wedge causes. Column-first with
359
- * the metadata.focusId fallback for pre-backfill rows.
319
+ * focus -- the raw evidence the wedge-cause arbiter (TEL-3) draws on -- plus every
320
+ * symptom kind correlated onto those rows, so a cause absorbed into an incident
321
+ * row still counts. Any-kind (no server kind filter); the caller narrows to wedge
322
+ * causes. Column-first with the metadata.focusId fallback for pre-backfill rows.
360
323
  */
361
324
  export async function listOpenFocusEscalationKinds(focusId, deps = {}) {
362
325
  const call = deps.callApi ?? callApi;
@@ -368,9 +331,16 @@ export async function listOpenFocusEscalationKinds(focusId, deps = {}) {
368
331
  .filter((e) => (!e.status || OPEN_ESCALATION_STATUSES.has(e.status)) &&
369
332
  (e.focusId === focusId ||
370
333
  e.metadata?.focusId === focusId))
371
- .map((e) => e.escalationKind ?? '')
334
+ .flatMap((e) => [e.escalationKind ?? '', ...readSymptoms(e.metadata).map((s) => s.escalation_kind ?? '')])
372
335
  .filter((k) => k.length > 0);
373
336
  }
337
+ /**
338
+ * Read the OPEN (pending or in_review) escalations of `escalationKind` for a
339
+ * focus, returning each row's id + metadata. The read sibling of
340
+ * resolveOpenFocusEscalationsOfKind, for close-halves whose clearing condition
341
+ * is per-row (e.g. review_coverage_incomplete clears only when the focus branch
342
+ * has stabilized at the tip recorded in the row's metadata at filing).
343
+ */
374
344
  export async function listOpenFocusEscalationsOfKind(focusId, escalationKind, deps = {}) {
375
345
  const call = deps.callApi ?? callApi;
376
346
  const result = await call('escalation_list', {
@@ -378,44 +348,63 @@ export async function listOpenFocusEscalationsOfKind(focusId, escalationKind, de
378
348
  limit: 500,
379
349
  });
380
350
  return (result.escalations ?? [])
381
- .filter((e) => {
382
- if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
383
- return false;
384
- if (e.focusId === focusId && e.escalationKind === escalationKind)
385
- return true;
386
- const meta = e.metadata ?? null;
387
- return meta?.focusId === focusId && meta?.kind === escalationKind;
388
- })
351
+ .filter((e) => isOpenFocusKindRow(e, focusId, escalationKind))
389
352
  .map((e) => ({ id: e.id, metadata: e.metadata ?? null }));
390
353
  }
391
- export async function resolveOpenFocusEscalationsOfKind(focusId, escalationKind, resolutionNotes, deps = {}, resolutionClass) {
354
+ /**
355
+ * The close half for a per-FOCUS escalation kind: resolve every open (pending or
356
+ * in_review) escalation of `escalationKind` for the focus, once the daemon has
357
+ * observed its clearing condition. Mirrors resolveOpenWorktreeDirtyEscalations
358
+ * (the delivery-scoped precedent) for the focus-scoped blocking kinds that
359
+ * applyRespawnGuard reads as a spawn block (team_failure) -- so a machine-filed
360
+ * spawn block clears itself the moment its own condition (genuine progress)
361
+ * clears, and the armed focus resumes spawning with no human act.
362
+ *
363
+ * Best-effort: a resolve failure for one row is logged and skipped, never thrown,
364
+ * so the caller's primary work (advancing a delivery) is not blocked. Returns the
365
+ * count resolved.
366
+ */
367
+ export async function resolveOpenFocusEscalationsOfKind(focusId, escalationKind, resolutionClass, resolutionNotes, deps = {}) {
392
368
  const call = deps.callApi ?? callApi;
393
369
  const result = await call('escalation_list', {
394
370
  fields: { statuses: ['pending', 'in_review'], escalationKind, focusId },
395
371
  limit: 500,
396
372
  });
397
- const open = (result.escalations ?? []).filter((e) => {
398
- if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
399
- return false;
400
- if (e.focusId === focusId && e.escalationKind === escalationKind)
401
- return true;
402
- // Back-compat: a row filed before the column promotion carries focus / kind
403
- // in the metadata bag.
404
- const meta = e.metadata ?? null;
405
- return meta?.focusId === focusId && meta?.kind === escalationKind;
406
- });
373
+ const open = (result.escalations ?? []).filter((e) => isOpenFocusKindRow(e, focusId, escalationKind));
374
+ return resolveAndRetire(open, { kinds: [escalationKind], scope: { focusId }, resolutionClass }, resolutionNotes, deps, `${escalationKind} escalation for focus ${focusId}`);
375
+ }
376
+ /**
377
+ * The shared close-half body: resolve each own-kind row (best-effort per row), then retire the
378
+ * clearing's ABSORBED symptoms from the scope's other open rows (reusing `rows` when given, else
379
+ * reading them) so no symptom outlives its condition. Returns the count resolved.
380
+ */
381
+ async function resolveAndRetire(own, clearing, resolutionNotes, deps, label, rows) {
407
382
  let resolved = 0;
408
- for (const e of open) {
383
+ for (const e of own) {
409
384
  try {
410
- await markEscalationResolved(e.id, resolutionNotes, deps, resolutionClass);
385
+ await markEscalationResolved(e.id, clearing.resolutionClass, resolutionNotes, deps);
411
386
  resolved++;
412
387
  }
413
388
  catch (err) {
414
- log.warn(`[escalations] Failed to auto-resolve ${escalationKind} escalation ${e.id} for focus ${focusId}: ${err.message}`);
389
+ log.warn(`[escalations] Failed to auto-resolve ${label} (escalation ${e.id}): ${err.message}`);
415
390
  }
416
391
  }
392
+ await retireAbsorbedSymptoms(clearing, { ...(rows ? { rows } : {}), skipIds: own.map((e) => e.id) }, deps);
417
393
  return resolved;
418
394
  }
395
+ /**
396
+ * Retire a clearing's absorbed symptoms over the API (incident-correlation.ts retireClearedSymptoms,
397
+ * rule 6) -- for the resolve helpers here and for sweeps elsewhere that resolve their own rows.
398
+ * Best-effort: logs, never throws. Returns the count of symptoms retired.
399
+ */
400
+ export async function retireAbsorbedSymptoms(clearing, opts = {}, deps = {}) {
401
+ const outcome = await retireClearedSymptoms(clearing, incidentIoOver(deps.callApi ?? callApi), opts);
402
+ for (const warning of outcome.warnings)
403
+ log.warn(`[escalations] ${warning}`);
404
+ if (outcome.retired > 0)
405
+ log.info(`[escalations] Retired ${outcome.retired} absorbed symptom(s) whose condition cleared.`);
406
+ return outcome.retired;
407
+ }
419
408
  /**
420
409
  * The escalation kinds that describe a focus that cannot converge -- the review
421
410
  * hand-off breaker family plus team_failure. When the focus DOES converge, each
@@ -457,16 +446,8 @@ export async function resolveConvergedFocusEscalations(focusId, resolutionNotes,
457
446
  const kind = e.escalationKind ?? meta?.kind ?? '';
458
447
  return FOCUS_CONVERGENCE_TERMINATED_KINDS.has(kind) || meta?.terminates_when === 'focus_converged';
459
448
  });
460
- let resolved = 0;
461
- for (const e of open) {
462
- try {
463
- await markEscalationResolved(e.id, resolutionNotes, deps, 'auto_swept');
464
- resolved++;
465
- }
466
- catch (err) {
467
- log.warn(`[escalations] Failed to auto-sweep converged-focus escalation ${e.id} for focus ${focusId}: ${err.message}`);
468
- }
469
- }
449
+ const clearing = { kinds: [...FOCUS_CONVERGENCE_TERMINATED_KINDS], scope: { focusId }, resolutionClass: 'auto_swept' };
450
+ const resolved = await resolveAndRetire(open, clearing, resolutionNotes, deps, `converged-focus escalation for focus ${focusId}`, result.escalations ?? []);
470
451
  if (resolved > 0) {
471
452
  log.info(`[escalations] Auto-swept ${resolved} convergence-terminated escalation(s) for focus ${focusId}.`);
472
453
  }
@@ -489,8 +470,11 @@ export async function resolveConvergedFocusEscalations(focusId, resolutionNotes,
489
470
  * actually resolves -- e.g. a clean worktree clears advance_blocked /
490
471
  * merge_refused_dirty but NOT merge_conflict (a content conflict is not a dirty
491
472
  * worktree), and a successful merge clears merge_conflict.
473
+ *
474
+ * `resolutionClass` is REQUIRED: the class of actor that observed the clearing
475
+ * (the daemon's condition-cleared callers pass 'auto_swept').
492
476
  */
493
- export async function resolveOpenWorktreeDirtyEscalations(focusId, kinds, resolutionNotes = 'Auto-resolved by the daemon: the worktree-dirty condition cleared.', deps = {}) {
477
+ export async function resolveOpenWorktreeDirtyEscalations(focusId, kinds, resolutionClass, resolutionNotes = 'Auto-resolved by the daemon: the worktree-dirty condition cleared.', deps = {}) {
494
478
  const call = deps.callApi ?? callApi;
495
479
  const kindSet = new Set(kinds);
496
480
  const result = await call('escalation_list', {
@@ -498,17 +482,7 @@ export async function resolveOpenWorktreeDirtyEscalations(focusId, kinds, resolu
498
482
  limit: 500,
499
483
  });
500
484
  const open = (result.escalations ?? []).filter((e) => isOpenWorktreeDirtyMatch(e, focusId, kindSet));
501
- let resolved = 0;
502
- for (const e of open) {
503
- try {
504
- await markEscalationResolved(e.id, resolutionNotes, deps);
505
- resolved++;
506
- }
507
- catch (err) {
508
- log.warn(`[escalations] Failed to auto-resolve worktree-dirty escalation ${e.id} for focus ${focusId}: ${err.message}`);
509
- }
510
- }
511
- return resolved;
485
+ return resolveAndRetire(open, { kinds, scope: { focusId }, resolutionClass }, resolutionNotes, deps, `worktree-dirty escalation for focus ${focusId}`, result.escalations ?? []);
512
486
  }
513
487
  /**
514
488
  * Returns true when an OPEN (status pending or in_review) PRD machine escalation
@@ -548,16 +522,24 @@ export async function hasOpenPrdEscalation(prdId, discriminator) {
548
522
  });
549
523
  }
550
524
  /**
551
- * Mark an escalation as resolved with optional notes.
525
+ * Mark an escalation as resolved, recording WHO actually resolved it.
526
+ *
527
+ * `resolutionClass` is REQUIRED and typed: every daemon close path must state the
528
+ * class of actor it observed (a condition-cleared sweep or a promotion/demotion
529
+ * refile is 'auto_swept'; an agent's own progress is 'agent_session'). It feeds
530
+ * the routing-quality mis-route measurement (queries/routing-quality.ts), which
531
+ * differences a filing's declared disposition against this recorded class --
532
+ * when it was optional no caller passed it, so every resolved row read null and
533
+ * the measurement fail-opened forever on judged=0.
552
534
  */
553
- export async function markEscalationResolved(escalationId, resolutionNotes, deps = {}, resolutionClass) {
535
+ export async function markEscalationResolved(escalationId, resolutionClass, resolutionNotes, deps = {}) {
554
536
  const call = deps.callApi ?? callApi;
555
537
  await call('escalation_update', {
556
538
  escalationId,
557
539
  fields: {
558
540
  status: 'resolved',
541
+ resolutionClass,
559
542
  ...(resolutionNotes ? { resolutionNotes } : {}),
560
- ...(resolutionClass ? { resolutionClass } : {}),
561
543
  },
562
544
  });
563
545
  }
@@ -1 +1 @@
1
- {"version":3,"file":"escalations.js","sourceRoot":"","sources":["../../src/queries/escalations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"escalations.js","sourceRoot":"","sources":["../../src/queries/escalations.ts"],"names":[],"mappings":"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"}