@telora/daemon 0.22.85 → 0.22.87

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 (260) hide show
  1. package/build-info.json +4 -3
  2. package/dist/ci/ci-escalation.d.ts +17 -1
  3. package/dist/ci/ci-escalation.d.ts.map +1 -1
  4. package/dist/ci/ci-escalation.js +51 -3
  5. package/dist/ci/ci-escalation.js.map +1 -1
  6. package/dist/ci/ci-red-attribution.d.ts +85 -0
  7. package/dist/ci/ci-red-attribution.d.ts.map +1 -0
  8. package/dist/ci/ci-red-attribution.js +108 -0
  9. package/dist/ci/ci-red-attribution.js.map +1 -0
  10. package/dist/ci/ci-sensor-loop.d.ts +84 -80
  11. package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
  12. package/dist/ci/ci-sensor-loop.js +132 -129
  13. package/dist/ci/ci-sensor-loop.js.map +1 -1
  14. package/dist/completion/coverage-stabilized.d.ts.map +1 -1
  15. package/dist/completion/coverage-stabilized.js +1 -1
  16. package/dist/completion/coverage-stabilized.js.map +1 -1
  17. package/dist/completion/escalations.d.ts +40 -5
  18. package/dist/completion/escalations.d.ts.map +1 -1
  19. package/dist/completion/escalations.js +19 -11
  20. package/dist/completion/escalations.js.map +1 -1
  21. package/dist/completion/event-escalations.d.ts +12 -1
  22. package/dist/completion/event-escalations.d.ts.map +1 -1
  23. package/dist/completion/event-escalations.js +73 -37
  24. package/dist/completion/event-escalations.js.map +1 -1
  25. package/dist/completion/event.d.ts +4 -1
  26. package/dist/completion/event.d.ts.map +1 -1
  27. package/dist/completion/event.js +1 -1
  28. package/dist/completion/event.js.map +1 -1
  29. package/dist/completion/human-only-act.d.ts +1 -1
  30. package/dist/completion/human-only-act.js +1 -1
  31. package/dist/completion/machine-remediable-demotion.d.ts +28 -1
  32. package/dist/completion/machine-remediable-demotion.d.ts.map +1 -1
  33. package/dist/completion/machine-remediable-demotion.js +9 -6
  34. package/dist/completion/machine-remediable-demotion.js.map +1 -1
  35. package/dist/completion/read-only-pristine.d.ts.map +1 -1
  36. package/dist/completion/read-only-pristine.js +4 -0
  37. package/dist/completion/read-only-pristine.js.map +1 -1
  38. package/dist/completion/review-exit-deps.js +1 -1
  39. package/dist/completion/review-exit-deps.js.map +1 -1
  40. package/dist/completion/review-exit-escalations.d.ts +10 -0
  41. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  42. package/dist/completion/review-exit-escalations.js +38 -3
  43. package/dist/completion/review-exit-escalations.js.map +1 -1
  44. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  45. package/dist/completion/review-exit-phase.js +8 -7
  46. package/dist/completion/review-exit-phase.js.map +1 -1
  47. package/dist/completion/review-exit-shortfall.d.ts +5 -1
  48. package/dist/completion/review-exit-shortfall.d.ts.map +1 -1
  49. package/dist/completion/review-exit-shortfall.js +8 -3
  50. package/dist/completion/review-exit-shortfall.js.map +1 -1
  51. package/dist/completion/status-advance-phase.d.ts +2 -0
  52. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  53. package/dist/completion/status-advance-phase.js +2 -1
  54. package/dist/completion/status-advance-phase.js.map +1 -1
  55. package/dist/completion/terminated-work-reconcile.js +2 -2
  56. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  57. package/dist/delivery/delivery-advance-block.d.ts +3 -3
  58. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  59. package/dist/delivery/delivery-advance-block.js +13 -8
  60. package/dist/delivery/delivery-advance-block.js.map +1 -1
  61. package/dist/delivery/delivery-lifecycle.d.ts +10 -0
  62. package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
  63. package/dist/delivery/delivery-lifecycle.js +12 -6
  64. package/dist/delivery/delivery-lifecycle.js.map +1 -1
  65. package/dist/delivery/delivery-merge-ops.d.ts.map +1 -1
  66. package/dist/delivery/delivery-merge-ops.js +39 -21
  67. package/dist/delivery/delivery-merge-ops.js.map +1 -1
  68. package/dist/delivery/external-hold.d.ts +8 -2
  69. package/dist/delivery/external-hold.d.ts.map +1 -1
  70. package/dist/delivery/external-hold.js +12 -5
  71. package/dist/delivery/external-hold.js.map +1 -1
  72. package/dist/delivery/operator-hold.d.ts +6 -1
  73. package/dist/delivery/operator-hold.d.ts.map +1 -1
  74. package/dist/delivery/operator-hold.js +31 -10
  75. package/dist/delivery/operator-hold.js.map +1 -1
  76. package/dist/delivery/paused-revival.d.ts +6 -0
  77. package/dist/delivery/paused-revival.d.ts.map +1 -1
  78. package/dist/delivery/paused-revival.js +3 -1
  79. package/dist/delivery/paused-revival.js.map +1 -1
  80. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  81. package/dist/directive/directive-dispatch.js +6 -3
  82. package/dist/directive/directive-dispatch.js.map +1 -1
  83. package/dist/directive/directive-queue.d.ts.map +1 -1
  84. package/dist/directive/directive-queue.js +4 -1
  85. package/dist/directive/directive-queue.js.map +1 -1
  86. package/dist/drift/staleness-sensor.d.ts +14 -0
  87. package/dist/drift/staleness-sensor.d.ts.map +1 -1
  88. package/dist/drift/staleness-sensor.js +30 -1
  89. package/dist/drift/staleness-sensor.js.map +1 -1
  90. package/dist/focus/focus-executor.d.ts.map +1 -1
  91. package/dist/focus/focus-executor.js +6 -8
  92. package/dist/focus/focus-executor.js.map +1 -1
  93. package/dist/focus/focus-loop-registry.d.ts.map +1 -1
  94. package/dist/focus/focus-loop-registry.js +23 -13
  95. package/dist/focus/focus-loop-registry.js.map +1 -1
  96. package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
  97. package/dist/focus/focus-respawn-guard.js +21 -4
  98. package/dist/focus/focus-respawn-guard.js.map +1 -1
  99. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  100. package/dist/focus/listener-auto-advance.js +10 -6
  101. package/dist/focus/listener-auto-advance.js.map +1 -1
  102. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  103. package/dist/focus/verify-open-issues.js +21 -1
  104. package/dist/focus/verify-open-issues.js.map +1 -1
  105. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  106. package/dist/focus-stage-lifecycle/wedge-watchdog.js +35 -14
  107. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  108. package/dist/loops/index.d.ts.map +1 -1
  109. package/dist/loops/index.js +2 -1
  110. package/dist/loops/index.js.map +1 -1
  111. package/dist/merge/focus-merge.d.ts +1 -1
  112. package/dist/merge/focus-merge.d.ts.map +1 -1
  113. package/dist/merge/focus-merge.js +5 -1
  114. package/dist/merge/focus-merge.js.map +1 -1
  115. package/dist/merge/merge-back-loop.d.ts +2 -1
  116. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  117. package/dist/merge/merge-back-loop.js +15 -12
  118. package/dist/merge/merge-back-loop.js.map +1 -1
  119. package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
  120. package/dist/merge/merge-conflict-escalation.js +4 -0
  121. package/dist/merge/merge-conflict-escalation.js.map +1 -1
  122. package/dist/nexus/return.d.ts +14 -15
  123. package/dist/nexus/return.d.ts.map +1 -1
  124. package/dist/nexus/return.js +41 -31
  125. package/dist/nexus/return.js.map +1 -1
  126. package/dist/prompt-sections/execution-sections.d.ts +13 -5
  127. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  128. package/dist/prompt-sections/execution-sections.js +78 -18
  129. package/dist/prompt-sections/execution-sections.js.map +1 -1
  130. package/dist/prompt-sections/routing-decider-sections.d.ts +60 -0
  131. package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -0
  132. package/dist/prompt-sections/routing-decider-sections.js +197 -0
  133. package/dist/prompt-sections/routing-decider-sections.js.map +1 -0
  134. package/dist/queries/agent-resolvable-aging.d.ts +4 -3
  135. package/dist/queries/agent-resolvable-aging.d.ts.map +1 -1
  136. package/dist/queries/agent-resolvable-aging.js +5 -4
  137. package/dist/queries/agent-resolvable-aging.js.map +1 -1
  138. package/dist/queries/agent-resolvable-promotion.d.ts +172 -124
  139. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  140. package/dist/queries/agent-resolvable-promotion.js +332 -307
  141. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  142. package/dist/queries/agent-resolvable-retirement.d.ts +105 -0
  143. package/dist/queries/agent-resolvable-retirement.d.ts.map +1 -0
  144. package/dist/queries/agent-resolvable-retirement.js +227 -0
  145. package/dist/queries/agent-resolvable-retirement.js.map +1 -0
  146. package/dist/queries/cause-key.d.ts +109 -0
  147. package/dist/queries/cause-key.d.ts.map +1 -1
  148. package/dist/queries/cause-key.js +93 -1
  149. package/dist/queries/cause-key.js.map +1 -1
  150. package/dist/queries/deliveries.d.ts +14 -0
  151. package/dist/queries/deliveries.d.ts.map +1 -1
  152. package/dist/queries/deliveries.js +20 -2
  153. package/dist/queries/deliveries.js.map +1 -1
  154. package/dist/queries/delivery-gate-state.d.ts +130 -5
  155. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  156. package/dist/queries/delivery-gate-state.js +111 -2
  157. package/dist/queries/delivery-gate-state.js.map +1 -1
  158. package/dist/queries/escalation-consumption.d.ts +95 -15
  159. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  160. package/dist/queries/escalation-consumption.js +162 -24
  161. package/dist/queries/escalation-consumption.js.map +1 -1
  162. package/dist/queries/escalation-dispositions.d.ts +19 -7
  163. package/dist/queries/escalation-dispositions.d.ts.map +1 -1
  164. package/dist/queries/escalation-dispositions.js +7 -0
  165. package/dist/queries/escalation-dispositions.js.map +1 -1
  166. package/dist/queries/escalation-suppression.d.ts +63 -19
  167. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  168. package/dist/queries/escalation-suppression.js +64 -35
  169. package/dist/queries/escalation-suppression.js.map +1 -1
  170. package/dist/queries/escalations.d.ts +127 -70
  171. package/dist/queries/escalations.d.ts.map +1 -1
  172. package/dist/queries/escalations.js +170 -188
  173. package/dist/queries/escalations.js.map +1 -1
  174. package/dist/queries/filing-observation.d.ts +82 -0
  175. package/dist/queries/filing-observation.d.ts.map +1 -0
  176. package/dist/queries/filing-observation.js +157 -0
  177. package/dist/queries/filing-observation.js.map +1 -0
  178. package/dist/queries/holds.d.ts +69 -2
  179. package/dist/queries/holds.d.ts.map +1 -1
  180. package/dist/queries/holds.js +106 -11
  181. package/dist/queries/holds.js.map +1 -1
  182. package/dist/queries/incident-correlation.d.ts +291 -0
  183. package/dist/queries/incident-correlation.d.ts.map +1 -0
  184. package/dist/queries/incident-correlation.js +408 -0
  185. package/dist/queries/incident-correlation.js.map +1 -0
  186. package/dist/queries/routing-measurement.d.ts +48 -1
  187. package/dist/queries/routing-measurement.d.ts.map +1 -1
  188. package/dist/queries/routing-measurement.js +64 -2
  189. package/dist/queries/routing-measurement.js.map +1 -1
  190. package/dist/queries/routing-quality.d.ts +8 -0
  191. package/dist/queries/routing-quality.d.ts.map +1 -1
  192. package/dist/queries/routing-quality.js +12 -3
  193. package/dist/queries/routing-quality.js.map +1 -1
  194. package/dist/queries/shared.js +1 -1
  195. package/dist/shell/crash-recovery.d.ts.map +1 -1
  196. package/dist/shell/crash-recovery.js +6 -6
  197. package/dist/shell/crash-recovery.js.map +1 -1
  198. package/dist/shell/install-probe-tick.d.ts.map +1 -1
  199. package/dist/shell/install-probe-tick.js +3 -1
  200. package/dist/shell/install-probe-tick.js.map +1 -1
  201. package/dist/spawn/respawn-cycle-escalation.d.ts +10 -2
  202. package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
  203. package/dist/spawn/respawn-cycle-escalation.js +16 -2
  204. package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
  205. package/dist/spawn/routing-decider-spawn.d.ts +93 -0
  206. package/dist/spawn/routing-decider-spawn.d.ts.map +1 -0
  207. package/dist/spawn/routing-decider-spawn.js +185 -0
  208. package/dist/spawn/routing-decider-spawn.js.map +1 -0
  209. package/dist/spawn/routing-decider.d.ts +42 -0
  210. package/dist/spawn/routing-decider.d.ts.map +1 -0
  211. package/dist/spawn/routing-decider.js +95 -0
  212. package/dist/spawn/routing-decider.js.map +1 -0
  213. package/dist/spawn/shared.d.ts +8 -0
  214. package/dist/spawn/shared.d.ts.map +1 -1
  215. package/dist/spawn/shared.js +1 -1
  216. package/dist/spawn/shared.js.map +1 -1
  217. package/dist/spawn/spawn-decision.d.ts +23 -16
  218. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  219. package/dist/spawn/spawn-decision.js +27 -11
  220. package/dist/spawn/spawn-decision.js.map +1 -1
  221. package/dist/spawn/worktree-session.d.ts +19 -7
  222. package/dist/spawn/worktree-session.d.ts.map +1 -1
  223. package/dist/spawn/worktree-session.js +36 -8
  224. package/dist/spawn/worktree-session.js.map +1 -1
  225. package/dist/testing/fixtures/index.js +1 -1
  226. package/dist/types/index.js +1 -1
  227. package/dist/verify/failure-signature.d.ts +91 -0
  228. package/dist/verify/failure-signature.d.ts.map +1 -0
  229. package/dist/verify/failure-signature.js +233 -0
  230. package/dist/verify/failure-signature.js.map +1 -0
  231. package/dist/verify/shortfall-repeat.d.ts +12 -9
  232. package/dist/verify/shortfall-repeat.d.ts.map +1 -1
  233. package/dist/verify/shortfall-repeat.js +38 -14
  234. package/dist/verify/shortfall-repeat.js.map +1 -1
  235. package/dist/verify/stall-detectors.d.ts +19 -43
  236. package/dist/verify/stall-detectors.d.ts.map +1 -1
  237. package/dist/verify/stall-detectors.js +26 -101
  238. package/dist/verify/stall-detectors.js.map +1 -1
  239. package/dist/verify/unreviewed-settle-detector.d.ts +8 -0
  240. package/dist/verify/unreviewed-settle-detector.d.ts.map +1 -1
  241. package/dist/verify/unreviewed-settle-detector.js +15 -1
  242. package/dist/verify/unreviewed-settle-detector.js.map +1 -1
  243. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  244. package/dist/verify/verification-deps-default.js +14 -2
  245. package/dist/verify/verification-deps-default.js.map +1 -1
  246. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  247. package/dist/verify/verification-evidence-unavailable-feedback.js +8 -2
  248. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  249. package/dist/verify/verification-feedback.d.ts +62 -14
  250. package/dist/verify/verification-feedback.d.ts.map +1 -1
  251. package/dist/verify/verification-feedback.js +101 -28
  252. package/dist/verify/verification-feedback.js.map +1 -1
  253. package/dist/verify/verify-gate-stall.d.ts +116 -0
  254. package/dist/verify/verify-gate-stall.d.ts.map +1 -0
  255. package/dist/verify/verify-gate-stall.js +169 -0
  256. package/dist/verify/verify-gate-stall.js.map +1 -0
  257. package/dist/verify/verify-restatement.d.ts.map +1 -1
  258. package/dist/verify/verify-restatement.js +2 -1
  259. package/dist/verify/verify-restatement.js.map +1 -1
  260. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"agent-resolvable-promotion.js","sourceRoot":"","sources":["../../src/queries/agent-resolvable-promotion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-resolvable-promotion.js","sourceRoot":"","sources":["../../src/queries/agent-resolvable-promotion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { type CallApiDeps } from './shared.js';
2
+ import type { AgentResolvableItem } from './escalation-consumption.js';
3
+ /** What the promotion knows about a LIVE candidate focus. */
4
+ export interface PromotionFocusSnapshot {
5
+ /** The focus title (acts name work by title, never by UUID). */
6
+ name: string;
7
+ /** Whether the focus has an assigned agent role (focusMayRunTeam). */
8
+ armed: boolean;
9
+ }
10
+ /** The retired-focus read's verdict; `focus` is present when the focus is live and was found. */
11
+ export interface FocusRetirementVerdict {
12
+ retire: boolean;
13
+ reason: string;
14
+ focus?: PromotionFocusSnapshot;
15
+ }
16
+ type FocusRetiredFn = (focusId: string, ctx: {
17
+ organizationId: string;
18
+ productId?: string;
19
+ }) => Promise<FocusRetirementVerdict>;
20
+ /** The retirement slice both promotion paths share (injected; tests stub it). */
21
+ export interface FocusRetirementDeps {
22
+ /** Whether the candidate's focus has retired (converged / complete / cancelled). */
23
+ focusRetired?: FocusRetiredFn;
24
+ /** Retire a stale candidate on a retired focus: resolve auto_swept. */
25
+ retireSwept?: (id: string, notes?: string) => Promise<void>;
26
+ /** Whether this cause_key was already retired auto_swept on the focus (the cycle guard). */
27
+ priorRetirementOfCause?: (causeKey: string, focusId: string, excludeId: string) => Promise<boolean>;
28
+ }
29
+ /** The retired-focus check's outcome for one candidate. */
30
+ export type RetirementOutcome = {
31
+ kind: 'retired';
32
+ } | {
33
+ kind: 'outlives';
34
+ reason: string;
35
+ } | {
36
+ kind: 'live';
37
+ focus?: PromotionFocusSnapshot;
38
+ };
39
+ /**
40
+ * escalation_kind values whose condition lives on a branch, the integration line
41
+ * or the host, so it outlives the focus that filed it. Daemon-local literals: the
42
+ * kind constants live in merge/, ci/ and drift/ modules this query leaf must not
43
+ * import (they import the query layer). Keep in sync with STUCK_FOCUS_BRANCH_KIND,
44
+ * CD_PUSH_FAILED_KIND, CI_RUN_RED_ESCALATION_KIND, MERGE_CONFLICT_ESCALATION_KIND,
45
+ * MERGE_REFUSED_DIRTY_ESCALATION_KIND and PROPAGATION_STALE_ESCALATION_KIND.
46
+ */
47
+ export declare const OUTLIVES_FOCUS_KINDS: ReadonlySet<string>;
48
+ /** Pure: the branch a filing's metadata names, or null. */
49
+ export declare function branchOfFiling(metadata: Record<string, unknown> | undefined): string | null;
50
+ /** Pure: whether a filing's condition outlives its focus (see the module RULE). */
51
+ export declare function conditionOutlivesFocus(item: Pick<AgentResolvableItem, 'escalationKind' | 'metadata'>): boolean;
52
+ /**
53
+ * Whether a candidate's focus has RETIRED -- converged (every delivery done or
54
+ * cancelled) or no longer active (absent from the org's active-focus set). A live
55
+ * focus's verdict carries its title + arm state. Fail-quiet: any read error
56
+ * returns not-retired with no snapshot, so a transient DB blip never wrongly
57
+ * retires a live candidate (it promotes as before).
58
+ */
59
+ export declare function defaultFocusRetired(focusId: string, ctx: {
60
+ organizationId: string;
61
+ productId?: string;
62
+ }): Promise<FocusRetirementVerdict>;
63
+ /** Retire a candidate whose focus has converged/terminated: resolve auto_swept. */
64
+ export declare function defaultRetireSwept(id: string, notes?: string): Promise<void>;
65
+ /** Resolved rows scanned per focus for the cycle guard (bounded; newest first). */
66
+ export declare const RETIREMENT_MEMORY_SCAN_LIMIT = 200;
67
+ /**
68
+ * Whether an escalation carrying `causeKey` was already resolved auto_swept on the
69
+ * focus (excluding the candidate itself). Only consulted for a candidate the guard
70
+ * is about to retire, so it runs at most once per retire decision. THROWS on a
71
+ * hard API error; the caller fails toward retiring (the prior behaviour).
72
+ */
73
+ export declare function defaultPriorRetirementOfCause(causeKey: string, focusId: string, excludeId: string, deps?: CallApiDeps): Promise<boolean>;
74
+ /**
75
+ * Pure wrapper: memoize the retired-focus read per focusId for ONE promotion pass,
76
+ * so a sweep over many candidates on the same focus reads that focus once.
77
+ */
78
+ export declare function memoizeFocusRetired(fn: FocusRetiredFn | undefined): FocusRetiredFn | undefined;
79
+ /**
80
+ * READ-ONLY sibling of checkFocusRetirement for a candidate still within the age
81
+ * bound: it learns the focus's state (arm state, retired or not) without retiring
82
+ * anything. 'outlives' (a retired focus + an outliving condition) is handed to a
83
+ * routing decider at once; a focus-scoped condition on a retired focus reads
84
+ * 'awaiting_retirement' (retired by checkFocusRetirement once over-age); otherwise
85
+ * 'live'. Best-effort: a failed read is 'live' with no snapshot.
86
+ */
87
+ export declare function peekFocusRetirement(d: FocusRetirementDeps, item: Pick<AgentResolvableItem, 'id' | 'escalationKind' | 'metadata'>, focusId: string, ctx: {
88
+ organizationId: string;
89
+ productId?: string;
90
+ }): Promise<RetirementOutcome | {
91
+ kind: 'awaiting_retirement';
92
+ }>;
93
+ /**
94
+ * Decide a candidate's retired-focus outcome (see the module RULE): 'retired'
95
+ * (resolved auto_swept here; the caller skips it), 'outlives' (its focus retired
96
+ * but the condition outlives it; the caller hands it to a routing decider), or
97
+ * 'live' (hand off / ride as usual, carrying the focus snapshot when known).
98
+ * Best-effort: a failed read or a failed retire falls through to 'live'.
99
+ */
100
+ export declare function checkFocusRetirement(d: FocusRetirementDeps, item: Pick<AgentResolvableItem, 'id' | 'escalationKind' | 'metadata'>, focusId: string | null | undefined, ctx: {
101
+ organizationId: string;
102
+ productId?: string;
103
+ }): Promise<RetirementOutcome>;
104
+ export {};
105
+ //# sourceMappingURL=agent-resolvable-retirement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-resolvable-retirement.d.ts","sourceRoot":"","sources":["../../src/queries/agent-resolvable-retirement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/queries/agent-resolvable-retired-focus.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * The retired-focus guard of the agent_resolvable routing hand-off, and what the
6
+ * guard learns about a live focus on the way.
7
+ *
8
+ * Before handing a candidate to a routing decider, both paths
9
+ * (agent-resolvable-promotion.ts) ask whether its focus has RETIRED -- converged
10
+ * (every delivery done or cancelled) or no longer active (complete/cancelled). A
11
+ * candidate describing the focus's own finished work is stale: it is retired
12
+ * auto_swept (2026-09-09: escalation 9465a40e surfaced onto a focus closed for hours).
13
+ *
14
+ * RULE (which conditions are retired, and which are not):
15
+ *
16
+ * - A condition that OUTLIVES the focus is HANDED TO A ROUTING DECIDER, never
17
+ * retired. It outlives the focus when it lives on a branch, the integration
18
+ * line, or the host rather than in the focus's own work: its kind is in
19
+ * OUTLIVES_FOCUS_KINDS, or its metadata names a branch (BRANCH_METADATA_KEYS).
20
+ * A converged focus does not clear a stuck, conflicted or dirty focus branch,
21
+ * a red integration CI run, a failed CD push, or a stale daemon; retiring one
22
+ * swallows a live condition, and its detector (which a resolved row does not
23
+ * suppress) re-files it on the next tick -- a file -> retire -> re-file cycle
24
+ * minting a fresh row per tick.
25
+ * - Only a FOCUS-SCOPED condition is retired.
26
+ * - Cycle guard for a misclassified kind: a focus-scoped candidate whose
27
+ * cause_key was already retired auto_swept on the same focus has been
28
+ * re-observed after the focus retired, which is itself evidence the condition
29
+ * outlives the focus -- it is handed off too. A cause is retired at most once.
30
+ * The observation stays OPEN (suppressing its detector) until a decider acts; a
31
+ * decider's human-facing filing carries the source's cause key as
32
+ * metadata.original_cause_key (telora_agent escalate sourceCauseKey), which
33
+ * escalation-suppression matches, so the detector stays silent while it is open.
34
+ *
35
+ * The retirement read already fetches the org's active focuses, so a LIVE
36
+ * verdict carries the focus's title and arm state (PromotionFocusSnapshot), which
37
+ * the hand-off uses (an un-armed focus is unreachable) and hands to the decider.
38
+ */
39
+ import { DELIVERY_STATUS } from '@telora/daemon-core';
40
+ import { markEscalationResolved as defaultMarkEscalationResolved } from './escalations.js';
41
+ import { getFocusDeliveries as defaultGetFocusDeliveries } from './focuses.js';
42
+ import { getActiveFocuses as defaultGetActiveFocuses } from './focus-discovery.js';
43
+ import { callApi } from './shared.js';
44
+ import { focusMayRunTeam } from '../spawn/null-role-spawn.js';
45
+ import { createLogger } from '../shell/log.js';
46
+ const log = createLogger({ module: 'escalations' });
47
+ /**
48
+ * escalation_kind values whose condition lives on a branch, the integration line
49
+ * or the host, so it outlives the focus that filed it. Daemon-local literals: the
50
+ * kind constants live in merge/, ci/ and drift/ modules this query leaf must not
51
+ * import (they import the query layer). Keep in sync with STUCK_FOCUS_BRANCH_KIND,
52
+ * CD_PUSH_FAILED_KIND, CI_RUN_RED_ESCALATION_KIND, MERGE_CONFLICT_ESCALATION_KIND,
53
+ * MERGE_REFUSED_DIRTY_ESCALATION_KIND and PROPAGATION_STALE_ESCALATION_KIND.
54
+ */
55
+ export const OUTLIVES_FOCUS_KINDS = new Set([
56
+ 'stuck_focus_branch',
57
+ 'cd_push_failed',
58
+ 'ci_run_red',
59
+ 'merge_conflict',
60
+ 'merge_refused_dirty',
61
+ 'propagation_stale',
62
+ ]);
63
+ /**
64
+ * Metadata keys a branch-anchored filing stamps: stuck_focus_branch branch_name,
65
+ * ci_run_red branch, cd_push_failed integration_branch. A filing of any kind that
66
+ * names a branch here outlives its focus.
67
+ */
68
+ const BRANCH_METADATA_KEYS = ['branch_name', 'branch', 'integration_branch'];
69
+ /** Pure: the branch a filing's metadata names, or null. */
70
+ export function branchOfFiling(metadata) {
71
+ if (!metadata)
72
+ return null;
73
+ for (const key of BRANCH_METADATA_KEYS) {
74
+ const value = metadata[key];
75
+ if (typeof value === 'string' && value.trim().length > 0)
76
+ return value.trim();
77
+ }
78
+ return null;
79
+ }
80
+ /** Pure: whether a filing's condition outlives its focus (see the module RULE). */
81
+ export function conditionOutlivesFocus(item) {
82
+ if (item.escalationKind !== null && OUTLIVES_FOCUS_KINDS.has(item.escalationKind))
83
+ return true;
84
+ return branchOfFiling(item.metadata) !== null;
85
+ }
86
+ /**
87
+ * Whether a candidate's focus has RETIRED -- converged (every delivery done or
88
+ * cancelled) or no longer active (absent from the org's active-focus set). A live
89
+ * focus's verdict carries its title + arm state. Fail-quiet: any read error
90
+ * returns not-retired with no snapshot, so a transient DB blip never wrongly
91
+ * retires a live candidate (it promotes as before).
92
+ */
93
+ export async function defaultFocusRetired(focusId, ctx) {
94
+ try {
95
+ const dels = await defaultGetFocusDeliveries(focusId);
96
+ if (dels.length > 0 &&
97
+ dels.every(x => x.executionStatus === DELIVERY_STATUS.DONE || x.executionStatus === DELIVERY_STATUS.CANCELLED)) {
98
+ return { retire: true, reason: 'focus converged -- all deliveries done/cancelled' };
99
+ }
100
+ const active = await defaultGetActiveFocuses(ctx.organizationId, ctx.productId);
101
+ const live = active.find(f => f.focus_id === focusId);
102
+ if (!live) {
103
+ return { retire: true, reason: 'focus is not active (complete/cancelled)' };
104
+ }
105
+ return {
106
+ retire: false,
107
+ reason: '',
108
+ focus: { name: live.focus_name, armed: focusMayRunTeam(live.assigned_agent_role_id) },
109
+ };
110
+ }
111
+ catch {
112
+ // Fail-quiet: do not retire on a read error (promote as before).
113
+ }
114
+ return { retire: false, reason: '' };
115
+ }
116
+ /** Retire a candidate whose focus has converged/terminated: resolve auto_swept. */
117
+ export function defaultRetireSwept(id, notes) {
118
+ const resolutionClass = 'auto_swept';
119
+ return defaultMarkEscalationResolved(id, resolutionClass, notes);
120
+ }
121
+ /** Resolved rows scanned per focus for the cycle guard (bounded; newest first). */
122
+ export const RETIREMENT_MEMORY_SCAN_LIMIT = 200;
123
+ /**
124
+ * Whether an escalation carrying `causeKey` was already resolved auto_swept on the
125
+ * focus (excluding the candidate itself). Only consulted for a candidate the guard
126
+ * is about to retire, so it runs at most once per retire decision. THROWS on a
127
+ * hard API error; the caller fails toward retiring (the prior behaviour).
128
+ */
129
+ export async function defaultPriorRetirementOfCause(causeKey, focusId, excludeId, deps = {}) {
130
+ const call = deps.callApi ?? callApi;
131
+ const result = await call('escalation_list', {
132
+ fields: { statuses: ['resolved'], focusId },
133
+ limit: RETIREMENT_MEMORY_SCAN_LIMIT,
134
+ detail: 'full',
135
+ });
136
+ return (result.escalations ?? []).some((e) => e.id !== excludeId && e.resolutionClass === 'auto_swept' && e.metadata?.cause_key === causeKey);
137
+ }
138
+ /**
139
+ * Pure wrapper: memoize the retired-focus read per focusId for ONE promotion pass,
140
+ * so a sweep over many candidates on the same focus reads that focus once.
141
+ */
142
+ export function memoizeFocusRetired(fn) {
143
+ if (!fn)
144
+ return undefined;
145
+ const cache = new Map();
146
+ return (focusId, ctx) => {
147
+ let verdict = cache.get(focusId);
148
+ if (!verdict) {
149
+ verdict = fn(focusId, ctx);
150
+ cache.set(focusId, verdict);
151
+ }
152
+ return verdict;
153
+ };
154
+ }
155
+ async function causeRetiredBefore(d, item, focusId) {
156
+ const causeKey = item.metadata?.cause_key;
157
+ if (typeof causeKey !== 'string' || !d.priorRetirementOfCause)
158
+ return false;
159
+ try {
160
+ return await d.priorRetirementOfCause(causeKey, focusId, item.id);
161
+ }
162
+ catch (err) {
163
+ log.warn(`[escalations] prior-retirement read failed for ${item.id} (focus ${focusId}): ${err.message}`);
164
+ return false;
165
+ }
166
+ }
167
+ /**
168
+ * READ-ONLY sibling of checkFocusRetirement for a candidate still within the age
169
+ * bound: it learns the focus's state (arm state, retired or not) without retiring
170
+ * anything. 'outlives' (a retired focus + an outliving condition) is handed to a
171
+ * routing decider at once; a focus-scoped condition on a retired focus reads
172
+ * 'awaiting_retirement' (retired by checkFocusRetirement once over-age); otherwise
173
+ * 'live'. Best-effort: a failed read is 'live' with no snapshot.
174
+ */
175
+ export async function peekFocusRetirement(d, item, focusId, ctx) {
176
+ if (!d.focusRetired)
177
+ return { kind: 'live' };
178
+ let verdict;
179
+ try {
180
+ verdict = await d.focusRetired(focusId, ctx);
181
+ }
182
+ catch (err) {
183
+ log.warn(`[escalations] focusRetired read failed for ${item.id} (focus ${focusId}): ${err.message}`);
184
+ return { kind: 'live' };
185
+ }
186
+ if (!verdict.retire)
187
+ return verdict.focus ? { kind: 'live', focus: verdict.focus } : { kind: 'live' };
188
+ return conditionOutlivesFocus(item) ? { kind: 'outlives', reason: verdict.reason } : { kind: 'awaiting_retirement' };
189
+ }
190
+ /**
191
+ * Decide a candidate's retired-focus outcome (see the module RULE): 'retired'
192
+ * (resolved auto_swept here; the caller skips it), 'outlives' (its focus retired
193
+ * but the condition outlives it; the caller hands it to a routing decider), or
194
+ * 'live' (hand off / ride as usual, carrying the focus snapshot when known).
195
+ * Best-effort: a failed read or a failed retire falls through to 'live'.
196
+ */
197
+ export async function checkFocusRetirement(d, item, focusId, ctx) {
198
+ if (!focusId || !d.focusRetired)
199
+ return { kind: 'live' };
200
+ let verdict;
201
+ try {
202
+ verdict = await d.focusRetired(focusId, ctx);
203
+ }
204
+ catch (err) {
205
+ log.warn(`[escalations] focusRetired check failed for ${item.id} (focus ${focusId}): ${err.message}`);
206
+ return { kind: 'live' };
207
+ }
208
+ if (!verdict.retire)
209
+ return verdict.focus ? { kind: 'live', focus: verdict.focus } : { kind: 'live' };
210
+ if (conditionOutlivesFocus(item))
211
+ return { kind: 'outlives', reason: verdict.reason };
212
+ if (await causeRetiredBefore(d, item, focusId)) {
213
+ return { kind: 'outlives', reason: `${verdict.reason}; the same cause re-filed after an earlier retirement` };
214
+ }
215
+ if (!d.retireSwept)
216
+ return { kind: 'live' };
217
+ try {
218
+ await d.retireSwept(item.id, `Focus retired (${verdict.reason}); this agent_resolvable filing is stale -- auto-swept, not promoted.`);
219
+ log.info(`[escalations] Retired (NOT promoted) agent_resolvable ${item.id}: ${verdict.reason} (focus ${focusId}).`);
220
+ return { kind: 'retired' };
221
+ }
222
+ catch (err) {
223
+ log.warn(`[escalations] Failed to retire agent_resolvable ${item.id} for retired focus ${focusId}: ${err.message}`);
224
+ return { kind: 'live' };
225
+ }
226
+ }
227
+ //# sourceMappingURL=agent-resolvable-retirement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-resolvable-retirement.js","sourceRoot":"","sources":["../../src/queries/agent-resolvable-retirement.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@
20
20
  * - stuck_focus_branch / wedged_focus (stuck/wedged detectors) -> focusId + blockage kind
21
21
  * - team_failure (team-exit filings) -> focusId + session-exit marker
22
22
  */
23
+ import type { HumanAct } from './filing-observation.js';
23
24
  /** A subject is a flat bag of identifying strings (nullable/undefined dropped). */
24
25
  export type CauseKeySubject = Record<string, string | null | undefined>;
25
26
  /**
@@ -71,4 +72,112 @@ export declare function teamExitCauseKey(focusId: string, sessionExit: string):
71
72
  * stops the signal (auto-resolved).
72
73
  */
73
74
  export declare function daemonStalenessCauseKey(running: string, newest: string): string;
75
+ /** The execution anchor an observation is about. First present wins: delivery -> focus -> branch. */
76
+ export interface IncidentAnchor {
77
+ deliveryId?: string | null;
78
+ focusId?: string | null;
79
+ branch?: string | null;
80
+ /**
81
+ * Qualifies a BRANCH-only anchor. Delivery and focus ids are globally unique
82
+ * UUIDs, but a branch name is not: a multi-product daemon runs several products
83
+ * that each have an `integration` branch, and two products' red CI must not
84
+ * collapse into one incident. Ignored when a delivery or focus anchor is present.
85
+ */
86
+ productId?: string | null;
87
+ }
88
+ /**
89
+ * Escalation kinds that are INBOUND NOTIFICATIONS, not blocks observed of an
90
+ * execution anchor: they tell a human something happened elsewhere (a Nexus
91
+ * request they filed was resolved/declined; another product asks them a
92
+ * question) rather than reporting a symptom of a root cause in this anchor's
93
+ * execution. They never join an incident -- grouping a "your dependency is now
94
+ * clear" notice with the verify stall on the same focus would bury the stall
95
+ * under a non-problem.
96
+ */
97
+ export declare const INBOUND_NOTIFICATION_KINDS: ReadonlySet<string>;
98
+ /**
99
+ * The cross-detector incident key for an observation's execution anchor (PURE).
100
+ *
101
+ * Precedence: the first present of deliveryId -> focusId -> branch wins, so a
102
+ * delivery-scoped observation groups at the delivery (the tightest anchor), a
103
+ * focus-scoped one at the focus, and a branch-only one (a ci_run_red whose owning
104
+ * focus could not be determined) at the branch, qualified by productId when
105
+ * supplied. Stable strings:
106
+ * incident::delivery=<id>
107
+ * incident::focus=<id>
108
+ * incident::branch=<name> (no productId)
109
+ * incident::branch=<name>|product=<id> (productId supplied)
110
+ * Returns null when there is no anchor at all (nothing to correlate on), and
111
+ * when `kind` is an INBOUND_NOTIFICATION_KINDS member (not a block).
112
+ */
113
+ export declare function incidentKey(anchor: IncidentAnchor, kind?: string | null): string | null;
114
+ /**
115
+ * One detector's observation carried on an incident row (metadata.symptoms[]).
116
+ * snake_case: it is persisted verbatim into the agent_escalations.metadata JSONB.
117
+ */
118
+ export interface IncidentSymptom {
119
+ /** The observing detector's own cause key (its idempotency identity). */
120
+ cause_key: string;
121
+ /** The observing filing's escalation_kind (null for an untyped filing). */
122
+ escalation_kind: string | null;
123
+ /** One-line human-readable head of the observation (e.g. the description's first line). */
124
+ head: string;
125
+ /** ISO-8601 timestamp of the observation. */
126
+ observed_at: string;
127
+ /**
128
+ * The act a human-facing filing named (its metadata.human_act). Present only when
129
+ * the attached filing's metadata carried one. The daemon chokepoint never writes
130
+ * metadata.human_act (a detector's act travels as observation.proposed_human_act),
131
+ * and an agent's human-facing MCP filing does not pass the incident reducer, so
132
+ * only historic rows carry it. Readers validate it (queries/filing-observation.ts readHumanAct).
133
+ */
134
+ human_act?: {
135
+ kind: string;
136
+ act: string;
137
+ };
138
+ /**
139
+ * The disposition an OBSERVATION's detector proposed (its
140
+ * metadata.observation.proposed_disposition). Present only on an observation, so
141
+ * an operator-hold proposal survives being attached to another row (queries/holds.ts).
142
+ */
143
+ proposed_disposition?: string;
144
+ /**
145
+ * The human act an OBSERVATION's detector proposed (its
146
+ * metadata.observation.proposed_human_act), act text capped at
147
+ * INCIDENT_SYMPTOM_ACT_MAX. Present only on an observation that named one, so every
148
+ * detector's proposal survives its filing being absorbed into another row and the
149
+ * routing decider weighs them all -- a PROPOSAL, never a route. Rows written before
150
+ * the field lack it; readers narrow it (queries/filing-observation.ts readHumanAct).
151
+ */
152
+ proposed_human_act?: HumanAct;
153
+ }
154
+ /**
155
+ * Upper bound on metadata.symptoms. One incident is one root cause; the detector
156
+ * families that can observe one anchor number about a dozen, so 20 holds every
157
+ * distinct detector with headroom while keeping the row's metadata small (well
158
+ * under the escalation_update metadata-patch cap).
159
+ */
160
+ export declare const INCIDENT_SYMPTOM_CAP = 20;
161
+ /**
162
+ * Cap on a symptom's proposed_human_act.act. The attach write sends the whole
163
+ * symptoms list as ONE escalation_update metadata patch (16384 serialized chars
164
+ * server-side); a full symptom is ~500 chars before its act, so INCIDENT_SYMPTOM_CAP
165
+ * symptoms each carrying an act fit only if the act is bounded like the head (200).
166
+ * The opening filing's full act stays on the row's own metadata.observation.
167
+ */
168
+ export declare const INCIDENT_SYMPTOM_ACT_MAX = 200;
169
+ /** Pure: whether an unknown JSONB entry is a well-formed IncidentSymptom. */
170
+ export declare function isIncidentSymptom(value: unknown): value is IncidentSymptom;
171
+ /**
172
+ * Append a symptom to an incident's existing metadata.symptoms (PURE).
173
+ *
174
+ * `existing` is whatever the row carries (unknown JSONB): a non-array yields a
175
+ * fresh list and malformed entries are dropped, so a legacy / hand-edited row
176
+ * never blocks an attach. De-dupes by cause_key: a re-observation of the same
177
+ * detector's cause REPLACES its earlier entry and moves to the end, so the list
178
+ * reads oldest-first and every cause_key appears at most once. Bounded to
179
+ * INCIDENT_SYMPTOM_CAP by dropping the OLDEST entries (the newest observation is
180
+ * always kept). Never mutates its input.
181
+ */
182
+ export declare function appendSymptom(existing: unknown, symptom: IncidentSymptom): IncidentSymptom[];
74
183
  //# sourceMappingURL=cause-key.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cause-key.d.ts","sourceRoot":"","sources":["../../src/queries/cause-key.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAM9E;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/E"}
1
+ {"version":3,"file":"cause-key.d.ts","sourceRoot":"","sources":["../../src/queries/cause-key.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAM9E;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/E;AAaD,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAGzD,CAAC;AAQH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAWvF;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,QAAQ,CAAC;CAC/B;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAS1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,eAAe,EAAE,CAK5F"}
@@ -3,7 +3,8 @@
3
3
  // packages/daemon/src/drift/staleness-sensor.test.ts, packages/daemon/src/merge/merge-back-loop.test.ts,
4
4
  // packages/daemon/src/queries/escalation-cause-key.test.ts,
5
5
  // packages/daemon/src/queries/escalation-noise-regressions.test.ts,
6
- // packages/daemon/src/verify/stall-detectors.test.ts
6
+ // packages/daemon/src/queries/incident-correlation.test.ts,
7
+ // packages/daemon/src/queries/incident-key.test.ts, packages/daemon/src/verify/stall-detectors.test.ts
7
8
  // PINNED-BY-END
8
9
  /**
9
10
  * Compute a deterministic cause key from a kind + subject bag.
@@ -71,4 +72,95 @@ export function teamExitCauseKey(focusId, sessionExit) {
71
72
  export function daemonStalenessCauseKey(running, newest) {
72
73
  return computeCauseKey('propagation_stale', { running, newest });
73
74
  }
75
+ /**
76
+ * Escalation kinds that are INBOUND NOTIFICATIONS, not blocks observed of an
77
+ * execution anchor: they tell a human something happened elsewhere (a Nexus
78
+ * request they filed was resolved/declined; another product asks them a
79
+ * question) rather than reporting a symptom of a root cause in this anchor's
80
+ * execution. They never join an incident -- grouping a "your dependency is now
81
+ * clear" notice with the verify stall on the same focus would bury the stall
82
+ * under a non-problem.
83
+ */
84
+ export const INBOUND_NOTIFICATION_KINDS = new Set([
85
+ 'nexus_request_resolved',
86
+ 'nexus_clarification_requested',
87
+ ]);
88
+ function presentAnchorValue(value) {
89
+ if (typeof value !== 'string')
90
+ return null;
91
+ const trimmed = value.trim();
92
+ return trimmed === '' ? null : trimmed;
93
+ }
94
+ /**
95
+ * The cross-detector incident key for an observation's execution anchor (PURE).
96
+ *
97
+ * Precedence: the first present of deliveryId -> focusId -> branch wins, so a
98
+ * delivery-scoped observation groups at the delivery (the tightest anchor), a
99
+ * focus-scoped one at the focus, and a branch-only one (a ci_run_red whose owning
100
+ * focus could not be determined) at the branch, qualified by productId when
101
+ * supplied. Stable strings:
102
+ * incident::delivery=<id>
103
+ * incident::focus=<id>
104
+ * incident::branch=<name> (no productId)
105
+ * incident::branch=<name>|product=<id> (productId supplied)
106
+ * Returns null when there is no anchor at all (nothing to correlate on), and
107
+ * when `kind` is an INBOUND_NOTIFICATION_KINDS member (not a block).
108
+ */
109
+ export function incidentKey(anchor, kind) {
110
+ if (kind && INBOUND_NOTIFICATION_KINDS.has(kind))
111
+ return null;
112
+ const deliveryId = presentAnchorValue(anchor.deliveryId);
113
+ if (deliveryId)
114
+ return computeCauseKey('incident', { delivery: deliveryId });
115
+ const focusId = presentAnchorValue(anchor.focusId);
116
+ if (focusId)
117
+ return computeCauseKey('incident', { focus: focusId });
118
+ const branch = presentAnchorValue(anchor.branch);
119
+ if (branch) {
120
+ return computeCauseKey('incident', { branch, product: presentAnchorValue(anchor.productId) });
121
+ }
122
+ return null;
123
+ }
124
+ /**
125
+ * Upper bound on metadata.symptoms. One incident is one root cause; the detector
126
+ * families that can observe one anchor number about a dozen, so 20 holds every
127
+ * distinct detector with headroom while keeping the row's metadata small (well
128
+ * under the escalation_update metadata-patch cap).
129
+ */
130
+ export const INCIDENT_SYMPTOM_CAP = 20;
131
+ /**
132
+ * Cap on a symptom's proposed_human_act.act. The attach write sends the whole
133
+ * symptoms list as ONE escalation_update metadata patch (16384 serialized chars
134
+ * server-side); a full symptom is ~500 chars before its act, so INCIDENT_SYMPTOM_CAP
135
+ * symptoms each carrying an act fit only if the act is bounded like the head (200).
136
+ * The opening filing's full act stays on the row's own metadata.observation.
137
+ */
138
+ export const INCIDENT_SYMPTOM_ACT_MAX = 200;
139
+ /** Pure: whether an unknown JSONB entry is a well-formed IncidentSymptom. */
140
+ export function isIncidentSymptom(value) {
141
+ if (!value || typeof value !== 'object' || Array.isArray(value))
142
+ return false;
143
+ const v = value;
144
+ return (typeof v.cause_key === 'string' && v.cause_key !== '' &&
145
+ (v.escalation_kind === null || typeof v.escalation_kind === 'string') &&
146
+ typeof v.head === 'string' &&
147
+ typeof v.observed_at === 'string');
148
+ }
149
+ /**
150
+ * Append a symptom to an incident's existing metadata.symptoms (PURE).
151
+ *
152
+ * `existing` is whatever the row carries (unknown JSONB): a non-array yields a
153
+ * fresh list and malformed entries are dropped, so a legacy / hand-edited row
154
+ * never blocks an attach. De-dupes by cause_key: a re-observation of the same
155
+ * detector's cause REPLACES its earlier entry and moves to the end, so the list
156
+ * reads oldest-first and every cause_key appears at most once. Bounded to
157
+ * INCIDENT_SYMPTOM_CAP by dropping the OLDEST entries (the newest observation is
158
+ * always kept). Never mutates its input.
159
+ */
160
+ export function appendSymptom(existing, symptom) {
161
+ const prior = Array.isArray(existing) ? existing.filter(isIncidentSymptom) : [];
162
+ const next = prior.filter((s) => s.cause_key !== symptom.cause_key);
163
+ next.push({ ...symptom });
164
+ return next.length > INCIDENT_SYMPTOM_CAP ? next.slice(next.length - INCIDENT_SYMPTOM_CAP) : next;
165
+ }
74
166
  //# sourceMappingURL=cause-key.js.map