@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,117 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/merge/abandoned-merge-recovery.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * Recover a focus worktree left mid-merge by a merge-back nothing is finishing.
6
+ *
7
+ * The observed failure (daemon log 2026-09-17, focus "Team teardown and session
8
+ * reaping leave the agent process running"): a merge-back of integration stopped
9
+ * at 14:21 UTC with 4 unmerged paths and 44 staged files, and nothing owned it
10
+ * afterwards. Every automatic path refuses a dirty focus worktree -- the
11
+ * merge-back loop skipped it as dirty_worktree, and the resolved-conflict retry
12
+ * logged "Spawning fallback resolution agent" 310 times without spawning one,
13
+ * because merging integration back into a tree already mid-merge cannot produce
14
+ * a fresh conflict. The merge_conflict hold on its delivery never cleared, so
15
+ * every review exited held until an operator ran `git merge --abort` by hand.
16
+ *
17
+ * Containment of a failed resolution (git/resolution-restore.ts) only covers a
18
+ * merge-back whose resolver this process is still running. This module covers the
19
+ * rest: a tree whose merge no team, agent session, fallback resolver or in-flight
20
+ * merge-back owns -- residue from a daemon restart mid-resolution, a killed team
21
+ * lead, or an older daemon version. The residue is PRESERVED (named ref + patch,
22
+ * same as a failed resolver run) and the worktree restored to its committed HEAD,
23
+ * so the normal paths (the merge-back follow-up and the gated merge) run again.
24
+ *
25
+ * A tree is recovered only when EVERY owner check says nobody holds it:
26
+ * 1. MERGE_HEAD is present (an unfinished merge -- other dirt is not ours);
27
+ * 2. no writer: the worktree write signal is quiescent except for the dirt
28
+ * itself (no active team, no active session, no recent commit);
29
+ * 3. no merge-back in flight in this process, and none started within
30
+ * ABANDONED_MERGE_GRACE_MS (merge/merge-back-activity.ts);
31
+ * 4. no live fallback resolver process for the branch (spawn/worker-registry.ts).
32
+ */
33
+ import { preserveAndRestoreFocusWorktree, runGitSync } from '../git/index.js';
34
+ import { getFocusWorktree } from '../focus/focus-worktree-state.js';
35
+ import { listTrackedWorkers } from '../spawn/worker-registry.js';
36
+ import { isWorktreeBeingWritten } from '../worktree/index.js';
37
+ import { isMergeBackInFlight, msSinceMergeBackStarted } from './merge-back-activity.js';
38
+ import { createLogger } from '../shell/log.js';
39
+ const log = createLogger({ module: 'abandoned-merge-recovery' });
40
+ /** How long after this process starts a merge-back its tree is treated as owned even with no resolver yet. */
41
+ export const ABANDONED_MERGE_GRACE_MS = 5 * 60_000;
42
+ export function defaultAbandonedMergeRecoveryDeps() {
43
+ return {
44
+ getFocusWorktree: (focusId) => {
45
+ const info = getFocusWorktree(focusId);
46
+ return info ? { worktreePath: info.worktreePath, branchName: info.branchName } : undefined;
47
+ },
48
+ isWorktreeBeingWritten: (focusId) => isWorktreeBeingWritten(focusId),
49
+ hasMergeHead: (worktreePath) => {
50
+ const r = runGitSync(['rev-parse', '-q', '--verify', 'MERGE_HEAD'], worktreePath);
51
+ return r.success && r.output.length > 0;
52
+ },
53
+ readHead: (worktreePath) => {
54
+ const r = runGitSync(['rev-parse', 'HEAD'], worktreePath);
55
+ return r.success && r.output.length > 0 ? r.output : null;
56
+ },
57
+ isMergeBackInFlight: (worktreePath) => isMergeBackInFlight(worktreePath),
58
+ msSinceMergeBackStarted: (worktreePath) => msSinceMergeBackStarted(worktreePath),
59
+ hasLiveResolver: (branchName) => listTrackedWorkers().some((w) => w.label === `merge-resolution:${branchName}`),
60
+ preserveAndRestore: preserveAndRestoreFocusWorktree,
61
+ };
62
+ }
63
+ /** Who, if anyone, still owns the unfinished merge in the worktree; null when nobody does. */
64
+ function mergeOwner(deps, worktree, signal) {
65
+ if (signal.active && signal.reason?.code !== 'dirty_worktree')
66
+ return `worktree is being written (${signal.reason?.code ?? 'unknown'})`;
67
+ if (deps.isMergeBackInFlight(worktree.worktreePath))
68
+ return 'a resolution of this merge-back is in flight';
69
+ const sinceStart = deps.msSinceMergeBackStarted(worktree.worktreePath);
70
+ if (sinceStart !== null && sinceStart < ABANDONED_MERGE_GRACE_MS)
71
+ return `a merge-back started ${Math.round(sinceStart / 1000)}s ago`;
72
+ if (deps.hasLiveResolver(worktree.branchName))
73
+ return 'a fallback resolution agent is running';
74
+ return null;
75
+ }
76
+ /**
77
+ * Preserve and undo an unfinished merge in the focus worktree when nothing owns it
78
+ * (see the module header). `signal` is the write signal the caller already read,
79
+ * if any, so the tick does not read it twice.
80
+ */
81
+ export async function recoverAbandonedMergeBack(focusId, deps = defaultAbandonedMergeRecoveryDeps(), signal) {
82
+ const worktree = deps.getFocusWorktree(focusId);
83
+ if (!worktree || !deps.hasMergeHead(worktree.worktreePath))
84
+ return { kind: 'not_abandoned' };
85
+ const owner = mergeOwner(deps, worktree, signal ?? (await deps.isWorktreeBeingWritten(focusId)));
86
+ if (owner !== null)
87
+ return { kind: 'owned', reason: owner };
88
+ const head = deps.readHead(worktree.worktreePath);
89
+ if (head === null) {
90
+ const reason = 'its committed HEAD is unreadable, so the merge cannot be undone safely';
91
+ log.error(`[abandoned-merge-recovery] Not recovering the abandoned merge in ${worktree.worktreePath}: ${reason}`);
92
+ return { kind: 'restore_failed', reason };
93
+ }
94
+ const restore = deps.preserveAndRestore({ worktreePath: worktree.worktreePath, preMergeHead: head, branchName: worktree.branchName });
95
+ const kept = [restore.preservedRef, restore.patchPath].filter(Boolean).join(', ') || 'nothing (no work to keep)';
96
+ if (!restore.clean) {
97
+ const reason = restore.residue ?? restore.preserveError ?? 'the worktree is still not clean after restore';
98
+ log.error(`[abandoned-merge-recovery] Abandoned merge on ${worktree.branchName} not fully undone (preserved: ${kept}): ${reason}`);
99
+ return { kind: 'restore_failed', reason };
100
+ }
101
+ log.warn(`[abandoned-merge-recovery] Undid an abandoned merge on ${worktree.branchName} that nothing owned; ` +
102
+ `worktree restored to ${head.slice(0, 12)}, partial work preserved at ${kept}`);
103
+ return { kind: 'recovered', restore };
104
+ }
105
+ /**
106
+ * The merge-back loop's write signal: when the only thing holding the worktree is
107
+ * its dirt and that dirt is an abandoned merge, recover it and read the signal
108
+ * again, so the tick proceeds on the restored tree instead of skipping it forever.
109
+ */
110
+ export async function isWorktreeBeingWrittenAfterMergeRecovery(focusId, deps = defaultAbandonedMergeRecoveryDeps()) {
111
+ const signal = await deps.isWorktreeBeingWritten(focusId);
112
+ if (signal.reason?.code !== 'dirty_worktree')
113
+ return signal;
114
+ const recovery = await recoverAbandonedMergeBack(focusId, deps, signal);
115
+ return recovery.kind === 'recovered' ? deps.isWorktreeBeingWritten(focusId) : signal;
116
+ }
117
+ //# sourceMappingURL=abandoned-merge-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abandoned-merge-recovery.js","sourceRoot":"","sources":["../../src/merge/abandoned-merge-recovery.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wEAAwE;AACxE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAiC,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAA4B,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAEjE,8GAA8G;AAC9G,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,MAAM,CAAC;AAmBnD,MAAM,UAAU,iCAAiC;IAC/C,OAAO;QACL,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,CAAC;QACD,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC;QACpE,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;YAClF,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;YAC1D,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,CAAC;QACD,mBAAmB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC;QACxE,uBAAuB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,YAAY,CAAC;QAChF,eAAe,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,oBAAoB,UAAU,EAAE,CAAC;QAC/G,kBAAkB,EAAE,+BAA+B;KACpD,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,SAAS,UAAU,CACjB,IAAgC,EAChC,QAAsD,EACtD,MAA2B;IAE3B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,gBAAgB;QAAE,OAAO,8BAA8B,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,GAAG,CAAC;IACxI,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,8CAA8C,CAAC;IAC3G,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,GAAG,wBAAwB;QAAE,OAAO,wBAAwB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;IACtI,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,wCAAwC,CAAC;IAC/F,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,OAAmC,iCAAiC,EAAE,EACtE,MAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAC7F,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,wEAAwE,CAAC;QACxF,GAAG,CAAC,KAAK,CAAC,oEAAoE,QAAQ,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC,CAAC;QAClH,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACtI,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC;IACjH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,IAAI,+CAA+C,CAAC;QAC3G,GAAG,CAAC,KAAK,CAAC,iDAAiD,QAAQ,CAAC,UAAU,iCAAiC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QACnI,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IACD,GAAG,CAAC,IAAI,CACN,0DAA0D,QAAQ,CAAC,UAAU,uBAAuB;QACpG,wBAAwB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,IAAI,EAAE,CAC/E,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wCAAwC,CAC5D,OAAe,EACf,OAAmC,iCAAiC,EAAE;IAEtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,gBAAgB;QAAE,OAAO,MAAM,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACvF,CAAC"}
@@ -9,6 +9,8 @@ import { createEscalation, hasOpenWorktreeDirtyEscalation } from '../queries/esc
9
9
  import { getMergeConflictDeliveries } from '../queries/deliveries.js';
10
10
  import { worktreeHasUncommittedChanges } from '../worktree/index.js';
11
11
  import { type BranchMergeGateTarget } from './merge-gate-coverage.js';
12
+ import { type MergeBackConflictDeps } from './merge-back-conflict.js';
13
+ import { type MergeBackAttemptOutcome, type MergeBackFollowUpDeps, type MergeBackFollowUpTarget } from './merge-back-followup.js';
12
14
  /**
13
15
  * How the merge guard treats a dirty worktree.
14
16
  *
@@ -105,6 +107,23 @@ export declare function isResolverStillAlive(teamState: Pick<FocusTeamState, 'le
105
107
  * Returns when resolution is detected or timeout expires.
106
108
  */
107
109
  export declare function requestTeamLeadResolution(teamState: FocusTeamState, conflictFiles: string[], branchName: string, integrationBranch: string, timeoutMs?: number, isAlive?: (pid: number) => boolean): Promise<MergeConflictResolutionResult>;
110
+ /**
111
+ * The real collaborators of the merge-back conflict handler. The team-lead
112
+ * resolution request and liveness probe are defined here and injected, so
113
+ * merge/merge-back-conflict.ts never imports this module.
114
+ */
115
+ export declare function defaultMergeBackConflictDeps(): MergeBackConflictDeps;
116
+ /**
117
+ * One follow-up merge-back completion attempt for a focus branch with an open
118
+ * merge_conflict (merge/merge-back-followup.ts drives it from the merge-back
119
+ * loop). It re-runs merge-back; a conflict goes to the contained fallback
120
+ * resolver (escalating budget, bounded, partial work preserved). It completes
121
+ * the merge in the focus worktree only: the merge into integration stays with
122
+ * the gated merge paths.
123
+ */
124
+ export declare function attemptMergeBackCompletion(config: DaemonConfig, target: MergeBackFollowUpTarget, deps?: MergeBackConflictDeps): Promise<MergeBackAttemptOutcome>;
125
+ /** The real collaborators of the merge-back follow-up (merge/merge-back-followup.ts). */
126
+ export declare function defaultMergeBackFollowUpDeps(): MergeBackFollowUpDeps;
108
127
  /**
109
128
  * Merge the focus branch to integration.
110
129
  *
@@ -1 +1 @@
1
- {"version":3,"file":"focus-merge.d.ts","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-merge.d.ts","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,15 @@
3
3
  // packages/daemon/src/completion/session-hold.test.ts,
4
4
  // packages/daemon/src/completion/teardown-merge-gate.test.ts,
5
5
  // packages/daemon/src/integration/agent-owned-scoping-integration.test.ts,
6
+ // packages/daemon/src/integration/merge-back-resolver-timeout-regression.test.ts,
6
7
  // packages/daemon/src/merge/dirty-worktree-merge-refusal.test.ts,
7
8
  // packages/daemon/src/merge/focus-merge-empty-deliveries.test.ts,
8
9
  // packages/daemon/src/merge/focus-merge-resolver-liveness.test.ts,
10
+ // packages/daemon/src/merge/merge-back-conflict.test.ts,
9
11
  // packages/daemon/src/merge/resolved-conflict-merge-gate.test.ts,
10
12
  // packages/daemon/src/prompt-sections/gate-ownership.test.ts
11
13
  // PINNED-BY-END
12
- import { runGitSync } from '../git/index.js';
14
+ import { runGitSync, preserveAndRestoreFocusWorktree } from '../git/index.js';
13
15
  import { fetchEffectiveWorkflow } from '../queries/workflows.js';
14
16
  import { mergeBackFromIntegration } from '../git/index.js';
15
17
  import { mergeToIntegration } from '../git/exec.js';
@@ -27,10 +29,14 @@ import { spawnResolutionAgent } from '../spawn/lifecycle.js';
27
29
  import { isProcessAlive } from '../spawn/liveness.js';
28
30
  import { getFocusWorktree } from '../focus/focus-worktree-state.js';
29
31
  import { worktreeHasUncommittedChanges } from '../worktree/index.js';
32
+ import { recoverAbandonedMergeBack } from './abandoned-merge-recovery.js';
33
+ import { noteMergeBackStarted } from './merge-back-activity.js';
30
34
  import { classifyMergeFailure } from './merge-failure-classify.js';
31
35
  import { readMergeGateHoldForBranch } from './merge-gate-coverage.js';
32
36
  import { NO_HUMAN_ACT } from '../queries/filing-observation.js';
33
- import { escalateMergeConflict, reportMergeConflictState } from './merge-conflict-escalation.js';
37
+ import { escalateMergeConflict, reportMergeConflictState, fileResolverExhaustedObservation } from './merge-conflict-escalation.js';
38
+ import { handleMergeBackConflict, runContainedFallbackResolution, describeContainment, readWorktreeHead, integrationMergedIntoHead, } from './merge-back-conflict.js';
39
+ import { recordResolverSuccess } from './merge-back-followup.js';
34
40
  import { createLogger } from '../shell/log.js';
35
41
  import { focusPipelineModelForPass } from '../shell/model-resolution.js';
36
42
  const log = createLogger({ module: 'focus-merge' });
@@ -233,6 +239,74 @@ export async function requestTeamLeadResolution(teamState, conflictFiles, branch
233
239
  teamState.resolvingMergeConflict = false;
234
240
  }
235
241
  }
242
+ /**
243
+ * The real collaborators of the merge-back conflict handler. The team-lead
244
+ * resolution request and liveness probe are defined here and injected, so
245
+ * merge/merge-back-conflict.ts never imports this module.
246
+ */
247
+ export function defaultMergeBackConflictDeps() {
248
+ return {
249
+ requestTeamLeadResolution: (teamState, conflictFiles, branchName, integrationBranch) => requestTeamLeadResolution(teamState, conflictFiles, branchName, integrationBranch),
250
+ isResolverStillAlive: (teamState) => isResolverStillAlive(teamState),
251
+ spawnResolutionAgent,
252
+ preserveAndRestore: preserveAndRestoreFocusWorktree,
253
+ escalateMergeConflict,
254
+ reportGitState,
255
+ readHead: readWorktreeHead,
256
+ now: () => Date.now(),
257
+ };
258
+ }
259
+ /**
260
+ * Merge integration back into a focus worktree only once its committed HEAD is known: a conflict the resolver
261
+ * cannot finish is contained by restoring to that HEAD, so without it nothing is merged. A clean merge-back ends
262
+ * the branch's resolver episode.
263
+ */
264
+ async function mergeBackWithRecoveryHead(worktreePath, integrationBranch, branchName, readHead = readWorktreeHead) {
265
+ const preMergeHead = readHead(worktreePath);
266
+ if (preMergeHead === null) {
267
+ log.error(`[focus-merge] Merge-back refused for ${branchName}: its committed HEAD is unreadable, so a conflict could not be restored`);
268
+ return { preMergeHead: null, refusal: `Merge-back refused for ${branchName}: the committed focus HEAD could not be read` };
269
+ }
270
+ noteMergeBackStarted(worktreePath);
271
+ const mergeBack = await mergeBackFromIntegration({ worktreePath, integrationBranch });
272
+ if (mergeBack.status === 'clean')
273
+ recordResolverSuccess({ branchName, worktreePath });
274
+ return { preMergeHead, mergeBack };
275
+ }
276
+ /**
277
+ * One follow-up merge-back completion attempt for a focus branch with an open
278
+ * merge_conflict (merge/merge-back-followup.ts drives it from the merge-back
279
+ * loop). It re-runs merge-back; a conflict goes to the contained fallback
280
+ * resolver (escalating budget, bounded, partial work preserved). It completes
281
+ * the merge in the focus worktree only: the merge into integration stays with
282
+ * the gated merge paths.
283
+ */
284
+ export async function attemptMergeBackCompletion(config, target, deps = defaultMergeBackConflictDeps()) {
285
+ const mb = await mergeBackWithRecoveryHead(target.worktreePath, config.integrationBranch, target.branchName, deps.readHead);
286
+ if (mb.preMergeHead === null)
287
+ return { kind: 'error', message: mb.refusal };
288
+ const { preMergeHead, mergeBack } = mb;
289
+ if (mergeBack.status === 'clean')
290
+ return { kind: 'merged' };
291
+ if (mergeBack.status === 'error')
292
+ return { kind: 'error', message: mergeBack.message };
293
+ const result = await runContainedFallbackResolution({
294
+ config, worktreePath: target.worktreePath, branchName: target.branchName, integrationBranch: config.integrationBranch,
295
+ conflictFiles: mergeBack.conflictFiles ?? [], focusDescription: target.focusName,
296
+ model: focusPipelineModelForPass(target.pipelineConfig, 'coding'), focusId: target.focusId, preMergeHead,
297
+ }, deps);
298
+ return result.resolved ? { kind: 'merged' } : { kind: 'failed', error: result.error, restore: result.restore };
299
+ }
300
+ /** The real collaborators of the merge-back follow-up (merge/merge-back-followup.ts). */
301
+ export function defaultMergeBackFollowUpDeps() {
302
+ return {
303
+ attempt: (config, target) => attemptMergeBackCompletion(config, target),
304
+ resolveConflictRecord: (focusId) => resolveOpenWorktreeDirtyEscalations(focusId, [MERGE_CONFLICT_ESCALATION_KIND], 'agent_session', 'Auto-resolved by the daemon: a follow-up resolver completed the merge-back from integration.'),
305
+ integrationMergedIn: (config, target) => integrationMergedIntoHead(target.worktreePath, config.integrationBranch),
306
+ fileExhausted: fileResolverExhaustedObservation,
307
+ now: () => Date.now(),
308
+ };
309
+ }
236
310
  /**
237
311
  * Merge the focus branch to integration.
238
312
  *
@@ -302,71 +376,18 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
302
376
  // Merge integration HEAD into the focus branch to surface conflicts early
303
377
  const worktreePath = teamState.worktreePath;
304
378
  if (worktreePath) {
305
- const mergeBackResult = await mergeBackFromIntegration({
306
- worktreePath,
307
- integrationBranch: config.integrationBranch,
308
- });
379
+ // A resolver that cannot finish is contained by restoring to the committed focus HEAD.
380
+ const mb = await mergeBackWithRecoveryHead(worktreePath, config.integrationBranch, branchName);
381
+ if (mb.preMergeHead === null)
382
+ return { mergeSucceeded: false, exitReason: mb.refusal };
383
+ const { preMergeHead, mergeBack: mergeBackResult } = mb;
309
384
  if (mergeBackResult.status === 'conflict') {
310
385
  const conflictFiles = mergeBackResult.conflictFiles ?? [];
311
386
  log.info(`[focus-merge] Merge-back produced conflicts for "${teamState.focusName}": ` +
312
387
  `${conflictFiles.join(', ') || 'unknown files'}`);
313
- // If team lead is alive, delegate resolution to them
314
- if (teamState.leadStdin && teamState.phase === 'executing') {
315
- const resolution = await requestTeamLeadResolution(teamState, conflictFiles, branchName, config.integrationBranch);
316
- if (resolution.resolved) {
317
- // Agent committed the merge resolution, proceed to integration merge
318
- log.info(`Conflict resolved by team lead for "${teamState.focusName}", proceeding`);
319
- }
320
- else {
321
- // Team lead could not resolve -- escalate
322
- await escalateMergeConflict({
323
- organizationId: teamState.organizationId,
324
- sessionId,
325
- deliveryId: representativeDeliveryId,
326
- deliveryName: teamState.focusName,
327
- focusId: teamState.focusId,
328
- branchName,
329
- integrationBranch: config.integrationBranch,
330
- mergeError: `Merge-back conflict unresolved: ${resolution.reason ?? 'unknown'}`,
331
- });
332
- return { mergeSucceeded: false, exitReason: 'merge_back_conflict_unresolved' };
333
- }
334
- }
335
- else {
336
- // No active team lead -- spawn a short-lived resolution agent
337
- log.info(`No active team lead for "${teamState.focusName}", spawning fallback resolution agent`);
338
- // Report resolving_conflict state for all unmerged deliveries
339
- for (const deliveryId of teamState.knownDeliveryIds) {
340
- if (!teamState.mergedDeliveryIds.has(deliveryId)) {
341
- reportGitState(deliveryId, 'resolving_conflict').catch(err => log.warn(`reportGitState resolving_conflict failed for ${deliveryId}:`, err.message));
342
- }
343
- }
344
- const fallbackResult = await spawnResolutionAgent({
345
- config,
346
- worktreePath,
347
- branchName,
348
- integrationBranch: config.integrationBranch,
349
- conflictFiles,
350
- focusDescription: teamState.focusName,
351
- model: teamState.pipelineConfig?.model ?? null,
352
- focusId: teamState.focusId,
353
- });
354
- if (fallbackResult.success) {
355
- log.info(`Fallback resolution agent resolved conflicts for "${teamState.focusName}", proceeding`);
356
- }
357
- else {
358
- await escalateMergeConflict({
359
- organizationId: teamState.organizationId,
360
- sessionId,
361
- deliveryId: representativeDeliveryId,
362
- deliveryName: teamState.focusName,
363
- focusId: teamState.focusId,
364
- branchName,
365
- integrationBranch: config.integrationBranch,
366
- mergeError: `Fallback resolution agent failed: ${fallbackResult.error ?? 'unknown'}`,
367
- });
368
- return { mergeSucceeded: false, exitReason: 'merge_back_conflict_unresolved' };
369
- }
388
+ const conflict = await handleMergeBackConflict({ config, teamState, sessionId, branchName, representativeDeliveryId, worktreePath, preMergeHead, conflictFiles }, defaultMergeBackConflictDeps());
389
+ if (!conflict.resolved) {
390
+ return { mergeSucceeded: false, exitReason: conflict.exitReason };
370
391
  }
371
392
  }
372
393
  if (mergeBackResult.status === 'error') {
@@ -434,9 +455,8 @@ function resolveMergeConflictEscalations(deliveries) {
434
455
  for (const focusId of focusIds) {
435
456
  resolveOpenWorktreeDirtyEscalations(focusId, [MERGE_CONFLICT_ESCALATION_KIND], 'auto_swept')
436
457
  .then((n) => {
437
- if (n > 0) {
458
+ if (n > 0)
438
459
  log.info(`[focus-merge] Merge resolved for focus ${focusId}; auto-resolved ${n} merge-conflict escalation(s).`);
439
- }
440
460
  })
441
461
  .catch((err) => log.warn(`[focus-merge] Auto-resolve of merge-conflict escalation failed for focus ${focusId}: ${err.message}`));
442
462
  }
@@ -456,6 +476,56 @@ function markConflictRetryMerged(deliveries) {
456
476
  }
457
477
  resolveMergeConflictEscalations(deliveries);
458
478
  }
479
+ /**
480
+ * The resolved-conflict retry's fallback: merge integration back into the
481
+ * focus worktree, run the fallback resolution agent with failure containment
482
+ * (a resolver that cannot finish leaves the worktree restored to its committed
483
+ * HEAD, partial work preserved -- merge/merge-back-conflict.ts), and retry the
484
+ * integration merge once it resolves. The open merge_conflict escalation that
485
+ * put these deliveries here stays the record on failure.
486
+ */
487
+ async function retryViaContainedFallbackResolution(config, branchName, representative, deliveries) {
488
+ const worktreeInfo = representative.focus_id ? getFocusWorktree(representative.focus_id) : null;
489
+ if (!worktreeInfo)
490
+ return;
491
+ // A dirty tree may be a live team's uncommitted work: never merge into it, and never let a failed
492
+ // resolution's restore discard it -- unless it is an abandoned merge nothing owns, which is undone first.
493
+ if (worktreeHasUncommittedChanges(worktreeInfo.worktreePath)
494
+ && (await recoverAbandonedMergeBack(representative.focus_id ?? '')).kind !== 'recovered') {
495
+ log.info(`[focus-merge] Not spawning a fallback resolution agent for ${branchName}: the focus worktree has uncommitted changes`);
496
+ return;
497
+ }
498
+ log.info(`[focus-merge] Spawning fallback resolution agent for branch ${branchName}`);
499
+ const mb = await mergeBackWithRecoveryHead(worktreeInfo.worktreePath, config.integrationBranch, branchName);
500
+ if (mb.preMergeHead === null || mb.mergeBack.status !== 'conflict')
501
+ return;
502
+ const { preMergeHead, mergeBack: mergeBackResult } = mb;
503
+ const fallback = await runContainedFallbackResolution({
504
+ config,
505
+ worktreePath: worktreeInfo.worktreePath,
506
+ branchName,
507
+ integrationBranch: config.integrationBranch,
508
+ conflictFiles: mergeBackResult.conflictFiles ?? [],
509
+ focusDescription: worktreeInfo.focusName || branchName,
510
+ model: focusPipelineModelForPass(representative.pipeline_config, 'coding'),
511
+ focusId: representative.focus_id ?? null,
512
+ preMergeHead,
513
+ }, defaultMergeBackConflictDeps());
514
+ if (!fallback.resolved) {
515
+ log.warn(`[focus-merge] Fallback resolution failed for branch ${branchName}: ${fallback.error}. ${describeContainment(fallback.restore)}`);
516
+ return;
517
+ }
518
+ const retryResult = await mergeToIntegration({
519
+ config,
520
+ branchName,
521
+ deliveryName: representative.delivery_name,
522
+ deliveryId: representative.delivery_id,
523
+ });
524
+ if (retryResult.success) {
525
+ log.info(`Merge succeeded after fallback resolution for branch ${branchName}`);
526
+ markConflictRetryMerged(deliveries);
527
+ }
528
+ }
459
529
  /**
460
530
  * Check for deliveries stuck in merge_conflict state and retry the merge.
461
531
  *
@@ -514,40 +584,7 @@ export async function checkResolvedMergeConflicts(config, deps = defaultResolved
514
584
  log.info(`[focus-merge] Merge retry still failing for branch ${branchName}: ${mergeResult.error ?? 'unknown'}`);
515
585
  // Attempt fallback resolution agent if a worktree exists for this focus
516
586
  if (representative.focus_id) {
517
- const worktreeInfo = getFocusWorktree(representative.focus_id);
518
- if (worktreeInfo) {
519
- log.info(`[focus-merge] Spawning fallback resolution agent for branch ${branchName}`);
520
- // Merge integration back into the focus worktree to surface conflicts
521
- const mergeBackResult = await mergeBackFromIntegration({
522
- worktreePath: worktreeInfo.worktreePath,
523
- integrationBranch: config.integrationBranch,
524
- });
525
- if (mergeBackResult.status === 'conflict') {
526
- const fallbackResult = await spawnResolutionAgent({
527
- config,
528
- worktreePath: worktreeInfo.worktreePath,
529
- branchName,
530
- integrationBranch: config.integrationBranch,
531
- conflictFiles: mergeBackResult.conflictFiles ?? [],
532
- focusDescription: worktreeInfo.focusName || branchName,
533
- model: focusPipelineModelForPass(representative.pipeline_config, 'coding'),
534
- focusId: representative.focus_id,
535
- });
536
- if (fallbackResult.success) {
537
- // Retry merge after resolution
538
- const retryResult = await mergeToIntegration({
539
- config,
540
- branchName,
541
- deliveryName: representative.delivery_name,
542
- deliveryId: representative.delivery_id,
543
- });
544
- if (retryResult.success) {
545
- log.info(`Merge succeeded after fallback resolution for branch ${branchName}`);
546
- markConflictRetryMerged(deliveries);
547
- }
548
- }
549
- }
550
- }
587
+ await retryViaContainedFallbackResolution(config, branchName, representative, deliveries);
551
588
  }
552
589
  }
553
590
  }
@@ -1 +1 @@
1
- {"version":3,"file":"focus-merge.js","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,2EAA2E;AAC3E,yDAAyD;AACzD,gEAAgE;AAChE,6EAA6E;AAC7E,oEAAoE;AACpE,oEAAoE;AACpE,qEAAqE;AACrE,oEAAoE;AACpE,+DAA+D;AAC/D,gBAAgB;AAehB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AACvM,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACpH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,4EAA4E;AAC5E,0EAA0E;AAC1E,gFAAgF;AAChF,mEAAmE;AACnE,kCAAkC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAA8B,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AAiCpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAqBC,EACD,OAA+B,EAAE;IAEjC,MAAM,cAAc,GAAG,IAAI,CAAC,6BAA6B,IAAI,6BAA6B,CAAC;IAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,8BAA8B,IAAI,8BAA8B,CAAC;IAEzF,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IACpK,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,wEAAwE;IACxE,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,yEAAyE;IACzE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,GAAG,CAAC,KAAK,CACP,qCAAqC,YAAY,MAAM,UAAU,OAAO,iBAAiB,KAAK;YAC9F,YAAY,YAAY,6DAA6D,CACtF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,GAAG,CAAC,IAAI,CACN,oCAAoC,YAAY,MAAM,UAAU,OAAO,iBAAiB,KAAK;QAC7F,YAAY,YAAY,2BAA2B,CACpD,CAAC;IAEF,6EAA6E;IAC7E,iEAAiE;IACjE,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,6EAA6E;IAC7E,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,mEAAmE,YAAY,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAClI,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,+EAA+E;IAC/E,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,+EAA+E;IAC/E,4EAA4E;IAC5E,WAAW;IACX,MAAM,kBAAkB,GAAG,QAAQ;QACjC,CAAC,CAAC,oEAAoE;YACpE,2EAA2E;YAC3E,6DAA6D;QAC/D,CAAC,CAAC,oEAAoE;YACpE,wEAAwE;YACxE,oEAAoE,CAAC;IACzE,MAAM,mBAAmB,GAAG,QAAQ;QAClC,CAAC,CAAC,WAAW,YAAY,kDAAkD;YACzE,8EAA8E;QAChF,CAAC,CAAC,WAAW,YAAY,oDAAoD;YAC3E,2BAA2B,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,SAAS,CACb,GAAG,EAAE,CAAC,SAAS,CAAC;YACd,cAAc;YACd,SAAS;YACT,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,iBAAiB;YAChD,WAAW,EAAE,uBAAuB,CAAC,cAAc;YACnD,uEAAuE;YACvE,wEAAwE;YACxE,QAAQ,EAAE,YAAY;YACtB,cAAc,EAAE,mCAAmC;YACnD,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;YACnD,WAAW,EACT,4DAA4D;gBAC5D,uBAAuB,YAAY,IAAI;gBACvC,sBAAsB,UAAU,IAAI;gBACpC,sBAAsB,iBAAiB,IAAI;gBAC3C,iBAAiB,YAAY,MAAM;gBACnC,kBAAkB;YACpB,YAAY,EAAE,6BAA6B,UAAU,SAAS,iBAAiB,mEAAmE,YAAY,GAAG;YACjK,UAAU,EAAE,mBAAmB;SAChC,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,mCAAmC,UAAU,EAAE,EAAE,CAC3E,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,sDAAsD,YAAY,GAAG,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CACP,6EAA6E,YAAY,MAAO,GAAa,CAAC,OAAO,EAAE,CACxH,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAGD,oEAAoE;AAEpE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAElE,sEAAsE;AACtE,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAoD,EACpD,UAAoC,cAAc;IAElD,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAyB,EACzB,aAAuB,EACvB,UAAkB,EAClB,iBAAyB,EACzB,YAAoB,oCAAoC,EACxD,UAAoC,cAAc;IAElD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAEzD,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IAC9E,CAAC;IAED,wBAAwB;IACxB,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAExC,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,OAAO,GAAG;YACd,kCAAkC;YAClC,EAAE;YACF,0EAA0E;YAC1E,EAAE;YACF,uBAAuB;YACvB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,EAAE;YACF,sBAAsB,iBAAiB,EAAE;YACzC,eAAe,UAAU,EAAE;YAC3B,EAAE;YACF,mBAAmB;YACnB,GAAG,yBAAyB,EAAE;SAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,4DAA4D,SAAS,GAAG,CAAC,CAAC;QAEnF,sCAAsC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC;QAEjF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC;YAE/E,iCAAiC;YACjC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5F,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO;gBAC1C,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACnD,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,qEAAqE;gBACrE,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC;gBAC3E,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;oBACtC,GAAG,CAAC,IAAI,CAAC,2CAA2C,SAAS,GAAG,CAAC,CAAC;oBAClE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,wEAAwE;YACxE,2EAA2E;YAC3E,sEAAsE;YACtE,6DAA6D;YAC7D,kEAAkE;YAClE,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC9C,GAAG,CAAC,IAAI,CACN,8CAA8C,SAAS,0BAA0B;oBACjF,0BAA0B,2BAA2B,GAAG,IAAI,wBAAwB;oBACpF,GAAG,SAAS,GAAG,IAAI,yDAAyD,CAC7E,CAAC;gBACF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;YACxD,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,GAAG,CAAC,IAAI,CACN,kEAAkE,SAAS,GAAG,IAAI,UAAU,SAAS,GAAG,CACzG,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAClF,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,sBAAsB,GAAG,KAAK,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAoB,EACpB,SAAyB,EACzB,SAAiB,EACjB,UAAkB,EAClB,iBAA2B,EAC3B,sBAA2C,UAAU;IAErD,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,SAAS,SAAS,CAAC,SAAS,GAAG,EAAE;QAC1E,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS;KACV,CAAC,CAAC;IACH,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,4DAA4D;IAC5D,MAAM,wBAAwB,GAC5B,iBAAiB,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,iDAAiD,EAAE,CAAC;IAClG,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,gFAAgF;IAChF,6EAA6E;IAC7E,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC;QAClD,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,SAAS;QACT,UAAU,EAAE,wBAAwB;QACpC,YAAY,EAAE,SAAS,CAAC,SAAS;QACjC,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,UAAU;QACV,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,SAAS,CAAC,QAAQ;KAC7B,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO;YACL,cAAc,EAAE,KAAK;YACrB,UAAU,EAAE,UAAU,CAAC,QAAQ;gBAC7B,CAAC,CAAC,+BAA+B;gBACjC,CAAC,CAAC,8BAA8B;SACnC,CAAC;IACJ,CAAC;IAED,qFAAqF;IACrF,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,sBAAsB,CAAC,wBAAwB,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,sEAAsE,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACzG,QAAQ,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,0EAA0E;IAE1E,0EAA0E;IAC1E,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;IAC5C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC;YACrD,YAAY;YACZ,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC5C,CAAC,CAAC;QAEH,IAAI,eAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAG,eAAe,CAAC,aAAa,IAAI,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CACN,oDAAoD,SAAS,CAAC,SAAS,KAAK;gBAC5E,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CACjD,CAAC;YAEF,qDAAqD;YACrD,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC3D,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAChD,SAAS,EACT,aAAa,EACb,UAAU,EACV,MAAM,CAAC,iBAAiB,CACzB,CAAC;gBAEF,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACxB,qEAAqE;oBACrE,GAAG,CAAC,IAAI,CAAC,uCAAuC,SAAS,CAAC,SAAS,eAAe,CAAC,CAAC;gBACtF,CAAC;qBAAM,CAAC;oBACN,0CAA0C;oBAC1C,MAAM,qBAAqB,CAAC;wBAC1B,cAAc,EAAE,SAAS,CAAC,cAAc;wBACxC,SAAS;wBACT,UAAU,EAAE,wBAAwB;wBACpC,YAAY,EAAE,SAAS,CAAC,SAAS;wBACjC,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,UAAU;wBACV,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;wBAC3C,UAAU,EAAE,mCAAmC,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE;qBAChF,CAAC,CAAC;oBACH,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,gCAAgC,EAAE,CAAC;gBACjF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,GAAG,CAAC,IAAI,CAAC,4BAA4B,SAAS,CAAC,SAAS,uCAAuC,CAAC,CAAC;gBAEjG,8DAA8D;gBAC9D,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;oBACpD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjD,cAAc,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAC3D,GAAG,CAAC,IAAI,CAAC,gDAAgD,UAAU,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAChG,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC;oBAChD,MAAM;oBACN,YAAY;oBACZ,UAAU;oBACV,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;oBAC3C,aAAa;oBACb,gBAAgB,EAAE,SAAS,CAAC,SAAS;oBACrC,KAAK,EAAE,SAAS,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI;oBAC9C,OAAO,EAAE,SAAS,CAAC,OAAO;iBAC3B,CAAC,CAAC;gBAEH,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC3B,GAAG,CAAC,IAAI,CAAC,qDAAqD,SAAS,CAAC,SAAS,eAAe,CAAC,CAAC;gBACpG,CAAC;qBAAM,CAAC;oBACN,MAAM,qBAAqB,CAAC;wBAC1B,cAAc,EAAE,SAAS,CAAC,cAAc;wBACxC,SAAS;wBACT,UAAU,EAAE,wBAAwB;wBACpC,YAAY,EAAE,SAAS,CAAC,SAAS;wBACjC,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,UAAU;wBACV,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;wBAC3C,UAAU,EAAE,qCAAqC,cAAc,CAAC,KAAK,IAAI,SAAS,EAAE;qBACrF,CAAC,CAAC;oBACH,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,gCAAgC,EAAE,CAAC;gBACjF,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CACP,uCAAuC,SAAS,CAAC,SAAS,MAAM,eAAe,CAAC,OAAO,EAAE,CAC1F,CAAC;YACF,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC,OAAO,EAAE,CAAC;QACxE,CAAC;QAED,wDAAwD;QACxD,GAAG,CAAC,IAAI,CAAC,yBAAyB,SAAS,CAAC,SAAS,oCAAoC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC;QAC7C,MAAM;QACN,UAAU;QACV,UAAU,EAAE,wBAAwB;QACpC,YAAY,EAAE,SAAS,CAAC,SAAS;QACjC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,SAAS;QACT,QAAQ;QACR,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC,CAAC;IAEH,sEAAsE;IACtE,+EAA+E;IAC/E,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE1D,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;QAChC,KAAK,MAAM,UAAU,IAAI,sBAAsB,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,cAAc,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAC9D,GAAG,CAAC,IAAI,CAAC,oEAAoE,UAAU,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CACpH,CAAC;gBACF,oEAAoE;gBACpE,qEAAqE;gBACrE,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;oBAC3B,4BAA4B,CAAC,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAC3E,GAAG,CAAC,IAAI,CAAC,2CAA2C,UAAU,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAC3F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,oBAAoB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,kEAAkE;QAClE,KAAK,MAAM,UAAU,IAAI,sBAAsB,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,wBAAwB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAC3D,GAAG,CAAC,IAAI,CAAC,uCAAuC,UAAU,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CACN,mCAAmC,SAAS,CAAC,SAAS,+BAA+B;YACrF,kDAAkD,YAAY,CAAC,UAAU,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,UAAU,EAAE,YAAY,CAAC,UAAU;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,+BAA+B,CACtC,UAA+C;IAE/C,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,mCAAmC,CAAC,OAAO,EAAE,CAAC,8BAA8B,CAAC,EAAE,YAAY,CAAC;aACzF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,GAAG,CAAC,IAAI,CACN,0CAA0C,OAAO,mBAAmB,CAAC,gCAAgC,CACtG,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACb,GAAG,CAAC,IAAI,CACN,4EAA4E,OAAO,KAAM,GAAa,CAAC,OAAO,EAAE,CACjH,CACF,CAAC;IACN,CAAC;AACH,CAAC;AASD,MAAM,UAAU,gCAAgC;IAC9C,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3G,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,UAAoE;IACnG,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACnE,GAAG,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC,WAAW,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CACpH,CAAC;IACJ,CAAC;IACD,+BAA+B,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAoB,EACpB,OAAkC,gCAAgC,EAAE;IAEpE,IAAI,kBAAkB,CAAC;IACvB,IAAI,CAAC;QACH,kBAAkB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CACxD,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,SAAS,CACjB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,0DAA0D,EACzD,GAAa,CAAC,OAAO,CACvB,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE5C,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,eAAe;YAAE,SAAS;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC1E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpJ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,0CAA0C,UAAU,SAAS,iBAAiB,KAAK,IAAI,yCAAyC,CAAC,CAAC;YAC3I,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CACN,2CAA2C,UAAU,GAAG;YACxD,IAAI,UAAU,CAAC,MAAM,wCAAwC,CAC9D,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC;YAC3C,MAAM;YACN,UAAU;YACV,YAAY,EAAE,cAAc,CAAC,aAAa;YAC1C,UAAU,EAAE,cAAc,CAAC,WAAW;SACvC,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;YACzE,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CACN,sDAAsD,UAAU,KAAK,WAAW,CAAC,KAAK,IAAI,SAAS,EAAE,CACtG,CAAC;YAEF,wEAAwE;YACxE,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC/D,IAAI,YAAY,EAAE,CAAC;oBACjB,GAAG,CAAC,IAAI,CACN,+DAA+D,UAAU,EAAE,CAC5E,CAAC;oBAEF,sEAAsE;oBACtE,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC;wBACrD,YAAY,EAAE,YAAY,CAAC,YAAY;wBACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;qBAC5C,CAAC,CAAC;oBAEH,IAAI,eAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;wBAC1C,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC;4BAChD,MAAM;4BACN,YAAY,EAAE,YAAY,CAAC,YAAY;4BACvC,UAAU;4BACV,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;4BAC3C,aAAa,EAAE,eAAe,CAAC,aAAa,IAAI,EAAE;4BAClD,gBAAgB,EAAE,YAAY,CAAC,SAAS,IAAI,UAAU;4BACtD,KAAK,EAAE,yBAAyB,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;4BAC1E,OAAO,EAAE,cAAc,CAAC,QAAQ;yBACjC,CAAC,CAAC;wBAEH,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;4BAC3B,+BAA+B;4BAC/B,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC;gCAC3C,MAAM;gCACN,UAAU;gCACV,YAAY,EAAE,cAAc,CAAC,aAAa;gCAC1C,UAAU,EAAE,cAAc,CAAC,WAAW;6BACvC,CAAC,CAAC;4BAEH,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gCACxB,GAAG,CAAC,IAAI,CAAC,wDAAwD,UAAU,EAAE,CAAC,CAAC;gCAC/E,uBAAuB,CAAC,UAAU,CAAC,CAAC;4BACtC,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"focus-merge.js","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** Stamp the start of a merge-back into `worktreePath`. */
2
+ export declare function noteMergeBackStarted(worktreePath: string, now?: number): void;
3
+ /** Run a resolution of `worktreePath` (resolver plus its containment), marked in flight until it settles. */
4
+ export declare function withMergeBackInFlight<T>(worktreePath: string, run: () => Promise<T>): Promise<T>;
5
+ /** Whether a resolution of `worktreePath` is running in this process. */
6
+ export declare function isMergeBackInFlight(worktreePath: string): boolean;
7
+ /** Milliseconds since this process last started a merge-back into `worktreePath`; null when it never did. */
8
+ export declare function msSinceMergeBackStarted(worktreePath: string, now?: number): number | null;
9
+ /** Test-only: forget every recorded merge-back. */
10
+ export declare function __resetMergeBackActivityForTesting(): void;
11
+ //# sourceMappingURL=merge-back-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-back-activity.d.ts","sourceRoot":"","sources":["../../src/merge/merge-back-activity.ts"],"names":[],"mappings":"AA2BA,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAEzF;AAED,6GAA6G;AAC7G,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUtG;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,6GAA6G;AAC7G,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI,CAGrG;AAED,mDAAmD;AACnD,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD"}
@@ -0,0 +1,57 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/merge/abandoned-merge-recovery.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * In-process record of merge-backs this daemon is running in a focus worktree.
6
+ *
7
+ * A merge-back leaves MERGE_HEAD and conflict markers in the worktree on purpose
8
+ * while a resolver (the team lead or the fallback agent) works on them, and the
9
+ * resolver's own containment restores the tree when it cannot finish. Recovery of
10
+ * an ABANDONED merge (merge/abandoned-merge-recovery.ts) must never touch a tree in
11
+ * that state, so it asks this record first:
12
+ * - in flight: a resolution (team lead or fallback agent, including its
13
+ * containment) is running for the worktree right now;
14
+ * - recently started: a merge-back began within the grace window, covering the
15
+ * short async gap between the merge and its resolver taking the tree.
16
+ *
17
+ * The record is per process and starts empty, so after a daemon restart every
18
+ * leftover merge reads as not owned by this process -- which is exactly the
19
+ * residue recovery exists for. Dependency-free leaf.
20
+ */
21
+ import { resolve } from 'node:path';
22
+ const inFlight = new Map();
23
+ const lastStartedAt = new Map();
24
+ /** Stamp the start of a merge-back into `worktreePath`. */
25
+ export function noteMergeBackStarted(worktreePath, now = Date.now()) {
26
+ lastStartedAt.set(resolve(worktreePath), now);
27
+ }
28
+ /** Run a resolution of `worktreePath` (resolver plus its containment), marked in flight until it settles. */
29
+ export async function withMergeBackInFlight(worktreePath, run) {
30
+ const key = resolve(worktreePath);
31
+ inFlight.set(key, (inFlight.get(key) ?? 0) + 1);
32
+ try {
33
+ return await run();
34
+ }
35
+ finally {
36
+ const left = (inFlight.get(key) ?? 1) - 1;
37
+ if (left > 0)
38
+ inFlight.set(key, left);
39
+ else
40
+ inFlight.delete(key);
41
+ }
42
+ }
43
+ /** Whether a resolution of `worktreePath` is running in this process. */
44
+ export function isMergeBackInFlight(worktreePath) {
45
+ return inFlight.has(resolve(worktreePath));
46
+ }
47
+ /** Milliseconds since this process last started a merge-back into `worktreePath`; null when it never did. */
48
+ export function msSinceMergeBackStarted(worktreePath, now = Date.now()) {
49
+ const at = lastStartedAt.get(resolve(worktreePath));
50
+ return at === undefined ? null : now - at;
51
+ }
52
+ /** Test-only: forget every recorded merge-back. */
53
+ export function __resetMergeBackActivityForTesting() {
54
+ inFlight.clear();
55
+ lastStartedAt.clear();
56
+ }
57
+ //# sourceMappingURL=merge-back-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-back-activity.js","sourceRoot":"","sources":["../../src/merge/merge-back-activity.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wEAAwE;AACxE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,UAAU,oBAAoB,CAAC,YAAoB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACjF,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,6GAA6G;AAC7G,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAI,YAAoB,EAAE,GAAqB;IACxF,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,GAAG,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;YACjC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,uBAAuB,CAAC,YAAoB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACpF,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;AAC5C,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,kCAAkC;IAChD,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}