@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
@@ -1,6 +1,9 @@
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/verify/verification-checkout.test.ts,
3
- // packages/daemon/src/verify/verification-run-config-source.test.ts
2
+ // Pinned by: packages/daemon/src/verify/verification-attribution.test.ts,
3
+ // packages/daemon/src/verify/verification-checkout.test.ts,
4
+ // packages/daemon/src/verify/verification-run-config-source.test.ts,
5
+ // packages/daemon/src/verify/verify-unprovisioned-worktree.test.ts,
6
+ // packages/daemon/src/worktree/worktree-package-provisioning.test.ts
4
7
  // PINNED-BY-END
5
8
  /**
6
9
  * A deterministic verify judges a FIXED commit, never the live focus worktree.
@@ -41,6 +44,11 @@
41
44
  *
42
45
  * Fail-closed: when no checkout can be made the run is NOT performed in the live
43
46
  * worktree; it reports `pending` with checkoutUnavailable so the tick retries.
47
+ * The same holds for an UNPROVISIONED focus worktree: a nested package's
48
+ * node_modules is reachable only from the worktree itself, so while its install
49
+ * is in flight, failed, or stale (worktree/worktree-package-provisioning.ts) no
50
+ * checkout is made and the verify reports checkoutUnavailable, naming the package
51
+ * and the install error -- a missing install is never a verdict on the delivery.
44
52
  *
45
53
  * The command + timeout come from the COMMIT BEING JUDGED. A default-on
46
54
  * candidate's config is provisional: the tick resolved it against the product
@@ -66,6 +74,8 @@ import { DEFAULT_VERIFICATION_TIMEOUT_MS } from './verification-deterministic.js
66
74
  import { formatVerifyConfigSource, resolveAppliedVerificationConfig, } from './verification-config.js';
67
75
  import { readVerifyManifest, resolveVerifyManifestPath } from './verification-manifest.js';
68
76
  import { resolveVerifyBoundaryEnv } from './verification-boundary-env.js';
77
+ import { readWorktreeProvisioning } from '../worktree/worktree-package-provisioning.js';
78
+ import { noteGateRunCommit } from './gate-run-registry.js';
69
79
  import { createLogger } from '../shell/log.js';
70
80
  const log = createLogger({ module: 'verification' });
71
81
  /** The ignored directory name a checkout rebuilds from the focus worktree. */
@@ -234,6 +244,22 @@ export function createVerifyCheckout(focusWorktreePath, checkoutKey, deps = {})
234
244
  },
235
245
  };
236
246
  }
247
+ /**
248
+ * A detached verify checkout of `sha` -- a commit already chosen (the one a run
249
+ * judged, or the focus base) -- rather than of whatever the focus worktree's HEAD
250
+ * is now (a team may have moved it). createVerifyCheckout takes its sha from the
251
+ * focus worktree's `rev-parse HEAD`; that one read is answered with `sha` and
252
+ * every other git call passes through, so the checkout is made and its
253
+ * dependencies mirrored exactly as a HEAD checkout's are. Callers still compare
254
+ * the returned sha to the one they asked for.
255
+ */
256
+ export function createPinnedVerifyCheckout(focusWorktreePath, checkoutKey, sha, runGit = runGitSync) {
257
+ return createVerifyCheckout(focusWorktreePath, checkoutKey, {
258
+ runGit: (args, cwd) => (cwd === focusWorktreePath && args.length === 2 && args[0] === 'rev-parse' && args[1] === 'HEAD'
259
+ ? { success: true, output: sha }
260
+ : runGit(args, cwd)),
261
+ });
262
+ }
237
263
  const defaultResolveFocusWorktreePath = (v) => (v.focusId ? getFocusWorktree(v.focusId)?.worktreePath ?? null : null);
238
264
  /**
239
265
  * The real dispatch-time resolver (module doc): env > the candidate's operator
@@ -316,6 +342,15 @@ export async function runDeterministicAtFixedCommit(deps, v) {
316
342
  const inPlace = await deps.runDeterministic(v.verificationConfig, cwd, logContext, extraEnv);
317
343
  return appliedConfig ? { ...inPlace, appliedConfig } : inPlace;
318
344
  }
345
+ const provisioning = (deps.readWorktreeProvisioning ?? readWorktreeProvisioning)(focusWorktreePath);
346
+ if (!provisioning.ready) {
347
+ return {
348
+ outcome: 'pending',
349
+ rationale: `verify checkout unavailable: the focus worktree is not provisioned (${provisioning.state}: `
350
+ + `${provisioning.reason}); the verify is not run against missing dependencies -- retried next tick`,
351
+ checkoutUnavailable: true,
352
+ };
353
+ }
319
354
  const checkout = (deps.createVerifyCheckout ?? createVerifyCheckout)(focusWorktreePath, v.deliveryId);
320
355
  if (!checkout) {
321
356
  return {
@@ -325,6 +360,8 @@ export async function runDeterministicAtFixedCommit(deps, v) {
325
360
  checkoutUnavailable: true,
326
361
  };
327
362
  }
363
+ // From here the run judges a known commit: a routing wait keyed on another commit no longer waits on it.
364
+ noteGateRunCommit(v.deliveryId, checkout.sha);
328
365
  try {
329
366
  const chosen = chooseCheckoutRunConfig(deps, v, checkout.path);
330
367
  if ('unresolvable' in chosen) {
@@ -1 +1 @@
1
- {"version":3,"file":"verification-checkout.js","sourceRoot":"","sources":["../../src/verify/verification-checkout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-checkout.js","sourceRoot":"","sources":["../../src/verify/verification-checkout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { PendingVerification } from '../queries/verification.js';
2
+ import type { StrategyResult } from './verification-deterministic.js';
3
+ import type { VerificationDeps } from './verification-deps.js';
4
+ import { type GateRunRegistration } from './gate-run-registry.js';
5
+ import { type InstrumentFaultHold } from './verification-attribution.js';
6
+ /** How a delivery is judged. */
7
+ export interface JudgeOptions {
8
+ /** The verdict already recorded for the commit the delivery is judged on: taken instead of running the strategy. */
9
+ reused?: StrategyResult;
10
+ /**
11
+ * Asked once a run's verdict is rendered and recorded: false means the delivery
12
+ * left verify while the run was in flight, so the verdict routes nothing.
13
+ */
14
+ stillInVerify?: () => Promise<boolean>;
15
+ }
16
+ /** What judging rendered, before any per-delivery routing. */
17
+ export interface JudgedDelivery {
18
+ result: StrategyResult;
19
+ /** Set when the run rendered no verdict about the work (blind, unattributable, timed out). */
20
+ evidenceUnavailableHold: InstrumentFaultHold | null;
21
+ /** False when the delivery left verify while its run was in flight: route nothing for it. */
22
+ routes: boolean;
23
+ }
24
+ /**
25
+ * Judge one delivery: run its strategy -- or take the recorded verdict -- then,
26
+ * for a deterministic run, attribute a failure and record the commit's verdict.
27
+ *
28
+ * Attribution (verify/verification-attribution.ts): a failed HEAD run whose reds
29
+ * ALL pre-exist on the focus base introduced no regression and is demoted to
30
+ * 'passed' here, BEFORE the caller's pass path, so the demotion feeds injection
31
+ * retirement; a blind or timed-out run returns the instrument-fault hold instead,
32
+ * and no baseline leaves the outcome unchanged (all failures gate).
33
+ *
34
+ * The verdict is recorded after attribution and before the per-delivery pass
35
+ * path can demote it, because the gate verdict belongs to the judged COMMIT, not
36
+ * to this delivery. A reused verdict is already attributed and already recorded,
37
+ * so neither step runs for it.
38
+ */
39
+ export declare function judgeDelivery(v: PendingVerification, deps: VerificationDeps, runStrategy: () => Promise<StrategyResult>, opts?: JudgeOptions): Promise<JudgedDelivery>;
40
+ /** Routes one delivery end to end (verification-engine runVerificationForDelivery). */
41
+ export type DeliveryVerifier = (v: PendingVerification, deps: VerificationDeps, opts: JudgeOptions) => Promise<StrategyResult>;
42
+ /**
43
+ * Dispatch one DEFAULT-ON candidate (module doc): serialized with every other
44
+ * candidate on its focus, it starts only when its delivery is still in verify,
45
+ * takes the verdict recorded for the focus HEAD when one exists, and runs the
46
+ * gate otherwise; the delivery is routed by `verify` unless it left verify while
47
+ * the run was in flight. A routed result is noted on the default-on re-run guards
48
+ * (the commit it was judged on, a failed sha, or an un-mark when no checkout could
49
+ * be made). Returns null when nothing was routed -- not started, or left verify
50
+ * mid-run -- and drops the run mark, so a return to verify is selected again.
51
+ */
52
+ export declare function dispatchDefaultOnCandidate(v: PendingVerification, deps: VerificationDeps, verify: DeliveryVerifier): Promise<StrategyResult | null>;
53
+ /**
54
+ * Durably remove the verdict each selected EXPLICIT candidate's previous run
55
+ * recorded (module doc), for every candidate at once and before any of them waits
56
+ * on the semaphore; returns, per candidate, whether it may start this tick. A
57
+ * default-on candidate always may, and so does every candidate when the deps carry
58
+ * no remover. Each removed here is named a fresh run id first, which its verdict is
59
+ * recorded under (verify/explicit-run-ledger.ts). One a recorded verdict already
60
+ * judges is not removed here: no run replaces its verdict, and its dispatch removes
61
+ * it -- naming its run then -- only once it is about to route a verdict. One whose
62
+ * removal did not land may not start: its registration ends now, so it holds no
63
+ * routing wait, and its re-arm is dropped, so the next tick selects it again.
64
+ * Meanwhile this process reads "no verdict" for it (its registration forgot the
65
+ * older one), so routing holds until a run renders one.
66
+ */
67
+ export declare function invalidateSupersededExplicitVerdicts(selected: readonly PendingVerification[], explicitIds: ReadonlySet<string>, registrations: readonly GateRunRegistration[], deps: VerificationDeps): Promise<boolean[]>;
68
+ /**
69
+ * Dispatch one EXPLICIT-METHOD row (module doc): it starts only when its delivery
70
+ * is still in verify, and a delivery that left verify while its run was in flight
71
+ * is routed nothing -- no outcome recorded, no re-work or shortfall feedback --
72
+ * though a per-commit verdict its run rendered is still recorded. A deterministic
73
+ * row is serialized on its focus and takes the verdict recorded for the focus HEAD
74
+ * under its own gate in place of a run; a failure already fed back at that commit
75
+ * routes nothing, and a removal deferred at selection is made before a verdict --
76
+ * that recorded one, or a run's -- is routed.
77
+ * Returns null when nothing was routed; the row is selected again on a later tick
78
+ * while it stays pending. A row the explicit re-arm scan selected keeps no durable
79
+ * pending outcome, so a dispatch that routes nothing (null, or a throw) releases
80
+ * its re-arm mark: the HEAD it was selected for is still unjudged
81
+ * (verify/explicit-rearm.ts). A reused verdict is a routed result.
82
+ */
83
+ export declare function dispatchExplicitCandidate(v: PendingVerification, deps: VerificationDeps, verify: DeliveryVerifier): Promise<StrategyResult | null>;
84
+ //# sourceMappingURL=verification-commit-sharing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-commit-sharing.d.ts","sourceRoot":"","sources":["../../src/verify/verification-commit-sharing.ts"],"names":[],"mappings":"AAgHA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAiC,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAoBxG,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,oHAAoH;IACpH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,8FAA8F;IAC9F,uBAAuB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpD,6FAA6F;IAC7F,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EAC1C,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,cAAc,CAAC,CAYzB;AAED,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAqL/H;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAOhC;AAuBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oCAAoC,CACxD,QAAQ,EAAE,SAAS,mBAAmB,EAAE,EACxC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,aAAa,EAAE,SAAS,mBAAmB,EAAE,EAC7C,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,OAAO,EAAE,CAAC,CAYpB;AAsBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAiBhC"}
@@ -0,0 +1,416 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/verify/verification-commit-sharing.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * One deterministic gate run per focus commit, its verdict shared by every
6
+ * delivery judged on that commit.
7
+ *
8
+ * Every delivery on a focus is judged on the same focus-branch HEAD, and a gate
9
+ * on an unchanged tree renders the same verdict. Default-on selection used to
10
+ * dispatch one whole verify:gate run per delivery sitting in verify, so two
11
+ * deliveries on one commit paid for the gate twice (2026-09-14: three commits
12
+ * gated twice each, ~14 min; 2026-09-13: 22 runs for 3 deliveries), and a status
13
+ * round trip or a daemon restart at an already-judged commit paid again.
14
+ *
15
+ * The verdict belongs to the COMMIT (verify/commit-verdict-record.ts, written by
16
+ * the judge step below for every run that rendered one). So a default-on
17
+ * candidate's dispatch first asks for a verdict already recorded for the judged
18
+ * commit under the gate its run applies there -- the gate its verdict is recorded
19
+ * under (verify/judged-commit-gate.ts), not the repoPath gate it was selected
20
+ * with, which a branch manifest may override: a hit is taken in place of running
21
+ * the gate (no command, no re-attribution, no second record write), and the
22
+ * delivery then goes through the SAME per-delivery routing as a delivery that
23
+ * ran -- its own outcome record, its own injection retirement on a pass, its own
24
+ * failure feedback (which stamps its own durable failedAtSha, so a reused
25
+ * failure is not re-delivered on the next round trip at that commit). A miss
26
+ * runs the gate, which records the verdict the next candidate takes.
27
+ *
28
+ * Candidates for one focus are dispatched one at a time, so a second delivery on
29
+ * a commit reads the first's recorded verdict rather than racing it into a second
30
+ * run. The HEAD is read at dispatch, inside that serialization, because that is
31
+ * the commit a run would judge; an unreadable HEAD reuses nothing and the run
32
+ * path keeps its own fail-closed handling. A run that rendered no verdict (timed
33
+ * out, no checkout, instrument fault) records nothing, so the commit stays
34
+ * unjudged and is asked again.
35
+ *
36
+ * A verdict routes only a delivery still in verify. The verification semaphore
37
+ * serializes runs across foci, so a candidate selected at tick start can wait
38
+ * minutes behind another focus's gate while review routes its delivery on
39
+ * (2026-09-14: done 19:07:26, verdict 19:10:07). So the dispatch re-reads the
40
+ * delivery's status first and starts nothing for a delivery no longer in verify;
41
+ * an unreadable status starts nothing either -- the mark is dropped and the next
42
+ * tick asks again, at no cost. A default-on dispatch awaits nothing between that
43
+ * read and taking a recorded verdict or starting its run; an explicit one may await
44
+ * a deferred removal there, and reads the status again after it (below). The
45
+ * status is re-read once more after the verdict
46
+ * is recorded: a delivery that left verify while its run was in flight is routed
47
+ * nothing (no outcome, no injection retirement, no re-work), and the recorded
48
+ * verdict stays for whichever delivery is judged on that commit next. An
49
+ * unreadable status there routes as before, because the run is already spent and
50
+ * a run that recorded no verdict (a timeout) would otherwise cost a whole re-run.
51
+ *
52
+ * EXPLICIT-METHOD rows (getPendingVerifications) take the same two status reads
53
+ * (dispatchExplicitCandidate): selected at tick start, they wait on the same
54
+ * semaphore. A row with no focus is dispatched as before -- its status is read
55
+ * through its focus, and no review exit routes a delivery outside one.
56
+ *
57
+ * An explicit DETERMINISTIC row renders its verdict for the commit too: its run
58
+ * records it under the gate the row applies there (its own command + timeout,
59
+ * unchanged by the checkout -- commitVerdictGateOf), which is the gate its
60
+ * explicit verdict is keyed by (explicitGateKeyOf hashes that same command +
61
+ * timeout). So it takes the same per-commit reuse as a default-on candidate,
62
+ * serialized on its focus and read at dispatch under its OWN gate: a delivery
63
+ * re-admitted to verify at a judged commit -- a status round trip, a restart, a
64
+ * sibling row naming the same gate -- runs no second gate. A hit is routed exactly
65
+ * as a run is (its outcome and explicit verdict for that commit and gate key, its
66
+ * injection retirement, its failure feedback), and is a routed result for the
67
+ * re-arm scan. One rule is explicit-only, because the edge re-lists a failed
68
+ * explicit row every tick where the default-on scan's failedAtSha guard selects
69
+ * nothing: a reused FAILED verdict whose commit is already its delivery's durable
70
+ * failedAtSha was fed back to it, so it routes nothing again until a new commit.
71
+ * An unreadable HEAD reuses nothing. ai_inspection and behavioral rows write no
72
+ * per-commit record, so they read none: they run, unserialized, as before.
73
+ *
74
+ * An explicit row's run REPLACES the verdict its delivery's previous run recorded,
75
+ * so that older verdict must not survive, durably, into the replacement's run
76
+ * (verify/explicit-gate-outcome.ts): a restart while the run waits or runs, or a
77
+ * verdict write after it that fails, would otherwise expose it as the latest. So
78
+ * every selected explicit candidate's durable record is removed at selection,
79
+ * before any candidate waits on the semaphore (invalidateSupersededExplicitVerdicts),
80
+ * and one whose removal did not land is not started this tick: its selection ends
81
+ * at once, so it holds no routing wait, and the next tick selects it again. The
82
+ * exception is a candidate a recorded verdict already judges at selection: no run
83
+ * replaces anything there, so its removal is deferred to the dispatch, and made
84
+ * only when that dispatch is about to route a verdict -- the recorded one it takes,
85
+ * or, finding none after all (HEAD moved), its own run's -- refused, it routes
86
+ * nothing and starts nothing. That removal awaits a row write, and the delivery can
87
+ * leave verify meanwhile (review routes it to done, re-work to verify_failed), so
88
+ * the dispatch reads its status again once the removal lands, immediately before it
89
+ * takes the verdict or starts the run, and routes and starts nothing for one no
90
+ * longer in verify or whose status cannot be read; the removal itself refuses a
91
+ * delivery it finds done or cancelled. A removal that landed first stays, and the
92
+ * run it named supersedes the older verdict in the ledger, so that verdict governs
93
+ * nothing. A reused failure already fed back routes nothing, so it removes nothing. While a run of a candidate is pending, no same-commit,
94
+ * same-gate per-commit record exists to shadow: the run starts only because the
95
+ * read under that gate at that commit missed, and a record under another gate or
96
+ * for another commit is never read as its verdict. A re-armed row
97
+ * (verify/explicit-rearm.ts) whose run never judged its commit -- not started, or
98
+ * its delivery left verify mid-run -- drops its re-arm, so a later tick can select
99
+ * it again at the same HEAD.
100
+ *
101
+ * Every removal names a fresh run id first (verify/explicit-run-ledger.ts), noted on
102
+ * the candidate, and the verdict its dispatch routes -- a run's or a reused one --
103
+ * is recorded under that id, so a reused verdict supersedes the older record in the
104
+ * ledger exactly as a run's does, and an older record a stale writer carries back
105
+ * reads as no verdict.
106
+ *
107
+ * @module verify/verification-commit-sharing
108
+ */
109
+ import { randomUUID } from 'node:crypto';
110
+ import { DELIVERY_STATUS } from '@telora/daemon-core';
111
+ import { noteExplicitRunId } from './gate-run-registry.js';
112
+ import { releaseExplicitRearm } from './explicit-rearm.js';
113
+ import { attributeDeterministicFailure } from './verification-attribution.js';
114
+ import { commitVerdictGateOf, recordCommitVerdictFor, strategyResultFromVerdict, } from './commit-verdict-record.js';
115
+ import { judgedFailedSha, readVerificationHistory } from '../queries/delivery-gate-state.js';
116
+ import { buildJudgedCommitManifestReader, defaultResolveFocusHeadSha, noteDefaultOnResult, releaseDefaultOnMark, } from './verification-default-on.js';
117
+ import { judgedCommitGate } from './judged-commit-gate.js';
118
+ import { createLogger } from '../shell/log.js';
119
+ const log = createLogger({ module: 'verification' });
120
+ /**
121
+ * Judge one delivery: run its strategy -- or take the recorded verdict -- then,
122
+ * for a deterministic run, attribute a failure and record the commit's verdict.
123
+ *
124
+ * Attribution (verify/verification-attribution.ts): a failed HEAD run whose reds
125
+ * ALL pre-exist on the focus base introduced no regression and is demoted to
126
+ * 'passed' here, BEFORE the caller's pass path, so the demotion feeds injection
127
+ * retirement; a blind or timed-out run returns the instrument-fault hold instead,
128
+ * and no baseline leaves the outcome unchanged (all failures gate).
129
+ *
130
+ * The verdict is recorded after attribution and before the per-delivery pass
131
+ * path can demote it, because the gate verdict belongs to the judged COMMIT, not
132
+ * to this delivery. A reused verdict is already attributed and already recorded,
133
+ * so neither step runs for it.
134
+ */
135
+ export async function judgeDelivery(v, deps, runStrategy, opts = {}) {
136
+ if (opts.reused)
137
+ return { result: { ...opts.reused }, evidenceUnavailableHold: null, routes: true };
138
+ const result = { ...(await runStrategy()) };
139
+ const deterministic = v.verificationMethod === 'deterministic';
140
+ const evidenceUnavailableHold = deterministic && result.outcome === 'failed'
141
+ ? await attributeDeterministicFailure(v, result, deps)
142
+ : null;
143
+ if (deterministic)
144
+ recordCommitVerdictFor(v, result, evidenceUnavailableHold !== null, deps.recordCommitVerdict);
145
+ // Asked only after the record write: a verdict that lands after its delivery
146
+ // left verify still belongs to the commit, for the next delivery judged on it.
147
+ const routes = opts.stillInVerify ? await opts.stillInVerify() : true;
148
+ return { result, evidenceUnavailableHold, routes };
149
+ }
150
+ const defaultReadJudgedCommitManifest = buildJudgedCommitManifestReader();
151
+ /**
152
+ * The gate and commit a candidate's verdict is keyed by. A default-on candidate
153
+ * with a focus worktree runs from a checkout of the judged commit and records under
154
+ * the gate it APPLIES there (verify/judged-commit-gate.ts), at the sha git read the
155
+ * manifest from; an unreadable judged commit keys nothing. An explicit row -- or a
156
+ * candidate with no worktree, which runs in place on its own config -- is keyed by
157
+ * the gate it carries, at the focus HEAD.
158
+ */
159
+ function verdictKey(v, focusId, deps) {
160
+ if (v.defaultOnSource) {
161
+ const read = (deps.readJudgedCommitManifest ?? defaultReadJudgedCommitManifest)(focusId);
162
+ if (read !== null) {
163
+ if ('unreadable' in read)
164
+ return null;
165
+ const gate = judgedCommitGate(v.defaultOnSource, read);
166
+ return gate ? { gate, head: read.sha } : null;
167
+ }
168
+ }
169
+ const gate = commitVerdictGateOf(v);
170
+ const head = gate ? (deps.resolveFocusHeadSha ?? defaultResolveFocusHeadSha)(focusId) : null;
171
+ return gate && head !== null ? { gate, head } : null;
172
+ }
173
+ /**
174
+ * The verdict recorded for the focus commit this candidate would be judged on, or
175
+ * null when there is none to take: not a deterministic candidate (no other method
176
+ * records one), no reader, no product / focus / gate to key it by, an unreadable
177
+ * HEAD, or no verdict for that commit under the gate its run would apply.
178
+ */
179
+ function readReusableVerdict(v, deps) {
180
+ if (v.verificationMethod !== 'deterministic' || !deps.readCommitVerdict || !v.productId || !v.focusId)
181
+ return null;
182
+ const key = verdictKey(v, v.focusId, deps);
183
+ return key === null ? null : deps.readCommitVerdict(v.productId, v.focusId, key.head, key.gate);
184
+ }
185
+ /** Per-focus dispatch queue tails: a candidate starts only after every earlier candidate for its focus settled. */
186
+ const focusQueues = new Map();
187
+ async function serializedByFocus(focusKey, fn) {
188
+ const prior = focusQueues.get(focusKey) ?? Promise.resolve();
189
+ let release = () => { };
190
+ const tail = prior.then(() => new Promise((resolve) => { release = resolve; }));
191
+ focusQueues.set(focusKey, tail);
192
+ await prior;
193
+ try {
194
+ return await fn();
195
+ }
196
+ finally {
197
+ release();
198
+ if (focusQueues.get(focusKey) === tail)
199
+ focusQueues.delete(focusKey);
200
+ }
201
+ }
202
+ /** Re-read whether the candidate's delivery is still in verify (a delivery missing from its focus is not). */
203
+ async function rereadInVerify(v, deps) {
204
+ if (!v.focusId)
205
+ return { unreadable: 'the candidate names no focus' };
206
+ try {
207
+ const row = (await deps.getFocusDeliveries(v.focusId)).find((d) => d.id === v.deliveryId);
208
+ return { inVerify: row?.executionStatus === DELIVERY_STATUS.VERIFY, gateState: row?.gateState };
209
+ }
210
+ catch (err) {
211
+ return { unreadable: err.message };
212
+ }
213
+ }
214
+ /** The post-run status probe a run is judged with, and whether it found the delivery gone from verify. */
215
+ function leftVerifyProbe(v, deps) {
216
+ let leftVerify = false;
217
+ return {
218
+ stillInVerify: async () => {
219
+ const after = await rereadInVerify(v, deps);
220
+ leftVerify = 'inVerify' in after && !after.inVerify; // unreadable: route as before (module doc)
221
+ return !leftVerify;
222
+ },
223
+ left: () => leftVerify,
224
+ };
225
+ }
226
+ function logLeftVerifyMidRun(kind, v, result) {
227
+ log.info(`[verification] ${kind}: delivery "${v.deliveryName}" (${v.deliveryId}) left verify while its verify ran -- `
228
+ + `the '${result.outcome}' verdict routes nothing for it (a per-commit verdict it rendered stays recorded)`);
229
+ }
230
+ function logNotStarting(kind, v, why) {
231
+ log.info(`[verification] ${kind}: not starting the verify for delivery "${v.deliveryName}" (${v.deliveryId}) -- ${why}`);
232
+ }
233
+ /**
234
+ * Re-read the delivery's status before its dispatch starts or routes anything: the
235
+ * re-read row when the delivery is still in verify, else null, logged -- an
236
+ * unreadable status starts nothing either (module doc), and the next tick asks again.
237
+ * `when` qualifies which read this is in the log line.
238
+ */
239
+ async function startableStatus(v, deps, kind, when) {
240
+ const status = await rereadInVerify(v, deps);
241
+ if ('inVerify' in status && status.inVerify)
242
+ return status;
243
+ logNotStarting(kind, v, 'unreadable' in status
244
+ ? `its status could not be re-read${when} (${status.unreadable}); the next tick asks again`
245
+ : `it is no longer in verify${when}`);
246
+ return null;
247
+ }
248
+ /**
249
+ * Land the policy's pre-route step, when it has one, then re-read the status that
250
+ * step may have outlived (module doc): false routes and starts nothing. A dispatch
251
+ * whose policy has no such step awaits nothing between its status read and its route.
252
+ */
253
+ async function preRouteStepLanded(v, deps, policy) {
254
+ const step = policy.beforeRoute?.() ?? null;
255
+ if (step === null)
256
+ return true;
257
+ if (!(await step))
258
+ return false;
259
+ return (await startableStatus(v, deps, policy.kind, ' once its previous verdict\'s removal landed')) !== null;
260
+ }
261
+ /**
262
+ * The steps every dispatch shares (module doc): start only for a delivery still in
263
+ * verify; take the verdict recorded for the commit it is judged on when one exists
264
+ * (no command, no re-attribution, no second record write), routed per delivery
265
+ * exactly as a run is; else run, and route nothing for a delivery that left verify
266
+ * while the run was in flight. The policy may refuse either route before it
267
+ * happens, and a step it awaits first is followed by a second status read, right
268
+ * before the verdict is taken or the run starts. Returns the routed result, or null
269
+ * when nothing was routed.
270
+ */
271
+ async function reuseOrRun(v, deps, verify, policy) {
272
+ const status = await startableStatus(v, deps, policy.kind, '');
273
+ if (status === null)
274
+ return null;
275
+ const verdict = readReusableVerdict(v, deps);
276
+ const reused = verdict ? strategyResultFromVerdict(verdict) : null;
277
+ if (reused && policy.alreadyRouted?.(reused, status.gateState))
278
+ return null;
279
+ if (!(await preRouteStepLanded(v, deps, policy)))
280
+ return null;
281
+ if (verdict && reused) {
282
+ log.info(`[verification] ${policy.kind}: delivery "${v.deliveryName}" (${v.deliveryId}) takes the '${verdict.outcome}' verdict `
283
+ + `recorded for focus HEAD ${verdict.sha.slice(0, 8)} (run for delivery ${verdict.judgedDeliveryId}) -- no gate run`);
284
+ return verify(v, deps, { reused });
285
+ }
286
+ const probe = leftVerifyProbe(v, deps);
287
+ const result = await verify(v, deps, { stillInVerify: probe.stillInVerify });
288
+ if (!probe.left())
289
+ return result;
290
+ logLeftVerifyMidRun(policy.kind, v, result);
291
+ return null;
292
+ }
293
+ /**
294
+ * Dispatch one DEFAULT-ON candidate (module doc): serialized with every other
295
+ * candidate on its focus, it starts only when its delivery is still in verify,
296
+ * takes the verdict recorded for the focus HEAD when one exists, and runs the
297
+ * gate otherwise; the delivery is routed by `verify` unless it left verify while
298
+ * the run was in flight. A routed result is noted on the default-on re-run guards
299
+ * (the commit it was judged on, a failed sha, or an un-mark when no checkout could
300
+ * be made). Returns null when nothing was routed -- not started, or left verify
301
+ * mid-run -- and drops the run mark, so a return to verify is selected again.
302
+ */
303
+ export async function dispatchDefaultOnCandidate(v, deps, verify) {
304
+ return serializedByFocus(v.focusId ?? v.deliveryId, async () => {
305
+ const result = await reuseOrRun(v, deps, verify, { kind: 'default-on' });
306
+ if (result === null)
307
+ releaseDefaultOnMark(v.deliveryId);
308
+ else
309
+ noteDefaultOnResult(v.deliveryId, result);
310
+ return result;
311
+ });
312
+ }
313
+ /** Explicit candidates whose selection deferred the removal of their previous verdict: a recorded verdict judged them then. */
314
+ const invalidationDeferred = new WeakSet();
315
+ /**
316
+ * Name the candidate a fresh run id -- the one the verdict it routes is recorded
317
+ * under -- and remove its previous explicit verdict durably (module doc); false,
318
+ * logged, when the removal did not land.
319
+ */
320
+ async function invalidateOrRefuse(v, deps) {
321
+ const invalidate = deps.invalidateExplicitGateOutcome;
322
+ if (!invalidate)
323
+ return true;
324
+ const runId = randomUUID();
325
+ noteExplicitRunId(v, runId);
326
+ if (await invalidate(v.deliveryId, runId).catch(() => false))
327
+ return true;
328
+ log.warn(`[verification] explicit: not starting the verify for delivery "${v.deliveryName}" (${v.deliveryId}) -- the verdict `
329
+ + `its previous run recorded was not durably removed (the removal failed, or the delivery stopped cycling); the next tick asks again`);
330
+ return false;
331
+ }
332
+ /**
333
+ * Durably remove the verdict each selected EXPLICIT candidate's previous run
334
+ * recorded (module doc), for every candidate at once and before any of them waits
335
+ * on the semaphore; returns, per candidate, whether it may start this tick. A
336
+ * default-on candidate always may, and so does every candidate when the deps carry
337
+ * no remover. Each removed here is named a fresh run id first, which its verdict is
338
+ * recorded under (verify/explicit-run-ledger.ts). One a recorded verdict already
339
+ * judges is not removed here: no run replaces its verdict, and its dispatch removes
340
+ * it -- naming its run then -- only once it is about to route a verdict. One whose
341
+ * removal did not land may not start: its registration ends now, so it holds no
342
+ * routing wait, and its re-arm is dropped, so the next tick selects it again.
343
+ * Meanwhile this process reads "no verdict" for it (its registration forgot the
344
+ * older one), so routing holds until a run renders one.
345
+ */
346
+ export async function invalidateSupersededExplicitVerdicts(selected, explicitIds, registrations, deps) {
347
+ return Promise.all(selected.map(async (v, i) => {
348
+ if (!deps.invalidateExplicitGateOutcome || !explicitIds.has(v.deliveryId))
349
+ return true;
350
+ if (readReusableVerdict(v, deps)) {
351
+ invalidationDeferred.add(v);
352
+ return true;
353
+ }
354
+ if (await invalidateOrRefuse(v, deps))
355
+ return true;
356
+ registrations[i]?.end();
357
+ releaseExplicitRearm(v);
358
+ return false;
359
+ }));
360
+ }
361
+ /** The last failed commit an already-fed skip was logged for, per delivery (one line per commit, not per tick). */
362
+ const loggedFedFailure = new Map();
363
+ /**
364
+ * Why a reused verdict routes nothing new for an explicit row (module doc): it is a
365
+ * FAILED verdict for the commit its delivery's durable failedAtSha already names, so
366
+ * its failure feedback carried it; else null.
367
+ */
368
+ function fedFailureBecause(v, reused, gateState) {
369
+ const failedSha = judgedFailedSha(reused);
370
+ if (reused.outcome !== 'failed' || failedSha === null || readVerificationHistory(gateState).failedAtSha !== failedSha)
371
+ return null;
372
+ const why = `the failed verdict recorded for ${failedSha.slice(0, 8)} was already fed back to it (its failedAtSha); `
373
+ + 'a new commit on the focus branch re-arms it';
374
+ if (loggedFedFailure.get(v.deliveryId) !== failedSha) {
375
+ loggedFedFailure.set(v.deliveryId, failedSha);
376
+ logNotStarting('explicit', v, why);
377
+ }
378
+ return why;
379
+ }
380
+ /**
381
+ * Dispatch one EXPLICIT-METHOD row (module doc): it starts only when its delivery
382
+ * is still in verify, and a delivery that left verify while its run was in flight
383
+ * is routed nothing -- no outcome recorded, no re-work or shortfall feedback --
384
+ * though a per-commit verdict its run rendered is still recorded. A deterministic
385
+ * row is serialized on its focus and takes the verdict recorded for the focus HEAD
386
+ * under its own gate in place of a run; a failure already fed back at that commit
387
+ * routes nothing, and a removal deferred at selection is made before a verdict --
388
+ * that recorded one, or a run's -- is routed.
389
+ * Returns null when nothing was routed; the row is selected again on a later tick
390
+ * while it stays pending. A row the explicit re-arm scan selected keeps no durable
391
+ * pending outcome, so a dispatch that routes nothing (null, or a throw) releases
392
+ * its re-arm mark: the HEAD it was selected for is still unjudged
393
+ * (verify/explicit-rearm.ts). A reused verdict is a routed result.
394
+ */
395
+ export async function dispatchExplicitCandidate(v, deps, verify) {
396
+ const { focusId } = v;
397
+ if (!focusId)
398
+ return verify(v, deps, {});
399
+ let routed = false;
400
+ try {
401
+ const result = v.verificationMethod === 'deterministic'
402
+ ? await serializedByFocus(focusId, () => reuseOrRun(v, deps, verify, {
403
+ kind: 'explicit',
404
+ alreadyRouted: (reused, gateState) => fedFailureBecause(v, reused, gateState),
405
+ beforeRoute: () => (invalidationDeferred.delete(v) ? invalidateOrRefuse(v, deps) : null),
406
+ }))
407
+ : await reuseOrRun(v, deps, verify, { kind: 'explicit' });
408
+ routed = result !== null;
409
+ return result;
410
+ }
411
+ finally {
412
+ if (!routed)
413
+ releaseExplicitRearm(v);
414
+ }
415
+ }
416
+ //# sourceMappingURL=verification-commit-sharing.js.map