@telora/daemon 0.22.132 → 0.22.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/build-info.json +6 -3
  2. package/dist/audit/audit-hooks.d.ts +6 -2
  3. package/dist/audit/audit-hooks.d.ts.map +1 -1
  4. package/dist/audit/audit-hooks.js +12 -5
  5. package/dist/audit/audit-hooks.js.map +1 -1
  6. package/dist/audit/audit-phase.js +1 -1
  7. package/dist/audit/audit-phase.js.map +1 -1
  8. package/dist/backends/index.d.ts.map +1 -1
  9. package/dist/backends/index.js +1 -0
  10. package/dist/backends/index.js.map +1 -1
  11. package/dist/completion/completion-phase-registry.d.ts +4 -0
  12. package/dist/completion/completion-phase-registry.d.ts.map +1 -1
  13. package/dist/completion/completion-phase-registry.js +63 -18
  14. package/dist/completion/completion-phase-registry.js.map +1 -1
  15. package/dist/completion/exit-classification.d.ts.map +1 -1
  16. package/dist/completion/exit-classification.js +1 -0
  17. package/dist/completion/exit-classification.js.map +1 -1
  18. package/dist/completion/review-approved-head-gate.d.ts +53 -0
  19. package/dist/completion/review-approved-head-gate.d.ts.map +1 -0
  20. package/dist/completion/review-approved-head-gate.js +124 -0
  21. package/dist/completion/review-approved-head-gate.js.map +1 -0
  22. package/dist/completion/review-census-record.d.ts +52 -0
  23. package/dist/completion/review-census-record.d.ts.map +1 -0
  24. package/dist/completion/review-census-record.js +145 -0
  25. package/dist/completion/review-census-record.js.map +1 -0
  26. package/dist/completion/review-exit-deps.d.ts +5 -1
  27. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  28. package/dist/completion/review-exit-deps.js +7 -2
  29. package/dist/completion/review-exit-deps.js.map +1 -1
  30. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  31. package/dist/completion/review-exit-phase.js +29 -16
  32. package/dist/completion/review-exit-phase.js.map +1 -1
  33. package/dist/completion/review-exit-progress.d.ts +8 -0
  34. package/dist/completion/review-exit-progress.d.ts.map +1 -1
  35. package/dist/completion/review-exit-progress.js +14 -0
  36. package/dist/completion/review-exit-progress.js.map +1 -1
  37. package/dist/completion/review-exit-shortfall-park.d.ts +14 -0
  38. package/dist/completion/review-exit-shortfall-park.d.ts.map +1 -0
  39. package/dist/completion/review-exit-shortfall-park.js +52 -0
  40. package/dist/completion/review-exit-shortfall-park.js.map +1 -0
  41. package/dist/completion/review-exit-shortfall.js +1 -1
  42. package/dist/completion/review-exit-shortfall.js.map +1 -1
  43. package/dist/completion/review-exit-verdict-gate.d.ts +58 -0
  44. package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -1
  45. package/dist/completion/review-exit-verdict-gate.js +68 -8
  46. package/dist/completion/review-exit-verdict-gate.js.map +1 -1
  47. package/dist/completion/review-next-step.d.ts +15 -3
  48. package/dist/completion/review-next-step.d.ts.map +1 -1
  49. package/dist/completion/review-next-step.js +7 -2
  50. package/dist/completion/review-next-step.js.map +1 -1
  51. package/dist/completion/standing-approval-convergence.d.ts +68 -0
  52. package/dist/completion/standing-approval-convergence.d.ts.map +1 -0
  53. package/dist/completion/standing-approval-convergence.js +230 -0
  54. package/dist/completion/standing-approval-convergence.js.map +1 -0
  55. package/dist/completion/standing-approval-deps.d.ts +5 -0
  56. package/dist/completion/standing-approval-deps.d.ts.map +1 -0
  57. package/dist/completion/standing-approval-deps.js +37 -0
  58. package/dist/completion/standing-approval-deps.js.map +1 -0
  59. package/dist/completion/state-cascade.d.ts +11 -0
  60. package/dist/completion/state-cascade.d.ts.map +1 -1
  61. package/dist/completion/state-cascade.js +40 -1
  62. package/dist/completion/state-cascade.js.map +1 -1
  63. package/dist/completion/team-lifecycle.d.ts +14 -2
  64. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  65. package/dist/completion/team-lifecycle.js +36 -36
  66. package/dist/completion/team-lifecycle.js.map +1 -1
  67. package/dist/completion/terminated-work-reconcile.d.ts +3 -1
  68. package/dist/completion/terminated-work-reconcile.d.ts.map +1 -1
  69. package/dist/completion/terminated-work-reconcile.js +24 -11
  70. package/dist/completion/terminated-work-reconcile.js.map +1 -1
  71. package/dist/delivery/delivery-advance-block.d.ts +6 -0
  72. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  73. package/dist/delivery/delivery-advance-block.js +29 -3
  74. package/dist/delivery/delivery-advance-block.js.map +1 -1
  75. package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
  76. package/dist/delivery/delivery-reconciler.js +4 -1
  77. package/dist/delivery/delivery-reconciler.js.map +1 -1
  78. package/dist/delivery/operator-hold.d.ts.map +1 -1
  79. package/dist/delivery/operator-hold.js +3 -1
  80. package/dist/delivery/operator-hold.js.map +1 -1
  81. package/dist/directive/directive-executor.d.ts.map +1 -1
  82. package/dist/directive/directive-executor.js +6 -0
  83. package/dist/directive/directive-executor.js.map +1 -1
  84. package/dist/directive/directive-queue.d.ts +8 -0
  85. package/dist/directive/directive-queue.d.ts.map +1 -1
  86. package/dist/directive/directive-queue.js +20 -0
  87. package/dist/directive/directive-queue.js.map +1 -1
  88. package/dist/directive/phase-sync.d.ts +5 -0
  89. package/dist/directive/phase-sync.d.ts.map +1 -1
  90. package/dist/directive/phase-sync.js +11 -1
  91. package/dist/directive/phase-sync.js.map +1 -1
  92. package/dist/directive/stranded-review-reroute.d.ts +37 -0
  93. package/dist/directive/stranded-review-reroute.d.ts.map +1 -0
  94. package/dist/directive/stranded-review-reroute.js +150 -0
  95. package/dist/directive/stranded-review-reroute.js.map +1 -0
  96. package/dist/focus/focus-engine.d.ts.map +1 -1
  97. package/dist/focus/focus-engine.js +15 -3
  98. package/dist/focus/focus-engine.js.map +1 -1
  99. package/dist/focus/focus-executor.d.ts.map +1 -1
  100. package/dist/focus/focus-executor.js +9 -65
  101. package/dist/focus/focus-executor.js.map +1 -1
  102. package/dist/focus/focus-lifecycle.d.ts +12 -0
  103. package/dist/focus/focus-lifecycle.d.ts.map +1 -1
  104. package/dist/focus/focus-lifecycle.js +66 -37
  105. package/dist/focus/focus-lifecycle.js.map +1 -1
  106. package/dist/focus/focus-phase.d.ts.map +1 -1
  107. package/dist/focus/focus-phase.js +6 -0
  108. package/dist/focus/focus-phase.js.map +1 -1
  109. package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
  110. package/dist/focus/focus-spawn-decision.js +1 -0
  111. package/dist/focus/focus-spawn-decision.js.map +1 -1
  112. package/dist/focus/focus-team-state.d.ts +10 -0
  113. package/dist/focus/focus-team-state.d.ts.map +1 -1
  114. package/dist/focus/focus-team-state.js +19 -1
  115. package/dist/focus/focus-team-state.js.map +1 -1
  116. package/dist/focus/listener-auto-advance.d.ts.map +1 -1
  117. package/dist/focus/listener-auto-advance.js +1 -0
  118. package/dist/focus/listener-auto-advance.js.map +1 -1
  119. package/dist/focus/listener-spawn.d.ts +10 -0
  120. package/dist/focus/listener-spawn.d.ts.map +1 -1
  121. package/dist/focus/listener-spawn.js +46 -4
  122. package/dist/focus/listener-spawn.js.map +1 -1
  123. package/dist/focus/listener-state.d.ts.map +1 -1
  124. package/dist/focus/listener-state.js +11 -1
  125. package/dist/focus/listener-state.js.map +1 -1
  126. package/dist/focus/listener.d.ts +42 -0
  127. package/dist/focus/listener.d.ts.map +1 -1
  128. package/dist/focus/listener.js +62 -33
  129. package/dist/focus/listener.js.map +1 -1
  130. package/dist/focus/pending-review-approved-head.d.ts +41 -0
  131. package/dist/focus/pending-review-approved-head.d.ts.map +1 -0
  132. package/dist/focus/pending-review-approved-head.js +198 -0
  133. package/dist/focus/pending-review-approved-head.js.map +1 -0
  134. package/dist/focus/pending-spawn-pass-deps.d.ts +5 -0
  135. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
  136. package/dist/focus/pending-spawn-pass-deps.js +2 -1
  137. package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
  138. package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -1
  139. package/dist/focus/pending-spawn-review-next-step.js +26 -4
  140. package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
  141. package/dist/focus/review-spawn-coverage.d.ts +87 -0
  142. package/dist/focus/review-spawn-coverage.d.ts.map +1 -0
  143. package/dist/focus/review-spawn-coverage.js +104 -0
  144. package/dist/focus/review-spawn-coverage.js.map +1 -0
  145. package/dist/focus/session-health.d.ts +5 -2
  146. package/dist/focus/session-health.d.ts.map +1 -1
  147. package/dist/focus/session-health.js +2 -1
  148. package/dist/focus/session-health.js.map +1 -1
  149. package/dist/focus/session-process-reap.d.ts +50 -0
  150. package/dist/focus/session-process-reap.d.ts.map +1 -0
  151. package/dist/focus/session-process-reap.js +77 -0
  152. package/dist/focus/session-process-reap.js.map +1 -0
  153. package/dist/focus/unchanged-reviewed-head.d.ts +40 -0
  154. package/dist/focus/unchanged-reviewed-head.d.ts.map +1 -0
  155. package/dist/focus/unchanged-reviewed-head.js +84 -0
  156. package/dist/focus/unchanged-reviewed-head.js.map +1 -0
  157. package/dist/focus/verify-open-issues.d.ts +4 -19
  158. package/dist/focus/verify-open-issues.d.ts.map +1 -1
  159. package/dist/focus/verify-open-issues.js +83 -41
  160. package/dist/focus/verify-open-issues.js.map +1 -1
  161. package/dist/git/focus-integration-sync.d.ts +61 -0
  162. package/dist/git/focus-integration-sync.d.ts.map +1 -0
  163. package/dist/git/focus-integration-sync.js +73 -0
  164. package/dist/git/focus-integration-sync.js.map +1 -0
  165. package/dist/git/focus-own-delta.d.ts +38 -0
  166. package/dist/git/focus-own-delta.d.ts.map +1 -0
  167. package/dist/git/focus-own-delta.js +193 -0
  168. package/dist/git/focus-own-delta.js.map +1 -0
  169. package/dist/git/index.d.ts +2 -0
  170. package/dist/git/index.d.ts.map +1 -1
  171. package/dist/git/index.js +4 -0
  172. package/dist/git/index.js.map +1 -1
  173. package/dist/git/merge.d.ts.map +1 -1
  174. package/dist/git/merge.js +11 -1
  175. package/dist/git/merge.js.map +1 -1
  176. package/dist/git/resolution-restore.d.ts +66 -0
  177. package/dist/git/resolution-restore.d.ts.map +1 -0
  178. package/dist/git/resolution-restore.js +331 -0
  179. package/dist/git/resolution-restore.js.map +1 -0
  180. package/dist/loops/engine.d.ts.map +1 -1
  181. package/dist/loops/engine.js.map +1 -1
  182. package/dist/merge/abandoned-merge-recovery.d.ts +72 -0
  183. package/dist/merge/abandoned-merge-recovery.d.ts.map +1 -0
  184. package/dist/merge/abandoned-merge-recovery.js +117 -0
  185. package/dist/merge/abandoned-merge-recovery.js.map +1 -0
  186. package/dist/merge/focus-merge.d.ts +19 -0
  187. package/dist/merge/focus-merge.d.ts.map +1 -1
  188. package/dist/merge/focus-merge.js +136 -99
  189. package/dist/merge/focus-merge.js.map +1 -1
  190. package/dist/merge/merge-back-activity.d.ts +11 -0
  191. package/dist/merge/merge-back-activity.d.ts.map +1 -0
  192. package/dist/merge/merge-back-activity.js +57 -0
  193. package/dist/merge/merge-back-activity.js.map +1 -0
  194. package/dist/merge/merge-back-conflict.d.ts +119 -0
  195. package/dist/merge/merge-back-conflict.d.ts.map +1 -0
  196. package/dist/merge/merge-back-conflict.js +178 -0
  197. package/dist/merge/merge-back-conflict.js.map +1 -0
  198. package/dist/merge/merge-back-followup.d.ts +109 -0
  199. package/dist/merge/merge-back-followup.d.ts.map +1 -0
  200. package/dist/merge/merge-back-followup.js +316 -0
  201. package/dist/merge/merge-back-followup.js.map +1 -0
  202. package/dist/merge/merge-back-loop.d.ts +2 -0
  203. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  204. package/dist/merge/merge-back-loop.js +14 -15
  205. package/dist/merge/merge-back-loop.js.map +1 -1
  206. package/dist/merge/merge-conflict-escalation.d.ts +12 -0
  207. package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
  208. package/dist/merge/merge-conflict-escalation.js +37 -2
  209. package/dist/merge/merge-conflict-escalation.js.map +1 -1
  210. package/dist/merge/merge-gate-coverage.d.ts.map +1 -1
  211. package/dist/merge/merge-gate-coverage.js +1 -0
  212. package/dist/merge/merge-gate-coverage.js.map +1 -1
  213. package/dist/prompt/prompt-listing.d.ts +5 -0
  214. package/dist/prompt/prompt-listing.d.ts.map +1 -1
  215. package/dist/prompt/prompt-listing.js +35 -0
  216. package/dist/prompt/prompt-listing.js.map +1 -1
  217. package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -1
  218. package/dist/prompt-sections/routing-decider-sections.js +2 -0
  219. package/dist/prompt-sections/routing-decider-sections.js.map +1 -1
  220. package/dist/prompt-sections/shortfall-park-section.d.ts +43 -0
  221. package/dist/prompt-sections/shortfall-park-section.d.ts.map +1 -0
  222. package/dist/prompt-sections/shortfall-park-section.js +36 -0
  223. package/dist/prompt-sections/shortfall-park-section.js.map +1 -0
  224. package/dist/queries/agent-resolvable-promotion.d.ts +16 -2
  225. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  226. package/dist/queries/agent-resolvable-promotion.js +30 -3
  227. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  228. package/dist/queries/cause-key.d.ts +17 -22
  229. package/dist/queries/cause-key.d.ts.map +1 -1
  230. package/dist/queries/cause-key.js +50 -1
  231. package/dist/queries/cause-key.js.map +1 -1
  232. package/dist/queries/commit-attributions.d.ts +18 -0
  233. package/dist/queries/commit-attributions.d.ts.map +1 -0
  234. package/dist/queries/commit-attributions.js +39 -0
  235. package/dist/queries/commit-attributions.js.map +1 -0
  236. package/dist/queries/deliveries.d.ts.map +1 -1
  237. package/dist/queries/deliveries.js +3 -1
  238. package/dist/queries/deliveries.js.map +1 -1
  239. package/dist/queries/delivery-gate-state.d.ts +21 -5
  240. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  241. package/dist/queries/delivery-gate-state.js +35 -9
  242. package/dist/queries/delivery-gate-state.js.map +1 -1
  243. package/dist/queries/escalation-consumption.d.ts.map +1 -1
  244. package/dist/queries/escalation-consumption.js +2 -1
  245. package/dist/queries/escalation-consumption.js.map +1 -1
  246. package/dist/queries/escalation-field-bounds.d.ts +48 -0
  247. package/dist/queries/escalation-field-bounds.d.ts.map +1 -0
  248. package/dist/queries/escalation-field-bounds.js +83 -0
  249. package/dist/queries/escalation-field-bounds.js.map +1 -0
  250. package/dist/queries/escalation-refusal.d.ts +88 -0
  251. package/dist/queries/escalation-refusal.d.ts.map +1 -0
  252. package/dist/queries/escalation-refusal.js +217 -0
  253. package/dist/queries/escalation-refusal.js.map +1 -0
  254. package/dist/queries/escalation-suppression.d.ts +6 -0
  255. package/dist/queries/escalation-suppression.d.ts.map +1 -1
  256. package/dist/queries/escalation-suppression.js +4 -13
  257. package/dist/queries/escalation-suppression.js.map +1 -1
  258. package/dist/queries/escalations.d.ts +5 -13
  259. package/dist/queries/escalations.d.ts.map +1 -1
  260. package/dist/queries/escalations.js +25 -30
  261. package/dist/queries/escalations.js.map +1 -1
  262. package/dist/queries/filing-observation.d.ts.map +1 -1
  263. package/dist/queries/filing-observation.js +3 -1
  264. package/dist/queries/filing-observation.js.map +1 -1
  265. package/dist/queries/focus-review-approval.d.ts +2 -0
  266. package/dist/queries/focus-review-approval.d.ts.map +1 -1
  267. package/dist/queries/focus-review-approval.js +7 -2
  268. package/dist/queries/focus-review-approval.js.map +1 -1
  269. package/dist/queries/focuses.d.ts.map +1 -1
  270. package/dist/queries/focuses.js +2 -1
  271. package/dist/queries/focuses.js.map +1 -1
  272. package/dist/queries/incident-correlation.d.ts.map +1 -1
  273. package/dist/queries/incident-correlation.js +4 -1
  274. package/dist/queries/incident-correlation.js.map +1 -1
  275. package/dist/queries/misattributed-commits-record.d.ts +26 -0
  276. package/dist/queries/misattributed-commits-record.d.ts.map +1 -0
  277. package/dist/queries/misattributed-commits-record.js +5 -0
  278. package/dist/queries/misattributed-commits-record.js.map +1 -0
  279. package/dist/queries/reality-tree.d.ts.map +1 -1
  280. package/dist/queries/reality-tree.js +2 -1
  281. package/dist/queries/reality-tree.js.map +1 -1
  282. package/dist/queries/schemas.d.ts +3 -0
  283. package/dist/queries/schemas.d.ts.map +1 -1
  284. package/dist/queries/schemas.js +1 -0
  285. package/dist/queries/schemas.js.map +1 -1
  286. package/dist/queries/shared.js +1 -1
  287. package/dist/queries/shortfall-park-record.d.ts +48 -0
  288. package/dist/queries/shortfall-park-record.d.ts.map +1 -0
  289. package/dist/queries/shortfall-park-record.js +31 -0
  290. package/dist/queries/shortfall-park-record.js.map +1 -0
  291. package/dist/queries/shortfall-rulings.d.ts +71 -0
  292. package/dist/queries/shortfall-rulings.d.ts.map +1 -0
  293. package/dist/queries/shortfall-rulings.js +53 -0
  294. package/dist/queries/shortfall-rulings.js.map +1 -0
  295. package/dist/queries/verification.d.ts +20 -1
  296. package/dist/queries/verification.d.ts.map +1 -1
  297. package/dist/queries/verification.js +48 -8
  298. package/dist/queries/verification.js.map +1 -1
  299. package/dist/resolvers/index.d.ts +2 -2
  300. package/dist/resolvers/index.d.ts.map +1 -1
  301. package/dist/resolvers/index.js +1 -1
  302. package/dist/resolvers/index.js.map +1 -1
  303. package/dist/resolvers/shared/delivery-trailer.d.ts +99 -0
  304. package/dist/resolvers/shared/delivery-trailer.d.ts.map +1 -0
  305. package/dist/resolvers/shared/delivery-trailer.js +103 -0
  306. package/dist/resolvers/shared/delivery-trailer.js.map +1 -0
  307. package/dist/resolvers/shared/git-diff.d.ts +11 -84
  308. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  309. package/dist/resolvers/shared/git-diff.js +17 -84
  310. package/dist/resolvers/shared/git-diff.js.map +1 -1
  311. package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -1
  312. package/dist/resolvers/shared/review-window-commits.js +1 -0
  313. package/dist/resolvers/shared/review-window-commits.js.map +1 -1
  314. package/dist/session/session-lineage.d.ts.map +1 -1
  315. package/dist/session/session-lineage.js +1 -0
  316. package/dist/session/session-lineage.js.map +1 -1
  317. package/dist/shell/config.d.ts +2 -1
  318. package/dist/shell/config.d.ts.map +1 -1
  319. package/dist/shell/config.js +21 -4
  320. package/dist/shell/config.js.map +1 -1
  321. package/dist/shell/crash-recovery.d.ts +3 -7
  322. package/dist/shell/crash-recovery.d.ts.map +1 -1
  323. package/dist/shell/crash-recovery.js +28 -31
  324. package/dist/shell/crash-recovery.js.map +1 -1
  325. package/dist/shell/orphan-capture.d.ts +42 -0
  326. package/dist/shell/orphan-capture.d.ts.map +1 -0
  327. package/dist/shell/orphan-capture.js +53 -0
  328. package/dist/shell/orphan-capture.js.map +1 -0
  329. package/dist/shell/worker-pidfile.d.ts +22 -4
  330. package/dist/shell/worker-pidfile.d.ts.map +1 -1
  331. package/dist/shell/worker-pidfile.js +51 -13
  332. package/dist/shell/worker-pidfile.js.map +1 -1
  333. package/dist/spawn/helpers.d.ts +3 -0
  334. package/dist/spawn/helpers.d.ts.map +1 -1
  335. package/dist/spawn/helpers.js +28 -9
  336. package/dist/spawn/helpers.js.map +1 -1
  337. package/dist/spawn/lead-launch.d.ts +34 -0
  338. package/dist/spawn/lead-launch.d.ts.map +1 -0
  339. package/dist/spawn/lead-launch.js +34 -0
  340. package/dist/spawn/lead-launch.js.map +1 -0
  341. package/dist/spawn/lead-process-ownership.d.ts +91 -0
  342. package/dist/spawn/lead-process-ownership.d.ts.map +1 -0
  343. package/dist/spawn/lead-process-ownership.js +120 -0
  344. package/dist/spawn/lead-process-ownership.js.map +1 -0
  345. package/dist/spawn/lifecycle.d.ts +43 -3
  346. package/dist/spawn/lifecycle.d.ts.map +1 -1
  347. package/dist/spawn/lifecycle.js +75 -44
  348. package/dist/spawn/lifecycle.js.map +1 -1
  349. package/dist/spawn/liveness.d.ts.map +1 -1
  350. package/dist/spawn/liveness.js +5 -1
  351. package/dist/spawn/liveness.js.map +1 -1
  352. package/dist/spawn/one-shot-process-ownership.d.ts +48 -0
  353. package/dist/spawn/one-shot-process-ownership.d.ts.map +1 -0
  354. package/dist/spawn/one-shot-process-ownership.js +44 -0
  355. package/dist/spawn/one-shot-process-ownership.js.map +1 -0
  356. package/dist/spawn/process-group-kill.d.ts +79 -0
  357. package/dist/spawn/process-group-kill.d.ts.map +1 -0
  358. package/dist/spawn/process-group-kill.js +210 -0
  359. package/dist/spawn/process-group-kill.js.map +1 -0
  360. package/dist/spawn/process-spawn.d.ts +18 -1
  361. package/dist/spawn/process-spawn.d.ts.map +1 -1
  362. package/dist/spawn/process-spawn.js +51 -20
  363. package/dist/spawn/process-spawn.js.map +1 -1
  364. package/dist/spawn/resolution-budget.d.ts +38 -0
  365. package/dist/spawn/resolution-budget.d.ts.map +1 -0
  366. package/dist/spawn/resolution-budget.js +87 -0
  367. package/dist/spawn/resolution-budget.js.map +1 -0
  368. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  369. package/dist/spawn/review-hold-park.js +37 -5
  370. package/dist/spawn/review-hold-park.js.map +1 -1
  371. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  372. package/dist/spawn/spawn-cooldown.js +9 -0
  373. package/dist/spawn/spawn-cooldown.js.map +1 -1
  374. package/dist/spawn/untracked-lead-sweep.d.ts +29 -0
  375. package/dist/spawn/untracked-lead-sweep.d.ts.map +1 -0
  376. package/dist/spawn/untracked-lead-sweep.js +100 -0
  377. package/dist/spawn/untracked-lead-sweep.js.map +1 -0
  378. package/dist/spawn/worker-registry.d.ts.map +1 -1
  379. package/dist/spawn/worker-registry.js +4 -1
  380. package/dist/spawn/worker-registry.js.map +1 -1
  381. package/dist/spawn/worktree-session.d.ts.map +1 -1
  382. package/dist/spawn/worktree-session.js +8 -6
  383. package/dist/spawn/worktree-session.js.map +1 -1
  384. package/dist/testing/fixtures/exit-capture-verify.d.ts +41 -0
  385. package/dist/testing/fixtures/exit-capture-verify.d.ts.map +1 -0
  386. package/dist/testing/fixtures/exit-capture-verify.js +152 -0
  387. package/dist/testing/fixtures/exit-capture-verify.js.map +1 -0
  388. package/dist/testing/fixtures/index.js +1 -1
  389. package/dist/testing/fixtures/pending-spawn-world.d.ts +7 -0
  390. package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -1
  391. package/dist/testing/fixtures/pending-spawn-world.js +21 -1
  392. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
  393. package/dist/testing/fixtures/stubborn-lead-process.d.ts +22 -0
  394. package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -0
  395. package/dist/testing/fixtures/stubborn-lead-process.js +68 -0
  396. package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -0
  397. package/dist/types/config.d.ts +13 -0
  398. package/dist/types/config.d.ts.map +1 -1
  399. package/dist/types/focus.d.ts +7 -0
  400. package/dist/types/focus.d.ts.map +1 -1
  401. package/dist/types/index.js +1 -1
  402. package/dist/verify/commit-verdict-record.d.ts +13 -3
  403. package/dist/verify/commit-verdict-record.d.ts.map +1 -1
  404. package/dist/verify/commit-verdict-record.js +45 -25
  405. package/dist/verify/commit-verdict-record.js.map +1 -1
  406. package/dist/verify/credit-rearm.d.ts +18 -0
  407. package/dist/verify/credit-rearm.d.ts.map +1 -0
  408. package/dist/verify/credit-rearm.js +69 -0
  409. package/dist/verify/credit-rearm.js.map +1 -0
  410. package/dist/verify/delivery-commit-set.d.ts +10 -0
  411. package/dist/verify/delivery-commit-set.d.ts.map +1 -0
  412. package/dist/verify/delivery-commit-set.js +82 -0
  413. package/dist/verify/delivery-commit-set.js.map +1 -0
  414. package/dist/verify/explicit-rearm.d.ts.map +1 -1
  415. package/dist/verify/explicit-rearm.js +2 -0
  416. package/dist/verify/explicit-rearm.js.map +1 -1
  417. package/dist/verify/failure-signature.d.ts.map +1 -1
  418. package/dist/verify/failure-signature.js +1 -0
  419. package/dist/verify/failure-signature.js.map +1 -1
  420. package/dist/verify/gate-run-registry.d.ts.map +1 -1
  421. package/dist/verify/gate-run-registry.js +3 -0
  422. package/dist/verify/gate-run-registry.js.map +1 -1
  423. package/dist/verify/injection-stamp.d.ts +29 -0
  424. package/dist/verify/injection-stamp.d.ts.map +1 -0
  425. package/dist/verify/injection-stamp.js +139 -0
  426. package/dist/verify/injection-stamp.js.map +1 -0
  427. package/dist/verify/misattributed-commits-read.d.ts +31 -0
  428. package/dist/verify/misattributed-commits-read.d.ts.map +1 -0
  429. package/dist/verify/misattributed-commits-read.js +47 -0
  430. package/dist/verify/misattributed-commits-read.js.map +1 -0
  431. package/dist/verify/misattributed-commits.d.ts +52 -0
  432. package/dist/verify/misattributed-commits.d.ts.map +1 -0
  433. package/dist/verify/misattributed-commits.js +148 -0
  434. package/dist/verify/misattributed-commits.js.map +1 -0
  435. package/dist/verify/no-own-delta-verdict.d.ts +47 -0
  436. package/dist/verify/no-own-delta-verdict.d.ts.map +1 -0
  437. package/dist/verify/no-own-delta-verdict.js +74 -0
  438. package/dist/verify/no-own-delta-verdict.js.map +1 -0
  439. package/dist/verify/shortfall-park-escalation.d.ts +41 -0
  440. package/dist/verify/shortfall-park-escalation.d.ts.map +1 -0
  441. package/dist/verify/shortfall-park-escalation.js +177 -0
  442. package/dist/verify/shortfall-park-escalation.js.map +1 -0
  443. package/dist/verify/shortfall-park.d.ts +109 -0
  444. package/dist/verify/shortfall-park.d.ts.map +1 -0
  445. package/dist/verify/shortfall-park.js +208 -0
  446. package/dist/verify/shortfall-park.js.map +1 -0
  447. package/dist/verify/shortfall-repeat.d.ts +47 -16
  448. package/dist/verify/shortfall-repeat.d.ts.map +1 -1
  449. package/dist/verify/shortfall-repeat.js +77 -23
  450. package/dist/verify/shortfall-repeat.js.map +1 -1
  451. package/dist/verify/shortfall-rulings.d.ts +106 -0
  452. package/dist/verify/shortfall-rulings.d.ts.map +1 -0
  453. package/dist/verify/shortfall-rulings.js +118 -0
  454. package/dist/verify/shortfall-rulings.js.map +1 -0
  455. package/dist/verify/stall-detectors.d.ts.map +1 -1
  456. package/dist/verify/stall-detectors.js +10 -4
  457. package/dist/verify/stall-detectors.js.map +1 -1
  458. package/dist/verify/verification-attribution-base.d.ts +26 -0
  459. package/dist/verify/verification-attribution-base.d.ts.map +1 -0
  460. package/dist/verify/verification-attribution-base.js +127 -0
  461. package/dist/verify/verification-attribution-base.js.map +1 -0
  462. package/dist/verify/verification-attribution-deps.d.ts +32 -0
  463. package/dist/verify/verification-attribution-deps.d.ts.map +1 -0
  464. package/dist/verify/verification-attribution-deps.js +209 -0
  465. package/dist/verify/verification-attribution-deps.js.map +1 -0
  466. package/dist/verify/verification-baseline.d.ts +6 -0
  467. package/dist/verify/verification-baseline.d.ts.map +1 -1
  468. package/dist/verify/verification-baseline.js +27 -11
  469. package/dist/verify/verification-baseline.js.map +1 -1
  470. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  471. package/dist/verify/verification-commit-sharing.js +30 -8
  472. package/dist/verify/verification-commit-sharing.js.map +1 -1
  473. package/dist/verify/verification-config.d.ts.map +1 -1
  474. package/dist/verify/verification-config.js +2 -0
  475. package/dist/verify/verification-config.js.map +1 -1
  476. package/dist/verify/verification-default-on.d.ts +3 -0
  477. package/dist/verify/verification-default-on.d.ts.map +1 -1
  478. package/dist/verify/verification-default-on.js +5 -1
  479. package/dist/verify/verification-default-on.js.map +1 -1
  480. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  481. package/dist/verify/verification-deps-default.js +61 -120
  482. package/dist/verify/verification-deps-default.js.map +1 -1
  483. package/dist/verify/verification-deps.d.ts +26 -4
  484. package/dist/verify/verification-deps.d.ts.map +1 -1
  485. package/dist/verify/verification-deterministic.d.ts +15 -0
  486. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  487. package/dist/verify/verification-deterministic.js +1 -12
  488. package/dist/verify/verification-deterministic.js.map +1 -1
  489. package/dist/verify/verification-engine.d.ts +9 -6
  490. package/dist/verify/verification-engine.d.ts.map +1 -1
  491. package/dist/verify/verification-engine.js +43 -62
  492. package/dist/verify/verification-engine.js.map +1 -1
  493. package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
  494. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  495. package/dist/verify/verification-evidence-unavailable-feedback.js +19 -1
  496. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  497. package/dist/verify/verification-failure-parser.d.ts +57 -1
  498. package/dist/verify/verification-failure-parser.d.ts.map +1 -1
  499. package/dist/verify/verification-failure-parser.js +116 -10
  500. package/dist/verify/verification-failure-parser.js.map +1 -1
  501. package/dist/verify/verification-feedback.d.ts +60 -43
  502. package/dist/verify/verification-feedback.d.ts.map +1 -1
  503. package/dist/verify/verification-feedback.js +115 -120
  504. package/dist/verify/verification-feedback.js.map +1 -1
  505. package/dist/verify/verification-history-reset.d.ts +2 -1
  506. package/dist/verify/verification-history-reset.d.ts.map +1 -1
  507. package/dist/verify/verification-history-reset.js +4 -2
  508. package/dist/verify/verification-history-reset.js.map +1 -1
  509. package/dist/verify/verification-rework-issue.d.ts +87 -0
  510. package/dist/verify/verification-rework-issue.d.ts.map +1 -0
  511. package/dist/verify/verification-rework-issue.js +212 -0
  512. package/dist/verify/verification-rework-issue.js.map +1 -0
  513. package/dist/verify/verification-rework-messages.d.ts.map +1 -1
  514. package/dist/verify/verification-rework-messages.js +10 -0
  515. package/dist/verify/verification-rework-messages.js.map +1 -1
  516. package/dist/verify/verify-gate-stall.d.ts +2 -0
  517. package/dist/verify/verify-gate-stall.d.ts.map +1 -1
  518. package/dist/verify/verify-gate-stall.js +35 -9
  519. package/dist/verify/verify-gate-stall.js.map +1 -1
  520. package/dist/verify/verify-restatement.d.ts.map +1 -1
  521. package/dist/verify/verify-restatement.js +9 -2
  522. package/dist/verify/verify-restatement.js.map +1 -1
  523. package/dist/worktree/capture-attribution-read.d.ts +47 -0
  524. package/dist/worktree/capture-attribution-read.d.ts.map +1 -0
  525. package/dist/worktree/capture-attribution-read.js +98 -0
  526. package/dist/worktree/capture-attribution-read.js.map +1 -0
  527. package/dist/worktree/capture-attribution.d.ts +26 -0
  528. package/dist/worktree/capture-attribution.d.ts.map +1 -0
  529. package/dist/worktree/capture-attribution.js +111 -0
  530. package/dist/worktree/capture-attribution.js.map +1 -0
  531. package/dist/worktree/index.d.ts.map +1 -1
  532. package/dist/worktree/index.js +2 -1
  533. package/dist/worktree/index.js.map +1 -1
  534. package/dist/worktree/provision.d.ts.map +1 -1
  535. package/dist/worktree/provision.js +23 -6
  536. package/dist/worktree/provision.js.map +1 -1
  537. package/dist/worktree/safety.d.ts +14 -4
  538. package/dist/worktree/safety.d.ts.map +1 -1
  539. package/dist/worktree/safety.js +37 -7
  540. package/dist/worktree/safety.js.map +1 -1
  541. package/dist/worktree/scratch-guard.d.ts +53 -2
  542. package/dist/worktree/scratch-guard.d.ts.map +1 -1
  543. package/dist/worktree/scratch-guard.js +115 -30
  544. package/dist/worktree/scratch-guard.js.map +1 -1
  545. package/dist/worktree/unmerged-capture-escalation.d.ts +52 -0
  546. package/dist/worktree/unmerged-capture-escalation.d.ts.map +1 -0
  547. package/dist/worktree/unmerged-capture-escalation.js +64 -0
  548. package/dist/worktree/unmerged-capture-escalation.js.map +1 -0
  549. package/package.json +2 -2
@@ -0,0 +1,84 @@
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/unchanged-reviewed-head.test.ts,
3
+ // packages/daemon/src/integration/failed-verdict-review-exit-respawn-regression.test.ts,
4
+ // packages/daemon/src/integration/failed-verdict-review-loop-regression.test.ts
5
+ // PINNED-BY-END
6
+ /**
7
+ * A review of an unchanged range is a billed no-op: no review spawns while the
8
+ * focus head, the verify deliveries a review would judge, and the gate verdict for
9
+ * that head are all what the last completed review already saw.
10
+ *
11
+ * focus/pending-review-approved-head.ts declines a review at an APPROVED head. But
12
+ * a review whose exit routed nothing leaves no approval: an exit held on a FAILED
13
+ * gate verdict (completion/review-exit-verdict-gate.ts writes no hold and moves
14
+ * nothing), or a review that filed nothing and approved nothing. Its review window
15
+ * stays set, the stranded-review re-fire re-queues the directive, and a new team
16
+ * reviews the same empty range, stamps the same result and exits held again
17
+ * (Tinker Tailor, 2026-09-17: ten passes 09:06-12:14, input tokens 16.8M -> 18.5M,
18
+ * each "an empty range, no shortfalls").
19
+ *
20
+ * "The last completed review" is the review census (completion/review-census-record.ts):
21
+ * every review exit with an open window records the commit it covered and the
22
+ * verify deliveries it saw, each at its re-code iteration. The range is UNCHANGED
23
+ * when, all known:
24
+ * - the focus head is the newest census's commit;
25
+ * - every delivery now in verify was in that census at the same iteration (a
26
+ * delivery that reached verify since -- or came back from re-work -- is new
27
+ * work to judge);
28
+ * - a gate verdict for the head is recorded (verify/commit-verdict-record.ts)
29
+ * and was recorded no later than the census: the review already ran against
30
+ * it. A verdict that landed after the review is new evidence (its held exit is
31
+ * replayed by completion/commit-verdict-release.ts, and a fresh review may be
32
+ * owed); no verdict at all is not a reason to decline.
33
+ *
34
+ * FAILS OPEN: any unreadable input, or a missing census / verdict, reads as
35
+ * changed. A missed decline costs one review pass; a false decline would strand a
36
+ * delivery that needs its verdict.
37
+ *
38
+ * @module focus/unchanged-reviewed-head
39
+ */
40
+ import { resolveRef as defaultResolveRef } from '../git/index.js';
41
+ import { sameCommit } from '../queries/focus-review-approval.js';
42
+ import { getFocusDeliveries } from '../queries/focuses.js';
43
+ import { listReviewCensuses } from '../completion/review-census-record.js';
44
+ import { readCommitVerdict } from '../verify/commit-verdict-record.js';
45
+ // Daemon-local literal (see spawn/review-hold-park.ts: listener tests use the module-mock loader).
46
+ const VERIFY_STATUS = 'verify';
47
+ export const defaultUnchangedReviewedHeadDeps = () => ({
48
+ resolveRef: defaultResolveRef,
49
+ listReviewCensuses: (productId, focusId) => listReviewCensuses(productId, focusId),
50
+ getFocusDeliveries,
51
+ readCommitVerdict: (productId, focusId, sha) => readCommitVerdict(productId, focusId, sha),
52
+ });
53
+ /** Whether the review range is unchanged since `census` (see the module header). Pure. */
54
+ export function isReviewedRangeUnchanged(input) {
55
+ const { headSha, census, verdict } = input;
56
+ if (!headSha || !census || !verdict || !sameCommit(headSha, census.sha))
57
+ return false;
58
+ const verdictAt = Date.parse(verdict.recordedAt);
59
+ const reviewedAt = Date.parse(census.recordedAt);
60
+ if (!(verdictAt <= reviewedAt))
61
+ return false; // NaN reads as changed
62
+ const seen = new Map(census.verifyDeliveries.map((d) => [d.id, d.iterationCount]));
63
+ return input.deliveries
64
+ .filter((d) => d.executionStatus === VERIFY_STATUS)
65
+ .every((d) => seen.get(d.id) === (d.iterationCount ?? 0));
66
+ }
67
+ /**
68
+ * The unchanged reviewed head, or null when the range changed or cannot be read.
69
+ * Throws only when the deliveries read throws (the caller fails open).
70
+ */
71
+ export async function readUnchangedReviewedHead(target, deps = defaultUnchangedReviewedHeadDeps()) {
72
+ const headSha = target.branchName ? deps.resolveRef(target.repoPath, target.branchName) : null;
73
+ if (!headSha)
74
+ return null;
75
+ const census = deps.listReviewCensuses(target.productId, target.focusId)[0] ?? null;
76
+ if (!census || !sameCommit(headSha, census.sha))
77
+ return null;
78
+ const verdict = deps.readCommitVerdict(target.productId, target.focusId, headSha);
79
+ const deliveries = await deps.getFocusDeliveries(target.focusId);
80
+ if (!verdict || !isReviewedRangeUnchanged({ headSha, census, deliveries, verdict }))
81
+ return null;
82
+ return { sha: headSha, verdict: verdict.outcome, reviewedAt: census.recordedAt };
83
+ }
84
+ //# sourceMappingURL=unchanged-reviewed-head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unchanged-reviewed-head.js","sourceRoot":"","sources":["../../src/focus/unchanged-reviewed-head.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,10 @@
26
26
  * hold, and still clears none) and carries the verification history forward. A
27
27
  * schema-drift rejection writes nothing of its own: the next poll recomputes the
28
28
  * stamp with the route.
29
+ *
30
+ * A delivery PARKED on a repeating verify shortfall (verify/shortfall-park.ts) is
31
+ * never routed: its open work stays on it, in verify, until verify re-judges a
32
+ * changed delivery commit set (or a ruling) and releases the park.
29
33
  */
30
34
  import type { DaemonConfig } from '../types/index.js';
31
35
  import { updateDeliveryStatus } from '../queries/deliveries.js';
@@ -49,25 +53,6 @@ export declare function __resetSchemaViolationStateForTests(): void;
49
53
  * Snapshot of the violation counter. Test-only.
50
54
  */
51
55
  export declare function __getSchemaViolationAttemptsForTests(): ReadonlyMap<string, number>;
52
- /**
53
- * Check verify deliveries for open issues and transition them back to verify_failed.
54
- *
55
- * When the review agent creates new issues on a verify delivery, this poll
56
- * step detects the open issues and moves the delivery back to verify_failed
57
- * so the normal wake/work flow picks it up.
58
- *
59
- * IMPORTANT: Must be called with a product-scoped config so that only teams
60
- * belonging to the current product are checked. Without product scoping,
61
- * Product A's poll cycle would operate on Product B's deliveries/issues.
62
- */
63
- /**
64
- * Dependency seam for tests. The real implementation imports these functions
65
- * eagerly; tests inject stubs via the optional deps parameter so the whole
66
- * check can run with NO `mock.module` registered -- which is what keeps the
67
- * daemon-core mock-loader quirk (a registered mock poisons bare @telora/* value
68
- * imports from unmocked modules) from ever biting this test. Each field
69
- * defaults to the real import, so production callers pass nothing.
70
- */
71
56
  export interface CheckVerifyDeliveriesDeps {
72
57
  createEscalation?: typeof defaultCreateEscalation;
73
58
  getActiveTeams?: typeof getActiveTeams;
@@ -1 +1 @@
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
+ {"version":3,"file":"verify-open-issues.d.ts","sourceRoot":"","sources":["../../src/focus/verify-open-issues.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;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;AAyE5F;;;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;AAkPD,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,CAwIf"}
@@ -4,8 +4,11 @@
4
4
  // packages/daemon/src/focus/listener-product-poll.test.ts,
5
5
  // packages/daemon/src/focus/listener-review-window-suppression.test.ts,
6
6
  // packages/daemon/src/focus/verify-routing-passes.test.ts,
7
+ // packages/daemon/src/integration/failed-verdict-review-exit-respawn-regression.test.ts,
8
+ // packages/daemon/src/integration/failed-verdict-review-loop-regression.test.ts,
7
9
  // packages/daemon/src/integration/focus-commit-verdict-scenario.test.ts,
8
- // packages/daemon/src/integration/review-rework-resume-verdict.test.ts
10
+ // packages/daemon/src/integration/review-rework-resume-verdict.test.ts,
11
+ // packages/daemon/src/integration/shortfall-park-incident-regression.test.ts
9
12
  // PINNED-BY-END
10
13
  import { updateDeliveryStatus } from '../queries/deliveries.js';
11
14
  import { getActiveFocuses } from '../queries/focus-discovery.js';
@@ -19,6 +22,7 @@ import { getDeliveryIssues, updateIssueStatus } from '../queries/issues.js';
19
22
  import { createEscalation as defaultCreateEscalation } from '../queries/escalations.js';
20
23
  import { commitGateSeams } from '../verify/commit-gate-configured.js';
21
24
  import { awaitsInFlightGateRun, openWorkReworkGateState, readJudgedCommit } from '../completion/review-exit-verdict-gate.js';
25
+ import { shortfallParkRefusingRework } from '../verify/shortfall-park.js';
22
26
  import { createLogger } from '../shell/log.js';
23
27
  const log = createLogger({ module: 'listener' });
24
28
  /**
@@ -151,6 +155,33 @@ async function fileSchemaDriftBlocked(createEscalation, config, focus, delivery,
151
155
  log.warn(`[listener] Failed to file schema_drift_blocked escalation for "${delivery.name}":`, escErr.message);
152
156
  }
153
157
  }
158
+ /** `${deliveryId}@${parkedAt}` shortfall parks already logged (one line per park, not one per poll). */
159
+ const loggedParks = new Set();
160
+ /**
161
+ * Whether a verify delivery carrying open work is PARKED on a repeating verify
162
+ * shortfall (verify/shortfall-park.ts shortfallParkRefusingRework) and so must
163
+ * not be routed to verify_failed: re-work on an unchanged commit set cannot
164
+ * change the verdict, and routing it back is exactly the loop the park ends.
165
+ * Left in verify, nothing written; verify re-judgement is the single releaser.
166
+ * Logs once per park.
167
+ */
168
+ function refusesOpenWorkRouteOnPark(delivery) {
169
+ const park = shortfallParkRefusingRework(delivery);
170
+ if (!park) {
171
+ for (const key of loggedParks)
172
+ if (key.startsWith(`${delivery.id}@`))
173
+ loggedParks.delete(key);
174
+ return false;
175
+ }
176
+ const key = `${delivery.id}@${park.parkedAt}`;
177
+ if (!loggedParks.has(key)) {
178
+ loggedParks.add(key);
179
+ log.info(`[listener] Delivery "${delivery.name}" left in verify despite open work: parked on a repeating verify shortfall ` +
180
+ `(nodes ${park.nodeIds.join(', ')}, parked ${park.parkedAt}) -- not routed to verify_failed until verify re-judges ` +
181
+ `a changed delivery commit set or a ruling`);
182
+ }
183
+ return true;
184
+ }
154
185
  /** `${deliveryId}@${sha}` gate waits already logged (one line per wait, not one per poll). */
155
186
  const loggedGateWaits = new Set();
156
187
  /**
@@ -191,6 +222,49 @@ async function writeVerifyFailedRoute(write, gate, config, focus, delivery, rout
191
222
  const gateState = await openWorkReworkGateState(gate, { productId: config.productId, focusId: focus.focusId }, { read_only: focus.readOnly }, delivery, judgedSha);
192
223
  await write(delivery.id, route.target, route.stageId, gateState, undefined, { organizationId: config.organizationId, fromStatus: 'verify' });
193
224
  }
225
+ /**
226
+ * Review-window single-writer discipline: while a focus has an open review
227
+ * window (review_requested_at set), the live reconciler must NOT apply
228
+ * verify -> verify_failed to that focus's deliveries. A review agent's own
229
+ * first defect filing would otherwise regress the delivery mid-pass, cascade
230
+ * the phase to coding, and cancel the review -- so only find-nothing reviews
231
+ * ever complete. Defects filed during the pass accumulate and route once, at
232
+ * review exit, via the deterministic review-exit router
233
+ * (completion/review-exit-phase.ts runReviewExitHandler). The suppression is
234
+ * per-focus (keyed on that focus's review_requested_at), NOT global: deliveries
235
+ * of OTHER focuses with no open window still route promptly in this same tick.
236
+ * Read-only focuses run no gate, so the in-flight wait never applies to them.
237
+ *
238
+ * Routed: each focus with an executing team of this product, AND each active
239
+ * focus with NO team. A teamless verify delivery holding open work -- the rework
240
+ * Bug a failed gate verdict files (verify/verification-rework-issue.ts) -- is
241
+ * otherwise never routed: no coding team spawns while it sits in verify
242
+ * (getReadyFocuses reads queued/coding), so the failure would wait for an operator.
243
+ */
244
+ async function resolveOpenWorkTargets(config, activeTeams, readFocuses) {
245
+ const out = { targets: [], reviewWindowFocusIds: new Set(), readOnlyFocusIds: new Set() };
246
+ for (const [focusId, team] of activeTeams) {
247
+ // Only this product's executing teams -- one product's poll must not modify another's deliveries.
248
+ if (team.phase === 'executing' && team.productId === config.productId)
249
+ out.targets.push({ focusId, focusName: team.focusName, teamless: false });
250
+ }
251
+ try {
252
+ for (const f of await readFocuses(config.organizationId, config.productId)) {
253
+ if (!activeTeams.has(f.focus_id))
254
+ out.targets.push({ focusId: f.focus_id, focusName: f.focus_name, teamless: true });
255
+ if (f.review_requested_at)
256
+ out.reviewWindowFocusIds.add(f.focus_id);
257
+ if (f.read_only === true)
258
+ out.readOnlyFocusIds.add(f.focus_id);
259
+ }
260
+ }
261
+ catch (err) {
262
+ // On a read failure, fall through with empty sets (pre-existing behavior:
263
+ // every team focus routes; no teamless one does). The review-exit router remains the backstop writer.
264
+ log.warn(`[listener] Failed to resolve review-window focuses for verify open-issue check: ${err.message}`);
265
+ }
266
+ return out;
267
+ }
194
268
  export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
195
269
  const createEscalation = deps.createEscalation ?? defaultCreateEscalation;
196
270
  const _getActiveFocuses = deps.getActiveFocuses ?? getActiveFocuses;
@@ -201,48 +275,16 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
201
275
  const _updateIssueStatus = deps.updateIssueStatus ?? updateIssueStatus;
202
276
  const gate = deps.gate ?? commitGateSeams;
203
277
  const activeTeams = (deps.getActiveTeams ?? getActiveTeams)();
204
- if (activeTeams.size === 0)
205
- return;
206
- // Review-window single-writer discipline: while a focus has an open review
207
- // window (review_requested_at set), the live reconciler must NOT apply
208
- // verify -> verify_failed to that focus's deliveries. A review agent's own
209
- // first defect filing would otherwise regress the delivery mid-pass, cascade
210
- // the phase to coding, and cancel the review -- so only find-nothing reviews
211
- // ever complete. Defects filed during the pass accumulate and route once, at
212
- // review exit, via the deterministic review-exit router
213
- // (completion/review-exit-phase.ts runReviewExitHandler). The suppression is
214
- // per-focus (keyed on that focus's review_requested_at), NOT global: deliveries
215
- // of OTHER focuses with no open window still route promptly in this same tick.
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();
219
- try {
220
- const focuses = await _getActiveFocuses(config.organizationId, config.productId);
221
- for (const f of focuses) {
222
- if (f.review_requested_at)
223
- reviewWindowFocusIds.add(f.focus_id);
224
- if (f.read_only === true)
225
- readOnlyFocusIds.add(f.focus_id);
226
- }
227
- }
228
- catch (err) {
229
- // On a read failure, fall through with an empty set (pre-existing behavior:
230
- // every focus routes). The review-exit router remains the backstop writer.
231
- log.warn(`[listener] Failed to resolve review-window focuses for verify open-issue check: ${err.message}`);
232
- }
233
- for (const [focusId, team] of activeTeams) {
234
- if (team.phase !== 'executing')
235
- continue;
236
- // Only operate on teams belonging to this product — without this guard,
237
- // one product's poll cycle would modify another product's issues/deliveries.
238
- if (team.productId !== config.productId)
239
- continue;
278
+ const { targets, reviewWindowFocusIds, readOnlyFocusIds } = await resolveOpenWorkTargets(config, activeTeams, _getActiveFocuses);
279
+ for (const team of targets) {
280
+ const { focusId } = team;
240
281
  // Suppress the live verify -> verify_failed write for a focus whose review
241
282
  // window is open; the review-exit router owns the transition during the
242
283
  // window (batching all filed defects at exit). Per-focus, never global.
243
284
  if (reviewWindowFocusIds.has(focusId)) {
244
- log.info(`[listener] Skipping verify open-issue routing for focus ${focusId} ` +
245
- `("${team.focusName}"): review window open -- defects route at review exit.`);
285
+ if (!team.teamless)
286
+ log.info(`[listener] Skipping verify open-issue routing for focus ${focusId} ` +
287
+ `("${team.focusName}"): review window open -- defects route at review exit.`);
246
288
  continue;
247
289
  }
248
290
  try {
@@ -263,9 +305,9 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
263
305
  await autoCloseContextGroups(contextGroups, _updateIssueStatus, log);
264
306
  continue;
265
307
  }
266
- // A gate run for the focus commit still pending with no verdict: its verdict is read first (module header).
308
+ // Never routed while parked; a gate run for the focus commit pending with no verdict is read first (module header).
267
309
  const judgedSha = readJudgedCommit(gate, focusId);
268
- if (await waitsOnInFlightGateRun(gate, config, { focusId, readOnly: readOnlyFocusIds.has(focusId) }, delivery, judgedSha))
310
+ if (refusesOpenWorkRouteOnPark(delivery) || await waitsOnInFlightGateRun(gate, config, { focusId, readOnly: readOnlyFocusIds.has(focusId) }, delivery, judgedSha))
269
311
  continue;
270
312
  // Route verify -> verify_failed through the single-writer reconciler.
271
313
  // Open work on a verify delivery is the trigger; the reconciler agrees
@@ -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":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The ONE rule for bringing a focus branch current with integration. Every daemon
3
+ * step that moves a focus branch onto integration asks it first:
4
+ *
5
+ * - 'merge-out' git/merge.ts mergeBackFromIntegration (the "merge
6
+ * origin/integration" before a focus merges out: merge-back
7
+ * loop, team-exit merge, resolved-conflict retry);
8
+ * - 'adopt' focus/focus-lifecycle.ts, adopting an existing worktree;
9
+ * - 'provision' worktree/provision.ts, a worktree added on an existing branch;
10
+ * - 'coding-spawn' spawn/worktree-session.ts, a coding team starting on a reused worktree.
11
+ *
12
+ * A focus that carries commits of its own is moved as before: its own delta is
13
+ * what verify attributes and review judges, whatever integration base it sits on.
14
+ *
15
+ * A focus with NO own delta (every commit already on integration) is NOT moved by
16
+ * merge-out, adopt or provision. Moving it only fast-forwards it to the
17
+ * integration tip -- a copy of integration, which verify and review would then
18
+ * judge in the focus's place (2026-09-17, Tinker Tailor: an 11:47 merge-out
19
+ * fast-forward onto a sibling's commit and a 12:25 adopt rebase onto the tip;
20
+ * the sibling's failures were charged to the focus and its reviews covered
21
+ * foreign-only ranges). Merge-out has nothing to merge; adopt and provision start
22
+ * no work.
23
+ *
24
+ * A coding spawn IS moved: a team starting new work needs the current base, or
25
+ * its commits land on a stale one and conflict at merge-out. What the focus
26
+ * already had judged stays judged on its own commits -- a verify at the moved
27
+ * head carries the verdict its own commits earned (verify/no-own-delta-verdict.ts)
28
+ * and a review over only foreign commits is declined
29
+ * (completion/review-approved-head-gate.ts, focus/review-spawn-coverage.ts) --
30
+ * and the commits it moves onto are integration's, each already through its own
31
+ * focus's merge gate.
32
+ *
33
+ * An unreadable delta moves the branch as before (the pre-rule behaviour).
34
+ *
35
+ * @module git/focus-integration-sync
36
+ */
37
+ import { type FocusOwnDelta } from './focus-own-delta.js';
38
+ /** Which step is asking to bring the focus branch current. */
39
+ export type FocusSyncPurpose = 'merge-out' | 'adopt' | 'provision' | 'coding-spawn';
40
+ /** Whether to move the focus branch onto integration, and why. */
41
+ export interface FocusSyncDecision {
42
+ move: boolean;
43
+ reason: string;
44
+ }
45
+ /** Decide whether `purpose` may move the focus branch in `worktreePath` onto integration (module doc). */
46
+ export declare function decideFocusIntegrationSync(worktreePath: string, integrationBranch: string, purpose: FocusSyncPurpose, readDelta?: (worktreePath: string, integrationBranch: string) => FocusOwnDelta): FocusSyncDecision;
47
+ /** What bringFocusCurrent did: held the branch, rebased it, or aborted a failed rebase. */
48
+ export interface FocusSyncOutcome {
49
+ decision: FocusSyncDecision;
50
+ result: 'held' | 'rebased' | 'rebase-aborted';
51
+ }
52
+ /**
53
+ * The rebase-shaped sync step (adopt, provision, coding spawn): ask the rule, then
54
+ * `git rebase <integrationBranch>` only when it allows, aborting a failed rebase so
55
+ * the branch keeps its state. Merge-out merges instead, so it reads the decision
56
+ * directly (git/merge.ts).
57
+ */
58
+ export declare function bringFocusCurrent(worktreePath: string, integrationBranch: string, purpose: Exclude<FocusSyncPurpose, 'merge-out'>, run?: (args: string[], cwd: string) => {
59
+ success: boolean;
60
+ }, readDelta?: (worktreePath: string, integrationBranch: string) => FocusOwnDelta): FocusSyncOutcome;
61
+ //# sourceMappingURL=focus-integration-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-integration-sync.d.ts","sourceRoot":"","sources":["../../src/git/focus-integration-sync.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG7E,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC;AAEpF,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0GAA0G;AAC1G,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,gBAAgB,EACzB,SAAS,GAAE,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,aAAiC,GAChG,iBAAiB,CAYnB;AAED,2FAA2F;AAC3F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAAC;CAC/C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAC/C,GAAG,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK;IAAE,OAAO,EAAE,OAAO,CAAA;CAAe,EACvE,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,aAAa,GAC7E,gBAAgB,CAMlB"}
@@ -0,0 +1,73 @@
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/focus-integration-sync.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * The ONE rule for bringing a focus branch current with integration. Every daemon
6
+ * step that moves a focus branch onto integration asks it first:
7
+ *
8
+ * - 'merge-out' git/merge.ts mergeBackFromIntegration (the "merge
9
+ * origin/integration" before a focus merges out: merge-back
10
+ * loop, team-exit merge, resolved-conflict retry);
11
+ * - 'adopt' focus/focus-lifecycle.ts, adopting an existing worktree;
12
+ * - 'provision' worktree/provision.ts, a worktree added on an existing branch;
13
+ * - 'coding-spawn' spawn/worktree-session.ts, a coding team starting on a reused worktree.
14
+ *
15
+ * A focus that carries commits of its own is moved as before: its own delta is
16
+ * what verify attributes and review judges, whatever integration base it sits on.
17
+ *
18
+ * A focus with NO own delta (every commit already on integration) is NOT moved by
19
+ * merge-out, adopt or provision. Moving it only fast-forwards it to the
20
+ * integration tip -- a copy of integration, which verify and review would then
21
+ * judge in the focus's place (2026-09-17, Tinker Tailor: an 11:47 merge-out
22
+ * fast-forward onto a sibling's commit and a 12:25 adopt rebase onto the tip;
23
+ * the sibling's failures were charged to the focus and its reviews covered
24
+ * foreign-only ranges). Merge-out has nothing to merge; adopt and provision start
25
+ * no work.
26
+ *
27
+ * A coding spawn IS moved: a team starting new work needs the current base, or
28
+ * its commits land on a stale one and conflict at merge-out. What the focus
29
+ * already had judged stays judged on its own commits -- a verify at the moved
30
+ * head carries the verdict its own commits earned (verify/no-own-delta-verdict.ts)
31
+ * and a review over only foreign commits is declined
32
+ * (completion/review-approved-head-gate.ts, focus/review-spawn-coverage.ts) --
33
+ * and the commits it moves onto are integration's, each already through its own
34
+ * focus's merge gate.
35
+ *
36
+ * An unreadable delta moves the branch as before (the pre-rule behaviour).
37
+ *
38
+ * @module git/focus-integration-sync
39
+ */
40
+ import { readFocusOwnDelta } from './focus-own-delta.js';
41
+ import { runGitSync } from './types.js';
42
+ /** Decide whether `purpose` may move the focus branch in `worktreePath` onto integration (module doc). */
43
+ export function decideFocusIntegrationSync(worktreePath, integrationBranch, purpose, readDelta = readFocusOwnDelta) {
44
+ const delta = readDelta(worktreePath, integrationBranch);
45
+ if (delta.kind === 'ahead')
46
+ return { move: true, reason: `the focus carries ${delta.commits} commit(s) of its own` };
47
+ if (delta.kind === 'unknown')
48
+ return { move: true, reason: `its own delta is unreadable (${delta.reason}); moving as before` };
49
+ if (purpose === 'coding-spawn') {
50
+ return { move: true, reason: 'no commits of its own; a coding team starts new work on the current integration base' };
51
+ }
52
+ return {
53
+ move: false,
54
+ reason: `every commit of the focus is already on ${integrationBranch}: moving it would only make it a copy of `
55
+ + `the integration tip, judged in the focus's place`,
56
+ };
57
+ }
58
+ /**
59
+ * The rebase-shaped sync step (adopt, provision, coding spawn): ask the rule, then
60
+ * `git rebase <integrationBranch>` only when it allows, aborting a failed rebase so
61
+ * the branch keeps its state. Merge-out merges instead, so it reads the decision
62
+ * directly (git/merge.ts).
63
+ */
64
+ export function bringFocusCurrent(worktreePath, integrationBranch, purpose, run = runGitSync, readDelta) {
65
+ const decision = decideFocusIntegrationSync(worktreePath, integrationBranch, purpose, readDelta);
66
+ if (!decision.move)
67
+ return { decision, result: 'held' };
68
+ if (run(['rebase', integrationBranch], worktreePath).success)
69
+ return { decision, result: 'rebased' };
70
+ run(['rebase', '--abort'], worktreePath);
71
+ return { decision, result: 'rebase-aborted' };
72
+ }
73
+ //# sourceMappingURL=focus-integration-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-integration-sync.js","sourceRoot":"","sources":["../../src/git/focus-integration-sync.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,oEAAoE;AACpE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWxC,0GAA0G;AAC1G,MAAM,UAAU,0BAA0B,CACxC,YAAoB,EACpB,iBAAyB,EACzB,OAAyB,EACzB,YAAgF,iBAAiB;IAEjG,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,KAAK,CAAC,OAAO,uBAAuB,EAAE,CAAC;IACrH,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gCAAgC,KAAK,CAAC,MAAM,qBAAqB,EAAE,CAAC;IAC/H,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,sFAAsF,EAAE,CAAC;IACxH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,2CAA2C,iBAAiB,2CAA2C;cAC3G,kDAAkD;KACvD,CAAC;AACJ,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,iBAAyB,EACzB,OAA+C,EAC/C,MAA6D,UAAU,EACvE,SAA8E;IAE9E,MAAM,QAAQ,GAAG,0BAA0B,CAAC,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACjG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACxD,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,YAAY,CAAC,CAAC,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACrG,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;IACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { type ReviewWindowCommit } from '../resolvers/shared/review-window-commits.js';
2
+ /** Whether a focus branch carries commits of its own that integration lacks. */
3
+ export type FocusOwnDelta = {
4
+ kind: 'ahead';
5
+ commits: number;
6
+ } | {
7
+ kind: 'none';
8
+ } | {
9
+ kind: 'unknown';
10
+ reason: string;
11
+ };
12
+ /** Git seams (overridable for tests). */
13
+ export interface FocusOwnDeltaGit {
14
+ run: (args: string[], cwd: string) => {
15
+ success: boolean;
16
+ output: string;
17
+ };
18
+ listWindow: (cwd: string, base: string, tip: string) => readonly ReviewWindowCommit[] | null;
19
+ /** The raw reflog of `ref` (a full ref name), null when it cannot be read. */
20
+ readReflog: (cwd: string, ref: string) => string | null;
21
+ }
22
+ /**
23
+ * Count the commits on `ref` (default HEAD) that neither the local integration
24
+ * branch nor its origin counterpart contains. 'none' when either contains them all.
25
+ */
26
+ export declare function readFocusOwnDelta(worktreePath: string, integrationBranch: string, ref?: string, git?: FocusOwnDeltaGit): FocusOwnDelta;
27
+ /** Which focus branch to read provenance from, and the git seams. */
28
+ export interface ForeignOnlyExtensionOptions {
29
+ /** The focus branch (name or full ref). Default: the branch checked out at `worktreePath`. */
30
+ focusBranch?: string;
31
+ git?: FocusOwnDeltaGit;
32
+ }
33
+ /**
34
+ * Whether `tip` adds nothing of the focus's own on top of `anchor` (module doc).
35
+ * `ownDeliveryIds` are the focus's delivery ids; an empty set proves nothing foreign.
36
+ */
37
+ export declare function isForeignOnlyExtension(worktreePath: string, integrationBranch: string, anchor: string, tip: string, ownDeliveryIds: ReadonlySet<string>, options?: ForeignOnlyExtensionOptions): boolean;
38
+ //# sourceMappingURL=focus-own-delta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-own-delta.d.ts","sourceRoot":"","sources":["../../src/git/focus-own-delta.ts"],"names":[],"mappings":"AAoDA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,8CAA8C,CAAC;AAEtD,gFAAgF;AAChF,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,SAAS,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAC7F,8EAA8E;IAC9E,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACzD;AAmBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,GAAG,SAAS,EACZ,GAAG,GAAE,gBAA6B,GACjC,aAAa,CAYf;AAED,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,EACnC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAWT"}