@telora/daemon 0.22.132 → 0.22.136

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 (549) hide show
  1. package/build-info.json +6 -3
  2. package/dist/audit/audit-hooks.d.ts +6 -2
  3. package/dist/audit/audit-hooks.d.ts.map +1 -1
  4. package/dist/audit/audit-hooks.js +12 -5
  5. package/dist/audit/audit-hooks.js.map +1 -1
  6. package/dist/audit/audit-phase.js +1 -1
  7. package/dist/audit/audit-phase.js.map +1 -1
  8. package/dist/backends/index.d.ts.map +1 -1
  9. package/dist/backends/index.js +1 -0
  10. package/dist/backends/index.js.map +1 -1
  11. package/dist/completion/completion-phase-registry.d.ts +4 -0
  12. package/dist/completion/completion-phase-registry.d.ts.map +1 -1
  13. package/dist/completion/completion-phase-registry.js +63 -18
  14. package/dist/completion/completion-phase-registry.js.map +1 -1
  15. package/dist/completion/exit-classification.d.ts.map +1 -1
  16. package/dist/completion/exit-classification.js +1 -0
  17. package/dist/completion/exit-classification.js.map +1 -1
  18. package/dist/completion/review-approved-head-gate.d.ts +53 -0
  19. package/dist/completion/review-approved-head-gate.d.ts.map +1 -0
  20. package/dist/completion/review-approved-head-gate.js +124 -0
  21. package/dist/completion/review-approved-head-gate.js.map +1 -0
  22. package/dist/completion/review-census-record.d.ts +52 -0
  23. package/dist/completion/review-census-record.d.ts.map +1 -0
  24. package/dist/completion/review-census-record.js +145 -0
  25. package/dist/completion/review-census-record.js.map +1 -0
  26. package/dist/completion/review-exit-deps.d.ts +5 -1
  27. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  28. package/dist/completion/review-exit-deps.js +7 -2
  29. package/dist/completion/review-exit-deps.js.map +1 -1
  30. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  31. package/dist/completion/review-exit-phase.js +29 -16
  32. package/dist/completion/review-exit-phase.js.map +1 -1
  33. package/dist/completion/review-exit-progress.d.ts +8 -0
  34. package/dist/completion/review-exit-progress.d.ts.map +1 -1
  35. package/dist/completion/review-exit-progress.js +14 -0
  36. package/dist/completion/review-exit-progress.js.map +1 -1
  37. package/dist/completion/review-exit-shortfall-park.d.ts +14 -0
  38. package/dist/completion/review-exit-shortfall-park.d.ts.map +1 -0
  39. package/dist/completion/review-exit-shortfall-park.js +52 -0
  40. package/dist/completion/review-exit-shortfall-park.js.map +1 -0
  41. package/dist/completion/review-exit-shortfall.js +1 -1
  42. package/dist/completion/review-exit-shortfall.js.map +1 -1
  43. package/dist/completion/review-exit-verdict-gate.d.ts +58 -0
  44. package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -1
  45. package/dist/completion/review-exit-verdict-gate.js +68 -8
  46. package/dist/completion/review-exit-verdict-gate.js.map +1 -1
  47. package/dist/completion/review-next-step.d.ts +15 -3
  48. package/dist/completion/review-next-step.d.ts.map +1 -1
  49. package/dist/completion/review-next-step.js +7 -2
  50. package/dist/completion/review-next-step.js.map +1 -1
  51. package/dist/completion/standing-approval-convergence.d.ts +68 -0
  52. package/dist/completion/standing-approval-convergence.d.ts.map +1 -0
  53. package/dist/completion/standing-approval-convergence.js +230 -0
  54. package/dist/completion/standing-approval-convergence.js.map +1 -0
  55. package/dist/completion/standing-approval-deps.d.ts +5 -0
  56. package/dist/completion/standing-approval-deps.d.ts.map +1 -0
  57. package/dist/completion/standing-approval-deps.js +37 -0
  58. package/dist/completion/standing-approval-deps.js.map +1 -0
  59. package/dist/completion/state-cascade.d.ts +11 -0
  60. package/dist/completion/state-cascade.d.ts.map +1 -1
  61. package/dist/completion/state-cascade.js +40 -1
  62. package/dist/completion/state-cascade.js.map +1 -1
  63. package/dist/completion/team-lifecycle.d.ts +14 -2
  64. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  65. package/dist/completion/team-lifecycle.js +36 -36
  66. package/dist/completion/team-lifecycle.js.map +1 -1
  67. package/dist/completion/terminated-work-reconcile.d.ts +3 -1
  68. package/dist/completion/terminated-work-reconcile.d.ts.map +1 -1
  69. package/dist/completion/terminated-work-reconcile.js +24 -11
  70. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  71. package/dist/delivery/delivery-advance-block.d.ts +6 -0
  72. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  73. package/dist/delivery/delivery-advance-block.js +29 -3
  74. package/dist/delivery/delivery-advance-block.js.map +1 -1
  75. package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
  76. package/dist/delivery/delivery-reconciler.js +4 -1
  77. package/dist/delivery/delivery-reconciler.js.map +1 -1
  78. package/dist/delivery/operator-hold.d.ts.map +1 -1
  79. package/dist/delivery/operator-hold.js +3 -1
  80. package/dist/delivery/operator-hold.js.map +1 -1
  81. package/dist/directive/directive-executor.d.ts.map +1 -1
  82. package/dist/directive/directive-executor.js +6 -0
  83. package/dist/directive/directive-executor.js.map +1 -1
  84. package/dist/directive/directive-queue.d.ts +8 -0
  85. package/dist/directive/directive-queue.d.ts.map +1 -1
  86. package/dist/directive/directive-queue.js +20 -0
  87. package/dist/directive/directive-queue.js.map +1 -1
  88. package/dist/directive/phase-sync.d.ts +5 -0
  89. package/dist/directive/phase-sync.d.ts.map +1 -1
  90. package/dist/directive/phase-sync.js +11 -1
  91. package/dist/directive/phase-sync.js.map +1 -1
  92. package/dist/directive/stranded-review-reroute.d.ts +37 -0
  93. package/dist/directive/stranded-review-reroute.d.ts.map +1 -0
  94. package/dist/directive/stranded-review-reroute.js +150 -0
  95. package/dist/directive/stranded-review-reroute.js.map +1 -0
  96. package/dist/focus/focus-engine.d.ts.map +1 -1
  97. package/dist/focus/focus-engine.js +15 -3
  98. package/dist/focus/focus-engine.js.map +1 -1
  99. package/dist/focus/focus-executor.d.ts.map +1 -1
  100. package/dist/focus/focus-executor.js +9 -65
  101. package/dist/focus/focus-executor.js.map +1 -1
  102. package/dist/focus/focus-lifecycle.d.ts +12 -0
  103. package/dist/focus/focus-lifecycle.d.ts.map +1 -1
  104. package/dist/focus/focus-lifecycle.js +66 -37
  105. package/dist/focus/focus-lifecycle.js.map +1 -1
  106. package/dist/focus/focus-phase.d.ts.map +1 -1
  107. package/dist/focus/focus-phase.js +6 -0
  108. package/dist/focus/focus-phase.js.map +1 -1
  109. package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
  110. package/dist/focus/focus-spawn-decision.js +1 -0
  111. package/dist/focus/focus-spawn-decision.js.map +1 -1
  112. package/dist/focus/focus-team-state.d.ts +10 -0
  113. package/dist/focus/focus-team-state.d.ts.map +1 -1
  114. package/dist/focus/focus-team-state.js +19 -1
  115. package/dist/focus/focus-team-state.js.map +1 -1
  116. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  117. package/dist/focus/listener-auto-advance.js +1 -0
  118. package/dist/focus/listener-auto-advance.js.map +1 -1
  119. package/dist/focus/listener-spawn.d.ts +10 -0
  120. package/dist/focus/listener-spawn.d.ts.map +1 -1
  121. package/dist/focus/listener-spawn.js +46 -4
  122. package/dist/focus/listener-spawn.js.map +1 -1
  123. package/dist/focus/listener-state.d.ts.map +1 -1
  124. package/dist/focus/listener-state.js +11 -1
  125. package/dist/focus/listener-state.js.map +1 -1
  126. package/dist/focus/listener.d.ts +42 -0
  127. package/dist/focus/listener.d.ts.map +1 -1
  128. package/dist/focus/listener.js +62 -33
  129. package/dist/focus/listener.js.map +1 -1
  130. package/dist/focus/pending-review-approved-head.d.ts +41 -0
  131. package/dist/focus/pending-review-approved-head.d.ts.map +1 -0
  132. package/dist/focus/pending-review-approved-head.js +198 -0
  133. package/dist/focus/pending-review-approved-head.js.map +1 -0
  134. package/dist/focus/pending-spawn-pass-deps.d.ts +5 -0
  135. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
  136. package/dist/focus/pending-spawn-pass-deps.js +2 -1
  137. package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
  138. package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -1
  139. package/dist/focus/pending-spawn-review-next-step.js +26 -4
  140. package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
  141. package/dist/focus/review-spawn-coverage.d.ts +87 -0
  142. package/dist/focus/review-spawn-coverage.d.ts.map +1 -0
  143. package/dist/focus/review-spawn-coverage.js +104 -0
  144. package/dist/focus/review-spawn-coverage.js.map +1 -0
  145. package/dist/focus/session-health.d.ts +5 -2
  146. package/dist/focus/session-health.d.ts.map +1 -1
  147. package/dist/focus/session-health.js +2 -1
  148. package/dist/focus/session-health.js.map +1 -1
  149. package/dist/focus/session-process-reap.d.ts +50 -0
  150. package/dist/focus/session-process-reap.d.ts.map +1 -0
  151. package/dist/focus/session-process-reap.js +77 -0
  152. package/dist/focus/session-process-reap.js.map +1 -0
  153. package/dist/focus/unchanged-reviewed-head.d.ts +40 -0
  154. package/dist/focus/unchanged-reviewed-head.d.ts.map +1 -0
  155. package/dist/focus/unchanged-reviewed-head.js +84 -0
  156. package/dist/focus/unchanged-reviewed-head.js.map +1 -0
  157. package/dist/focus/verify-open-issues.d.ts +4 -19
  158. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  159. package/dist/focus/verify-open-issues.js +83 -41
  160. package/dist/focus/verify-open-issues.js.map +1 -1
  161. package/dist/git/focus-integration-sync.d.ts +61 -0
  162. package/dist/git/focus-integration-sync.d.ts.map +1 -0
  163. package/dist/git/focus-integration-sync.js +73 -0
  164. package/dist/git/focus-integration-sync.js.map +1 -0
  165. package/dist/git/focus-own-delta.d.ts +38 -0
  166. package/dist/git/focus-own-delta.d.ts.map +1 -0
  167. package/dist/git/focus-own-delta.js +193 -0
  168. package/dist/git/focus-own-delta.js.map +1 -0
  169. package/dist/git/index.d.ts +2 -0
  170. package/dist/git/index.d.ts.map +1 -1
  171. package/dist/git/index.js +4 -0
  172. package/dist/git/index.js.map +1 -1
  173. package/dist/git/merge.d.ts.map +1 -1
  174. package/dist/git/merge.js +11 -1
  175. package/dist/git/merge.js.map +1 -1
  176. package/dist/git/resolution-restore.d.ts +66 -0
  177. package/dist/git/resolution-restore.d.ts.map +1 -0
  178. package/dist/git/resolution-restore.js +331 -0
  179. package/dist/git/resolution-restore.js.map +1 -0
  180. package/dist/loops/engine.d.ts.map +1 -1
  181. package/dist/loops/engine.js.map +1 -1
  182. package/dist/merge/abandoned-merge-recovery.d.ts +72 -0
  183. package/dist/merge/abandoned-merge-recovery.d.ts.map +1 -0
  184. package/dist/merge/abandoned-merge-recovery.js +117 -0
  185. package/dist/merge/abandoned-merge-recovery.js.map +1 -0
  186. package/dist/merge/focus-merge.d.ts +19 -0
  187. package/dist/merge/focus-merge.d.ts.map +1 -1
  188. package/dist/merge/focus-merge.js +136 -99
  189. package/dist/merge/focus-merge.js.map +1 -1
  190. package/dist/merge/merge-back-activity.d.ts +11 -0
  191. package/dist/merge/merge-back-activity.d.ts.map +1 -0
  192. package/dist/merge/merge-back-activity.js +57 -0
  193. package/dist/merge/merge-back-activity.js.map +1 -0
  194. package/dist/merge/merge-back-conflict.d.ts +119 -0
  195. package/dist/merge/merge-back-conflict.d.ts.map +1 -0
  196. package/dist/merge/merge-back-conflict.js +178 -0
  197. package/dist/merge/merge-back-conflict.js.map +1 -0
  198. package/dist/merge/merge-back-followup.d.ts +109 -0
  199. package/dist/merge/merge-back-followup.d.ts.map +1 -0
  200. package/dist/merge/merge-back-followup.js +316 -0
  201. package/dist/merge/merge-back-followup.js.map +1 -0
  202. package/dist/merge/merge-back-loop.d.ts +2 -0
  203. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  204. package/dist/merge/merge-back-loop.js +14 -15
  205. package/dist/merge/merge-back-loop.js.map +1 -1
  206. package/dist/merge/merge-conflict-escalation.d.ts +12 -0
  207. package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
  208. package/dist/merge/merge-conflict-escalation.js +37 -2
  209. package/dist/merge/merge-conflict-escalation.js.map +1 -1
  210. package/dist/merge/merge-gate-coverage.d.ts.map +1 -1
  211. package/dist/merge/merge-gate-coverage.js +1 -0
  212. package/dist/merge/merge-gate-coverage.js.map +1 -1
  213. package/dist/prompt/prompt-listing.d.ts +5 -0
  214. package/dist/prompt/prompt-listing.d.ts.map +1 -1
  215. package/dist/prompt/prompt-listing.js +35 -0
  216. package/dist/prompt/prompt-listing.js.map +1 -1
  217. package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -1
  218. package/dist/prompt-sections/routing-decider-sections.js +2 -0
  219. package/dist/prompt-sections/routing-decider-sections.js.map +1 -1
  220. package/dist/prompt-sections/shortfall-park-section.d.ts +43 -0
  221. package/dist/prompt-sections/shortfall-park-section.d.ts.map +1 -0
  222. package/dist/prompt-sections/shortfall-park-section.js +36 -0
  223. package/dist/prompt-sections/shortfall-park-section.js.map +1 -0
  224. package/dist/queries/agent-resolvable-promotion.d.ts +16 -2
  225. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  226. package/dist/queries/agent-resolvable-promotion.js +30 -3
  227. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  228. package/dist/queries/cause-key.d.ts +17 -22
  229. package/dist/queries/cause-key.d.ts.map +1 -1
  230. package/dist/queries/cause-key.js +50 -1
  231. package/dist/queries/cause-key.js.map +1 -1
  232. package/dist/queries/commit-attributions.d.ts +18 -0
  233. package/dist/queries/commit-attributions.d.ts.map +1 -0
  234. package/dist/queries/commit-attributions.js +39 -0
  235. package/dist/queries/commit-attributions.js.map +1 -0
  236. package/dist/queries/deliveries.d.ts.map +1 -1
  237. package/dist/queries/deliveries.js +3 -1
  238. package/dist/queries/deliveries.js.map +1 -1
  239. package/dist/queries/delivery-gate-state.d.ts +21 -5
  240. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  241. package/dist/queries/delivery-gate-state.js +35 -9
  242. package/dist/queries/delivery-gate-state.js.map +1 -1
  243. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  244. package/dist/queries/escalation-consumption.js +2 -1
  245. package/dist/queries/escalation-consumption.js.map +1 -1
  246. package/dist/queries/escalation-field-bounds.d.ts +48 -0
  247. package/dist/queries/escalation-field-bounds.d.ts.map +1 -0
  248. package/dist/queries/escalation-field-bounds.js +83 -0
  249. package/dist/queries/escalation-field-bounds.js.map +1 -0
  250. package/dist/queries/escalation-refusal.d.ts +88 -0
  251. package/dist/queries/escalation-refusal.d.ts.map +1 -0
  252. package/dist/queries/escalation-refusal.js +217 -0
  253. package/dist/queries/escalation-refusal.js.map +1 -0
  254. package/dist/queries/escalation-suppression.d.ts +6 -0
  255. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  256. package/dist/queries/escalation-suppression.js +4 -13
  257. package/dist/queries/escalation-suppression.js.map +1 -1
  258. package/dist/queries/escalations.d.ts +5 -13
  259. package/dist/queries/escalations.d.ts.map +1 -1
  260. package/dist/queries/escalations.js +25 -30
  261. package/dist/queries/escalations.js.map +1 -1
  262. package/dist/queries/filing-observation.d.ts.map +1 -1
  263. package/dist/queries/filing-observation.js +3 -1
  264. package/dist/queries/filing-observation.js.map +1 -1
  265. package/dist/queries/focus-review-approval.d.ts +2 -0
  266. package/dist/queries/focus-review-approval.d.ts.map +1 -1
  267. package/dist/queries/focus-review-approval.js +7 -2
  268. package/dist/queries/focus-review-approval.js.map +1 -1
  269. package/dist/queries/focuses.d.ts.map +1 -1
  270. package/dist/queries/focuses.js +2 -1
  271. package/dist/queries/focuses.js.map +1 -1
  272. package/dist/queries/incident-correlation.d.ts.map +1 -1
  273. package/dist/queries/incident-correlation.js +4 -1
  274. package/dist/queries/incident-correlation.js.map +1 -1
  275. package/dist/queries/misattributed-commits-record.d.ts +26 -0
  276. package/dist/queries/misattributed-commits-record.d.ts.map +1 -0
  277. package/dist/queries/misattributed-commits-record.js +5 -0
  278. package/dist/queries/misattributed-commits-record.js.map +1 -0
  279. package/dist/queries/reality-tree.d.ts.map +1 -1
  280. package/dist/queries/reality-tree.js +2 -1
  281. package/dist/queries/reality-tree.js.map +1 -1
  282. package/dist/queries/schemas.d.ts +3 -0
  283. package/dist/queries/schemas.d.ts.map +1 -1
  284. package/dist/queries/schemas.js +1 -0
  285. package/dist/queries/schemas.js.map +1 -1
  286. package/dist/queries/shared.js +1 -1
  287. package/dist/queries/shortfall-park-record.d.ts +48 -0
  288. package/dist/queries/shortfall-park-record.d.ts.map +1 -0
  289. package/dist/queries/shortfall-park-record.js +31 -0
  290. package/dist/queries/shortfall-park-record.js.map +1 -0
  291. package/dist/queries/shortfall-rulings.d.ts +71 -0
  292. package/dist/queries/shortfall-rulings.d.ts.map +1 -0
  293. package/dist/queries/shortfall-rulings.js +53 -0
  294. package/dist/queries/shortfall-rulings.js.map +1 -0
  295. package/dist/queries/verification.d.ts +20 -1
  296. package/dist/queries/verification.d.ts.map +1 -1
  297. package/dist/queries/verification.js +48 -8
  298. package/dist/queries/verification.js.map +1 -1
  299. package/dist/resolvers/index.d.ts +2 -2
  300. package/dist/resolvers/index.d.ts.map +1 -1
  301. package/dist/resolvers/index.js +1 -1
  302. package/dist/resolvers/index.js.map +1 -1
  303. package/dist/resolvers/shared/delivery-trailer.d.ts +99 -0
  304. package/dist/resolvers/shared/delivery-trailer.d.ts.map +1 -0
  305. package/dist/resolvers/shared/delivery-trailer.js +103 -0
  306. package/dist/resolvers/shared/delivery-trailer.js.map +1 -0
  307. package/dist/resolvers/shared/git-diff.d.ts +11 -84
  308. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  309. package/dist/resolvers/shared/git-diff.js +17 -84
  310. package/dist/resolvers/shared/git-diff.js.map +1 -1
  311. package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -1
  312. package/dist/resolvers/shared/review-window-commits.js +1 -0
  313. package/dist/resolvers/shared/review-window-commits.js.map +1 -1
  314. package/dist/session/session-lineage.d.ts.map +1 -1
  315. package/dist/session/session-lineage.js +1 -0
  316. package/dist/session/session-lineage.js.map +1 -1
  317. package/dist/shell/config.d.ts +2 -1
  318. package/dist/shell/config.d.ts.map +1 -1
  319. package/dist/shell/config.js +21 -4
  320. package/dist/shell/config.js.map +1 -1
  321. package/dist/shell/crash-recovery.d.ts +3 -7
  322. package/dist/shell/crash-recovery.d.ts.map +1 -1
  323. package/dist/shell/crash-recovery.js +28 -31
  324. package/dist/shell/crash-recovery.js.map +1 -1
  325. package/dist/shell/orphan-capture.d.ts +42 -0
  326. package/dist/shell/orphan-capture.d.ts.map +1 -0
  327. package/dist/shell/orphan-capture.js +53 -0
  328. package/dist/shell/orphan-capture.js.map +1 -0
  329. package/dist/shell/worker-pidfile.d.ts +22 -4
  330. package/dist/shell/worker-pidfile.d.ts.map +1 -1
  331. package/dist/shell/worker-pidfile.js +51 -13
  332. package/dist/shell/worker-pidfile.js.map +1 -1
  333. package/dist/spawn/helpers.d.ts +3 -0
  334. package/dist/spawn/helpers.d.ts.map +1 -1
  335. package/dist/spawn/helpers.js +28 -9
  336. package/dist/spawn/helpers.js.map +1 -1
  337. package/dist/spawn/lead-launch.d.ts +34 -0
  338. package/dist/spawn/lead-launch.d.ts.map +1 -0
  339. package/dist/spawn/lead-launch.js +34 -0
  340. package/dist/spawn/lead-launch.js.map +1 -0
  341. package/dist/spawn/lead-process-ownership.d.ts +91 -0
  342. package/dist/spawn/lead-process-ownership.d.ts.map +1 -0
  343. package/dist/spawn/lead-process-ownership.js +120 -0
  344. package/dist/spawn/lead-process-ownership.js.map +1 -0
  345. package/dist/spawn/lifecycle.d.ts +43 -3
  346. package/dist/spawn/lifecycle.d.ts.map +1 -1
  347. package/dist/spawn/lifecycle.js +75 -44
  348. package/dist/spawn/lifecycle.js.map +1 -1
  349. package/dist/spawn/liveness.d.ts.map +1 -1
  350. package/dist/spawn/liveness.js +5 -1
  351. package/dist/spawn/liveness.js.map +1 -1
  352. package/dist/spawn/one-shot-process-ownership.d.ts +48 -0
  353. package/dist/spawn/one-shot-process-ownership.d.ts.map +1 -0
  354. package/dist/spawn/one-shot-process-ownership.js +44 -0
  355. package/dist/spawn/one-shot-process-ownership.js.map +1 -0
  356. package/dist/spawn/process-group-kill.d.ts +79 -0
  357. package/dist/spawn/process-group-kill.d.ts.map +1 -0
  358. package/dist/spawn/process-group-kill.js +210 -0
  359. package/dist/spawn/process-group-kill.js.map +1 -0
  360. package/dist/spawn/process-spawn.d.ts +18 -1
  361. package/dist/spawn/process-spawn.d.ts.map +1 -1
  362. package/dist/spawn/process-spawn.js +51 -20
  363. package/dist/spawn/process-spawn.js.map +1 -1
  364. package/dist/spawn/resolution-budget.d.ts +38 -0
  365. package/dist/spawn/resolution-budget.d.ts.map +1 -0
  366. package/dist/spawn/resolution-budget.js +87 -0
  367. package/dist/spawn/resolution-budget.js.map +1 -0
  368. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  369. package/dist/spawn/review-hold-park.js +37 -5
  370. package/dist/spawn/review-hold-park.js.map +1 -1
  371. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  372. package/dist/spawn/spawn-cooldown.js +9 -0
  373. package/dist/spawn/spawn-cooldown.js.map +1 -1
  374. package/dist/spawn/untracked-lead-sweep.d.ts +29 -0
  375. package/dist/spawn/untracked-lead-sweep.d.ts.map +1 -0
  376. package/dist/spawn/untracked-lead-sweep.js +100 -0
  377. package/dist/spawn/untracked-lead-sweep.js.map +1 -0
  378. package/dist/spawn/worker-registry.d.ts.map +1 -1
  379. package/dist/spawn/worker-registry.js +4 -1
  380. package/dist/spawn/worker-registry.js.map +1 -1
  381. package/dist/spawn/worktree-session.d.ts.map +1 -1
  382. package/dist/spawn/worktree-session.js +8 -6
  383. package/dist/spawn/worktree-session.js.map +1 -1
  384. package/dist/testing/fixtures/exit-capture-verify.d.ts +41 -0
  385. package/dist/testing/fixtures/exit-capture-verify.d.ts.map +1 -0
  386. package/dist/testing/fixtures/exit-capture-verify.js +152 -0
  387. package/dist/testing/fixtures/exit-capture-verify.js.map +1 -0
  388. package/dist/testing/fixtures/index.js +1 -1
  389. package/dist/testing/fixtures/pending-spawn-world.d.ts +7 -0
  390. package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -1
  391. package/dist/testing/fixtures/pending-spawn-world.js +21 -1
  392. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
  393. package/dist/testing/fixtures/stubborn-lead-process.d.ts +22 -0
  394. package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -0
  395. package/dist/testing/fixtures/stubborn-lead-process.js +68 -0
  396. package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -0
  397. package/dist/types/config.d.ts +13 -0
  398. package/dist/types/config.d.ts.map +1 -1
  399. package/dist/types/focus.d.ts +7 -0
  400. package/dist/types/focus.d.ts.map +1 -1
  401. package/dist/types/index.js +1 -1
  402. package/dist/verify/commit-verdict-record.d.ts +13 -3
  403. package/dist/verify/commit-verdict-record.d.ts.map +1 -1
  404. package/dist/verify/commit-verdict-record.js +45 -25
  405. package/dist/verify/commit-verdict-record.js.map +1 -1
  406. package/dist/verify/credit-rearm.d.ts +18 -0
  407. package/dist/verify/credit-rearm.d.ts.map +1 -0
  408. package/dist/verify/credit-rearm.js +69 -0
  409. package/dist/verify/credit-rearm.js.map +1 -0
  410. package/dist/verify/delivery-commit-set.d.ts +10 -0
  411. package/dist/verify/delivery-commit-set.d.ts.map +1 -0
  412. package/dist/verify/delivery-commit-set.js +82 -0
  413. package/dist/verify/delivery-commit-set.js.map +1 -0
  414. package/dist/verify/explicit-rearm.d.ts.map +1 -1
  415. package/dist/verify/explicit-rearm.js +2 -0
  416. package/dist/verify/explicit-rearm.js.map +1 -1
  417. package/dist/verify/failure-signature.d.ts.map +1 -1
  418. package/dist/verify/failure-signature.js +1 -0
  419. package/dist/verify/failure-signature.js.map +1 -1
  420. package/dist/verify/gate-run-registry.d.ts.map +1 -1
  421. package/dist/verify/gate-run-registry.js +3 -0
  422. package/dist/verify/gate-run-registry.js.map +1 -1
  423. package/dist/verify/injection-stamp.d.ts +29 -0
  424. package/dist/verify/injection-stamp.d.ts.map +1 -0
  425. package/dist/verify/injection-stamp.js +139 -0
  426. package/dist/verify/injection-stamp.js.map +1 -0
  427. package/dist/verify/misattributed-commits-read.d.ts +31 -0
  428. package/dist/verify/misattributed-commits-read.d.ts.map +1 -0
  429. package/dist/verify/misattributed-commits-read.js +47 -0
  430. package/dist/verify/misattributed-commits-read.js.map +1 -0
  431. package/dist/verify/misattributed-commits.d.ts +52 -0
  432. package/dist/verify/misattributed-commits.d.ts.map +1 -0
  433. package/dist/verify/misattributed-commits.js +148 -0
  434. package/dist/verify/misattributed-commits.js.map +1 -0
  435. package/dist/verify/no-own-delta-verdict.d.ts +47 -0
  436. package/dist/verify/no-own-delta-verdict.d.ts.map +1 -0
  437. package/dist/verify/no-own-delta-verdict.js +74 -0
  438. package/dist/verify/no-own-delta-verdict.js.map +1 -0
  439. package/dist/verify/shortfall-park-escalation.d.ts +41 -0
  440. package/dist/verify/shortfall-park-escalation.d.ts.map +1 -0
  441. package/dist/verify/shortfall-park-escalation.js +177 -0
  442. package/dist/verify/shortfall-park-escalation.js.map +1 -0
  443. package/dist/verify/shortfall-park.d.ts +109 -0
  444. package/dist/verify/shortfall-park.d.ts.map +1 -0
  445. package/dist/verify/shortfall-park.js +208 -0
  446. package/dist/verify/shortfall-park.js.map +1 -0
  447. package/dist/verify/shortfall-repeat.d.ts +47 -16
  448. package/dist/verify/shortfall-repeat.d.ts.map +1 -1
  449. package/dist/verify/shortfall-repeat.js +77 -23
  450. package/dist/verify/shortfall-repeat.js.map +1 -1
  451. package/dist/verify/shortfall-rulings.d.ts +106 -0
  452. package/dist/verify/shortfall-rulings.d.ts.map +1 -0
  453. package/dist/verify/shortfall-rulings.js +118 -0
  454. package/dist/verify/shortfall-rulings.js.map +1 -0
  455. package/dist/verify/stall-detectors.d.ts.map +1 -1
  456. package/dist/verify/stall-detectors.js +10 -4
  457. package/dist/verify/stall-detectors.js.map +1 -1
  458. package/dist/verify/verification-attribution-base.d.ts +26 -0
  459. package/dist/verify/verification-attribution-base.d.ts.map +1 -0
  460. package/dist/verify/verification-attribution-base.js +127 -0
  461. package/dist/verify/verification-attribution-base.js.map +1 -0
  462. package/dist/verify/verification-attribution-deps.d.ts +32 -0
  463. package/dist/verify/verification-attribution-deps.d.ts.map +1 -0
  464. package/dist/verify/verification-attribution-deps.js +209 -0
  465. package/dist/verify/verification-attribution-deps.js.map +1 -0
  466. package/dist/verify/verification-baseline.d.ts +6 -0
  467. package/dist/verify/verification-baseline.d.ts.map +1 -1
  468. package/dist/verify/verification-baseline.js +27 -11
  469. package/dist/verify/verification-baseline.js.map +1 -1
  470. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  471. package/dist/verify/verification-commit-sharing.js +30 -8
  472. package/dist/verify/verification-commit-sharing.js.map +1 -1
  473. package/dist/verify/verification-config.d.ts.map +1 -1
  474. package/dist/verify/verification-config.js +2 -0
  475. package/dist/verify/verification-config.js.map +1 -1
  476. package/dist/verify/verification-default-on.d.ts +3 -0
  477. package/dist/verify/verification-default-on.d.ts.map +1 -1
  478. package/dist/verify/verification-default-on.js +5 -1
  479. package/dist/verify/verification-default-on.js.map +1 -1
  480. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  481. package/dist/verify/verification-deps-default.js +61 -120
  482. package/dist/verify/verification-deps-default.js.map +1 -1
  483. package/dist/verify/verification-deps.d.ts +26 -4
  484. package/dist/verify/verification-deps.d.ts.map +1 -1
  485. package/dist/verify/verification-deterministic.d.ts +15 -0
  486. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  487. package/dist/verify/verification-deterministic.js +1 -12
  488. package/dist/verify/verification-deterministic.js.map +1 -1
  489. package/dist/verify/verification-engine.d.ts +9 -6
  490. package/dist/verify/verification-engine.d.ts.map +1 -1
  491. package/dist/verify/verification-engine.js +43 -62
  492. package/dist/verify/verification-engine.js.map +1 -1
  493. package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
  494. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  495. package/dist/verify/verification-evidence-unavailable-feedback.js +19 -1
  496. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  497. package/dist/verify/verification-failure-parser.d.ts +57 -1
  498. package/dist/verify/verification-failure-parser.d.ts.map +1 -1
  499. package/dist/verify/verification-failure-parser.js +116 -10
  500. package/dist/verify/verification-failure-parser.js.map +1 -1
  501. package/dist/verify/verification-feedback.d.ts +60 -43
  502. package/dist/verify/verification-feedback.d.ts.map +1 -1
  503. package/dist/verify/verification-feedback.js +115 -120
  504. package/dist/verify/verification-feedback.js.map +1 -1
  505. package/dist/verify/verification-history-reset.d.ts +2 -1
  506. package/dist/verify/verification-history-reset.d.ts.map +1 -1
  507. package/dist/verify/verification-history-reset.js +4 -2
  508. package/dist/verify/verification-history-reset.js.map +1 -1
  509. package/dist/verify/verification-rework-issue.d.ts +87 -0
  510. package/dist/verify/verification-rework-issue.d.ts.map +1 -0
  511. package/dist/verify/verification-rework-issue.js +212 -0
  512. package/dist/verify/verification-rework-issue.js.map +1 -0
  513. package/dist/verify/verification-rework-messages.d.ts.map +1 -1
  514. package/dist/verify/verification-rework-messages.js +10 -0
  515. package/dist/verify/verification-rework-messages.js.map +1 -1
  516. package/dist/verify/verify-gate-stall.d.ts +2 -0
  517. package/dist/verify/verify-gate-stall.d.ts.map +1 -1
  518. package/dist/verify/verify-gate-stall.js +35 -9
  519. package/dist/verify/verify-gate-stall.js.map +1 -1
  520. package/dist/verify/verify-restatement.d.ts.map +1 -1
  521. package/dist/verify/verify-restatement.js +9 -2
  522. package/dist/verify/verify-restatement.js.map +1 -1
  523. package/dist/worktree/capture-attribution-read.d.ts +47 -0
  524. package/dist/worktree/capture-attribution-read.d.ts.map +1 -0
  525. package/dist/worktree/capture-attribution-read.js +98 -0
  526. package/dist/worktree/capture-attribution-read.js.map +1 -0
  527. package/dist/worktree/capture-attribution.d.ts +26 -0
  528. package/dist/worktree/capture-attribution.d.ts.map +1 -0
  529. package/dist/worktree/capture-attribution.js +111 -0
  530. package/dist/worktree/capture-attribution.js.map +1 -0
  531. package/dist/worktree/index.d.ts.map +1 -1
  532. package/dist/worktree/index.js +2 -1
  533. package/dist/worktree/index.js.map +1 -1
  534. package/dist/worktree/provision.d.ts.map +1 -1
  535. package/dist/worktree/provision.js +23 -6
  536. package/dist/worktree/provision.js.map +1 -1
  537. package/dist/worktree/safety.d.ts +14 -4
  538. package/dist/worktree/safety.d.ts.map +1 -1
  539. package/dist/worktree/safety.js +37 -7
  540. package/dist/worktree/safety.js.map +1 -1
  541. package/dist/worktree/scratch-guard.d.ts +53 -2
  542. package/dist/worktree/scratch-guard.d.ts.map +1 -1
  543. package/dist/worktree/scratch-guard.js +115 -30
  544. package/dist/worktree/scratch-guard.js.map +1 -1
  545. package/dist/worktree/unmerged-capture-escalation.d.ts +52 -0
  546. package/dist/worktree/unmerged-capture-escalation.d.ts.map +1 -0
  547. package/dist/worktree/unmerged-capture-escalation.js +64 -0
  548. package/dist/worktree/unmerged-capture-escalation.js.map +1 -0
  549. package/package.json +2 -2
@@ -0,0 +1,68 @@
1
+ import type { FocusDeliveryInfo } from '../types/index.js';
2
+ import type { updateDeliveryStatus } from '../queries/deliveries.js';
3
+ import type { getDeliveryIssues } from '../queries/issues.js';
4
+ import type { fetchEffectiveWorkflow } from '../queries/workflows.js';
5
+ import type { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
6
+ import type { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
7
+ import { type ExternalConditionEvaluator } from '../delivery/external-hold.js';
8
+ import { type CommitVerdictGateDeps, type GateReads } from './review-exit-verdict-gate.js';
9
+ import { type ReviewHeadApproval } from './review-approved-head-gate.js';
10
+ import type { ReviewCensus } from './review-census-record.js';
11
+ /** The focus a pass converges. */
12
+ export interface StandingApprovalFocus {
13
+ organizationId: string;
14
+ productId: string;
15
+ focusId: string;
16
+ focusName: string;
17
+ readOnly: boolean;
18
+ }
19
+ /** Injected reads and the single writer; production wiring lives in state-cascade.ts. */
20
+ export interface StandingApprovalDeps extends GateReads, Pick<CommitVerdictGateDeps, 'resolveJudgedCommit'> {
21
+ /** The focus head and the commit its current approval judged. Throws when unreadable. */
22
+ readReviewHeadApproval: () => Promise<ReviewHeadApproval>;
23
+ /** The focus's review censuses, newest first. */
24
+ listReviewCensuses: () => readonly ReviewCensus[];
25
+ isReviewSessionActive: (focusId: string) => boolean;
26
+ getDeliveryIssues: typeof getDeliveryIssues;
27
+ fetchEffectiveWorkflow: typeof fetchEffectiveWorkflow;
28
+ updateDeliveryStatus: typeof updateDeliveryStatus;
29
+ findOpenOperatorHoldForDelivery: typeof findOpenOperatorHoldForDelivery;
30
+ listOpenShortfallProposalIds: typeof listOpenShortfallProposalIds;
31
+ evaluateExternalCondition: ExternalConditionEvaluator;
32
+ }
33
+ /** What one pass did. */
34
+ export interface StandingApprovalOutcome {
35
+ /** Deliveries moved verify -> done on the standing approval. */
36
+ converged: string[];
37
+ /** Candidates left in verify, with the reason. */
38
+ held: Array<{
39
+ deliveryId: string;
40
+ reason: string;
41
+ }>;
42
+ }
43
+ /**
44
+ * Whether a gate_state carries no hold or failure detail of any kind. Defensive over the JSONB. Pure.
45
+ *
46
+ * `shortfallProposalIds` (the review exit's undisposed-proposal marker) is NOT read
47
+ * here: it only renders a hold this pass re-reads LIVE, fail-closed, before any done
48
+ * write (resolveShortfallHold). Nothing clears that marker at an approved head -- the
49
+ * review exit wrote it and no review runs there -- so treating it as a hold would
50
+ * strand a delivery whose proposals an operator ruling has since disposed. The done
51
+ * write clears gate_state, marker included.
52
+ */
53
+ export declare function gateStateHoldsNothing(gateState: unknown): boolean;
54
+ /** Whether a delivery sits in verify with a durable verify PASS and no hold. Pure. */
55
+ export declare function isStandingApprovalCandidate(d: Pick<FocusDeliveryInfo, 'executionStatus' | 'verificationOutcome' | 'gateState'>): boolean;
56
+ /**
57
+ * Whether the newest census of `approvedSha` is an approving one naming the
58
+ * delivery at its current re-code iteration. Pure.
59
+ */
60
+ export declare function censusCoversDelivery(censuses: readonly ReviewCensus[], approvedSha: string, delivery: Pick<FocusDeliveryInfo, 'id' | 'iterationCount'>): boolean;
61
+ /** Test seam: forget logged hold reasons. */
62
+ export declare function __resetStandingApprovalConvergenceForTests(): void;
63
+ /**
64
+ * Converge every covered, passed, unheld verify delivery of the focus on its
65
+ * standing approval (see the module header). Never throws.
66
+ */
67
+ export declare function convergeOnStandingApproval(focus: StandingApprovalFocus, deliveries: readonly FocusDeliveryInfo[], deps: StandingApprovalDeps): Promise<StandingApprovalOutcome>;
68
+ //# sourceMappingURL=standing-approval-convergence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standing-approval-convergence.d.ts","sourceRoot":"","sources":["../../src/completion/standing-approval-convergence.ts"],"names":[],"mappings":"AAmEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAI/E,OAAO,EAA6C,KAAK,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1H,OAAO,EAAwB,KAAK,qBAAqB,EAAE,KAAK,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACjH,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,kCAAkC;AAClC,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,yFAAyF;AACzF,MAAM,WAAW,oBAAqB,SAAQ,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACzG,yFAAyF;IACzF,sBAAsB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1D,iDAAiD;IACjD,kBAAkB,EAAE,MAAM,SAAS,YAAY,EAAE,CAAC;IAClD,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,+BAA+B,EAAE,OAAO,+BAA+B,CAAC;IACxE,4BAA4B,EAAE,OAAO,4BAA4B,CAAC;IAClE,yBAAyB,EAAE,0BAA0B,CAAC;CACvD;AAED,yBAAyB;AACzB,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kDAAkD;IAClD,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAOD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAQjE;AAED,sFAAsF;AACtF,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,WAAW,CAAC,GAClF,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,gBAAgB,CAAC,GACzD,OAAO,CAMT;AAKD,6CAA6C;AAC7C,wBAAgB,0CAA0C,IAAI,IAAI,CAEjE;AA6DD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CA4ClC"}
@@ -0,0 +1,230 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/completion/standing-approval-convergence.test.ts,
3
+ // packages/daemon/src/integration/approved-head-hold-release-regression.test.ts,
4
+ // packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
5
+ // packages/daemon/src/integration/standing-approval-release-regression.test.ts
6
+ // PINNED-BY-END
7
+ /**
8
+ * A verify delivery released at an already-approved focus head converges on the
9
+ * STANDING approval: no second review of the unchanged commit, no second approval.
10
+ *
11
+ * Review runs once per distinct focus head (completion/review-approved-head-gate.ts).
12
+ * But a verify delivery can become closable at an approved head with no new commit:
13
+ * the review approved the commit while the delivery was held (a shortfall park,
14
+ * undisposed shortfall proposals, a pending gate verdict), then an operator ruling
15
+ * released the park and verify re-judged the SAME commit as passing. Only a review
16
+ * exit moves verify -> done, so the delivery would sit in verify forever -- and
17
+ * re-opening review for it (the former same-head exception) re-ran review and
18
+ * stamped another approval of the unchanged reviewed_sha.
19
+ *
20
+ * Why converging on that approval is honest: the approval judged the code at this
21
+ * exact commit and approved it; the delivery was in verify when it did (the review
22
+ * census, completion/review-census-record.ts, names it, at the same re-code
23
+ * iteration); and the only thing that kept it out of done was a hold, which is now
24
+ * lowered and which verify has re-judged as a PASS at the same commit. Nothing the
25
+ * review judged has changed, so the review's verdict still stands for it. Where any
26
+ * of those facts is missing, it does NOT converge:
27
+ * - the focus head is not EXACTLY the commit the current approval judged
28
+ * (isHeadAlreadyApproved: both known, same commit) -- a moved head or a revoked
29
+ * approval is review eligibility's business, not this pass's;
30
+ * - the newest census of that commit is not an approving one, or does not name the
31
+ * delivery at its current iteration count (a delivery that reached verify after
32
+ * the approval, or was sent back to coding since, was never judged by it);
33
+ * - the delivery has no durable verify PASS (org_nodes.verification_outcome) or
34
+ * its gate_state carries any hold or failure detail (gateStateHoldsNothing);
35
+ * - a review session is live on the focus (its exit owns routing).
36
+ *
37
+ * Every candidate then crosses the SAME machinery the review exit's report-backed
38
+ * done crosses, in its order (completion/review-exit-phase.ts):
39
+ * resolveReconciledWrite with the standing approval as the approved report
40
+ * (blocking open work -> not done, left for the open-work pass), the operator-hold
41
+ * gate (resolveOperatorHold), the external-hold gate (resolveExternalHold), the
42
+ * shortfall-proposal hold (resolveShortfallHold) and the commit-verdict gate's done
43
+ * read (readDoneRouteVerdict: a PASSING verdict, or no gate configured, for the
44
+ * judged commit -- which must itself be the approved commit), then the done write
45
+ * through updateDeliveryStatus with gate_state cleared and a verify -> done
46
+ * transition recorded. It writes NO focus_reviews row and NO auto-approval record:
47
+ * the approval it reuses is already the merge gate's evidence for exactly this
48
+ * commit (merge/merge-gate-coverage.ts reads the same readLatestApprovedReviewSha).
49
+ *
50
+ * A held delivery is left in verify WITHOUT a hold marker, unlike the review exit:
51
+ * those markers are cleared by the review spawn park and the review exit, and no
52
+ * review runs at an approved head -- a marker would strand the delivery after its
53
+ * hold lifted. This pass writes nothing for a hold and re-reads every hold on the
54
+ * next poll instead (one log line per delivery per reason).
55
+ *
56
+ * FAILS CLOSED: an unreadable head, approval, census, issue list, workflow or hold
57
+ * leaves the delivery in verify; the next poll retries. A read failure is never
58
+ * converted into done.
59
+ *
60
+ * Runs once per focus per cascade poll, after checkAutoReview
61
+ * (completion/state-cascade.ts runFocusCascadePass).
62
+ *
63
+ * @module completion/standing-approval-convergence
64
+ */
65
+ import { DELIVERY_STATUS } from '@telora/daemon-core';
66
+ import { sameCommit } from '../queries/focus-review-approval.js';
67
+ import { resolveReconciledWrite } from '../delivery/delivery-reconciler-apply.js';
68
+ import { resolveOperatorHold, describeOperatorHold } from '../delivery/operator-hold.js';
69
+ import { resolveExternalHold, describeExternalHold } from '../delivery/external-hold.js';
70
+ import { resolveShortfallHold, describeShortfallHold } from './review-exit-shortfall.js';
71
+ import { readDoneRouteVerdict } from './review-exit-verdict-gate.js';
72
+ import { isHeadAlreadyApproved } from './review-approved-head-gate.js';
73
+ import { readShortfallPark } from '../verify/shortfall-park.js';
74
+ import { createLogger } from '../shell/log.js';
75
+ const log = createLogger({ module: 'state-cascade' });
76
+ /** gate_state keys that record a verify failure or a hold (never a pass). */
77
+ const HOLD_OR_FAILURE_KEYS = [
78
+ 'verification', 'shortfallReconciliation', 'evidenceUnavailable', 'operatorHold', 'externalHold', 'commitVerdictHold',
79
+ ];
80
+ /**
81
+ * Whether a gate_state carries no hold or failure detail of any kind. Defensive over the JSONB. Pure.
82
+ *
83
+ * `shortfallProposalIds` (the review exit's undisposed-proposal marker) is NOT read
84
+ * here: it only renders a hold this pass re-reads LIVE, fail-closed, before any done
85
+ * write (resolveShortfallHold). Nothing clears that marker at an approved head -- the
86
+ * review exit wrote it and no review runs there -- so treating it as a hold would
87
+ * strand a delivery whose proposals an operator ruling has since disposed. The done
88
+ * write clears gate_state, marker included.
89
+ */
90
+ export function gateStateHoldsNothing(gateState) {
91
+ if (gateState == null)
92
+ return true;
93
+ if (typeof gateState !== 'object' || Array.isArray(gateState))
94
+ return false;
95
+ const gate = gateState;
96
+ const blocking = Array.isArray(gate.blocking) ? gate.blocking : [];
97
+ if (blocking.some((b) => !(b != null && typeof b === 'object' && b.passed === true)))
98
+ return false;
99
+ if (HOLD_OR_FAILURE_KEYS.some((k) => gate[k] != null))
100
+ return false;
101
+ return readShortfallPark(gateState) === null;
102
+ }
103
+ /** Whether a delivery sits in verify with a durable verify PASS and no hold. Pure. */
104
+ export function isStandingApprovalCandidate(d) {
105
+ return d.executionStatus === DELIVERY_STATUS.VERIFY && d.verificationOutcome === 'passed' && gateStateHoldsNothing(d.gateState);
106
+ }
107
+ /**
108
+ * Whether the newest census of `approvedSha` is an approving one naming the
109
+ * delivery at its current re-code iteration. Pure.
110
+ */
111
+ export function censusCoversDelivery(censuses, approvedSha, delivery) {
112
+ const newest = censuses
113
+ .filter((c) => sameCommit(c.sha, approvedSha))
114
+ .reduce((a, c) => (a === null || Date.parse(c.recordedAt) > Date.parse(a.recordedAt) ? c : a), null);
115
+ if (!newest?.approving)
116
+ return false;
117
+ return newest.verifyDeliveries.some((v) => v.id === delivery.id && v.iterationCount === (delivery.iterationCount ?? 0));
118
+ }
119
+ /** The last hold reason logged per delivery (one line per delivery per reason, not one per poll). */
120
+ const lastLoggedReason = new Map();
121
+ /** Test seam: forget logged hold reasons. */
122
+ export function __resetStandingApprovalConvergenceForTests() {
123
+ lastLoggedReason.clear();
124
+ }
125
+ function logHeldOnce(focus, d, sha, reason) {
126
+ if (lastLoggedReason.get(d.id) === reason)
127
+ return;
128
+ lastLoggedReason.set(d.id, reason);
129
+ log.info(`[state-cascade] Delivery "${d.name}" on "${focus.focusName}" passed verify at the approved head ${sha.slice(0, 12)} ` +
130
+ `but does not converge on the standing approval: ${reason}. Left in verify; re-read next poll.`);
131
+ }
132
+ /**
133
+ * The reason the review exit's done gates withhold `d`, or null when every gate lets
134
+ * it through. `shortfall` is the focus-scoped proposal read, taken once per pass.
135
+ */
136
+ async function doneWithheldBy(deps, focus, d, approvedSha, shortfall) {
137
+ const issues = await deps.getDeliveryIssues(d.id);
138
+ const decision = resolveReconciledWrite({
139
+ input: {
140
+ currentStatus: DELIVERY_STATUS.VERIFY,
141
+ issues: issues.map((i) => ({ status: i.status, issueType: i.issueType })),
142
+ gitState: { worktreeCommitted: true },
143
+ guardVerdict: null,
144
+ // The standing approval is the approved report this delivery's review stamped.
145
+ reviewState: { reviewRequested: true, reportExists: true, sessionType: 'review', succeeded: true, outcome: 'approved', inspected: true },
146
+ },
147
+ });
148
+ if (decision.target !== DELIVERY_STATUS.DONE)
149
+ return `the reconciler routes it to ${decision.target} (${decision.result.reason})`;
150
+ const operatorHold = await resolveOperatorHold(deps, d.id, focus.focusId);
151
+ if (operatorHold.held)
152
+ return describeOperatorHold(operatorHold);
153
+ const externalHold = await resolveExternalHold(deps, d.id, d.gateState, deps.evaluateExternalCondition);
154
+ if (externalHold.held)
155
+ return describeExternalHold(externalHold);
156
+ if (!shortfall.clear)
157
+ return describeShortfallHold(shortfall);
158
+ const verdict = await readDoneRouteVerdict(deps, { ...focus, currentBranchTip: approvedSha }, { read_only: focus.readOnly }, d);
159
+ if (verdict.state !== 'passed' && verdict.state !== 'unconfigured') {
160
+ return `the gate verdict for ${(verdict.sha ?? '<unreadable>').slice(0, 12)} is ${verdict.state}`;
161
+ }
162
+ if (verdict.sha === null || !sameCommit(verdict.sha, approvedSha)) {
163
+ return `the judged commit ${(verdict.sha ?? '<unreadable>').slice(0, 12)} is not the approved commit`;
164
+ }
165
+ return null;
166
+ }
167
+ /** Read the head/approval pair; null (logged) when it cannot be read or the head is not the approved commit. */
168
+ async function readApprovedHead(deps, focus) {
169
+ let read;
170
+ try {
171
+ read = await deps.readReviewHeadApproval();
172
+ }
173
+ catch (err) {
174
+ log.warn(`[state-cascade] "${focus.focusName}": approved head unreadable -- no standing-approval convergence this poll: ${err.message}`);
175
+ return null;
176
+ }
177
+ return isHeadAlreadyApproved(read) ? read.approvedSha : null;
178
+ }
179
+ /**
180
+ * Converge every covered, passed, unheld verify delivery of the focus on its
181
+ * standing approval (see the module header). Never throws.
182
+ */
183
+ export async function convergeOnStandingApproval(focus, deliveries, deps) {
184
+ const outcome = { converged: [], held: [] };
185
+ const candidates = deliveries.filter(isStandingApprovalCandidate);
186
+ for (const d of deliveries)
187
+ if (!candidates.includes(d))
188
+ lastLoggedReason.delete(d.id);
189
+ if (candidates.length === 0 || deps.isReviewSessionActive(focus.focusId))
190
+ return outcome;
191
+ const approvedSha = await readApprovedHead(deps, focus);
192
+ if (approvedSha === null)
193
+ return outcome;
194
+ const censuses = deps.listReviewCensuses();
195
+ const covered = candidates.filter((d) => censusCoversDelivery(censuses, approvedSha, d));
196
+ for (const d of candidates.filter((c) => !covered.includes(c))) {
197
+ const reason = 'no approving review of that commit saw it in verify at its current iteration';
198
+ outcome.held.push({ deliveryId: d.id, reason });
199
+ logHeldOnce(focus, d, approvedSha, reason);
200
+ }
201
+ if (covered.length === 0)
202
+ return outcome;
203
+ const shortfall = await resolveShortfallHold(deps, focus.focusId, focus.focusName);
204
+ for (const d of covered) {
205
+ try {
206
+ const reason = await doneWithheldBy(deps, focus, d, approvedSha, shortfall);
207
+ if (reason !== null) {
208
+ outcome.held.push({ deliveryId: d.id, reason });
209
+ logHeldOnce(focus, d, approvedSha, reason);
210
+ continue;
211
+ }
212
+ const doneStage = (await deps.fetchEffectiveWorkflow(d.id)).stages.find((s) => s.name === DELIVERY_STATUS.DONE);
213
+ await deps.updateDeliveryStatus(d.id, DELIVERY_STATUS.DONE, doneStage?.id ?? null, null, undefined, {
214
+ organizationId: focus.organizationId, fromStatus: DELIVERY_STATUS.VERIFY,
215
+ });
216
+ lastLoggedReason.delete(d.id);
217
+ outcome.converged.push(d.id);
218
+ log.info(`[state-cascade] Delivery "${d.name}" moved from verify to done on "${focus.focusName}": it converged on the ` +
219
+ `standing approval at ${approvedSha.slice(0, 12)} (the current focus_reviews approval or recorded auto-approval ` +
220
+ `of that commit, whose review saw it in verify); verify passed and no hold stands. No review run, no approval written.`);
221
+ }
222
+ catch (err) {
223
+ const reason = `a read or write failed (${err.message})`;
224
+ outcome.held.push({ deliveryId: d.id, reason });
225
+ logHeldOnce(focus, d, approvedSha, reason);
226
+ }
227
+ }
228
+ return outcome;
229
+ }
230
+ //# sourceMappingURL=standing-approval-convergence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standing-approval-convergence.js","sourceRoot":"","sources":["../../src/completion/standing-approval-convergence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ReviewHeadApproval } from './review-approved-head-gate.js';
2
+ import type { StandingApprovalDeps } from './standing-approval-convergence.js';
3
+ /** The production deps for one focus; `readReviewHeadApproval` is the cascade's own head/approval read for it. */
4
+ export declare function defaultStandingApprovalDeps(productId: string, focusId: string, readReviewHeadApproval: () => Promise<ReviewHeadApproval>): StandingApprovalDeps;
5
+ //# sourceMappingURL=standing-approval-deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standing-approval-deps.d.ts","sourceRoot":"","sources":["../../src/completion/standing-approval-deps.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,kHAAkH;AAClH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,GACxD,oBAAoB,CAatB"}
@@ -0,0 +1,37 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/completion/standing-approval-convergence.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * Production wiring of the standing-approval convergence
6
+ * (completion/standing-approval-convergence.ts): the same reads and single writer
7
+ * the review exit is wired with (completion/review-exit-deps.ts), bound to one
8
+ * focus. Kept out of the convergence module so its tests import it without the
9
+ * query layer.
10
+ *
11
+ * @module completion/standing-approval-deps
12
+ */
13
+ import { updateDeliveryStatus } from '../queries/deliveries.js';
14
+ import { getDeliveryIssues } from '../queries/issues.js';
15
+ import { fetchEffectiveWorkflow } from '../queries/workflows.js';
16
+ import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
17
+ import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
18
+ import { getActiveTeams } from '../focus/focus-team-state.js';
19
+ import { commitGateSeams } from '../verify/commit-gate-configured.js';
20
+ import { makeDeferredRequestClosureEvaluator } from '../delivery/external-hold.js';
21
+ import { listReviewCensuses } from './review-census-record.js';
22
+ /** The production deps for one focus; `readReviewHeadApproval` is the cascade's own head/approval read for it. */
23
+ export function defaultStandingApprovalDeps(productId, focusId, readReviewHeadApproval) {
24
+ return {
25
+ ...commitGateSeams,
26
+ readReviewHeadApproval,
27
+ listReviewCensuses: () => listReviewCensuses(productId, focusId),
28
+ isReviewSessionActive: (id) => getActiveTeams().get(id)?.sessionType === 'review',
29
+ getDeliveryIssues,
30
+ fetchEffectiveWorkflow,
31
+ updateDeliveryStatus,
32
+ findOpenOperatorHoldForDelivery,
33
+ listOpenShortfallProposalIds,
34
+ evaluateExternalCondition: makeDeferredRequestClosureEvaluator(productId),
35
+ };
36
+ }
37
+ //# sourceMappingURL=standing-approval-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standing-approval-deps.js","sourceRoot":"","sources":["../../src/completion/standing-approval-deps.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,kFAAkF;AAClF,gBAAgB;AAEhB;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,kHAAkH;AAClH,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,OAAe,EACf,sBAAyD;IAEzD,OAAO;QACL,GAAG,eAAe;QAClB,sBAAsB;QACtB,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC;QAChE,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,KAAK,QAAQ;QACjF,iBAAiB;QACjB,sBAAsB;QACtB,oBAAoB;QACpB,+BAA+B;QAC/B,4BAA4B;QAC5B,yBAAyB,EAAE,mCAAmC,CAAC,SAAS,CAAC;KAC1E,CAAC;AACJ,CAAC"}
@@ -3,6 +3,7 @@ import type { FocusDeliveryInfo } from '../types/index.js';
3
3
  import { type SettleSweepOutcome } from './settle-injection-sweep.js';
4
4
  import { type FocusExecutionPhase } from '../focus/focus-phase.js';
5
5
  import { type ReviewNextStepIssue } from './review-next-step.js';
6
+ import { type ReviewHeadApproval } from './review-approved-head-gate.js';
6
7
  /** Injectable dependencies for cascade functions (testing). */
7
8
  export interface CascadeDeps {
8
9
  getFocusDeliveries: (focusId: string) => Promise<FocusDeliveryInfo[]>;
@@ -56,6 +57,16 @@ export interface CascadeDeps {
56
57
  * open-work matrix; a partial test deps object omitting it reads no issues.
57
58
  */
58
59
  getFocusIssues?: (focusId: string) => Promise<readonly ReviewNextStepIssue[]>;
60
+ /**
61
+ * The focus branch head and the commit its current approval judged
62
+ * (completion/review-approved-head-gate.ts). checkAutoReview declines to open
63
+ * the window when both are known and name the same commit: review runs once per
64
+ * distinct focus head, so a gate_state rewrite that invalidates the in-memory
65
+ * signature cannot re-approve an unchanged head. Fails OPEN on a throw or an
66
+ * unknown value. Wired per focus by runFocusCascadePass (it needs the row's
67
+ * branch_name); a partial test deps object omitting it behaves as before.
68
+ */
69
+ readReviewHeadApproval?: (focusId: string) => Promise<ReviewHeadApproval>;
59
70
  }
60
71
  /**
61
72
  * Whether a settle sweep's outcome permits latching the focus as swept (quiet
@@ -1 +1 @@
1
- {"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAW3D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAA8C,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAqB7G,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;CAC/E;AAsCD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAExE;AAcD;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAGxD;AA2ED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgFf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,EACjC,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsEf;AA4JD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1E"}
1
+ {"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAW3D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAA8C,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAgB7G,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAQxC,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;IAC9E;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC3E;AAwCD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAExE;AAcD;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAIxD;AAoFD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAyFf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,EACjC,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsEf;AAwKD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1E"}
@@ -1,5 +1,6 @@
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/completion/delivery-judgment-completeness.test.ts,
3
+ // packages/daemon/src/completion/review-approved-head-gate.test.ts,
3
4
  // packages/daemon/src/completion/review-cycle-cap-regression.test.ts,
4
5
  // packages/daemon/src/completion/review-exit-breaker-hold.test.ts,
5
6
  // packages/daemon/src/completion/review-next-step.test.ts,
@@ -8,8 +9,15 @@
8
9
  // packages/daemon/src/completion/state-cascade.test.ts,
9
10
  // packages/daemon/src/focus/focus-reaches-review-with-held-delivery.test.ts,
10
11
  // packages/daemon/src/focus/mixed-aggregate-review-gate.test.ts,
12
+ // packages/daemon/src/focus/parked-shortfall-spawn.test.ts,
11
13
  // packages/daemon/src/focus/pending-spawn-review-next-step.test.ts,
12
- // packages/daemon/src/focus/review-cycle-cap-hold.test.ts
14
+ // packages/daemon/src/focus/review-cycle-cap-hold.test.ts,
15
+ // packages/daemon/src/integration/approved-head-gate-failure-respawn-regression.test.ts,
16
+ // packages/daemon/src/integration/approved-head-hold-release-regression.test.ts,
17
+ // packages/daemon/src/integration/failed-verdict-review-exit-respawn-regression.test.ts,
18
+ // packages/daemon/src/integration/failed-verdict-review-loop-regression.test.ts,
19
+ // packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
20
+ // packages/daemon/src/integration/standing-approval-release-regression.test.ts
13
21
  // PINNED-BY-END
14
22
  /**
15
23
  * Deterministic state cascade engine.
@@ -56,6 +64,9 @@ import { reconcileCoverageIncompleteHold } from './coverage-stabilized.js';
56
64
  import { reconcileReviewCycleCapFiling } from './review-cycle-cap.js';
57
65
  import { resolveReviewCycleCapHold } from '../focus/review-cycle-cap-hold.js';
58
66
  import { hasOpenFocusEscalation as _hasOpenFocusEscalation } from '../queries/escalations.js';
67
+ import { declinesReviewAtApprovedHead, readReviewHeadApproval, } from './review-approved-head-gate.js';
68
+ import { convergeOnStandingApproval } from './standing-approval-convergence.js';
69
+ import { defaultStandingApprovalDeps } from './standing-approval-deps.js';
59
70
  import { createLogger } from '../shell/log.js';
60
71
  const log = createLogger({ module: 'state-cascade' });
61
72
  const defaultDeps = {
@@ -78,6 +89,8 @@ const defaultDeps = {
78
89
  * re-iteration (status change, new merge commit) still re-triggers review.
79
90
  */
80
91
  const lastReviewSignature = new Map();
92
+ /** Focuses whose current all-parked episode was already logged (one line per episode, not one per poll). */
93
+ const parkedFocusesLogged = new Set();
81
94
  /**
82
95
  * Focuses whose anchored-injection settle sweep has already fully succeeded this
83
96
  * run, so a winding_down focus is not re-fetched every poll (keeping a terminal
@@ -123,6 +136,7 @@ function computeReviewSignature(deliveries) {
123
136
  export function __resetReviewSignaturesForTesting() {
124
137
  lastReviewSignature.clear();
125
138
  settledSweptFocuses.clear();
139
+ parkedFocusesLogged.clear();
126
140
  }
127
141
  /**
128
142
  * When a focus reaches the verifying phase and auto-review is enabled
@@ -192,6 +206,13 @@ function declinesReviewWindowOnIssues(focusId, next) {
192
206
  }
193
207
  return false;
194
208
  }
209
+ function logParkedFocusOnce(focusId, parkedCount) {
210
+ if (parkedFocusesLogged.has(focusId))
211
+ return;
212
+ parkedFocusesLogged.add(focusId);
213
+ log.info(`[state-cascade] Not opening a review window on focus ${focusId}: all ${parkedCount} verify delivery(ies) are ` +
214
+ `parked on a repeating verify shortfall -- neither review nor coding is next until verify releases a park.`);
215
+ }
195
216
  export async function checkAutoReview(focusId, phase, pipelineConfig, reviewRequestedAt, deliveries, deps = defaultDeps) {
196
217
  // The window OPENS at convergence (phase 'verifying' = active === 0, verify > 0):
197
218
  // that is exactly when a review team can spawn (a focus runs one team; a review
@@ -217,6 +238,12 @@ export async function checkAutoReview(focusId, phase, pipelineConfig, reviewRequ
217
238
  });
218
239
  if (next.step === 'not_converged')
219
240
  return;
241
+ // Every verify delivery is parked on a repeating shortfall: no review window, no skip record -- verify re-judgement is next.
242
+ if (next.step === 'parked') {
243
+ logParkedFocusOnce(focusId, next.verifyDeliveries.length);
244
+ return;
245
+ }
246
+ parkedFocusesLogged.delete(focusId);
220
247
  const { verifyDeliveries } = next;
221
248
  if (next.step === 'review_disabled') {
222
249
  await recordDisabledReviewSkip(deps, focusId, verifyDeliveries.length);
@@ -248,6 +275,10 @@ export async function checkAutoReview(focusId, phase, pipelineConfig, reviewRequ
248
275
  log.info(`[state-cascade] Auto-review HELD for focus ${focusId}: review-cycle cap reached without converging; not re-stamping.`);
249
276
  return;
250
277
  }
278
+ // Approved head: the focus head is the commit its current approval already judged, so a review would only re-approve it.
279
+ // A delivery released at that head converges on the standing approval instead (standing-approval-convergence.ts).
280
+ if (await declinesReviewAtApprovedHead(focusId, deps.readReviewHeadApproval))
281
+ return;
251
282
  try {
252
283
  await deps.setReviewRequestedAt(focusId, new Date().toISOString());
253
284
  lastReviewSignature.set(focusId, signature);
@@ -369,14 +400,22 @@ async function runFocusCascadePass(pc, focus) {
369
400
  deliveries: deliveries.map(d => ({ executionStatus: d.executionStatus })),
370
401
  reviewRequestedAt: focus.review_requested_at,
371
402
  });
403
+ const readHeadApproval = () => readReviewHeadApproval({
404
+ productId: pc.productId, focusId: focus.focus_id, branchName: focus.branch_name, repoPath: pc.repoPath,
405
+ integrationBranch: pc.integrationBranch,
406
+ });
372
407
  await checkAutoReview(focus.focus_id, phase, focus.pipeline_config, focus.review_requested_at, deliveries,
373
408
  // The review-cycle cap hold reads this row's count -- the same hold every spawn gate reads.
409
+ // The approved-head gate reads this row's branch identity.
374
410
  {
375
411
  ...defaultDeps,
376
412
  isReviewCycleCapHeld: () => resolveReviewCycleCapHold({
377
413
  focusId: focus.focus_id, focusName: focus.focus_name, reviewCycleCount: focus.review_cycle_count,
378
414
  }),
415
+ readReviewHeadApproval: readHeadApproval,
379
416
  });
417
+ // A verify delivery released at the approved head closes on that approval, not on a second review of the same commit.
418
+ await convergeOnStandingApproval({ organizationId: pc.organizationId, productId: pc.productId, focusId: focus.focus_id, focusName: focus.focus_name, readOnly: focus.read_only }, deliveries, defaultStandingApprovalDeps(pc.productId, focus.focus_id, readHeadApproval));
380
419
  await clearStaleReviewRequest(focus.focus_id, phase, focus.review_requested_at, deliveries, focus.reviewed_through_sha);
381
420
  // Retire anchored injections at focus scope on the lifecycle that
382
421
  // ACTUALLY runs -- the derived winding_down settle (TEL-5). This
@@ -1 +1 @@
1
- {"version":3,"file":"state-cascade.js","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-cascade.js","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"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"}