@telora/daemon 0.22.104 → 0.22.132

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 (482) hide show
  1. package/build-info.json +4 -3
  2. package/dist/completion/commit-verdict-release.d.ts +49 -0
  3. package/dist/completion/commit-verdict-release.d.ts.map +1 -0
  4. package/dist/completion/commit-verdict-release.js +240 -0
  5. package/dist/completion/commit-verdict-release.js.map +1 -0
  6. package/dist/completion/completion-phase-registry.d.ts +10 -4
  7. package/dist/completion/completion-phase-registry.d.ts.map +1 -1
  8. package/dist/completion/completion-phase-registry.js +19 -7
  9. package/dist/completion/completion-phase-registry.js.map +1 -1
  10. package/dist/completion/detector.d.ts.map +1 -1
  11. package/dist/completion/detector.js +1 -0
  12. package/dist/completion/detector.js.map +1 -1
  13. package/dist/completion/event-entry-phases.d.ts +6 -3
  14. package/dist/completion/event-entry-phases.d.ts.map +1 -1
  15. package/dist/completion/event-entry-phases.js +135 -76
  16. package/dist/completion/event-entry-phases.js.map +1 -1
  17. package/dist/completion/event-phases.d.ts +24 -3
  18. package/dist/completion/event-phases.d.ts.map +1 -1
  19. package/dist/completion/event-phases.js +9 -9
  20. package/dist/completion/event-phases.js.map +1 -1
  21. package/dist/completion/event.d.ts +8 -0
  22. package/dist/completion/event.d.ts.map +1 -1
  23. package/dist/completion/event.js +47 -21
  24. package/dist/completion/event.js.map +1 -1
  25. package/dist/completion/exit-classification.d.ts.map +1 -1
  26. package/dist/completion/exit-classification.js +1 -0
  27. package/dist/completion/exit-classification.js.map +1 -1
  28. package/dist/completion/merge-phase.d.ts +21 -9
  29. package/dist/completion/merge-phase.d.ts.map +1 -1
  30. package/dist/completion/merge-phase.js +35 -10
  31. package/dist/completion/merge-phase.js.map +1 -1
  32. package/dist/completion/review-auto-approval-record.d.ts +19 -0
  33. package/dist/completion/review-auto-approval-record.d.ts.map +1 -0
  34. package/dist/completion/review-auto-approval-record.js +102 -0
  35. package/dist/completion/review-auto-approval-record.js.map +1 -0
  36. package/dist/completion/review-cycle-cap.d.ts +62 -0
  37. package/dist/completion/review-cycle-cap.d.ts.map +1 -0
  38. package/dist/completion/review-cycle-cap.js +180 -0
  39. package/dist/completion/review-cycle-cap.js.map +1 -0
  40. package/dist/completion/review-exit-deps.d.ts +17 -2
  41. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  42. package/dist/completion/review-exit-deps.js +19 -2
  43. package/dist/completion/review-exit-deps.js.map +1 -1
  44. package/dist/completion/review-exit-escalations.d.ts +45 -23
  45. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  46. package/dist/completion/review-exit-escalations.js +15 -74
  47. package/dist/completion/review-exit-escalations.js.map +1 -1
  48. package/dist/completion/review-exit-evidence.d.ts +9 -0
  49. package/dist/completion/review-exit-evidence.d.ts.map +1 -1
  50. package/dist/completion/review-exit-evidence.js +4 -1
  51. package/dist/completion/review-exit-evidence.js.map +1 -1
  52. package/dist/completion/review-exit-foreign-findings.d.ts +151 -0
  53. package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -0
  54. package/dist/completion/review-exit-foreign-findings.js +474 -0
  55. package/dist/completion/review-exit-foreign-findings.js.map +1 -0
  56. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  57. package/dist/completion/review-exit-phase.js +71 -64
  58. package/dist/completion/review-exit-phase.js.map +1 -1
  59. package/dist/completion/review-exit-progress.d.ts +20 -0
  60. package/dist/completion/review-exit-progress.d.ts.map +1 -1
  61. package/dist/completion/review-exit-progress.js +28 -19
  62. package/dist/completion/review-exit-progress.js.map +1 -1
  63. package/dist/completion/review-exit-rehoming.d.ts +5 -0
  64. package/dist/completion/review-exit-rehoming.d.ts.map +1 -1
  65. package/dist/completion/review-exit-rehoming.js.map +1 -1
  66. package/dist/completion/review-exit-verdict-gate.d.ts +202 -0
  67. package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -0
  68. package/dist/completion/review-exit-verdict-gate.js +228 -0
  69. package/dist/completion/review-exit-verdict-gate.js.map +1 -0
  70. package/dist/completion/review-next-step.d.ts +62 -0
  71. package/dist/completion/review-next-step.d.ts.map +1 -0
  72. package/dist/completion/review-next-step.js +63 -0
  73. package/dist/completion/review-next-step.js.map +1 -0
  74. package/dist/completion/session-hold-sweep-deps.d.ts +17 -0
  75. package/dist/completion/session-hold-sweep-deps.d.ts.map +1 -0
  76. package/dist/completion/session-hold-sweep-deps.js +89 -0
  77. package/dist/completion/session-hold-sweep-deps.js.map +1 -0
  78. package/dist/completion/session-hold.d.ts +180 -0
  79. package/dist/completion/session-hold.d.ts.map +1 -0
  80. package/dist/completion/session-hold.js +238 -0
  81. package/dist/completion/session-hold.js.map +1 -0
  82. package/dist/completion/state-cascade.d.ts +19 -0
  83. package/dist/completion/state-cascade.d.ts.map +1 -1
  84. package/dist/completion/state-cascade.js +85 -31
  85. package/dist/completion/state-cascade.js.map +1 -1
  86. package/dist/completion/team-lifecycle.d.ts +35 -2
  87. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  88. package/dist/completion/team-lifecycle.js +165 -94
  89. package/dist/completion/team-lifecycle.js.map +1 -1
  90. package/dist/completion/team-phase.d.ts +27 -15
  91. package/dist/completion/team-phase.d.ts.map +1 -1
  92. package/dist/completion/team-phase.js +34 -15
  93. package/dist/completion/team-phase.js.map +1 -1
  94. package/dist/delivery/commit-verdict-hold.d.ts +55 -0
  95. package/dist/delivery/commit-verdict-hold.d.ts.map +1 -0
  96. package/dist/delivery/commit-verdict-hold.js +118 -0
  97. package/dist/delivery/commit-verdict-hold.js.map +1 -0
  98. package/dist/directive/directive-dispatch.d.ts.map +1 -1
  99. package/dist/directive/directive-dispatch.js +10 -3
  100. package/dist/directive/directive-dispatch.js.map +1 -1
  101. package/dist/directive/directive-executor.d.ts.map +1 -1
  102. package/dist/directive/directive-executor.js +1 -0
  103. package/dist/directive/directive-executor.js.map +1 -1
  104. package/dist/directive/directive-queue.d.ts.map +1 -1
  105. package/dist/directive/directive-queue.js +6 -1
  106. package/dist/directive/directive-queue.js.map +1 -1
  107. package/dist/directive/phase-sync.d.ts +29 -2
  108. package/dist/directive/phase-sync.d.ts.map +1 -1
  109. package/dist/directive/phase-sync.js +30 -6
  110. package/dist/directive/phase-sync.js.map +1 -1
  111. package/dist/drift/artifact-ref-shape.d.ts +34 -0
  112. package/dist/drift/artifact-ref-shape.d.ts.map +1 -0
  113. package/dist/drift/artifact-ref-shape.js +94 -0
  114. package/dist/drift/artifact-ref-shape.js.map +1 -0
  115. package/dist/drift/drift-eval-loop.d.ts +7 -0
  116. package/dist/drift/drift-eval-loop.d.ts.map +1 -1
  117. package/dist/drift/drift-eval-loop.js +34 -5
  118. package/dist/drift/drift-eval-loop.js.map +1 -1
  119. package/dist/drift/drift-evaluator.d.ts.map +1 -1
  120. package/dist/drift/drift-evaluator.js +8 -3
  121. package/dist/drift/drift-evaluator.js.map +1 -1
  122. package/dist/focus/awaiting-slot.d.ts +34 -0
  123. package/dist/focus/awaiting-slot.d.ts.map +1 -0
  124. package/dist/focus/awaiting-slot.js +26 -0
  125. package/dist/focus/awaiting-slot.js.map +1 -0
  126. package/dist/focus/focus-lifecycle.js +2 -2
  127. package/dist/focus/focus-lifecycle.js.map +1 -1
  128. package/dist/focus/focus-phase.d.ts.map +1 -1
  129. package/dist/focus/focus-phase.js +3 -1
  130. package/dist/focus/focus-phase.js.map +1 -1
  131. package/dist/focus/focus-spawn-decision.d.ts +62 -0
  132. package/dist/focus/focus-spawn-decision.d.ts.map +1 -0
  133. package/dist/focus/focus-spawn-decision.js +41 -0
  134. package/dist/focus/focus-spawn-decision.js.map +1 -0
  135. package/dist/focus/focus-team-state.d.ts.map +1 -1
  136. package/dist/focus/focus-team-state.js +1 -13
  137. package/dist/focus/focus-team-state.js.map +1 -1
  138. package/dist/focus/listener-spawn.d.ts +16 -55
  139. package/dist/focus/listener-spawn.d.ts.map +1 -1
  140. package/dist/focus/listener-spawn.js +102 -64
  141. package/dist/focus/listener-spawn.js.map +1 -1
  142. package/dist/focus/listener-state.d.ts.map +1 -1
  143. package/dist/focus/listener-state.js +4 -1
  144. package/dist/focus/listener-state.js.map +1 -1
  145. package/dist/focus/listener.d.ts +41 -2
  146. package/dist/focus/listener.d.ts.map +1 -1
  147. package/dist/focus/listener.js +135 -83
  148. package/dist/focus/listener.js.map +1 -1
  149. package/dist/focus/pending-spawn-pass-deps.d.ts +69 -0
  150. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -0
  151. package/dist/focus/pending-spawn-pass-deps.js +34 -0
  152. package/dist/focus/pending-spawn-pass-deps.js.map +1 -0
  153. package/dist/focus/pending-spawn-review-next-step.d.ts +83 -0
  154. package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -0
  155. package/dist/focus/pending-spawn-review-next-step.js +325 -0
  156. package/dist/focus/pending-spawn-review-next-step.js.map +1 -0
  157. package/dist/focus/review-cycle-cap-hold.d.ts +132 -0
  158. package/dist/focus/review-cycle-cap-hold.d.ts.map +1 -0
  159. package/dist/focus/review-cycle-cap-hold.js +178 -0
  160. package/dist/focus/review-cycle-cap-hold.js.map +1 -0
  161. package/dist/focus/team-actionable-work.js +2 -2
  162. package/dist/focus/verify-open-issues.d.ts +22 -0
  163. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  164. package/dist/focus/verify-open-issues.js +118 -57
  165. package/dist/focus/verify-open-issues.js.map +1 -1
  166. package/dist/focus/verify-routing-passes.d.ts +32 -0
  167. package/dist/focus/verify-routing-passes.d.ts.map +1 -0
  168. package/dist/focus/verify-routing-passes.js +18 -0
  169. package/dist/focus/verify-routing-passes.js.map +1 -0
  170. package/dist/git/index.d.ts.map +1 -1
  171. package/dist/git/index.js +9 -5
  172. package/dist/git/index.js.map +1 -1
  173. package/dist/merge/focus-merge.d.ts +16 -2
  174. package/dist/merge/focus-merge.d.ts.map +1 -1
  175. package/dist/merge/focus-merge.js +53 -30
  176. package/dist/merge/focus-merge.js.map +1 -1
  177. package/dist/merge/merge-back-loop.d.ts +5 -0
  178. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  179. package/dist/merge/merge-back-loop.js +17 -8
  180. package/dist/merge/merge-back-loop.js.map +1 -1
  181. package/dist/merge/merge-gate-coverage.d.ts +94 -0
  182. package/dist/merge/merge-gate-coverage.d.ts.map +1 -0
  183. package/dist/merge/merge-gate-coverage.js +217 -0
  184. package/dist/merge/merge-gate-coverage.js.map +1 -0
  185. package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
  186. package/dist/prompt/focus-prompt-builder.js +6 -0
  187. package/dist/prompt/focus-prompt-builder.js.map +1 -1
  188. package/dist/prompt/prompt-listing.d.ts.map +1 -1
  189. package/dist/prompt/prompt-listing.js +8 -0
  190. package/dist/prompt/prompt-listing.js.map +1 -1
  191. package/dist/prompt/team-prompt-base.d.ts.map +1 -1
  192. package/dist/prompt/team-prompt-base.js +5 -1
  193. package/dist/prompt/team-prompt-base.js.map +1 -1
  194. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  195. package/dist/prompt-sections/execution-sections.js +14 -39
  196. package/dist/prompt-sections/execution-sections.js.map +1 -1
  197. package/dist/prompt-sections/gate-ownership.d.ts +36 -0
  198. package/dist/prompt-sections/gate-ownership.d.ts.map +1 -0
  199. package/dist/prompt-sections/gate-ownership.js +68 -0
  200. package/dist/prompt-sections/gate-ownership.js.map +1 -0
  201. package/dist/prompt-sections/gate-verdict-section.d.ts +58 -0
  202. package/dist/prompt-sections/gate-verdict-section.d.ts.map +1 -0
  203. package/dist/prompt-sections/gate-verdict-section.js +88 -0
  204. package/dist/prompt-sections/gate-verdict-section.js.map +1 -0
  205. package/dist/prompt-sections/persona-sections.d.ts +10 -0
  206. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  207. package/dist/prompt-sections/persona-sections.js +35 -11
  208. package/dist/prompt-sections/persona-sections.js.map +1 -1
  209. package/dist/prompt-sections/shared.js +1 -1
  210. package/dist/prompt-sections/shared.js.map +1 -1
  211. package/dist/queries/agent-resolvable-promotion.d.ts +6 -3
  212. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  213. package/dist/queries/agent-resolvable-promotion.js +20 -9
  214. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  215. package/dist/queries/deliveries.d.ts +46 -4
  216. package/dist/queries/deliveries.d.ts.map +1 -1
  217. package/dist/queries/deliveries.js +69 -16
  218. package/dist/queries/deliveries.js.map +1 -1
  219. package/dist/queries/delivery-gate-state.d.ts +151 -1
  220. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  221. package/dist/queries/delivery-gate-state.js +95 -14
  222. package/dist/queries/delivery-gate-state.js.map +1 -1
  223. package/dist/queries/delivery-write-discipline.d.ts +65 -0
  224. package/dist/queries/delivery-write-discipline.d.ts.map +1 -0
  225. package/dist/queries/delivery-write-discipline.js +101 -0
  226. package/dist/queries/delivery-write-discipline.js.map +1 -0
  227. package/dist/queries/escalation-consumption.d.ts +11 -0
  228. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  229. package/dist/queries/escalation-consumption.js +22 -0
  230. package/dist/queries/escalation-consumption.js.map +1 -1
  231. package/dist/queries/escalation-spool.d.ts +75 -0
  232. package/dist/queries/escalation-spool.d.ts.map +1 -0
  233. package/dist/queries/escalation-spool.js +232 -0
  234. package/dist/queries/escalation-spool.js.map +1 -0
  235. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  236. package/dist/queries/escalation-suppression.js +2 -0
  237. package/dist/queries/escalation-suppression.js.map +1 -1
  238. package/dist/queries/escalations.js +1 -1
  239. package/dist/queries/filing-observation.d.ts.map +1 -1
  240. package/dist/queries/filing-observation.js +2 -0
  241. package/dist/queries/filing-observation.js.map +1 -1
  242. package/dist/queries/focus-discovery.d.ts +4 -4
  243. package/dist/queries/focus-discovery.d.ts.map +1 -1
  244. package/dist/queries/focus-discovery.js +1 -0
  245. package/dist/queries/focus-discovery.js.map +1 -1
  246. package/dist/queries/focus-review-approval.d.ts +84 -0
  247. package/dist/queries/focus-review-approval.d.ts.map +1 -0
  248. package/dist/queries/focus-review-approval.js +158 -0
  249. package/dist/queries/focus-review-approval.js.map +1 -0
  250. package/dist/queries/focuses.d.ts +6 -5
  251. package/dist/queries/focuses.d.ts.map +1 -1
  252. package/dist/queries/focuses.js +9 -5
  253. package/dist/queries/focuses.js.map +1 -1
  254. package/dist/queries/incident-correlation.d.ts +5 -4
  255. package/dist/queries/incident-correlation.d.ts.map +1 -1
  256. package/dist/queries/incident-correlation.js +11 -5
  257. package/dist/queries/incident-correlation.js.map +1 -1
  258. package/dist/queries/issues.d.ts.map +1 -1
  259. package/dist/queries/issues.js +2 -1
  260. package/dist/queries/issues.js.map +1 -1
  261. package/dist/queries/loop-refusal-observation.d.ts +64 -0
  262. package/dist/queries/loop-refusal-observation.d.ts.map +1 -0
  263. package/dist/queries/loop-refusal-observation.js +137 -0
  264. package/dist/queries/loop-refusal-observation.js.map +1 -0
  265. package/dist/queries/schemas.d.ts +9 -0
  266. package/dist/queries/schemas.d.ts.map +1 -1
  267. package/dist/queries/schemas.js +11 -3
  268. package/dist/queries/schemas.js.map +1 -1
  269. package/dist/queries/shared.js +1 -1
  270. package/dist/queries/verification.d.ts.map +1 -1
  271. package/dist/queries/verification.js +1 -15
  272. package/dist/queries/verification.js.map +1 -1
  273. package/dist/queries/wire-contract.generated.d.ts +3 -0
  274. package/dist/queries/wire-contract.generated.d.ts.map +1 -1
  275. package/dist/queries/wire-contract.generated.js +3 -0
  276. package/dist/queries/wire-contract.generated.js.map +1 -1
  277. package/dist/resolvers/assembly-engine.d.ts.map +1 -1
  278. package/dist/resolvers/assembly-engine.js +3 -1
  279. package/dist/resolvers/assembly-engine.js.map +1 -1
  280. package/dist/resolvers/git-diff-against-base.d.ts +5 -2
  281. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  282. package/dist/resolvers/git-diff-against-base.js +121 -39
  283. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  284. package/dist/resolvers/shared/git-diff.d.ts +2 -0
  285. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  286. package/dist/resolvers/shared/git-diff.js +5 -1
  287. package/dist/resolvers/shared/git-diff.js.map +1 -1
  288. package/dist/resolvers/shared/review-window-commits.d.ts +96 -0
  289. package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -0
  290. package/dist/resolvers/shared/review-window-commits.js +262 -0
  291. package/dist/resolvers/shared/review-window-commits.js.map +1 -0
  292. package/dist/session/session-lineage.d.ts.map +1 -1
  293. package/dist/session/session-lineage.js +4 -1
  294. package/dist/session/session-lineage.js.map +1 -1
  295. package/dist/shell/fail-stop.d.ts +18 -0
  296. package/dist/shell/fail-stop.d.ts.map +1 -0
  297. package/dist/shell/fail-stop.js +53 -0
  298. package/dist/shell/fail-stop.js.map +1 -0
  299. package/dist/shell/graceful-shutdown.d.ts +48 -0
  300. package/dist/shell/graceful-shutdown.d.ts.map +1 -0
  301. package/dist/shell/graceful-shutdown.js +152 -0
  302. package/dist/shell/graceful-shutdown.js.map +1 -0
  303. package/dist/shell/heartbeat.d.ts.map +1 -1
  304. package/dist/shell/heartbeat.js +5 -4
  305. package/dist/shell/heartbeat.js.map +1 -1
  306. package/dist/shell/log.d.ts.map +1 -1
  307. package/dist/shell/log.js +4 -1
  308. package/dist/shell/log.js.map +1 -1
  309. package/dist/shell/stop-request.d.ts.map +1 -1
  310. package/dist/shell/stop-request.js +2 -1
  311. package/dist/shell/stop-request.js.map +1 -1
  312. package/dist/shell/unified-shell.d.ts.map +1 -1
  313. package/dist/shell/unified-shell.js +41 -114
  314. package/dist/shell/unified-shell.js.map +1 -1
  315. package/dist/spawn/lifecycle.d.ts +12 -0
  316. package/dist/spawn/lifecycle.d.ts.map +1 -1
  317. package/dist/spawn/lifecycle.js +25 -21
  318. package/dist/spawn/lifecycle.js.map +1 -1
  319. package/dist/spawn/prompt-assembly.d.ts +19 -1
  320. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  321. package/dist/spawn/prompt-assembly.js +70 -21
  322. package/dist/spawn/prompt-assembly.js.map +1 -1
  323. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  324. package/dist/spawn/review-hold-park.js +18 -8
  325. package/dist/spawn/review-hold-park.js.map +1 -1
  326. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  327. package/dist/spawn/spawn-cooldown.js +4 -0
  328. package/dist/spawn/spawn-cooldown.js.map +1 -1
  329. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  330. package/dist/spawn/spawn-decision.js +2 -1
  331. package/dist/spawn/spawn-decision.js.map +1 -1
  332. package/dist/spawn/worktree-session.d.ts +6 -0
  333. package/dist/spawn/worktree-session.d.ts.map +1 -1
  334. package/dist/spawn/worktree-session.js +15 -2
  335. package/dist/spawn/worktree-session.js.map +1 -1
  336. package/dist/testing/fixtures/index.d.ts +10 -1
  337. package/dist/testing/fixtures/index.d.ts.map +1 -1
  338. package/dist/testing/fixtures/index.js +59 -1
  339. package/dist/testing/fixtures/index.js.map +1 -1
  340. package/dist/testing/fixtures/pending-spawn-world.d.ts +34 -0
  341. package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -0
  342. package/dist/testing/fixtures/pending-spawn-world.js +92 -0
  343. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -0
  344. package/dist/types/index.js +1 -1
  345. package/dist/verify/commit-gate-configured.d.ts +86 -0
  346. package/dist/verify/commit-gate-configured.d.ts.map +1 -0
  347. package/dist/verify/commit-gate-configured.js +234 -0
  348. package/dist/verify/commit-gate-configured.js.map +1 -0
  349. package/dist/verify/commit-verdict-record.d.ts +98 -0
  350. package/dist/verify/commit-verdict-record.d.ts.map +1 -0
  351. package/dist/verify/commit-verdict-record.js +297 -0
  352. package/dist/verify/commit-verdict-record.js.map +1 -0
  353. package/dist/verify/explicit-gate-outcome.d.ts +161 -0
  354. package/dist/verify/explicit-gate-outcome.d.ts.map +1 -0
  355. package/dist/verify/explicit-gate-outcome.js +215 -0
  356. package/dist/verify/explicit-gate-outcome.js.map +1 -0
  357. package/dist/verify/explicit-rearm.d.ts +27 -0
  358. package/dist/verify/explicit-rearm.d.ts.map +1 -0
  359. package/dist/verify/explicit-rearm.js +161 -0
  360. package/dist/verify/explicit-rearm.js.map +1 -0
  361. package/dist/verify/explicit-run-ledger.d.ts +26 -0
  362. package/dist/verify/explicit-run-ledger.d.ts.map +1 -0
  363. package/dist/verify/explicit-run-ledger.js +93 -0
  364. package/dist/verify/explicit-run-ledger.js.map +1 -0
  365. package/dist/verify/failure-signature.d.ts.map +1 -1
  366. package/dist/verify/failure-signature.js +5 -1
  367. package/dist/verify/failure-signature.js.map +1 -1
  368. package/dist/verify/gate-run-registry.d.ts +105 -0
  369. package/dist/verify/gate-run-registry.d.ts.map +1 -0
  370. package/dist/verify/gate-run-registry.js +111 -0
  371. package/dist/verify/gate-run-registry.js.map +1 -0
  372. package/dist/verify/gate-verdict-source.d.ts +68 -0
  373. package/dist/verify/gate-verdict-source.d.ts.map +1 -0
  374. package/dist/verify/gate-verdict-source.js +143 -0
  375. package/dist/verify/gate-verdict-source.js.map +1 -0
  376. package/dist/verify/judged-commit-gate.d.ts +11 -0
  377. package/dist/verify/judged-commit-gate.d.ts.map +1 -0
  378. package/dist/verify/judged-commit-gate.js +48 -0
  379. package/dist/verify/judged-commit-gate.js.map +1 -0
  380. package/dist/verify/rework-judgment.d.ts +58 -0
  381. package/dist/verify/rework-judgment.d.ts.map +1 -0
  382. package/dist/verify/rework-judgment.js +54 -0
  383. package/dist/verify/rework-judgment.js.map +1 -0
  384. package/dist/verify/verification-attribution.d.ts +105 -0
  385. package/dist/verify/verification-attribution.d.ts.map +1 -0
  386. package/dist/verify/verification-attribution.js +322 -0
  387. package/dist/verify/verification-attribution.js.map +1 -0
  388. package/dist/verify/verification-baseline-run.d.ts +123 -0
  389. package/dist/verify/verification-baseline-run.d.ts.map +1 -0
  390. package/dist/verify/verification-baseline-run.js +386 -0
  391. package/dist/verify/verification-baseline-run.js.map +1 -0
  392. package/dist/verify/verification-baseline.d.ts +79 -33
  393. package/dist/verify/verification-baseline.d.ts.map +1 -1
  394. package/dist/verify/verification-baseline.js +99 -106
  395. package/dist/verify/verification-baseline.js.map +1 -1
  396. package/dist/verify/verification-checkout.d.ts +13 -0
  397. package/dist/verify/verification-checkout.d.ts.map +1 -1
  398. package/dist/verify/verification-checkout.js +39 -2
  399. package/dist/verify/verification-checkout.js.map +1 -1
  400. package/dist/verify/verification-commit-sharing.d.ts +84 -0
  401. package/dist/verify/verification-commit-sharing.d.ts.map +1 -0
  402. package/dist/verify/verification-commit-sharing.js +416 -0
  403. package/dist/verify/verification-commit-sharing.js.map +1 -0
  404. package/dist/verify/verification-config.d.ts.map +1 -1
  405. package/dist/verify/verification-config.js +12 -2
  406. package/dist/verify/verification-config.js.map +1 -1
  407. package/dist/verify/verification-default-on.d.ts +27 -11
  408. package/dist/verify/verification-default-on.d.ts.map +1 -1
  409. package/dist/verify/verification-default-on.js +159 -29
  410. package/dist/verify/verification-default-on.js.map +1 -1
  411. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  412. package/dist/verify/verification-deps-default.js +49 -42
  413. package/dist/verify/verification-deps-default.js.map +1 -1
  414. package/dist/verify/verification-deps.d.ts +69 -4
  415. package/dist/verify/verification-deps.d.ts.map +1 -1
  416. package/dist/verify/verification-deterministic.d.ts +15 -2
  417. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  418. package/dist/verify/verification-deterministic.js +12 -3
  419. package/dist/verify/verification-deterministic.js.map +1 -1
  420. package/dist/verify/verification-diagnostics.d.ts +16 -0
  421. package/dist/verify/verification-diagnostics.d.ts.map +1 -0
  422. package/dist/verify/verification-diagnostics.js +219 -0
  423. package/dist/verify/verification-diagnostics.js.map +1 -0
  424. package/dist/verify/verification-engine.d.ts +12 -8
  425. package/dist/verify/verification-engine.d.ts.map +1 -1
  426. package/dist/verify/verification-engine.js +110 -92
  427. package/dist/verify/verification-engine.js.map +1 -1
  428. package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
  429. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  430. package/dist/verify/verification-evidence-unavailable-feedback.js +14 -4
  431. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  432. package/dist/verify/verification-failure-parser.d.ts +37 -3
  433. package/dist/verify/verification-failure-parser.d.ts.map +1 -1
  434. package/dist/verify/verification-failure-parser.js +66 -3
  435. package/dist/verify/verification-failure-parser.js.map +1 -1
  436. package/dist/verify/verification-feedback.d.ts +21 -34
  437. package/dist/verify/verification-feedback.d.ts.map +1 -1
  438. package/dist/verify/verification-feedback.js +37 -88
  439. package/dist/verify/verification-feedback.js.map +1 -1
  440. package/dist/verify/verification-gate-stages.d.ts +110 -0
  441. package/dist/verify/verification-gate-stages.d.ts.map +1 -0
  442. package/dist/verify/verification-gate-stages.js +179 -0
  443. package/dist/verify/verification-gate-stages.js.map +1 -0
  444. package/dist/verify/verification-history-reset.d.ts +61 -0
  445. package/dist/verify/verification-history-reset.d.ts.map +1 -0
  446. package/dist/verify/verification-history-reset.js +90 -0
  447. package/dist/verify/verification-history-reset.js.map +1 -0
  448. package/dist/verify/verification-manifest.d.ts.map +1 -1
  449. package/dist/verify/verification-manifest.js +2 -1
  450. package/dist/verify/verification-manifest.js.map +1 -1
  451. package/dist/verify/verification-rework-messages.d.ts +19 -0
  452. package/dist/verify/verification-rework-messages.d.ts.map +1 -0
  453. package/dist/verify/verification-rework-messages.js +52 -0
  454. package/dist/verify/verification-rework-messages.js.map +1 -0
  455. package/dist/worktree/install-inputs.d.ts +89 -0
  456. package/dist/worktree/install-inputs.d.ts.map +1 -0
  457. package/dist/worktree/install-inputs.js +625 -0
  458. package/dist/worktree/install-inputs.js.map +1 -0
  459. package/dist/worktree/install-script-effects.d.ts +30 -0
  460. package/dist/worktree/install-script-effects.d.ts.map +1 -0
  461. package/dist/worktree/install-script-effects.js +524 -0
  462. package/dist/worktree/install-script-effects.js.map +1 -0
  463. package/dist/worktree/install-script-tokens.d.ts +57 -0
  464. package/dist/worktree/install-script-tokens.d.ts.map +1 -0
  465. package/dist/worktree/install-script-tokens.js +299 -0
  466. package/dist/worktree/install-script-tokens.js.map +1 -0
  467. package/dist/worktree/provision.d.ts +27 -4
  468. package/dist/worktree/provision.d.ts.map +1 -1
  469. package/dist/worktree/provision.js +46 -7
  470. package/dist/worktree/provision.js.map +1 -1
  471. package/dist/worktree/safety.d.ts +11 -0
  472. package/dist/worktree/safety.d.ts.map +1 -1
  473. package/dist/worktree/safety.js +20 -3
  474. package/dist/worktree/safety.js.map +1 -1
  475. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  476. package/dist/worktree/verify-interlock.js +3 -1
  477. package/dist/worktree/verify-interlock.js.map +1 -1
  478. package/dist/worktree/worktree-package-provisioning.d.ts +75 -0
  479. package/dist/worktree/worktree-package-provisioning.d.ts.map +1 -0
  480. package/dist/worktree/worktree-package-provisioning.js +362 -0
  481. package/dist/worktree/worktree-package-provisioning.js.map +1 -0
  482. package/package.json +1 -1
@@ -0,0 +1,178 @@
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/review-cycle-cap-regression.test.ts,
3
+ // packages/daemon/src/focus/review-cycle-cap-hold.test.ts
4
+ // PINNED-BY-END
5
+ /**
6
+ * The review-cycle cap HOLD: a focus whose review loop reached
7
+ * TELORA_REVIEW_CYCLE_CAP without converging spawns no further coding or review
8
+ * pass.
9
+ *
10
+ * Why a hold and not a meter: the cap used to file one review_cycle_cap_exceeded
11
+ * observation and let the loop continue, on the theory that the hand-off breaker
12
+ * (completion/review-exit-escalations.ts recordHandoffAndMaybeTerminate) was the
13
+ * stop valve. That breaker only advances on no-progress exits, and a review that
14
+ * files a new finding every cycle IS progress to it (review-cycle-delta.ts counts
15
+ * issuesFiled), so a loop that never converges was never bounded. 2026-09-15: the
16
+ * observation filed at cycle 8, cycles 9 and 10 plus their coding passes ran
17
+ * (~$183), and only an operator disarm stopped it.
18
+ *
19
+ * ONE decision, read identically by every gate that can spawn a pass for a focus
20
+ * or open the window that spawns one:
21
+ * - the ready-focus spawn gate (focus/focus-spawn-decision.ts decideFocusSpawn)
22
+ * - the pending-directive spawn pass (focus/listener-spawn.ts processPendingSpawnFocuses)
23
+ * - the auto-review window (completion/state-cascade.ts checkAutoReview)
24
+ * spawnFocusTeam has exactly those two callers, and a stage directive never spawns
25
+ * on its own (directive/directive-dispatch.ts stashes it for the pending pass), so
26
+ * these gates are the whole spawn surface.
27
+ *
28
+ * The hold is standing while ANY of three facts holds (isReviewCycleCapHeld):
29
+ * - an OPEN review_cycle_cap_exceeded observation for the focus. The crossing
30
+ * resets review_cycle_count to 0 once that observation is filed
31
+ * (completion/review-cycle-cap.ts), so a fresh cap of cycles is needed to
32
+ * re-cross. The hold is keyed on the machine-lane observation's KIND, never on
33
+ * a human act: the daemon has no human-facing route, and the promotion sweep
34
+ * hands a held focus's observations to the routing decider
35
+ * (queries/agent-resolvable-promotion.ts).
36
+ * - an OPEN lineage CARRIER naming one of the focus's review_cycle_cap_exceeded
37
+ * observations, open or resolved: a human-lane row whose
38
+ * metadata.originalEscalationId names it (queries/escalation-consumption.ts
39
+ * LineageCarrier -- what a routing decider files through telora_agent escalate
40
+ * with sourceEscalationId). The sweep closes the observation auto_swept the
41
+ * moment such a row exists, so without this fact the hold would lift -- and the
42
+ * focus bill another full cap of cycles -- while the human-facing filing still
43
+ * sits unacted. A carrier has its own close-half (its resolution), unlike a
44
+ * correlated or absorbed symptom, which is why carriers are matched by lineage
45
+ * here and hasOpenFocusEscalation's matchCorrelated is not used as the hold.
46
+ * Carriers carry no kind marker (no originalKind; original_cause_key only when
47
+ * the source had a cause_key, which this observation does not), so the match
48
+ * is by source id against the focus's own rows of the kind, any status.
49
+ * - review_cycle_count >= cap: the count is written before the filing, so a
50
+ * filing that fails still holds; the cascade re-files it every poll until it
51
+ * lands (reconcileReviewCycleCapFiling).
52
+ * Resolving the observation with no carrier, or resolving the carrier, lifts the
53
+ * hold (the count is already 0).
54
+ *
55
+ * Fails CLOSED: an unreadable count, observation or carrier read holds. This is a
56
+ * stop gate (workflow/gate-failure-policy.ts, safety class) and every read
57
+ * repeats each poll, so a transient failure delays one poll instead of billing a
58
+ * pass the cap exists to prevent.
59
+ *
60
+ * @module focus/review-cycle-cap-hold
61
+ */
62
+ import { listFocusEscalationsOfKind, listOpenLineageCarriersForOrg, } from '../queries/escalation-consumption.js';
63
+ import { isOpenFocusKindRow } from '../queries/incident-correlation.js';
64
+ import { getActiveFocuses } from '../queries/focus-discovery.js';
65
+ import { resolveReviewCycleCap } from '../verify/stall-detector-config.js';
66
+ import { safetyGateFailsClosed } from '../workflow/gate-failure-policy.js';
67
+ import { createLogger } from '../shell/log.js';
68
+ const log = createLogger({ module: 'focus' });
69
+ /** The observation kind the cap files and the hold reads. */
70
+ export const REVIEW_CYCLE_CAP_EXCEEDED_KIND = 'review_cycle_cap_exceeded';
71
+ /** Pure: whether the review-cycle cap holds the focus. An unreadable fact holds. */
72
+ export function isReviewCycleCapHeld(facts) {
73
+ if (facts.reviewCycleCount === null || facts.capObservationOpen === null || facts.capCarrierOpen === null)
74
+ return true;
75
+ return facts.capObservationOpen || facts.capCarrierOpen || facts.reviewCycleCount >= facts.cap;
76
+ }
77
+ /** Pure: whether an open carrier names one of the given cap observations (matched by source id). */
78
+ export function capCarrierNamesObservation(carriers, capObservationIds) {
79
+ return carriers.some((c) => capObservationIds.has(c.sourceEscalationId));
80
+ }
81
+ /** Pure: why a held focus is held, for the one log line per episode. */
82
+ function describeHold(facts) {
83
+ if (facts.reviewCycleCount === null || facts.capObservationOpen === null || facts.capCarrierOpen === null) {
84
+ return 'a read failed (fail closed)';
85
+ }
86
+ if (facts.capObservationOpen)
87
+ return 'its review_cycle_cap_exceeded observation is open';
88
+ if (facts.capCarrierOpen)
89
+ return 'a human-facing filing made from its review_cycle_cap_exceeded observation is open';
90
+ return `cycles=${facts.reviewCycleCount} >= cap=${facts.cap}`;
91
+ }
92
+ /**
93
+ * Read the hold's facts for a focus whose review_cycle_count the caller already
94
+ * read (null when it could not). The carrier read is made only when it can turn
95
+ * the decision: skipped (false) when the focus has no cap observation for a
96
+ * carrier to name, or when the other facts already hold.
97
+ */
98
+ export async function readReviewCycleCapFacts(focus, deps = {}) {
99
+ const base = { reviewCycleCount: focus.reviewCycleCount, cap: (deps.resolveReviewCycleCap ?? resolveReviewCycleCap)() };
100
+ const site = `review-cycle-cap-hold "${focus.focusName}"`;
101
+ const listRows = deps.listCapObservations
102
+ ?? ((focusId) => listFocusEscalationsOfKind(focusId, REVIEW_CYCLE_CAP_EXCEEDED_KIND));
103
+ let rows;
104
+ try {
105
+ rows = await listRows(focus.focusId);
106
+ }
107
+ catch (err) {
108
+ return { ...base, capObservationOpen: safetyGateFailsClosed(`${site} observation read`, err, null), capCarrierOpen: null };
109
+ }
110
+ const own = rows.filter((r) => r.focusId === focus.focusId && r.escalationKind === REVIEW_CYCLE_CAP_EXCEEDED_KIND);
111
+ const capObservationOpen = own.some((r) => isOpenFocusKindRow(r, focus.focusId, REVIEW_CYCLE_CAP_EXCEEDED_KIND));
112
+ const unread = { ...base, capObservationOpen, capCarrierOpen: false };
113
+ if (own.length === 0 || isReviewCycleCapHeld(unread))
114
+ return unread;
115
+ try {
116
+ const carriers = await (deps.listOpenLineageCarriers ?? (() => listOpenLineageCarriersForOrg()))();
117
+ return { ...unread, capCarrierOpen: capCarrierNamesObservation(carriers, new Set(own.map((r) => r.id))) };
118
+ }
119
+ catch (err) {
120
+ return { ...unread, capCarrierOpen: safetyGateFailsClosed(`${site} lineage-carrier read`, err, null) };
121
+ }
122
+ }
123
+ /** Focuses whose held episode was already logged (one line per episode, not per poll). */
124
+ const heldLoggedFocuses = new Set();
125
+ /** Test seam: clear the per-episode log throttle. */
126
+ export function __resetReviewCycleCapHoldLog() {
127
+ heldLoggedFocuses.clear();
128
+ }
129
+ /**
130
+ * Resolve the hold for a focus whose review_cycle_count the caller already read
131
+ * (null when it could not). Reads the facts, applies the one predicate, and logs
132
+ * the held edge once per episode.
133
+ */
134
+ export async function resolveReviewCycleCapHold(focus, deps = {}) {
135
+ const facts = await readReviewCycleCapFacts(focus, deps);
136
+ const held = isReviewCycleCapHeld(facts);
137
+ if (!held) {
138
+ heldLoggedFocuses.delete(focus.focusId);
139
+ }
140
+ else if (!heldLoggedFocuses.has(focus.focusId)) {
141
+ heldLoggedFocuses.add(focus.focusId);
142
+ log.info(`[review-cycle-cap-hold] "${focus.focusName}" is held at its review-cycle cap: ${describeHold(facts)}. ` +
143
+ `No coding or review pass spawns until the observation -- or the human-facing filing made from it -- ` +
144
+ `is resolved, or the focus converges.`);
145
+ }
146
+ return held;
147
+ }
148
+ /**
149
+ * A hold reader for the ready-focus spawn gate. getReadyFocuses rows do not carry
150
+ * review_cycle_count, so the count comes from the active-focus read -- once per
151
+ * product for the reader's lifetime (create one per poll). A failed read, or a
152
+ * ready focus absent from the active read (both filter status='active', so only a
153
+ * same-poll race), leaves the count unreadable: held. The org-wide carrier read is
154
+ * likewise made at most once per reader, however many focuses need it.
155
+ */
156
+ export function createReadyFocusCapHoldReader(organizationId, deps = {}) {
157
+ const countsByProduct = new Map();
158
+ const readCounts = (productId) => {
159
+ const key = productId ?? '';
160
+ let counts = countsByProduct.get(key);
161
+ if (!counts) {
162
+ counts = (deps.getActiveFocuses ?? getActiveFocuses)(organizationId, productId ?? undefined)
163
+ .then((rows) => new Map(rows.map((r) => [r.focus_id, r.review_cycle_count])))
164
+ .catch((err) => safetyGateFailsClosed(`review-cycle-cap-hold count read (product ${key || '<none>'})`, err, null));
165
+ countsByProduct.set(key, counts);
166
+ }
167
+ return counts;
168
+ };
169
+ let carriers;
170
+ const readCarriers = deps.listOpenLineageCarriers ?? (() => listOpenLineageCarriersForOrg());
171
+ const holdDeps = { ...deps, listOpenLineageCarriers: () => (carriers ??= readCarriers()) };
172
+ return async (focus) => {
173
+ const counts = await readCounts(focus.product_id);
174
+ const reviewCycleCount = counts?.get(focus.focus_id) ?? null;
175
+ return resolveReviewCycleCapHold({ focusId: focus.focus_id, focusName: focus.focus_name, reviewCycleCount }, holdDeps);
176
+ };
177
+ }
178
+ //# sourceMappingURL=review-cycle-cap-hold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-cycle-cap-hold.js","sourceRoot":"","sources":["../../src/focus/review-cycle-cap-hold.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@
7
7
  * The single definition of "is there team-actionable work for this focus right
8
8
  * now?", read by every controller that can spawn, hold, or exit a team so they
9
9
  * cannot disagree about the same focus state:
10
- * - the spawn gate (focus/listener-spawn.ts, decideFocusSpawn +
11
- * processPendingSpawnFocuses)
10
+ * - the spawn gate (focus/focus-spawn-decision.ts decideFocusSpawn +
11
+ * focus/listener-spawn.ts processPendingSpawnFocuses)
12
12
  * - the team-exit decision (completion/event-phases.ts, computeCompletionFacts)
13
13
  * - the directive executor's spawn-producing paths
14
14
  * (directive/directive-verify-hold-gate.ts, consumed
@@ -7,6 +7,25 @@
7
7
  * of focus/listener-auto-advance.ts (file-size limit); it owns the schema-drift
8
8
  * bounded-retry guard exclusively (checkDeliveryAutoAdvance does not use it).
9
9
  * Importers reference this module directly (no re-export facade).
10
+ *
11
+ * The route is a routing decision a gate verdict gates, exactly like the review
12
+ * exit's verify_failed route: while a gate run that may judge the focus commit is
13
+ * selected or in flight and no verdict is recorded for it, the delivery is left in
14
+ * verify and re-checked next poll (completion/review-exit-verdict-gate.ts
15
+ * awaitsInFlightGateRun). Without that wait this pass would route around a review
16
+ * exit's held re-work one poll after the window closed, and the verdict it waited
17
+ * for would route nothing.
18
+ *
19
+ * The route also CARRIES what it judged, exactly as the review exit's does: the
20
+ * commit the wait read (the focus worktree HEAD, read once) is stamped as the
21
+ * delivery's judged commit with the delivery's own-gate verdict for it beside it
22
+ * (completion/review-exit-verdict-gate.ts openWorkReworkGateState), so the coding
23
+ * team resumed on the re-work is shown that commit's outcome, failing stage and
24
+ * sha -- never the HEAD it resumes at, nor a sibling gate's verdict. The stamp is
25
+ * written over the gate_state as it stands (this route never cleared a verdict or
26
+ * hold, and still clears none) and carries the verification history forward. A
27
+ * schema-drift rejection writes nothing of its own: the next poll recomputes the
28
+ * stamp with the route.
10
29
  */
11
30
  import type { DaemonConfig } from '../types/index.js';
12
31
  import { updateDeliveryStatus } from '../queries/deliveries.js';
@@ -16,6 +35,7 @@ import { fetchEffectiveWorkflow } from '../queries/workflows.js';
16
35
  import { getActiveTeams } from './focus-executor.js';
17
36
  import { getDeliveryIssues, updateIssueStatus } from '../queries/issues.js';
18
37
  import { createEscalation as defaultCreateEscalation } from '../queries/escalations.js';
38
+ import { type CommitGateSeams } from '../verify/commit-gate-configured.js';
19
39
  /**
20
40
  * Escalation kind used when the bounded retry cap is hit. The dashboard
21
41
  * and merge-back loop scan for this kind to surface schema drift to humans.
@@ -57,6 +77,8 @@ export interface CheckVerifyDeliveriesDeps {
57
77
  fetchEffectiveWorkflow?: typeof fetchEffectiveWorkflow;
58
78
  updateDeliveryStatus?: typeof updateDeliveryStatus;
59
79
  updateIssueStatus?: typeof updateIssueStatus;
80
+ /** The gate seams the in-flight wait reads; defaults to the production seams. */
81
+ gate?: Partial<CommitGateSeams>;
60
82
  }
61
83
  export declare function checkVerifyDeliveriesForOpenIssues(config: DaemonConfig, deps?: CheckVerifyDeliveriesDeps): Promise<void>;
62
84
  //# sourceMappingURL=verify-open-issues.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-open-issues.d.ts","sourceRoot":"","sources":["../../src/focus/verify-open-issues.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAwExF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAmChE;;GAEG;AACH,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAElF;AAED;;;;;;;;;;GAUG;AACH;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAClD,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CAC9C;AAED,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CAuNf"}
1
+ {"version":3,"file":"verify-open-issues.d.ts","sourceRoot":"","sources":["../../src/focus/verify-open-issues.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAExF,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAwE5F;;;GAGG;AACH,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAsChE;;GAEG;AACH,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAElF;AAwID;;;;;;;;;;GAUG;AACH;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAClD,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACjC;AAED,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CAqKf"}
@@ -1,7 +1,11 @@
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/focus/delivery-state-machine-listener-characterization.test.ts,
3
3
  // packages/daemon/src/focus/listener-auto-advance-bounded-retry.test.ts,
4
- // packages/daemon/src/focus/listener-review-window-suppression.test.ts
4
+ // packages/daemon/src/focus/listener-product-poll.test.ts,
5
+ // packages/daemon/src/focus/listener-review-window-suppression.test.ts,
6
+ // packages/daemon/src/focus/verify-routing-passes.test.ts,
7
+ // packages/daemon/src/integration/focus-commit-verdict-scenario.test.ts,
8
+ // packages/daemon/src/integration/review-rework-resume-verdict.test.ts
5
9
  // PINNED-BY-END
6
10
  import { updateDeliveryStatus } from '../queries/deliveries.js';
7
11
  import { getActiveFocuses } from '../queries/focus-discovery.js';
@@ -13,6 +17,8 @@ import { autoCloseContextGroups } from '../delivery/delivery-close-actions.js';
13
17
  import { resolveReconciledWrite } from '../delivery/delivery-reconciler-apply.js';
14
18
  import { getDeliveryIssues, updateIssueStatus } from '../queries/issues.js';
15
19
  import { createEscalation as defaultCreateEscalation } from '../queries/escalations.js';
20
+ import { commitGateSeams } from '../verify/commit-gate-configured.js';
21
+ import { awaitsInFlightGateRun, openWorkReworkGateState, readJudgedCommit } from '../completion/review-exit-verdict-gate.js';
16
22
  import { createLogger } from '../shell/log.js';
17
23
  const log = createLogger({ module: 'listener' });
18
24
  /**
@@ -85,6 +91,106 @@ export function __resetSchemaViolationStateForTests() {
85
91
  export function __getSchemaViolationAttemptsForTests() {
86
92
  return violationAttempts;
87
93
  }
94
+ /**
95
+ * File the terminal schema_drift_blocked escalation once the bounded retry cap is
96
+ * hit. Best-effort: a failed filing is logged, never thrown.
97
+ */
98
+ async function fileSchemaDriftBlocked(createEscalation, config, focus, delivery, schemaErr, attempts, err) {
99
+ log.error(`[listener] Schema drift blocked (${schemaErr.cause}): ${schemaErr.constraintName ?? '<unknown>'} ` +
100
+ `rejects ${schemaErr.rejectedValue ?? '<null>'} after ${attempts} attempts on delivery "${delivery.name}". ` +
101
+ `Filing escalation.`);
102
+ const description = schemaErr.cause === 'read_only_mode'
103
+ ? `Schema drift: daemon is in read-only mode (schema-version gate fired in warn ` +
104
+ `mode) so action '${schemaErr.rejectedValue}' is blocked after ${attempts} attempts.\n\n` +
105
+ `**Delivery:** ${delivery.name} (${delivery.id})\n` +
106
+ `**Focus:** ${focus.focusName} (${focus.focusId})\n` +
107
+ `**Last error:** ${err.message}`
108
+ : `Schema drift: CHECK constraint ${schemaErr.constraintName ?? '<unknown>'} ` +
109
+ `rejects value ${schemaErr.rejectedValue ?? '<null>'} after ${attempts} attempts.\n\n` +
110
+ `**Delivery:** ${delivery.name} (${delivery.id})\n` +
111
+ `**Focus:** ${focus.focusName} (${focus.focusId})\n` +
112
+ `**Last error:** ${err.message}`;
113
+ const whatWasTried = schemaErr.cause === 'read_only_mode'
114
+ ? `Listener attempted verify_failed transition ${attempts} times; each was ` +
115
+ `blocked by the read-only gate before the network call.`
116
+ : `Listener attempted verify_failed transition ${attempts} times; each was ` +
117
+ `rejected by the same CHECK constraint.`;
118
+ const helpNeeded = schemaErr.cause === 'read_only_mode'
119
+ ? `Apply the missing migrations the daemon expects (see schema-gate log line ` +
120
+ `at startup) and restart the daemon, OR set TELORA_SCHEMA_GATE=off to bypass ` +
121
+ `the gate if you know the missing migrations are intentional.`
122
+ : `Confirm the production DB schema includes the migration that teaches ` +
123
+ `the CHECK constraint to accept '${schemaErr.rejectedValue ?? '<null>'}'. ` +
124
+ `If the schema is correct, the daemon source may be writing a stale value.`;
125
+ try {
126
+ await createEscalation({
127
+ organizationId: config.organizationId,
128
+ sessionId: '',
129
+ issueId: null,
130
+ reasonType: ESCALATION_REASON_ERROR_ENCOUNTERED,
131
+ disposition: ESCALATION_DISPOSITION_NEEDS_OPERATOR,
132
+ humanAct: schemaDriftHumanAct(schemaErr),
133
+ anchor: { deliveryId: delivery.id, focusId: focus.focusId },
134
+ description,
135
+ whatWasTried,
136
+ helpNeeded,
137
+ escalationKind: SCHEMA_DRIFT_BLOCKED_KIND,
138
+ // Evidence/payload only -- provenance lives on the columns
139
+ // via the anchor.
140
+ metadata: {
141
+ cause: schemaErr.cause,
142
+ constraintName: schemaErr.constraintName,
143
+ rejectedValue: schemaErr.rejectedValue,
144
+ deliveryName: delivery.name,
145
+ attempts,
146
+ lastAttemptAt: new Date().toISOString(),
147
+ },
148
+ });
149
+ }
150
+ catch (escErr) {
151
+ log.warn(`[listener] Failed to file schema_drift_blocked escalation for "${delivery.name}":`, escErr.message);
152
+ }
153
+ }
154
+ /** `${deliveryId}@${sha}` gate waits already logged (one line per wait, not one per poll). */
155
+ const loggedGateWaits = new Set();
156
+ /**
157
+ * Whether a verify delivery carrying open work waits for a gate run that judges
158
+ * `sha` (the focus commit) instead of routing to verify_failed this poll (see the
159
+ * module header). Logs a wait once.
160
+ */
161
+ async function waitsOnInFlightGateRun(gate, config, focus, delivery, sha) {
162
+ const waits = await awaitsInFlightGateRun(gate, {
163
+ productId: config.productId,
164
+ focusId: focus.focusId,
165
+ focusReadOnly: focus.readOnly,
166
+ deliveryId: delivery.id,
167
+ injectionId: delivery.injectionId ?? null,
168
+ gateState: delivery.gateState,
169
+ }, sha);
170
+ const key = `${delivery.id}@${sha ?? ''}`;
171
+ if (!waits) {
172
+ loggedGateWaits.delete(key);
173
+ return false;
174
+ }
175
+ if (!loggedGateWaits.has(key)) {
176
+ loggedGateWaits.add(key);
177
+ log.info(`[listener] Delivery "${delivery.name}" left in verify despite open work: a gate run that judges ` +
178
+ `${sha ? sha.slice(0, 12) : 'the focus commit'} is still selected or in flight -- its verdict is read before the ` +
179
+ `verify_failed route; re-checked every poll`);
180
+ }
181
+ return true;
182
+ }
183
+ /**
184
+ * Write the verify -> verify_failed route for a verify delivery carrying open
185
+ * work. The commit the in-flight wait read is stamped as the judged commit, with
186
+ * the delivery's own-gate verdict beside it, and rides the status write over the
187
+ * gate_state as it stands (see the module header). Throws what the stamp read or
188
+ * the write throws, so the caller's schema-drift guard classifies it.
189
+ */
190
+ async function writeVerifyFailedRoute(write, gate, config, focus, delivery, route, judgedSha) {
191
+ const gateState = await openWorkReworkGateState(gate, { productId: config.productId, focusId: focus.focusId }, { read_only: focus.readOnly }, delivery, judgedSha);
192
+ await write(delivery.id, route.target, route.stageId, gateState, undefined, { organizationId: config.organizationId, fromStatus: 'verify' });
193
+ }
88
194
  export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
89
195
  const createEscalation = deps.createEscalation ?? defaultCreateEscalation;
90
196
  const _getActiveFocuses = deps.getActiveFocuses ?? getActiveFocuses;
@@ -93,6 +199,7 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
93
199
  const _fetchEffectiveWorkflow = deps.fetchEffectiveWorkflow ?? fetchEffectiveWorkflow;
94
200
  const _updateDeliveryStatus = deps.updateDeliveryStatus ?? updateDeliveryStatus;
95
201
  const _updateIssueStatus = deps.updateIssueStatus ?? updateIssueStatus;
202
+ const gate = deps.gate ?? commitGateSeams;
96
203
  const activeTeams = (deps.getActiveTeams ?? getActiveTeams)();
97
204
  if (activeTeams.size === 0)
98
205
  return;
@@ -107,11 +214,15 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
107
214
  // per-focus (keyed on that focus's review_requested_at), NOT global: deliveries
108
215
  // of OTHER focuses with no open window still route promptly in this same tick.
109
216
  const reviewWindowFocusIds = new Set();
217
+ // Read-only focuses run no gate, so the in-flight wait never applies to them.
218
+ const readOnlyFocusIds = new Set();
110
219
  try {
111
220
  const focuses = await _getActiveFocuses(config.organizationId, config.productId);
112
221
  for (const f of focuses) {
113
222
  if (f.review_requested_at)
114
223
  reviewWindowFocusIds.add(f.focus_id);
224
+ if (f.read_only === true)
225
+ readOnlyFocusIds.add(f.focus_id);
115
226
  }
116
227
  }
117
228
  catch (err) {
@@ -152,6 +263,10 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
152
263
  await autoCloseContextGroups(contextGroups, _updateIssueStatus, log);
153
264
  continue;
154
265
  }
266
+ // A gate run for the focus commit still pending with no verdict: its verdict is read first (module header).
267
+ const judgedSha = readJudgedCommit(gate, focusId);
268
+ if (await waitsOnInFlightGateRun(gate, config, { focusId, readOnly: readOnlyFocusIds.has(focusId) }, delivery, judgedSha))
269
+ continue;
155
270
  // Route verify -> verify_failed through the single-writer reconciler.
156
271
  // Open work on a verify delivery is the trigger; the reconciler agrees
157
272
  // (verify + open work -> verify_failed) ahead of any review signal.
@@ -166,9 +281,8 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
166
281
  },
167
282
  });
168
283
  const awaitingVerifyStage = workflow.stages.find(s => s.name === decision.target);
169
- const verifyFailedTransition = { organizationId: config.organizationId, fromStatus: 'verify' };
170
284
  try {
171
- await _updateDeliveryStatus(delivery.id, decision.target, awaitingVerifyStage?.id, undefined, undefined, verifyFailedTransition);
285
+ await writeVerifyFailedRoute(_updateDeliveryStatus, gate, config, { focusId, readOnly: readOnlyFocusIds.has(focusId) }, delivery, { target: decision.target, stageId: awaitingVerifyStage?.id }, judgedSha);
172
286
  // Successful update -- evict any prior violation counters
173
287
  // for this delivery so transient earlier violations do not
174
288
  // accumulate across distinct (constraint, value) windows.
@@ -200,60 +314,7 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
200
314
  `attempt ${attempts}/${SCHEMA_VIOLATION_RETRY_CAP}, will retry next poll`);
201
315
  }
202
316
  else {
203
- log.error(`[listener] Schema drift blocked (${schemaErr.cause}): ${schemaErr.constraintName ?? '<unknown>'} ` +
204
- `rejects ${schemaErr.rejectedValue ?? '<null>'} after ${attempts} attempts on delivery "${delivery.name}". ` +
205
- `Filing escalation.`);
206
- const description = schemaErr.cause === 'read_only_mode'
207
- ? `Schema drift: daemon is in read-only mode (schema-version gate fired in warn ` +
208
- `mode) so action '${schemaErr.rejectedValue}' is blocked after ${attempts} attempts.\n\n` +
209
- `**Delivery:** ${delivery.name} (${delivery.id})\n` +
210
- `**Focus:** ${team.focusName} (${focusId})\n` +
211
- `**Last error:** ${err.message}`
212
- : `Schema drift: CHECK constraint ${schemaErr.constraintName ?? '<unknown>'} ` +
213
- `rejects value ${schemaErr.rejectedValue ?? '<null>'} after ${attempts} attempts.\n\n` +
214
- `**Delivery:** ${delivery.name} (${delivery.id})\n` +
215
- `**Focus:** ${team.focusName} (${focusId})\n` +
216
- `**Last error:** ${err.message}`;
217
- const whatWasTried = schemaErr.cause === 'read_only_mode'
218
- ? `Listener attempted verify_failed transition ${attempts} times; each was ` +
219
- `blocked by the read-only gate before the network call.`
220
- : `Listener attempted verify_failed transition ${attempts} times; each was ` +
221
- `rejected by the same CHECK constraint.`;
222
- const helpNeeded = schemaErr.cause === 'read_only_mode'
223
- ? `Apply the missing migrations the daemon expects (see schema-gate log line ` +
224
- `at startup) and restart the daemon, OR set TELORA_SCHEMA_GATE=off to bypass ` +
225
- `the gate if you know the missing migrations are intentional.`
226
- : `Confirm the production DB schema includes the migration that teaches ` +
227
- `the CHECK constraint to accept '${schemaErr.rejectedValue ?? '<null>'}'. ` +
228
- `If the schema is correct, the daemon source may be writing a stale value.`;
229
- try {
230
- await createEscalation({
231
- organizationId: config.organizationId,
232
- sessionId: '',
233
- issueId: null,
234
- reasonType: ESCALATION_REASON_ERROR_ENCOUNTERED,
235
- disposition: ESCALATION_DISPOSITION_NEEDS_OPERATOR,
236
- humanAct: schemaDriftHumanAct(schemaErr),
237
- anchor: { deliveryId: delivery.id, focusId },
238
- description,
239
- whatWasTried,
240
- helpNeeded,
241
- escalationKind: SCHEMA_DRIFT_BLOCKED_KIND,
242
- // Evidence/payload only -- provenance lives on the columns
243
- // via the anchor.
244
- metadata: {
245
- cause: schemaErr.cause,
246
- constraintName: schemaErr.constraintName,
247
- rejectedValue: schemaErr.rejectedValue,
248
- deliveryName: delivery.name,
249
- attempts,
250
- lastAttemptAt: new Date().toISOString(),
251
- },
252
- });
253
- }
254
- catch (escErr) {
255
- log.warn(`[listener] Failed to file schema_drift_blocked escalation for "${delivery.name}":`, escErr.message);
256
- }
317
+ await fileSchemaDriftBlocked(createEscalation, config, { focusId, focusName: team.focusName }, delivery, schemaErr, attempts, err);
257
318
  // Evict so a later schema fix can heal cleanly without manual reset.
258
319
  violationAttempts.delete(key);
259
320
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verify-open-issues.js","sourceRoot":"","sources":["../../src/focus/verify-open-issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-open-issues.js","sourceRoot":"","sources":["../../src/focus/verify-open-issues.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iGAAiG;AACjG,2EAA2E;AAC3E,6DAA6D;AAC7D,0EAA0E;AAC1E,6DAA6D;AAC7D,2EAA2E;AAC3E,yEAAyE;AACzE,gBAAgB;AAiChB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAExF,OAAO,EAAE,eAAe,EAAwB,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7H,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,mCAAmC,GAAG,mBAAmB,CAAC;AAChE,MAAM,qCAAqC,GAAG,gBAAgB,CAAC;AAC/D,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAajD,SAAS,2BAA2B,CAAC,GAAY;IAC/C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACX,GAAyB,CAAC,IAAI,KAAK,2BAA2B,CAChE,CAAC;AACJ,CAAC;AAmBD,SAAS,mBAAmB,CAAC,GAAY;IACvC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACX,GAAyB,CAAC,IAAI,KAAK,mBAAmB,CACxD,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAEhE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;AASpD;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,SAA2B;IACtD,IAAI,SAAS,CAAC,KAAK,KAAK,gBAAgB,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,GAAG,EACD,6FAA6F;gBAC7F,qDAAqD;SACxD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,GAAG,EACD,mDAAmD,SAAS,CAAC,cAAc,IAAI,WAAW,UAAU;YACpG,IAAI,SAAS,CAAC,aAAa,IAAI,QAAQ,8DAA8D;YACrG,+EAA+E;KAClF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB,EAAE,cAA6B,EAAE,aAA4B;IACnG,OAAO,GAAG,UAAU,KAAK,cAAc,IAAI,WAAW,KAAK,aAAa,IAAI,QAAQ,EAAE,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mCAAmC;IACjD,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC;IAClD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,sBAAsB,CACnC,gBAAgD,EAChD,MAAoB,EACpB,KAA6C,EAC7C,QAAsC,EACtC,SAA2B,EAC3B,QAAgB,EAChB,GAAY;IAEZ,GAAG,CAAC,KAAK,CACP,oCAAoC,SAAS,CAAC,KAAK,MAAM,SAAS,CAAC,cAAc,IAAI,WAAW,GAAG;QACnG,WAAW,SAAS,CAAC,aAAa,IAAI,QAAQ,UAAU,QAAQ,0BAA0B,QAAQ,CAAC,IAAI,KAAK;QAC5G,oBAAoB,CACrB,CAAC;IACF,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,KAAK,gBAAgB;QACtD,CAAC,CAAC,+EAA+E;YAC/E,oBAAoB,SAAS,CAAC,aAAa,sBAAsB,QAAQ,gBAAgB;YACzF,iBAAiB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK;YACnD,cAAc,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,KAAK;YACpD,mBAAoB,GAAa,CAAC,OAAO,EAAE;QAC7C,CAAC,CAAC,kCAAkC,SAAS,CAAC,cAAc,IAAI,WAAW,GAAG;YAC5E,iBAAiB,SAAS,CAAC,aAAa,IAAI,QAAQ,UAAU,QAAQ,gBAAgB;YACtF,iBAAiB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK;YACnD,cAAc,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,KAAK;YACpD,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,KAAK,gBAAgB;QACvD,CAAC,CAAC,+CAA+C,QAAQ,mBAAmB;YAC1E,wDAAwD;QAC1D,CAAC,CAAC,+CAA+C,QAAQ,mBAAmB;YAC1E,wCAAwC,CAAC;IAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,KAAK,gBAAgB;QACrD,CAAC,CAAC,4EAA4E;YAC5E,8EAA8E;YAC9E,8DAA8D;QAChE,CAAC,CAAC,uEAAuE;YACvE,mCAAmC,SAAS,CAAC,aAAa,IAAI,QAAQ,KAAK;YAC3E,2EAA2E,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC;YACrB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,mCAAmC;YAC/C,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,mBAAmB,CAAC,SAAS,CAAC;YACxC,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;YAC3D,WAAW;YACX,YAAY;YACZ,UAAU;YACV,cAAc,EAAE,yBAAyB;YACzC,2DAA2D;YAC3D,kBAAkB;YAClB,QAAQ,EAAE;gBACR,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,aAAa,EAAE,SAAS,CAAC,aAAa;gBACtC,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,QAAQ;gBACR,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACxC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,CACN,kEAAkE,QAAQ,CAAC,IAAI,IAAI,EAClF,MAAgB,CAAC,OAAO,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAE1C;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACnC,IAA8B,EAC9B,MAAoB,EACpB,KAA6C,EAC7C,QAAwF,EACxF,GAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE;QAC9C,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,QAAQ;QAC7B,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;QACzC,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,EAAE,GAAG,CAAC,CAAC;IACR,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,GAAG,CAAC,IAAI,CACN,wBAAwB,QAAQ,CAAC,IAAI,6DAA6D;YAClG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,oEAAoE;YAClH,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,sBAAsB,CACnC,KAAkC,EAClC,IAA8B,EAC9B,MAAoB,EACpB,KAA6C,EAC7C,QAA0E,EAC1E,KAAsD,EACtD,SAAwB;IAExB,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAC7C,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,CAClH,CAAC;IACF,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/I,CAAC;AAkCD,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAAoB,EACpB,OAAkC,EAAE;IAEpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,uBAAuB,CAAC;IAC1E,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IACpE,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;IAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;IACvE,MAAM,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC;IACtF,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;IAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC;IAC1C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,EAAE,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAEnC,2EAA2E;IAC3E,uEAAuE;IACvE,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,wDAAwD;IACxD,6EAA6E;IAC7E,gFAAgF;IAChF,+EAA+E;IAC/E,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,8EAA8E;IAC9E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACjF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,mBAAmB;gBAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI;gBAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,2EAA2E;QAC3E,GAAG,CAAC,IAAI,CACN,mFAAoF,GAAa,CAAC,OAAO,EAAE,CAC5G,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;YAAE,SAAS;QAEzC,wEAAwE;QACxE,6EAA6E;QAC7E,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;YAAE,SAAS;QAElD,2EAA2E;QAC3E,wEAAwE;QACxE,wEAAwE;QACxE,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CACN,2DAA2D,OAAO,GAAG;gBACrE,KAAK,IAAI,CAAC,SAAS,yDAAyD,CAC7E,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,sBAAsB,CAAC,CAAC;YAE9F,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAErD,8DAA8D;oBAC9D,mEAAmE;oBACnE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAClD,uEAAuE;oBACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAE3E,0DAA0D;oBAC1D,8CAA8C;oBAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,MAAM,sBAAsB,CAAC,aAAa,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;wBACrE,SAAS;oBACX,CAAC;oBAED,4GAA4G;oBAC5G,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAClD,IAAI,MAAM,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC;wBAAE,SAAS;oBAEpI,sEAAsE;oBACtE,uEAAuE;oBACvE,oEAAoE;oBACpE,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC5D,MAAM,QAAQ,GAAG,sBAAsB,CAAC;wBACtC,KAAK,EAAE;4BACL,aAAa,EAAE,QAAQ;4BACvB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;4BACvE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;4BACrC,YAAY,EAAE,IAAI;4BAClB,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;yBACrG;qBACF,CAAC,CAAC;oBACH,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAElF,IAAI,CAAC;wBACH,MAAM,sBAAsB,CAAC,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;wBAE5M,0DAA0D;wBAC1D,2DAA2D;wBAC3D,0DAA0D;wBAC1D,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;4BAChD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC;gCAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACxE,CAAC;wBAED,GAAG,CAAC,IAAI,CACN,wBAAwB,QAAQ,CAAC,IAAI,gBAAgB,QAAQ,CAAC,eAAe,qBAAqB;4BAClG,GAAG,QAAQ,CAAC,MAAM,sBAAsB,CACzC,CAAC;oBACJ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,4DAA4D;wBAC5D,6DAA6D;wBAC7D,iEAAiE;wBACjE,6DAA6D;wBAC7D,uDAAuD;wBACvD,MAAM,SAAS,GAA4B,2BAA2B,CAAC,GAAG,CAAC;4BACzE,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE;4BACpG,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC;gCACxB,CAAC,CAAC,EAAE,cAAc,EAAE,yBAAyB,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE;gCACnG,CAAC,CAAC,IAAI,CAAC;wBAEX,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;4BACzF,MAAM,QAAQ,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4BACvD,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;4BAErC,IAAI,QAAQ,GAAG,0BAA0B,EAAE,CAAC;gCAC1C,GAAG,CAAC,IAAI,CACN,4BAA4B,SAAS,CAAC,KAAK,4CAA4C,QAAQ,CAAC,IAAI,IAAI;oCACxG,IAAI,SAAS,CAAC,cAAc,IAAI,WAAW,aAAa,SAAS,CAAC,aAAa,IAAI,QAAQ,KAAK;oCAChG,WAAW,QAAQ,IAAI,0BAA0B,wBAAwB,CAC1E,CAAC;4BACJ,CAAC;iCAAM,CAAC;gCACN,MAAM,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gCACnI,qEAAqE;gCACrE,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BAChC,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,iEAAiE;4BACjE,sEAAsE;4BACtE,GAAG,CAAC,IAAI,CACN,sEAAsE,QAAQ,CAAC,IAAI,IAAI,EACtF,GAAa,CAAC,OAAO,CACvB,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,uEAAuE;oBACvE,yEAAyE;oBACzE,GAAG,CAAC,IAAI,CACN,0DAA0D,QAAQ,CAAC,IAAI,IAAI,EAC1E,GAAa,CAAC,OAAO,CACvB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,qDAAqD,IAAI,CAAC,SAAS,IAAI,EACtE,GAAa,CAAC,OAAO,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The verify-routing phase of the focus poll: the per-product passes that route
3
+ * verify deliveries between team exits, in this order --
4
+ * 1. checkVerifyDeliveriesForOpenIssues: open work filed on a verify delivery
5
+ * whose focus has no review window open -> verify_failed, after the same
6
+ * in-flight gate wait the review exit applies;
7
+ * 2. releaseCommitVerdictHolds: a review exit held on its commit's gate verdict
8
+ * is replayed once that verdict lands (held re-work: once the run is over),
9
+ * or its held evidence is dropped when HEAD moved.
10
+ *
11
+ * The release pass is the ONLY production path that routes a held review exit: if
12
+ * it stops running, every commit-verdict hold waits until its overdue observation
13
+ * and the verdict it waited for routes nothing. It runs AFTER the open-work pass
14
+ * in the same phase, so a poll that finds a verdict landed routes the held
15
+ * delivery before the next poll's spawn / cascade passes read it. So the phase is
16
+ * one function with injectable passes, pinned by verify-routing-passes.test.ts, and
17
+ * focus/listener.ts runs it once per product per poll. Both passes are best-effort
18
+ * and never throw.
19
+ *
20
+ * @module focus/verify-routing-passes
21
+ */
22
+ import type { DaemonConfig } from '../types/index.js';
23
+ /** The passes the phase runs, in order. */
24
+ export interface VerifyRoutingPasses {
25
+ checkVerifyDeliveriesForOpenIssues: (config: DaemonConfig) => Promise<void>;
26
+ releaseCommitVerdictHolds: (config: DaemonConfig) => Promise<unknown>;
27
+ }
28
+ /** The production passes: the real modules, unwrapped. */
29
+ export declare const productionVerifyRoutingPasses: VerifyRoutingPasses;
30
+ /** Run the verify-routing phase for one product-scoped config. */
31
+ export declare function runVerifyRoutingPasses(config: DaemonConfig, passes?: VerifyRoutingPasses): Promise<void>;
32
+ //# sourceMappingURL=verify-routing-passes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-routing-passes.d.ts","sourceRoot":"","sources":["../../src/focus/verify-routing-passes.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,kCAAkC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,yBAAyB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvE;AAED,0DAA0D;AAC1D,eAAO,MAAM,6BAA6B,EAAE,mBAG3C,CAAC;AAEF,kEAAkE;AAClE,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,MAAM,GAAE,mBAAmD,GAC1D,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -0,0 +1,18 @@
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-product-poll.test.ts,
3
+ // packages/daemon/src/focus/verify-routing-passes.test.ts,
4
+ // packages/daemon/src/integration/focus-commit-verdict-scenario.test.ts
5
+ // PINNED-BY-END
6
+ import { checkVerifyDeliveriesForOpenIssues } from './verify-open-issues.js';
7
+ import { releaseCommitVerdictHolds } from '../completion/commit-verdict-release.js';
8
+ /** The production passes: the real modules, unwrapped. */
9
+ export const productionVerifyRoutingPasses = {
10
+ checkVerifyDeliveriesForOpenIssues,
11
+ releaseCommitVerdictHolds,
12
+ };
13
+ /** Run the verify-routing phase for one product-scoped config. */
14
+ export async function runVerifyRoutingPasses(config, passes = productionVerifyRoutingPasses) {
15
+ await passes.checkVerifyDeliveriesForOpenIssues(config);
16
+ await passes.releaseCommitVerdictHolds(config);
17
+ }
18
+ //# sourceMappingURL=verify-routing-passes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-routing-passes.js","sourceRoot":"","sources":["../../src/focus/verify-routing-passes.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,sEAAsE;AACtE,6DAA6D;AAC7D,0EAA0E;AAC1E,gBAAgB;AAyBhB,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAQpF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,kCAAkC;IAClC,yBAAyB;CAC1B,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,SAA8B,6BAA6B;IAE3D,MAAM,MAAM,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
package/dist/git/index.js CHANGED
@@ -1,11 +1,15 @@
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/git/genesis-aurora-shell-smoke.test.ts,
3
- // packages/daemon/src/git/git-fetch.test.ts, packages/daemon/src/git/git-genesis.test.ts,
4
- // packages/daemon/src/git/git-state-detector.test.ts, packages/daemon/src/git/git-utils-output.test.ts,
5
- // packages/daemon/src/git/merge-back.test.ts, packages/daemon/src/git/merge-confirm-clean-refusal.test.ts,
2
+ // Pinned by: packages/daemon/src/completion/mid-flight-merge-gate.test.ts,
3
+ // packages/daemon/src/completion/teardown-merge-gate.test.ts,
4
+ // packages/daemon/src/git/genesis-aurora-shell-smoke.test.ts, packages/daemon/src/git/git-fetch.test.ts,
5
+ // packages/daemon/src/git/git-genesis.test.ts, packages/daemon/src/git/git-state-detector.test.ts,
6
+ // packages/daemon/src/git/git-utils-output.test.ts, packages/daemon/src/git/merge-back.test.ts,
7
+ // packages/daemon/src/git/merge-confirm-clean-refusal.test.ts,
6
8
  // packages/daemon/src/git/merge-integration-to-main.test.ts,
7
9
  // packages/daemon/src/git/merge-worktree-recovery.test.ts, packages/daemon/src/git/squash-merge.test.ts,
8
- // packages/daemon/src/queries/git-activity.test.ts
10
+ // packages/daemon/src/merge/resolved-conflict-merge-gate.test.ts,
11
+ // packages/daemon/src/queries/git-activity.test.ts,
12
+ // packages/daemon/src/worktree/safe-remove-merge-gate.test.ts
9
13
  // PINNED-BY-END
10
14
  /**
11
15
  * Git subsystem barrel.