@telora/daemon 0.22.208 → 0.22.227

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 (248) hide show
  1. package/build-info.json +4 -3
  2. package/dist/backends/index.d.ts.map +1 -1
  3. package/dist/backends/index.js +3 -1
  4. package/dist/backends/index.js.map +1 -1
  5. package/dist/completion/advancement-stall-watchdog.d.ts.map +1 -1
  6. package/dist/completion/advancement-stall-watchdog.js +6 -2
  7. package/dist/completion/advancement-stall-watchdog.js.map +1 -1
  8. package/dist/completion/completion-decision.d.ts +10 -1
  9. package/dist/completion/completion-decision.d.ts.map +1 -1
  10. package/dist/completion/completion-decision.js +1 -1
  11. package/dist/completion/completion-decision.js.map +1 -1
  12. package/dist/completion/delivery-advancement-guard.d.ts +31 -16
  13. package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
  14. package/dist/completion/delivery-advancement-guard.js +22 -37
  15. package/dist/completion/delivery-advancement-guard.js.map +1 -1
  16. package/dist/completion/detector.d.ts.map +1 -1
  17. package/dist/completion/detector.js +3 -1
  18. package/dist/completion/detector.js.map +1 -1
  19. package/dist/completion/event-phases.d.ts +19 -8
  20. package/dist/completion/event-phases.d.ts.map +1 -1
  21. package/dist/completion/event-phases.js +67 -88
  22. package/dist/completion/event-phases.js.map +1 -1
  23. package/dist/completion/event.d.ts +12 -9
  24. package/dist/completion/event.d.ts.map +1 -1
  25. package/dist/completion/event.js +6 -3
  26. package/dist/completion/event.js.map +1 -1
  27. package/dist/completion/index.js +1 -1
  28. package/dist/completion/progress-snapshot.d.ts +13 -9
  29. package/dist/completion/progress-snapshot.d.ts.map +1 -1
  30. package/dist/completion/progress-snapshot.js +16 -13
  31. package/dist/completion/progress-snapshot.js.map +1 -1
  32. package/dist/completion/reengagement-redrive.d.ts +8 -1
  33. package/dist/completion/reengagement-redrive.d.ts.map +1 -1
  34. package/dist/completion/reengagement-redrive.js +16 -2
  35. package/dist/completion/reengagement-redrive.js.map +1 -1
  36. package/dist/completion/review-defect-detector.d.ts +58 -18
  37. package/dist/completion/review-defect-detector.d.ts.map +1 -1
  38. package/dist/completion/review-defect-detector.js +62 -27
  39. package/dist/completion/review-defect-detector.js.map +1 -1
  40. package/dist/completion/review-exit-attribution.d.ts +6 -3
  41. package/dist/completion/review-exit-attribution.d.ts.map +1 -1
  42. package/dist/completion/review-exit-attribution.js +9 -7
  43. package/dist/completion/review-exit-attribution.js.map +1 -1
  44. package/dist/completion/review-exit-deps.d.ts +2 -0
  45. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  46. package/dist/completion/review-exit-deps.js +3 -0
  47. package/dist/completion/review-exit-deps.js.map +1 -1
  48. package/dist/completion/review-exit-evidence.d.ts +8 -0
  49. package/dist/completion/review-exit-evidence.d.ts.map +1 -1
  50. package/dist/completion/review-exit-evidence.js +39 -27
  51. package/dist/completion/review-exit-evidence.js.map +1 -1
  52. package/dist/completion/review-exit-foreign-findings.d.ts +5 -1
  53. package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -1
  54. package/dist/completion/review-exit-foreign-findings.js +4 -4
  55. package/dist/completion/review-exit-foreign-findings.js.map +1 -1
  56. package/dist/completion/review-exit-phase.js +4 -4
  57. package/dist/completion/review-exit-phase.js.map +1 -1
  58. package/dist/completion/state-cascade.d.ts.map +1 -1
  59. package/dist/completion/state-cascade.js +11 -19
  60. package/dist/completion/state-cascade.js.map +1 -1
  61. package/dist/completion/team-progress-measure.d.ts +70 -0
  62. package/dist/completion/team-progress-measure.d.ts.map +1 -0
  63. package/dist/completion/team-progress-measure.js +285 -0
  64. package/dist/completion/team-progress-measure.js.map +1 -0
  65. package/dist/completion/team-stillness.d.ts +76 -0
  66. package/dist/completion/team-stillness.d.ts.map +1 -0
  67. package/dist/completion/team-stillness.js +96 -0
  68. package/dist/completion/team-stillness.js.map +1 -0
  69. package/dist/completion/worker-wait.d.ts +84 -0
  70. package/dist/completion/worker-wait.d.ts.map +1 -0
  71. package/dist/completion/worker-wait.js +89 -0
  72. package/dist/completion/worker-wait.js.map +1 -0
  73. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  74. package/dist/delivery/delivery-advance-block.js +1 -2
  75. package/dist/delivery/delivery-advance-block.js.map +1 -1
  76. package/dist/delivery/delivery-reconciler.d.ts +3 -3
  77. package/dist/focus/focus-lifecycle.d.ts.map +1 -1
  78. package/dist/focus/focus-lifecycle.js +7 -1
  79. package/dist/focus/focus-lifecycle.js.map +1 -1
  80. package/dist/focus/focus-team-state.js +1 -1
  81. package/dist/focus/focus-worktree-state.d.ts.map +1 -1
  82. package/dist/focus/focus-worktree-state.js +2 -1
  83. package/dist/focus/focus-worktree-state.js.map +1 -1
  84. package/dist/git/focus-integration-sync.d.ts +42 -4
  85. package/dist/git/focus-integration-sync.d.ts.map +1 -1
  86. package/dist/git/focus-integration-sync.js +53 -9
  87. package/dist/git/focus-integration-sync.js.map +1 -1
  88. package/dist/git/types.d.ts.map +1 -1
  89. package/dist/git/types.js +4 -2
  90. package/dist/git/types.js.map +1 -1
  91. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  92. package/dist/merge/merge-back-loop.js +0 -1
  93. package/dist/merge/merge-back-loop.js.map +1 -1
  94. package/dist/prompt-sections/persona-sections.d.ts +14 -0
  95. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  96. package/dist/prompt-sections/persona-sections.js +50 -19
  97. package/dist/prompt-sections/persona-sections.js.map +1 -1
  98. package/dist/prompt-sections/testing-standard.d.ts +4 -1
  99. package/dist/prompt-sections/testing-standard.d.ts.map +1 -1
  100. package/dist/prompt-sections/testing-standard.js +14 -4
  101. package/dist/prompt-sections/testing-standard.js.map +1 -1
  102. package/dist/queries/deliveries.d.ts.map +1 -1
  103. package/dist/queries/deliveries.js +3 -1
  104. package/dist/queries/deliveries.js.map +1 -1
  105. package/dist/queries/delivery-gate-state.js +1 -1
  106. package/dist/queries/escalation-suppression.js +1 -1
  107. package/dist/queries/escalations.js +1 -1
  108. package/dist/queries/focus-integration-conflict.d.ts +7 -4
  109. package/dist/queries/focus-integration-conflict.d.ts.map +1 -1
  110. package/dist/queries/focus-integration-conflict.js +6 -3
  111. package/dist/queries/focus-integration-conflict.js.map +1 -1
  112. package/dist/queries/review-finding-facts.d.ts +38 -0
  113. package/dist/queries/review-finding-facts.d.ts.map +1 -0
  114. package/dist/queries/review-finding-facts.js +43 -0
  115. package/dist/queries/review-finding-facts.js.map +1 -0
  116. package/dist/queries/schemas.d.ts +15 -0
  117. package/dist/queries/schemas.d.ts.map +1 -1
  118. package/dist/queries/schemas.js +12 -1
  119. package/dist/queries/schemas.js.map +1 -1
  120. package/dist/queries/shortfall-park-record.d.ts +6 -1
  121. package/dist/queries/shortfall-park-record.d.ts.map +1 -1
  122. package/dist/queries/shortfall-park-record.js.map +1 -1
  123. package/dist/queries/shortfall-rulings.d.ts +14 -2
  124. package/dist/queries/shortfall-rulings.d.ts.map +1 -1
  125. package/dist/queries/shortfall-rulings.js +17 -3
  126. package/dist/queries/shortfall-rulings.js.map +1 -1
  127. package/dist/queries/verification.js +1 -1
  128. package/dist/queries/verify-own-holds.d.ts.map +1 -1
  129. package/dist/queries/verify-own-holds.js +1 -0
  130. package/dist/queries/verify-own-holds.js.map +1 -1
  131. package/dist/spawn/helpers.d.ts.map +1 -1
  132. package/dist/spawn/helpers.js +9 -1
  133. package/dist/spawn/helpers.js.map +1 -1
  134. package/dist/spawn/lead-continuation.d.ts +10 -2
  135. package/dist/spawn/lead-continuation.d.ts.map +1 -1
  136. package/dist/spawn/lead-continuation.js +39 -22
  137. package/dist/spawn/lead-continuation.js.map +1 -1
  138. package/dist/spawn/one-shot-model.d.ts.map +1 -1
  139. package/dist/spawn/one-shot-model.js +1 -0
  140. package/dist/spawn/one-shot-model.js.map +1 -1
  141. package/dist/spawn/worktree-session.d.ts.map +1 -1
  142. package/dist/spawn/worktree-session.js +11 -1
  143. package/dist/spawn/worktree-session.js.map +1 -1
  144. package/dist/testing/fixtures/conflicting-repo.d.ts +17 -0
  145. package/dist/testing/fixtures/conflicting-repo.d.ts.map +1 -1
  146. package/dist/testing/fixtures/conflicting-repo.js +31 -0
  147. package/dist/testing/fixtures/conflicting-repo.js.map +1 -1
  148. package/dist/testing/fixtures/index.d.ts.map +1 -1
  149. package/dist/testing/fixtures/index.js +1 -2
  150. package/dist/testing/fixtures/index.js.map +1 -1
  151. package/dist/types/focus.d.ts +59 -26
  152. package/dist/types/focus.d.ts.map +1 -1
  153. package/dist/types/index.js +1 -1
  154. package/dist/verify/commit-verdict-pull.d.ts +28 -3
  155. package/dist/verify/commit-verdict-pull.d.ts.map +1 -1
  156. package/dist/verify/commit-verdict-pull.js +160 -23
  157. package/dist/verify/commit-verdict-pull.js.map +1 -1
  158. package/dist/verify/credit-rearm.d.ts.map +1 -1
  159. package/dist/verify/credit-rearm.js +72 -17
  160. package/dist/verify/credit-rearm.js.map +1 -1
  161. package/dist/verify/default-on-guards.d.ts +54 -8
  162. package/dist/verify/default-on-guards.d.ts.map +1 -1
  163. package/dist/verify/default-on-guards.js +132 -17
  164. package/dist/verify/default-on-guards.js.map +1 -1
  165. package/dist/verify/explicit-rearm.d.ts.map +1 -1
  166. package/dist/verify/explicit-rearm.js +1 -0
  167. package/dist/verify/explicit-rearm.js.map +1 -1
  168. package/dist/verify/explicit-row-selection.d.ts +47 -0
  169. package/dist/verify/explicit-row-selection.d.ts.map +1 -0
  170. package/dist/verify/explicit-row-selection.js +37 -0
  171. package/dist/verify/explicit-row-selection.js.map +1 -0
  172. package/dist/verify/gate-run-registry.d.ts.map +1 -1
  173. package/dist/verify/gate-run-registry.js +2 -0
  174. package/dist/verify/gate-run-registry.js.map +1 -1
  175. package/dist/verify/parked-shortfall-reuse.d.ts +194 -0
  176. package/dist/verify/parked-shortfall-reuse.d.ts.map +1 -0
  177. package/dist/verify/parked-shortfall-reuse.js +310 -0
  178. package/dist/verify/parked-shortfall-reuse.js.map +1 -0
  179. package/dist/verify/reselection-log.d.ts +22 -0
  180. package/dist/verify/reselection-log.d.ts.map +1 -0
  181. package/dist/verify/reselection-log.js +87 -0
  182. package/dist/verify/reselection-log.js.map +1 -0
  183. package/dist/verify/shortfall-park.d.ts +8 -1
  184. package/dist/verify/shortfall-park.d.ts.map +1 -1
  185. package/dist/verify/shortfall-park.js +17 -3
  186. package/dist/verify/shortfall-park.js.map +1 -1
  187. package/dist/verify/shortfall-repeat.d.ts.map +1 -1
  188. package/dist/verify/shortfall-repeat.js +7 -2
  189. package/dist/verify/shortfall-repeat.js.map +1 -1
  190. package/dist/verify/shortfall-rulings.d.ts +93 -6
  191. package/dist/verify/shortfall-rulings.d.ts.map +1 -1
  192. package/dist/verify/shortfall-rulings.js +69 -12
  193. package/dist/verify/shortfall-rulings.js.map +1 -1
  194. package/dist/verify/stall-detector-config.d.ts.map +1 -1
  195. package/dist/verify/stall-detector-config.js +2 -1
  196. package/dist/verify/stall-detector-config.js.map +1 -1
  197. package/dist/verify/stall-detectors.d.ts +6 -4
  198. package/dist/verify/stall-detectors.d.ts.map +1 -1
  199. package/dist/verify/stall-detectors.js +9 -6
  200. package/dist/verify/stall-detectors.js.map +1 -1
  201. package/dist/verify/stalled-team-backstop.d.ts +8 -2
  202. package/dist/verify/stalled-team-backstop.d.ts.map +1 -1
  203. package/dist/verify/stalled-team-backstop.js +15 -11
  204. package/dist/verify/stalled-team-backstop.js.map +1 -1
  205. package/dist/verify/team-stall-reapers.d.ts +28 -0
  206. package/dist/verify/team-stall-reapers.d.ts.map +1 -0
  207. package/dist/verify/team-stall-reapers.js +23 -0
  208. package/dist/verify/team-stall-reapers.js.map +1 -0
  209. package/dist/verify/verification-attribution-deps.d.ts +1 -1
  210. package/dist/verify/verification-attribution-deps.d.ts.map +1 -1
  211. package/dist/verify/verification-attribution-deps.js +20 -1
  212. package/dist/verify/verification-attribution-deps.js.map +1 -1
  213. package/dist/verify/verification-boundary-env.d.ts.map +1 -1
  214. package/dist/verify/verification-boundary-env.js +23 -9
  215. package/dist/verify/verification-boundary-env.js.map +1 -1
  216. package/dist/verify/verification-checkout.d.ts +1 -1
  217. package/dist/verify/verification-checkout.d.ts.map +1 -1
  218. package/dist/verify/verification-checkout.js.map +1 -1
  219. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  220. package/dist/verify/verification-commit-sharing.js +14 -3
  221. package/dist/verify/verification-commit-sharing.js.map +1 -1
  222. package/dist/verify/verification-config.d.ts.map +1 -1
  223. package/dist/verify/verification-config.js +1 -20
  224. package/dist/verify/verification-config.js.map +1 -1
  225. package/dist/verify/verification-default-on.d.ts +4 -1
  226. package/dist/verify/verification-default-on.d.ts.map +1 -1
  227. package/dist/verify/verification-default-on.js +29 -2
  228. package/dist/verify/verification-default-on.js.map +1 -1
  229. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  230. package/dist/verify/verification-deps-default.js +13 -0
  231. package/dist/verify/verification-deps-default.js.map +1 -1
  232. package/dist/verify/verification-deps.d.ts +38 -0
  233. package/dist/verify/verification-deps.d.ts.map +1 -1
  234. package/dist/verify/verification-deps.js +2 -1
  235. package/dist/verify/verification-deps.js.map +1 -1
  236. package/dist/verify/verification-engine.d.ts.map +1 -1
  237. package/dist/verify/verification-engine.js +44 -15
  238. package/dist/verify/verification-engine.js.map +1 -1
  239. package/dist/verify/verification-feedback.d.ts.map +1 -1
  240. package/dist/verify/verification-feedback.js +1 -19
  241. package/dist/verify/verification-feedback.js.map +1 -1
  242. package/dist/verify/verify-restatement.d.ts.map +1 -1
  243. package/dist/verify/verify-restatement.js +5 -1
  244. package/dist/verify/verify-restatement.js.map +1 -1
  245. package/dist/worktree/provision.d.ts.map +1 -1
  246. package/dist/worktree/provision.js +3 -1
  247. package/dist/worktree/provision.js.map +1 -1
  248. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Verify honors OPERATOR SHORTFALL RULINGS: a node an operator ruled MET or
3
- * EXCUSED on a delivery (queries/shortfall-rulings.ts) no longer holds its verify
4
- * gate, and a ruling recorded since a shortfall park is a change verify re-judges.
2
+ * Verify honors SHORTFALL RULINGS: a node ruled MET or EXCUSED on a delivery
3
+ * (queries/shortfall-rulings.ts) no longer holds its verify gate, and a ruling
4
+ * recorded since a shortfall park is a change verify re-judges.
5
5
  *
6
6
  * Why: before rulings were read, an operator's "these nodes are met, re-verify"
7
7
  * lived only in an escalation's resolution notes. The next verify pass re-judged
@@ -9,6 +9,33 @@
9
9
  * repeating shortfall (verify/shortfall-park.ts) stayed parked: nothing but a new
10
10
  * commit re-armed its verify.
11
11
  *
12
+ * TWO SOURCES OF A RULING, one read. The edge (`daemon_get_delivery_shortfall_-
13
+ * rulings`) returns the union of:
14
+ * - an OPERATOR row on `delivery_shortfall_rulings` (`ruledByKind` = the
15
+ * recording credential's kind, `user` / `ai_tracker`), and
16
+ * - a node verdict of the focus's latest APPROVING focus_review
17
+ * (`ruledByKind: 'review'`, `focusReviewId` naming the review row).
18
+ * An OPERATOR ruling on a node WINS -- the edge emits a review verdict only for
19
+ * a node no operator ruled -- so nothing here has to break a tie. A `not_met`
20
+ * verdict rules NOTHING and never reaches this module: a node review called
21
+ * not_met and verify judges short is the two channels AGREEING, and the gate
22
+ * holding it is correct.
23
+ *
24
+ * Why this module treats both identically: the review verdict is the SAME
25
+ * judgement an operator was transcribing by hand. On 2026-09-24 a review excused
26
+ * a node at 01:13Z; verify failed the delivery on that node 41 times over three
27
+ * and a half hours, bouncing it verify -> verify_failed -> coding to iteration 17
28
+ * -- each cycle spawning a coding team with nothing to change -- until a human
29
+ * recorded the ruling the review had already rendered. The only asymmetry kept is
30
+ * in the RECORD: `withRulingEvidence` names which source ruled, so the injection
31
+ * evidence says whether a human recorded it or a review ruled it, and which
32
+ * review.
33
+ *
34
+ * A review-sourced ruling feeds the same FINGERPRINT (its id is
35
+ * `review:<focusReviewId>:<nodeId>` -- stable across re-reads, new per approving
36
+ * review), so `withShortfallRulingRearm` re-judges a park exactly once when a
37
+ * review lands, by the same mechanism a recorded row uses.
38
+ *
12
39
  * APPLYING rulings (applyShortfallRulings, called by the verification engine
13
40
  * between the reconciliation and the shortfall routing):
14
41
  * - MET: the node counts as achieved. It leaves the shortfall set and joins the
@@ -51,6 +78,52 @@
51
78
  * the edge nulls, so daemon_get_pending_verifications lists a parked explicit row
52
79
  * again every tick and its next dispatch applies the rulings.
53
80
  *
81
+ * WHAT ELSE MAY RE-SELECT A PARKED DELIVERY AT AN UNCHANGED HEAD: nothing but a
82
+ * new commit, and this re-arm. That claim stood in this header before it was
83
+ * true. On 2026-09-24 delivery 8ae80225 sat parked at an unchanged focus HEAD and
84
+ * was re-dispatched every ~60s for ~30 ticks: the run-mark prune ran once per
85
+ * PRODUCT over guards keyed by delivery id alone, so a sibling product's scan
86
+ * wiped this one's marks every tick (verify/default-on-guards.ts, which now
87
+ * scopes the prune, carries the incident and the fix). Reading a rule here that
88
+ * the code did not keep is what made the log look impossible rather than merely
89
+ * undiagnosed, so the rule is now pinned from two sides: the prune is scoped, and
90
+ * EVERY path that re-selects a delivery in verify writes one line naming itself
91
+ * (verify/reselection-log.ts, whose exported path union a test enumerates -- this
92
+ * module's re-arm logs 'ruling-rearm'). And the cost of any re-dispatch that does
93
+ * reach a parked delivery is now bounded independently: a dispatch whose park
94
+ * matches the current commit set and rulings fingerprint reuses the parked
95
+ * shortfall and makes NO model call (verify/parked-shortfall-reuse.ts), so a
96
+ * ruling landing here is what re-judges it -- once -- rather than every tick
97
+ * paying a ~28s reconciliation to re-derive a shortfall the park already records.
98
+ *
99
+ * THE CLOSED LIST, stated once and pinned through the real tick composition
100
+ * (verification-default-on.test.ts, commit-verdict-pull.test.ts). Of the eight
101
+ * declared re-selection paths, a parked delivery at an unchanged HEAD is
102
+ * re-selected by exactly two, and both ARE the rule: 'ruling-rearm' (this
103
+ * module -- a new ruling) and a genuinely new commit, which reaches it as
104
+ * 'credit-rearm' (a commit credited to THIS delivery; a sibling's credit does
105
+ * not re-arm it) or as a changed commit set at dispatch. Three paths CANNOT fire
106
+ * on a parked delivery: 'run-mark-prune' (a parked delivery is in verify, and a
107
+ * partial scan prunes nothing), 'run-mark-release' (not a path of its own -- the
108
+ * silent fallback when a caller names itself) and 'pending-relisting' (which
109
+ * drops a parked explicit row, verify/explicit-row-selection.ts, and writes
110
+ * its re-selection line once per dispatch that routes a verdict). The remaining
111
+ * three DECLINE while the park's facts are unchanged, each saying so in its own
112
+ * line: 'checkout-unavailable-unmark', 'model-unavailable-unmark'
113
+ * (verify/default-on-guards.ts noteDefaultOnResult) and 'commit-verdict-pull'
114
+ * (verify/commit-verdict-pull.ts).
115
+ *
116
+ * NONE OF THE THREE CAN WEDGE, and each reason is a STATE, not an exemption. A
117
+ * model-unavailable hold that landed on gate_state refuses the park
118
+ * ('awaiting-model'), so the retry proceeds; the decline fires only where a real
119
+ * judgement on these same facts still stands. The pull declines only where this
120
+ * process judged the held commit itself AND the release pass's own read finds
121
+ * that commit's verdict 'passed' -- a park is written only after the gate passed
122
+ * there, but the record write is best-effort, so the park alone does not prove
123
+ * the verdict persisted -- and a commit it already pulled for is pulled again
124
+ * while that read stays 'pending' (verify/commit-verdict-pull.ts). And every
125
+ * UNKNOWN fact re-selects.
126
+ *
54
127
  * @module verify/shortfall-rulings
55
128
  */
56
129
  import type { getFocusDeliveries } from '../queries/focuses.js';
@@ -59,8 +132,12 @@ import type { PendingVerification } from '../queries/verification.js';
59
132
  import type { TargetRestatement, TargetShortfall } from './verify-restatement.js';
60
133
  /** Read a delivery's active shortfall rulings (queries/shortfall-rulings.ts getDeliveryShortfallRulings). */
61
134
  export type ShortfallRulingsReader = (deliveryId: string) => Promise<DeliveryShortfallRulings>;
62
- /** A ruling that cleared one of this judgement's shortfalls. */
63
- export type HonoredRuling = Pick<ShortfallRuling, 'nodeId' | 'verdict' | 'rationale'>;
135
+ /**
136
+ * A ruling that cleared one of this judgement's shortfalls, carrying WHO ruled:
137
+ * a reader of the injection evidence or the log must be able to tell an operator
138
+ * row from a review verdict without a second query.
139
+ */
140
+ export type HonoredRuling = Pick<ShortfallRuling, 'nodeId' | 'verdict' | 'rationale' | 'ruledByKind' | 'ruledSessionId' | 'focusReviewId'>;
64
141
  /** A reconciliation with the delivery's rulings applied. */
65
142
  export interface RuledReconciliation {
66
143
  restatements: TargetRestatement[];
@@ -81,7 +158,17 @@ export declare function applyShortfallRulings(v: Pick<PendingVerification, 'deli
81
158
  restatements: readonly TargetRestatement[];
82
159
  shortfalls: readonly TargetShortfall[];
83
160
  }, read: ShortfallRulingsReader | undefined): Promise<RuledReconciliation>;
84
- /** The injection evidence with the honored rulings appended (unchanged when none were honored). Pure. */
161
+ /**
162
+ * The injection evidence with the honored rulings appended, each NAMING ITS
163
+ * SOURCE -- an operator row by the credential kind that recorded it, a review
164
+ * verdict by the focus_review that ruled and the session that rendered it.
165
+ * Unchanged when none were honored. Pure.
166
+ *
167
+ * Why the source is in the evidence: this note is the only durable place a
168
+ * `match` carried by a ruling can state its reason (the injection edge persists a
169
+ * reason only on a legitimate_divergence), so "who lowered the bar on this node"
170
+ * has to be legible there or it is legible nowhere.
171
+ */
85
172
  export declare function withRulingEvidence(evidence: string, honored: readonly HonoredRuling[]): string;
86
173
  /** The delivery fields the re-arm reads. */
87
174
  type ParkedCandidate = Pick<Awaited<ReturnType<typeof getFocusDeliveries>>[number], 'id' | 'name' | 'executionStatus' | 'gateState' | 'verificationMethod'>;
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-rulings.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQlF,6GAA6G;AAC7G,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAE/F,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC;AAEtF,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,mEAAmE;IACnE,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,iHAAiH;IACjH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iGAAiG;IACjG,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iEAAiE;IACjE,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,cAAc,CAAC,EAC3D,UAAU,EAAE;IAAE,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,EAClG,IAAI,EAAE,sBAAsB,GAAG,SAAS,GACvC,OAAO,CAAC,mBAAmB,CAAC,CA0C9B;AAED,yGAAyG;AACzG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAK9F;AAMD,4CAA4C;AAC5C,KAAK,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,iBAAiB,GAAG,WAAW,GAAG,oBAAoB,CAAC,CAAC;AAK5J;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBnB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAAC,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAS/J;AAED,wDAAwD;AACxD,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D"}
1
+ {"version":3,"file":"shortfall-rulings.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+HG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AASlF,6GAA6G;AAC7G,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,eAAe,EACf,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,GAAG,eAAe,CACxF,CAAC;AAOF,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,mEAAmE;IACnE,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,iHAAiH;IACjH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iGAAiG;IACjG,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iEAAiE;IACjE,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,cAAc,CAAC,EAC3D,UAAU,EAAE;IAAE,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,EAClG,IAAI,EAAE,sBAAsB,GAAG,SAAS,GACvC,OAAO,CAAC,mBAAmB,CAAC,CAuD9B;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAK9F;AAMD,4CAA4C;AAC5C,KAAK,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,iBAAiB,GAAG,WAAW,GAAG,oBAAoB,CAAC,CAAC;AAoB5J;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BnB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAAC,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAS/J;AAED,wDAAwD;AACxD,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D"}
@@ -1,14 +1,21 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/integration/held-route-pull-dispatch.test.ts,
3
+ // packages/daemon/src/integration/review-verdict-ruling-release.test.ts,
3
4
  // packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
4
5
  // packages/daemon/src/integration/shortfall-ruling-release.test.ts,
5
- // packages/daemon/src/verify/shortfall-rulings.test.ts
6
+ // packages/daemon/src/verify/reselection-log.test.ts, packages/daemon/src/verify/shortfall-rulings.test.ts,
7
+ // packages/daemon/src/verify/verification-default-on.test.ts
6
8
  // PINNED-BY-END
7
9
  import { isShortfallParkReleased, shortfallParkRefusingRework } from './shortfall-park.js';
8
10
  import { releaseDefaultOnMark } from './default-on-guards.js';
11
+ import { logReselection } from './reselection-log.js';
9
12
  import { isGateRunSelected } from './gate-run-registry.js';
10
13
  import { createLogger } from '../shell/log.js';
11
14
  const log = createLogger({ module: 'verification' });
15
+ /** Is this ruling a review verdict rather than a recorded operator row? */
16
+ function isReviewSourced(h) {
17
+ return h.ruledByKind === 'review' || (typeof h.focusReviewId === 'string' && h.focusReviewId !== '');
18
+ }
12
19
  /**
13
20
  * Apply the delivery's active rulings to this judgement's reconciliation (see the
14
21
  * module header). Never throws: a failed read applies nothing.
@@ -40,7 +47,14 @@ export async function applyShortfallRulings(v, reconciled, read) {
40
47
  ruled.shortfalls.push(s);
41
48
  continue;
42
49
  }
43
- ruled.honored.push({ nodeId: s.nodeId, verdict: ruling.verdict, rationale: ruling.rationale });
50
+ ruled.honored.push({
51
+ nodeId: s.nodeId,
52
+ verdict: ruling.verdict,
53
+ rationale: ruling.rationale,
54
+ ruledByKind: ruling.ruledByKind,
55
+ ruledSessionId: ruling.ruledSessionId,
56
+ focusReviewId: ruling.focusReviewId ?? null,
57
+ });
44
58
  if (ruling.verdict === 'met') {
45
59
  ruled.restatements.push({ nodeId: s.nodeId, statement: s.declaredStatement, classification: 'match', originalClaim: s.declaredStatement });
46
60
  }
@@ -49,22 +63,62 @@ export async function applyShortfallRulings(v, reconciled, read) {
49
63
  }
50
64
  }
51
65
  if (ruled.honored.length > 0) {
52
- log.info(`[verification] delivery "${v.deliveryName}" (${v.deliveryId}): operator rulings cleared ${ruled.honored.length} `
53
- + `shortfall node(s) -- ${ruled.honored.map((h) => `${h.nodeId} ${h.verdict}`).join(', ')}; `
66
+ const reviewCount = ruled.honored.filter(isReviewSourced).length;
67
+ const sources = reviewCount === 0
68
+ ? 'operator rulings'
69
+ : reviewCount === ruled.honored.length
70
+ ? 'approving-review verdicts'
71
+ : `rulings (${ruled.honored.length - reviewCount} operator, ${reviewCount} review-sourced)`;
72
+ log.info(`[verification] delivery "${v.deliveryName}" (${v.deliveryId}): ${sources} cleared ${ruled.honored.length} `
73
+ + `shortfall node(s) -- ${ruled.honored.map((h) => `${h.nodeId} ${h.verdict} (${rulingSourceLabel(h)})`).join(', ')}; `
54
74
  + `${ruled.shortfalls.length} shortfall(s) still hold`);
55
75
  }
56
76
  return ruled;
57
77
  }
58
- /** The injection evidence with the honored rulings appended (unchanged when none were honored). Pure. */
78
+ /** How one honored ruling names its source, in a log line or a line of evidence. */
79
+ function rulingSourceLabel(h) {
80
+ if (!isReviewSourced(h))
81
+ return `operator ruling, ${h.ruledByKind}`;
82
+ const session = h.ruledSessionId !== null ? `, review session ${h.ruledSessionId}` : '';
83
+ return `approving review ${h.focusReviewId ?? 'unknown'}${session}`;
84
+ }
85
+ /**
86
+ * The injection evidence with the honored rulings appended, each NAMING ITS
87
+ * SOURCE -- an operator row by the credential kind that recorded it, a review
88
+ * verdict by the focus_review that ruled and the session that rendered it.
89
+ * Unchanged when none were honored. Pure.
90
+ *
91
+ * Why the source is in the evidence: this note is the only durable place a
92
+ * `match` carried by a ruling can state its reason (the injection edge persists a
93
+ * reason only on a legitimate_divergence), so "who lowered the bar on this node"
94
+ * has to be legible there or it is legible nowhere.
95
+ */
59
96
  export function withRulingEvidence(evidence, honored) {
60
97
  if (honored.length === 0)
61
98
  return evidence;
62
- const lines = honored.map((h) => `- node ${h.nodeId} ruled ${h.verdict}: ${h.rationale}`);
63
- const note = `Operator shortfall rulings honored:\n${lines.join('\n')}`;
99
+ const lines = honored.map((h) => `- node ${h.nodeId} ruled ${h.verdict} by ${rulingSourceLabel(h)}: ${h.rationale}`);
100
+ const note = `Shortfall rulings honored:\n${lines.join('\n')}`;
64
101
  return evidence.trim() === '' ? note : `${evidence}\n${note}`;
65
102
  }
66
103
  /** The rulings fingerprint each delivery was last re-armed on in this process. */
67
104
  const rearmedOn = new Map();
105
+ /**
106
+ * What CHANGED, worded by what the reader actually knows. The re-arm decides on a
107
+ * fingerprint, which says only "the ruling set differs"; it must not claim "an
108
+ * operator ruling was recorded" when the change was a review verdict landing, or
109
+ * a revocation removing one. So the wording is derived from the rulings the read
110
+ * returned, and says the neutral thing when they name nothing.
111
+ */
112
+ function describeRulingSources(rulings) {
113
+ if (rulings.length === 0)
114
+ return 'the rulings on it changed';
115
+ const review = rulings.filter((r) => r.ruledByKind === 'review').length;
116
+ if (review === 0)
117
+ return 'an operator ruling was recorded';
118
+ if (review === rulings.length)
119
+ return "an approving review's verdict ruled its nodes";
120
+ return 'an operator ruling and an approving review verdict are in force';
121
+ }
68
122
  /**
69
123
  * For each delivery in verify carrying a shortfall park, drop its default-on run
70
124
  * mark when its rulings release the park and it was not already re-armed on that
@@ -78,21 +132,24 @@ export async function rearmRuledShortfallParks(deliveries, read) {
78
132
  continue;
79
133
  if (isGateRunSelected(d.id))
80
134
  continue;
81
- let fingerprint;
135
+ let read_;
82
136
  try {
83
- fingerprint = (await read(d.id)).fingerprint;
137
+ read_ = await read(d.id);
84
138
  }
85
139
  catch (err) {
86
140
  log.warn(`[verification] shortfall rulings for parked delivery "${d.name}" (${d.id}) could not be read -- its park is not re-judged this tick: ${err.message}`);
87
141
  continue;
88
142
  }
143
+ const fingerprint = read_.fingerprint;
89
144
  if (!isShortfallParkReleased(park, { commitSet: null, rulingsFingerprint: fingerprint }) || rearmedOn.get(d.id) === fingerprint)
90
145
  continue;
91
146
  rearmedOn.set(d.id, fingerprint);
92
- releaseDefaultOnMark(d.id);
147
+ // Named path, so releaseDefaultOnMark stays silent and this richer line
148
+ // stands alone (verify/reselection-log.ts: one line per re-selection).
149
+ releaseDefaultOnMark(d.id, 'ruling-rearm');
93
150
  rearmed.push(d.id);
94
- log.info(`[verification] default-on: re-arming parked delivery "${d.name}" (${d.id}) at the unchanged focus HEAD -- `
95
- + `an operator ruling was recorded since its park (nodes ${park.nodeIds.join(', ')}); verify re-judges it`);
151
+ logReselection('ruling-rearm', d.id, `parked delivery "${d.name}" re-armed at the unchanged focus HEAD -- `
152
+ + `${describeRulingSources(read_.rulings)} since its park (nodes ${park.nodeIds.join(', ')}); verify re-judges it`);
96
153
  }
97
154
  return rearmed;
98
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-rulings.js","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shortfall-rulings.js","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAmCA,uEAAuE;AACvE,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wFAAwF;AACxF,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AASD,wEAAwE;AACxE,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,kFAAkF;AAClF,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,IAAI,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,IAAI,MAAM,CAE9D;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,4FAA4F;AAC5F,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,IAAI,MAAM,CAE1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
1
+ {"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAoCA,uEAAuE;AACvE,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wFAAwF;AACxF,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AASD,wEAAwE;AACxE,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,kFAAkF;AAClF,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,IAAI,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,IAAI,MAAM,CAE9D;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,4FAA4F;AAC5F,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,IAAI,MAAM,CAE1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
@@ -1,5 +1,6 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: packages/daemon/src/focus/listener-auto-advance-teamless-wedge.test.ts
2
+ // Pinned by: packages/daemon/src/completion/stall-guard-time-floor.test.ts,
3
+ // packages/daemon/src/focus/listener-auto-advance-teamless-wedge.test.ts
3
4
  // PINNED-BY-END
4
5
  /**
5
6
  * Single in-daemon source for the stall-detector thresholds.
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,oFAAoF;AACpF,gBAAgB;AAEhB;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,GAAuB,EAAE,QAAgB;IAC9D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC,kCAAkC,CAAC;AAC5D,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,6BAA6B;IAC3C,OAAO,aAAa,EAAE,CAAC,gCAAgC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,aAAa,EAAE,CAAC,uBAAuB,CAAC;AACjD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,EAAE,CAAC,4BAA4B,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,2BAA2B;AAE3B,wEAAwE;AACxE,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kCAAkC;IAChD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qCAAqC;IACnD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iCAAiC;IAC/C,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,4EAA4E;AAC5E,2EAA2E;AAC3E,gBAAgB;AAEhB;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,GAAuB,EAAE,QAAgB;IAC9D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC,kCAAkC,CAAC;AAC5D,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,6BAA6B;IAC3C,OAAO,aAAa,EAAE,CAAC,gCAAgC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,aAAa,EAAE,CAAC,uBAAuB,CAAC;AACjD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,EAAE,CAAC,4BAA4B,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,2BAA2B;AAE3B,wEAAwE;AACxE,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kCAAkC;IAChD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qCAAqC;IACnD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iCAAiC;IAC/C,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -199,10 +199,12 @@ export declare function decideReviewWindowClose(reviewRequestedAt: string | null
199
199
  export declare function checkReviewWindowStaleForFocus(ctx: FocusStallContext, reviewRequestedAt: string | null, deps?: ReviewWindowDeps): Promise<void>;
200
200
  export interface IdleTeamStallDeps {
201
201
  /**
202
- * The team's per-team last-activity epoch ms, or null when nothing has been
203
- * recorded yet (a team still initializing before its first agent event).
202
+ * When the team last showed progress by the ONE progress measure -- its last
203
+ * agent event, or the last measured movement of its diff, HEAD, issues or
204
+ * delivery statuses (completion/team-stillness.ts) -- or null when nothing has
205
+ * been recorded yet (a team still initializing before its first agent event).
204
206
  */
205
- getLastActivityAt: (focusId: string) => number | null;
207
+ getLastProgressAt: (focusId: string) => number | null;
206
208
  /**
207
209
  * True when the focus has a live team ELIGIBLE for idle recovery: it exists in
208
210
  * activeTeams and is in the `executing` phase. A team already tearing down
@@ -251,7 +253,7 @@ export declare function isTeamIdleStalled(lastActivityMs: number | null, nowMs:
251
253
  * team is never recovered: its clock keeps advancing, so its idle age stays
252
254
  * under the threshold.
253
255
  */
254
- export declare function checkIdleTeamStallForFocus(ctx: FocusStallContext, deps?: IdleTeamStallDeps): void;
256
+ export declare function checkIdleTeamStallForFocus(ctx: FocusStallContext, overrides?: Partial<IdleTeamStallDeps>): void;
255
257
  /**
256
258
  * Grace after a terminal-error outcome (or after a tracked team's PID vanishes)
257
259
  * before the outcome backstop recovers it. Deliberately MINUTES, not the hours
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  // packages/daemon/src/verify/stall-detectors-clock-wiring.test.ts,
8
8
  // packages/daemon/src/verify/stall-detectors.test.ts,
9
9
  // packages/daemon/src/verify/team-outcome-stall-detector.test.ts,
10
+ // packages/daemon/src/verify/team-stall-reapers.test.ts,
10
11
  // packages/daemon/src/verify/unreviewed-settle-detector.test.ts
11
12
  // PINNED-BY-END
12
13
  import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS, withRetry, } from '@telora/daemon-core';
@@ -15,6 +16,7 @@ import { deliveryGuardCauseKey } from '../queries/cause-key.js';
15
16
  import { NO_HUMAN_ACT } from '../queries/filing-observation.js';
16
17
  import { getActiveTeams, terminateTeam } from '../focus/focus-executor.js';
17
18
  import { getTeamLastActivityAt, getTeamErrorResultAt, getTeamLeadPid } from '../focus/focus-team-state.js';
19
+ import { readTeamLastProgressAt } from '../completion/team-stillness.js';
18
20
  import { isProcessAlive } from '../spawn/liveness.js';
19
21
  import { clearReviewRequestedAt } from '../queries/focuses.js';
20
22
  import { buildVerifyGateStallEscalation, decideVerifyGateStall, VERIFY_GATE_STALL_REPEAT_THRESHOLD, } from './verify-gate-stall.js';
@@ -268,7 +270,7 @@ export function isTeamRecoverable(focusId) {
268
270
  return team !== undefined && team.phase === 'executing';
269
271
  }
270
272
  const defaultIdleTeamStallDeps = {
271
- getLastActivityAt: getTeamLastActivityAt,
273
+ getLastProgressAt: readTeamLastProgressAt,
272
274
  isTeamRecoverable,
273
275
  recoverTeam: (focusId) => terminateTeam(focusId, 'teardown'),
274
276
  now: () => Date.now(),
@@ -301,20 +303,21 @@ export function isTeamIdleStalled(lastActivityMs, nowMs, thresholdMs) {
301
303
  * team is never recovered: its clock keeps advancing, so its idle age stays
302
304
  * under the threshold.
303
305
  */
304
- export function checkIdleTeamStallForFocus(ctx, deps = defaultIdleTeamStallDeps) {
306
+ export function checkIdleTeamStallForFocus(ctx, overrides = {}) {
307
+ const deps = { ...defaultIdleTeamStallDeps, ...overrides };
305
308
  if (!deps.isTeamRecoverable(ctx.focusId))
306
309
  return;
307
310
  const thresholdHours = deps.thresholdHours ?? resolveIdleTeamStallHours();
308
311
  const thresholdMs = thresholdHours * 3_600_000;
309
312
  const nowMs = (deps.now ?? Date.now)();
310
- const lastActivityMs = deps.getLastActivityAt(ctx.focusId);
311
- if (!isTeamIdleStalled(lastActivityMs, nowMs, thresholdMs))
313
+ const lastProgressMs = deps.getLastProgressAt(ctx.focusId);
314
+ if (!isTeamIdleStalled(lastProgressMs, nowMs, thresholdMs))
312
315
  return;
313
- const idleHours = Math.floor((nowMs - lastActivityMs) / 3_600_000);
316
+ const idleHours = Math.floor((nowMs - lastProgressMs) / 3_600_000);
314
317
  const recovered = deps.recoverTeam(ctx.focusId);
315
318
  if (recovered) {
316
319
  log.info(`[stall-detectors] Recovered idle-stalled team for focus "${ctx.focusName}" ` +
317
- `(no agent event for ~${idleHours}h > ${thresholdHours}h): terminated so merge-back, ` +
320
+ `(no agent event and no diff/HEAD/issue/status movement for ~${idleHours}h > ${thresholdHours}h): terminated so merge-back, ` +
318
321
  `slot release, and delivery re-gating resume with no human action.`);
319
322
  }
320
323
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"stall-detectors.js","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stall-detectors.js","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,13 @@ import { type FocusStallContext } from './stall-detectors.js';
9
9
  * team_failure escalation through the same cause-keyed idempotent gate.
10
10
  */
11
11
  export interface StalledTeamBackstopDeps {
12
- getLastActivityAt: (focusId: string) => number | null;
12
+ /**
13
+ * When the team last showed progress by the ONE progress measure: its last
14
+ * agent event, or the last time the cascade pass saw its diff, HEAD, issues
15
+ * or delivery statuses move (completion/team-stillness.ts). Null while the
16
+ * team has produced no event yet.
17
+ */
18
+ getLastProgressAt: (focusId: string) => number | null;
13
19
  isTeamRecoverable: (focusId: string) => boolean;
14
20
  getLeadSessionId: (focusId: string) => string | null;
15
21
  recoverTeam: (focusId: string) => boolean;
@@ -39,5 +45,5 @@ export declare function isStalledTeamBackstopEligible(lastActivityMs: number | n
39
45
  * completion event. A genuinely working team is never reaped: its clock keeps
40
46
  * advancing, so its idle age stays under the window.
41
47
  */
42
- export declare function checkStalledTeamBackstopForFocus(ctx: FocusStallContext, deps?: StalledTeamBackstopDeps): Promise<void>;
48
+ export declare function checkStalledTeamBackstopForFocus(ctx: FocusStallContext, overrides?: Partial<StalledTeamBackstopDeps>): Promise<void>;
43
49
  //# sourceMappingURL=stalled-team-backstop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stalled-team-backstop.d.ts","sourceRoot":"","sources":["../../src/verify/stalled-team-backstop.ts"],"names":[],"mappings":"AAkCA,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACpC,MAAM,sCAAsC,CAAC;AAW9C,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKjF;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,OAAO,CAAC;IAC/B,cAAc,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpG,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,iBAAiB,EACtB,IAAI,GAAE,uBAAwD,GAC7D,OAAO,CAAC,IAAI,CAAC,CAoFf"}
1
+ {"version":3,"file":"stalled-team-backstop.d.ts","sourceRoot":"","sources":["../../src/verify/stalled-team-backstop.ts"],"names":[],"mappings":"AAoCA,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACpC,MAAM,sCAAsC,CAAC;AAW9C,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKjF;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,OAAO,CAAC;IAC/B,cAAc,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpG,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,iBAAiB,EACtB,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CAAC,IAAI,CAAC,CAsFf"}
@@ -20,7 +20,9 @@
20
20
  * readable, like the mechanisms it backstops), reaps via terminateTeam (whose
21
21
  * normal close path gives the same uncommitted-work preservation a
22
22
  * completion-handler teardown does), and files ONE idempotent team_failure so the
23
- * wedge is visible. Extracted from stall-detectors.ts to keep that file under the
23
+ * wedge is visible. "Stalled" is judged by the ONE progress measure
24
+ * (completion/team-stillness.ts): no agent event AND no movement of the diff,
25
+ * HEAD, issues or delivery statuses for the whole window. Extracted from stall-detectors.ts to keep that file under the
24
26
  * file-size floor.
25
27
  *
26
28
  * @module verify/stalled-team-backstop
@@ -30,13 +32,13 @@ import { fileEscalationIdempotent as defaultFileEscalationIdempotent, } from '..
30
32
  import { focusBlockageCauseKey } from '../queries/cause-key.js';
31
33
  import { recordFiring, isMechanismDemoted, markLatestFiringUnacted, SUPERVISION_MECHANISM, } from '../completion/supervision-firing-record.js';
32
34
  import { getActiveTeams, terminateTeam } from '../focus/focus-executor.js';
33
- import { getTeamLastActivityAt } from '../focus/focus-team-state.js';
35
+ import { readTeamLastProgressAt } from '../completion/team-stillness.js';
34
36
  import { resolveStalledTeamBackstopMinutes } from './stall-detector-config.js';
35
37
  import { isTeamRecoverable } from './stall-detectors.js';
36
38
  import { createLogger } from '../shell/log.js';
37
39
  const log = createLogger({ module: 'stall-detectors' });
38
40
  const defaultStalledTeamBackstopDeps = {
39
- getLastActivityAt: getTeamLastActivityAt,
41
+ getLastProgressAt: readTeamLastProgressAt,
40
42
  isTeamRecoverable,
41
43
  getLeadSessionId: (focusId) => getActiveTeams().get(focusId)?.leadSessionId ?? null,
42
44
  recoverTeam: (focusId) => terminateTeam(focusId, 'teardown'),
@@ -60,22 +62,23 @@ export function isStalledTeamBackstopEligible(lastActivityMs, nowMs, windowMs) {
60
62
  * completion event. A genuinely working team is never reaped: its clock keeps
61
63
  * advancing, so its idle age stays under the window.
62
64
  */
63
- export async function checkStalledTeamBackstopForFocus(ctx, deps = defaultStalledTeamBackstopDeps) {
65
+ export async function checkStalledTeamBackstopForFocus(ctx, overrides = {}) {
66
+ const deps = { ...defaultStalledTeamBackstopDeps, ...overrides };
64
67
  if (!deps.isTeamRecoverable(ctx.focusId))
65
68
  return;
66
69
  const windowMinutes = deps.windowMinutes ?? resolveStalledTeamBackstopMinutes();
67
70
  const windowMs = windowMinutes * 60_000;
68
71
  const nowMs = (deps.now ?? Date.now)();
69
- const lastActivityMs = deps.getLastActivityAt(ctx.focusId);
70
- if (!isStalledTeamBackstopEligible(lastActivityMs, nowMs, windowMs))
72
+ const lastProgressMs = deps.getLastProgressAt(ctx.focusId);
73
+ if (!isStalledTeamBackstopEligible(lastProgressMs, nowMs, windowMs))
71
74
  return;
72
- const idleMinutes = Math.floor((nowMs - lastActivityMs) / 60_000);
75
+ const idleMinutes = Math.floor((nowMs - lastProgressMs) / 60_000);
73
76
  // Record the firing whether or not we act -- the rate must be readable even
74
77
  // when the mechanism is demoted to observe-only.
75
78
  recordFiring({
76
79
  mechanism: SUPERVISION_MECHANISM.STALLED_TEAM_REAP,
77
80
  focusId: ctx.focusId,
78
- predicted: `team wedged: executing but no agent event for ~${idleMinutes}m ` +
81
+ predicted: `team wedged: executing but no progress (no agent event, no diff/HEAD/issue/status movement) for ~${idleMinutes}m ` +
79
82
  `(> ${windowMinutes}m backstop), completion event not fired`,
80
83
  now: nowMs,
81
84
  });
@@ -96,8 +99,8 @@ export async function checkStalledTeamBackstopForFocus(ctx, deps = defaultStalle
96
99
  `the backstop window but terminateTeam found no live team to recover (already torn down?).`);
97
100
  return;
98
101
  }
99
- log.warn(`[stall-detectors] Reaped stalled team for focus "${ctx.focusName}" (no agent event ` +
100
- `for ~${idleMinutes}m > ${windowMinutes}m backstop) WITHOUT a completion event: ` +
102
+ log.warn(`[stall-detectors] Reaped stalled team for focus "${ctx.focusName}" (no agent event and no ` +
103
+ `diff/HEAD/issue/status movement for ~${idleMinutes}m > ${windowMinutes}m backstop) WITHOUT a completion event: ` +
101
104
  `terminated so wip-preserve, slot release, and delivery re-gating resume; filing a ` +
102
105
  `team_failure so the wedge is visible.`);
103
106
  // File ONE team_failure escalation (idempotent by cause key -- at most one open
@@ -115,7 +118,8 @@ export async function checkStalledTeamBackstopForFocus(ctx, deps = defaultStalle
115
118
  disposition: ESCALATION_DISPOSITIONS.AGENT_RESOLVABLE,
116
119
  anchor: { focusId: ctx.focusId },
117
120
  escalationKind: 'team_failure',
118
- description: `Team for focus "${ctx.focusName}" produced no agent event for ~${idleMinutes} ` +
121
+ description: `Team for focus "${ctx.focusName}" showed no progress -- no agent event and no ` +
122
+ `worktree, HEAD, issue or delivery-status movement -- for ~${idleMinutes} ` +
119
123
  `minutes (> ${windowMinutes}m backstop) while still holding the focus and a ` +
120
124
  `governor slot, with no completion event. The daemon reaped it directly from the ` +
121
125
  `poll loop (reading liveness, not the completion event), preserving its ` +