dorfl 0.14.2 → 0.15.0

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 (418) hide show
  1. package/dist/advance-ci-template.d.ts +17 -16
  2. package/dist/advance-ci-template.d.ts.map +1 -1
  3. package/dist/advance-ci-template.js +42 -53
  4. package/dist/advance-ci-template.js.map +1 -1
  5. package/dist/advance-drivers.d.ts +8 -0
  6. package/dist/advance-drivers.d.ts.map +1 -1
  7. package/dist/advance-drivers.js +28 -4
  8. package/dist/advance-drivers.js.map +1 -1
  9. package/dist/advance-isolated.d.ts.map +1 -1
  10. package/dist/advance-isolated.js +3 -2
  11. package/dist/advance-isolated.js.map +1 -1
  12. package/dist/advance-lifecycle-template.d.ts +41 -40
  13. package/dist/advance-lifecycle-template.d.ts.map +1 -1
  14. package/dist/advance-lifecycle-template.js +309 -489
  15. package/dist/advance-lifecycle-template.js.map +1 -1
  16. package/dist/advance-loop-driver.d.ts.map +1 -1
  17. package/dist/advance-loop-driver.js +3 -2
  18. package/dist/advance-loop-driver.js.map +1 -1
  19. package/dist/advance-treeless-publish.d.ts +31 -0
  20. package/dist/advance-treeless-publish.d.ts.map +1 -1
  21. package/dist/advance-treeless-publish.js +40 -0
  22. package/dist/advance-treeless-publish.js.map +1 -1
  23. package/dist/advance.d.ts +63 -3
  24. package/dist/advance.d.ts.map +1 -1
  25. package/dist/advance.js +80 -12
  26. package/dist/advance.js.map +1 -1
  27. package/dist/advancing-lock.d.ts +9 -0
  28. package/dist/advancing-lock.d.ts.map +1 -1
  29. package/dist/advancing-lock.js +21 -1
  30. package/dist/advancing-lock.js.map +1 -1
  31. package/dist/agent-env.d.ts +61 -0
  32. package/dist/agent-env.d.ts.map +1 -0
  33. package/dist/agent-env.js +144 -0
  34. package/dist/agent-env.js.map +1 -0
  35. package/dist/agent-stop.d.ts +35 -0
  36. package/dist/agent-stop.d.ts.map +1 -1
  37. package/dist/agent-stop.js +62 -0
  38. package/dist/agent-stop.js.map +1 -1
  39. package/dist/apply-merge-action.d.ts +76 -34
  40. package/dist/apply-merge-action.d.ts.map +1 -1
  41. package/dist/apply-merge-action.js +339 -129
  42. package/dist/apply-merge-action.js.map +1 -1
  43. package/dist/apply-stuck-action.js +2 -2
  44. package/dist/apply-stuck-action.js.map +1 -1
  45. package/dist/ci-agent-result.d.ts +151 -0
  46. package/dist/ci-agent-result.d.ts.map +1 -0
  47. package/dist/ci-agent-result.js +314 -0
  48. package/dist/ci-agent-result.js.map +1 -0
  49. package/dist/ci-handoff-apply.d.ts +162 -0
  50. package/dist/ci-handoff-apply.d.ts.map +1 -0
  51. package/dist/ci-handoff-apply.js +497 -0
  52. package/dist/ci-handoff-apply.js.map +1 -0
  53. package/dist/ci-handoff-format.d.ts +369 -0
  54. package/dist/ci-handoff-format.d.ts.map +1 -0
  55. package/dist/ci-handoff-format.js +646 -0
  56. package/dist/ci-handoff-format.js.map +1 -0
  57. package/dist/ci-handoff-lfs.d.ts +146 -0
  58. package/dist/ci-handoff-lfs.d.ts.map +1 -0
  59. package/dist/ci-handoff-lfs.js +397 -0
  60. package/dist/ci-handoff-lfs.js.map +1 -0
  61. package/dist/ci-handoff.d.ts +99 -0
  62. package/dist/ci-handoff.d.ts.map +1 -0
  63. package/dist/ci-handoff.js +277 -0
  64. package/dist/ci-handoff.js.map +1 -0
  65. package/dist/ci-lock-outputs.d.ts +93 -0
  66. package/dist/ci-lock-outputs.d.ts.map +1 -0
  67. package/dist/ci-lock-outputs.js +223 -0
  68. package/dist/ci-lock-outputs.js.map +1 -0
  69. package/dist/ci-phase-build.d.ts +178 -0
  70. package/dist/ci-phase-build.d.ts.map +1 -0
  71. package/dist/ci-phase-build.js +989 -0
  72. package/dist/ci-phase-build.js.map +1 -0
  73. package/dist/ci-phase-driver.d.ts +247 -0
  74. package/dist/ci-phase-driver.d.ts.map +1 -0
  75. package/dist/ci-phase-driver.js +370 -0
  76. package/dist/ci-phase-driver.js.map +1 -0
  77. package/dist/ci-phase-intake.d.ts +172 -0
  78. package/dist/ci-phase-intake.d.ts.map +1 -0
  79. package/dist/ci-phase-intake.js +555 -0
  80. package/dist/ci-phase-intake.js.map +1 -0
  81. package/dist/ci-phase-tasking.d.ts +205 -0
  82. package/dist/ci-phase-tasking.d.ts.map +1 -0
  83. package/dist/ci-phase-tasking.js +906 -0
  84. package/dist/ci-phase-tasking.js.map +1 -0
  85. package/dist/ci-phase-treeless.d.ts +224 -0
  86. package/dist/ci-phase-treeless.d.ts.map +1 -0
  87. package/dist/ci-phase-treeless.js +1482 -0
  88. package/dist/ci-phase-treeless.js.map +1 -0
  89. package/dist/ci-read-token.d.ts +47 -0
  90. package/dist/ci-read-token.d.ts.map +1 -0
  91. package/dist/ci-read-token.js +80 -0
  92. package/dist/ci-read-token.js.map +1 -0
  93. package/dist/cli.d.ts.map +1 -1
  94. package/dist/cli.js +447 -22
  95. package/dist/cli.js.map +1 -1
  96. package/dist/close-job-template.d.ts +10 -1
  97. package/dist/close-job-template.d.ts.map +1 -1
  98. package/dist/close-job-template.js +46 -14
  99. package/dist/close-job-template.js.map +1 -1
  100. package/dist/close-job.d.ts +20 -5
  101. package/dist/close-job.d.ts.map +1 -1
  102. package/dist/close-job.js +65 -12
  103. package/dist/close-job.js.map +1 -1
  104. package/dist/complete.d.ts.map +1 -1
  105. package/dist/complete.js +20 -1
  106. package/dist/complete.js.map +1 -1
  107. package/dist/config.d.ts +41 -44
  108. package/dist/config.d.ts.map +1 -1
  109. package/dist/config.js +2 -4
  110. package/dist/config.js.map +1 -1
  111. package/dist/continue-branch.d.ts +63 -15
  112. package/dist/continue-branch.d.ts.map +1 -1
  113. package/dist/continue-branch.js +75 -8
  114. package/dist/continue-branch.js.map +1 -1
  115. package/dist/crashed-run-save.d.ts +73 -0
  116. package/dist/crashed-run-save.d.ts.map +1 -0
  117. package/dist/crashed-run-save.js +86 -0
  118. package/dist/crashed-run-save.js.map +1 -0
  119. package/dist/cwd-section.d.ts.map +1 -1
  120. package/dist/cwd-section.js +10 -2
  121. package/dist/cwd-section.js.map +1 -1
  122. package/dist/decision-engine.d.ts +10 -0
  123. package/dist/decision-engine.d.ts.map +1 -1
  124. package/dist/decision-engine.js.map +1 -1
  125. package/dist/do-config.d.ts +2 -24
  126. package/dist/do-config.d.ts.map +1 -1
  127. package/dist/do-config.js +1 -33
  128. package/dist/do-config.js.map +1 -1
  129. package/dist/do.d.ts +149 -1
  130. package/dist/do.d.ts.map +1 -1
  131. package/dist/do.js +115 -25
  132. package/dist/do.js.map +1 -1
  133. package/dist/dorfl-item-template.d.ts +98 -0
  134. package/dist/dorfl-item-template.d.ts.map +1 -0
  135. package/dist/dorfl-item-template.js +504 -0
  136. package/dist/dorfl-item-template.js.map +1 -0
  137. package/dist/env-config.d.ts.map +1 -1
  138. package/dist/env-config.js +7 -5
  139. package/dist/env-config.js.map +1 -1
  140. package/dist/frontmatter.d.ts +52 -0
  141. package/dist/frontmatter.d.ts.map +1 -1
  142. package/dist/frontmatter.js +136 -2
  143. package/dist/frontmatter.js.map +1 -1
  144. package/dist/gc.d.ts +13 -0
  145. package/dist/gc.d.ts.map +1 -1
  146. package/dist/gc.js +16 -2
  147. package/dist/gc.js.map +1 -1
  148. package/dist/git.d.ts +18 -1
  149. package/dist/git.d.ts.map +1 -1
  150. package/dist/git.js +70 -5
  151. package/dist/git.js.map +1 -1
  152. package/dist/harness.d.ts +44 -5
  153. package/dist/harness.d.ts.map +1 -1
  154. package/dist/harness.js +24 -1
  155. package/dist/harness.js.map +1 -1
  156. package/dist/index.d.ts +11 -4
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +7 -3
  159. package/dist/index.js.map +1 -1
  160. package/dist/install-ci-action-pins.d.ts +123 -0
  161. package/dist/install-ci-action-pins.d.ts.map +1 -0
  162. package/dist/install-ci-action-pins.js +190 -0
  163. package/dist/install-ci-action-pins.js.map +1 -0
  164. package/dist/install-ci-actions-pr-creation.d.ts +70 -0
  165. package/dist/install-ci-actions-pr-creation.d.ts.map +1 -0
  166. package/dist/install-ci-actions-pr-creation.js +106 -0
  167. package/dist/install-ci-actions-pr-creation.js.map +1 -0
  168. package/dist/install-ci-capabilities/dorfl-item.d.ts +12 -0
  169. package/dist/install-ci-capabilities/dorfl-item.d.ts.map +1 -0
  170. package/dist/install-ci-capabilities/dorfl-item.js +26 -0
  171. package/dist/install-ci-capabilities/dorfl-item.js.map +1 -0
  172. package/dist/install-ci-core.d.ts +155 -37
  173. package/dist/install-ci-core.d.ts.map +1 -1
  174. package/dist/install-ci-core.js +304 -200
  175. package/dist/install-ci-core.js.map +1 -1
  176. package/dist/install-ci-github.d.ts +47 -2
  177. package/dist/install-ci-github.d.ts.map +1 -1
  178. package/dist/install-ci-github.js +113 -1
  179. package/dist/install-ci-github.js.map +1 -1
  180. package/dist/install-ci.d.ts +25 -6
  181. package/dist/install-ci.d.ts.map +1 -1
  182. package/dist/install-ci.js +72 -36
  183. package/dist/install-ci.js.map +1 -1
  184. package/dist/intake-marker.d.ts +6 -1
  185. package/dist/intake-marker.d.ts.map +1 -1
  186. package/dist/intake-marker.js.map +1 -1
  187. package/dist/intake-triage.d.ts.map +1 -1
  188. package/dist/intake-triage.js +6 -2
  189. package/dist/intake-triage.js.map +1 -1
  190. package/dist/intake-trigger-template.d.ts +31 -25
  191. package/dist/intake-trigger-template.d.ts.map +1 -1
  192. package/dist/intake-trigger-template.js +107 -292
  193. package/dist/intake-trigger-template.js.map +1 -1
  194. package/dist/intake.d.ts +186 -4
  195. package/dist/intake.d.ts.map +1 -1
  196. package/dist/intake.js +533 -416
  197. package/dist/intake.js.map +1 -1
  198. package/dist/integration-core.d.ts +154 -1
  199. package/dist/integration-core.d.ts.map +1 -1
  200. package/dist/integration-core.js +759 -486
  201. package/dist/integration-core.js.map +1 -1
  202. package/dist/integrator.d.ts +12 -0
  203. package/dist/integrator.d.ts.map +1 -1
  204. package/dist/integrator.js +21 -0
  205. package/dist/integrator.js.map +1 -1
  206. package/dist/isolation.d.ts +12 -2
  207. package/dist/isolation.d.ts.map +1 -1
  208. package/dist/isolation.js +19 -8
  209. package/dist/isolation.js.map +1 -1
  210. package/dist/item-lock.d.ts +93 -11
  211. package/dist/item-lock.d.ts.map +1 -1
  212. package/dist/item-lock.js +233 -65
  213. package/dist/item-lock.js.map +1 -1
  214. package/dist/land-question-residue.d.ts +58 -0
  215. package/dist/land-question-residue.d.ts.map +1 -0
  216. package/dist/land-question-residue.js +95 -0
  217. package/dist/land-question-residue.js.map +1 -0
  218. package/dist/lifecycle-gather.d.ts +16 -0
  219. package/dist/lifecycle-gather.d.ts.map +1 -1
  220. package/dist/lifecycle-gather.js +54 -6
  221. package/dist/lifecycle-gather.js.map +1 -1
  222. package/dist/merge-answer.d.ts +41 -0
  223. package/dist/merge-answer.d.ts.map +1 -0
  224. package/dist/merge-answer.js +60 -0
  225. package/dist/merge-answer.js.map +1 -0
  226. package/dist/merge-question-surfacer.d.ts +105 -30
  227. package/dist/merge-question-surfacer.d.ts.map +1 -1
  228. package/dist/merge-question-surfacer.js +202 -91
  229. package/dist/merge-question-surfacer.js.map +1 -1
  230. package/dist/merge-question-tick.d.ts +64 -0
  231. package/dist/merge-question-tick.d.ts.map +1 -0
  232. package/dist/merge-question-tick.js +96 -0
  233. package/dist/merge-question-tick.js.map +1 -0
  234. package/dist/mint-adr.d.ts.map +1 -1
  235. package/dist/mint-adr.js +20 -2
  236. package/dist/mint-adr.js.map +1 -1
  237. package/dist/needs-attention.d.ts +72 -2
  238. package/dist/needs-attention.d.ts.map +1 -1
  239. package/dist/needs-attention.js +275 -38
  240. package/dist/needs-attention.js.map +1 -1
  241. package/dist/phase-recorder.d.ts +168 -0
  242. package/dist/phase-recorder.d.ts.map +1 -0
  243. package/dist/phase-recorder.js +218 -0
  244. package/dist/phase-recorder.js.map +1 -0
  245. package/dist/phase.d.ts +94 -0
  246. package/dist/phase.d.ts.map +1 -0
  247. package/dist/phase.js +148 -0
  248. package/dist/phase.js.map +1 -0
  249. package/dist/pi-harness.d.ts.map +1 -1
  250. package/dist/pi-harness.js +19 -6
  251. package/dist/pi-harness.js.map +1 -1
  252. package/dist/prepare.d.ts.map +1 -1
  253. package/dist/prepare.js +4 -0
  254. package/dist/prepare.js.map +1 -1
  255. package/dist/prompt.d.ts +4 -0
  256. package/dist/prompt.d.ts.map +1 -1
  257. package/dist/prompt.js +48 -1
  258. package/dist/prompt.js.map +1 -1
  259. package/dist/protocol/CLAIM-PROTOCOL.md +3 -1
  260. package/dist/protocol/WORK-CONTRACT.md +1 -1
  261. package/dist/reap-branches.d.ts +48 -0
  262. package/dist/reap-branches.d.ts.map +1 -1
  263. package/dist/reap-branches.js +64 -0
  264. package/dist/reap-branches.js.map +1 -1
  265. package/dist/ref-write.d.ts +198 -0
  266. package/dist/ref-write.d.ts.map +1 -0
  267. package/dist/ref-write.js +79 -0
  268. package/dist/ref-write.js.map +1 -0
  269. package/dist/repo-config.js +8 -8
  270. package/dist/repo-config.js.map +1 -1
  271. package/dist/repo-mirror.d.ts +36 -0
  272. package/dist/repo-mirror.d.ts.map +1 -1
  273. package/dist/repo-mirror.js +91 -1
  274. package/dist/repo-mirror.js.map +1 -1
  275. package/dist/review-verdict.d.ts +1 -1
  276. package/dist/review-verdict.js +1 -1
  277. package/dist/run.d.ts +7 -1
  278. package/dist/run.d.ts.map +1 -1
  279. package/dist/run.js +28 -4
  280. package/dist/run.js.map +1 -1
  281. package/dist/scan.d.ts +19 -1
  282. package/dist/scan.d.ts.map +1 -1
  283. package/dist/scan.js +21 -8
  284. package/dist/scan.js.map +1 -1
  285. package/dist/sidecar.d.ts +14 -0
  286. package/dist/sidecar.d.ts.map +1 -1
  287. package/dist/sidecar.js +21 -0
  288. package/dist/sidecar.js.map +1 -1
  289. package/dist/single-job-warning.d.ts +63 -0
  290. package/dist/single-job-warning.d.ts.map +1 -0
  291. package/dist/single-job-warning.js +110 -0
  292. package/dist/single-job-warning.js.map +1 -0
  293. package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +3 -1
  294. package/dist/skills/setup/protocol/WORK-CONTRACT.md +1 -1
  295. package/dist/spec-complete.d.ts +13 -6
  296. package/dist/spec-complete.d.ts.map +1 -1
  297. package/dist/spec-complete.js +23 -11
  298. package/dist/spec-complete.js.map +1 -1
  299. package/dist/start.d.ts.map +1 -1
  300. package/dist/start.js +47 -14
  301. package/dist/start.js.map +1 -1
  302. package/dist/status.d.ts +12 -0
  303. package/dist/status.d.ts.map +1 -1
  304. package/dist/status.js +11 -3
  305. package/dist/status.js.map +1 -1
  306. package/dist/tasking.d.ts +246 -1
  307. package/dist/tasking.d.ts.map +1 -1
  308. package/dist/tasking.js +452 -358
  309. package/dist/tasking.js.map +1 -1
  310. package/dist/triage-persist.d.ts.map +1 -1
  311. package/dist/triage-persist.js +21 -2
  312. package/dist/triage-persist.js.map +1 -1
  313. package/dist/verify-workflow-template.d.ts.map +1 -1
  314. package/dist/verify-workflow-template.js +8 -4
  315. package/dist/verify-workflow-template.js.map +1 -1
  316. package/dist/verify.d.ts.map +1 -1
  317. package/dist/verify.js +4 -0
  318. package/dist/verify.js.map +1 -1
  319. package/dist/watch-session.d.ts +42 -13
  320. package/dist/watch-session.d.ts.map +1 -1
  321. package/dist/watch-session.js +52 -23
  322. package/dist/watch-session.js.map +1 -1
  323. package/dist/work-layout.d.ts +10 -4
  324. package/dist/work-layout.d.ts.map +1 -1
  325. package/dist/work-layout.js +11 -3
  326. package/dist/work-layout.js.map +1 -1
  327. package/dist/workspace.d.ts +65 -4
  328. package/dist/workspace.d.ts.map +1 -1
  329. package/dist/workspace.js +159 -11
  330. package/dist/workspace.js.map +1 -1
  331. package/package.json +1 -1
  332. package/src/advance-ci-template.ts +80 -81
  333. package/src/advance-drivers.ts +45 -6
  334. package/src/advance-isolated.ts +3 -5
  335. package/src/advance-lifecycle-template.ts +375 -538
  336. package/src/advance-loop-driver.ts +3 -5
  337. package/src/advance-treeless-publish.ts +61 -0
  338. package/src/advance.ts +145 -15
  339. package/src/advancing-lock.ts +36 -1
  340. package/src/agent-env.ts +174 -0
  341. package/src/agent-stop.ts +81 -0
  342. package/src/apply-merge-action.ts +401 -154
  343. package/src/apply-stuck-action.ts +2 -2
  344. package/src/ci-agent-result.ts +421 -0
  345. package/src/ci-handoff-apply.ts +737 -0
  346. package/src/ci-handoff-format.ts +926 -0
  347. package/src/ci-handoff-lfs.ts +519 -0
  348. package/src/ci-handoff.ts +392 -0
  349. package/src/ci-lock-outputs.ts +273 -0
  350. package/src/ci-phase-build.ts +1328 -0
  351. package/src/ci-phase-driver.ts +548 -0
  352. package/src/ci-phase-intake.ts +861 -0
  353. package/src/ci-phase-tasking.ts +1255 -0
  354. package/src/ci-phase-treeless.ts +2028 -0
  355. package/src/ci-read-token.ts +90 -0
  356. package/src/cli.ts +591 -29
  357. package/src/close-job-template.ts +52 -15
  358. package/src/close-job.ts +77 -12
  359. package/src/complete.ts +19 -1
  360. package/src/config.ts +43 -48
  361. package/src/continue-branch.ts +121 -16
  362. package/src/crashed-run-save.ts +162 -0
  363. package/src/cwd-section.ts +10 -0
  364. package/src/decision-engine.ts +10 -0
  365. package/src/do-config.ts +2 -57
  366. package/src/do.ts +170 -28
  367. package/src/dorfl-item-template.ts +556 -0
  368. package/src/env-config.ts +7 -5
  369. package/src/frontmatter.ts +155 -2
  370. package/src/gc.ts +27 -2
  371. package/src/git.ts +83 -5
  372. package/src/harness.ts +58 -6
  373. package/src/index.ts +50 -1
  374. package/src/install-ci-action-pins.ts +209 -0
  375. package/src/install-ci-actions-pr-creation.ts +186 -0
  376. package/src/install-ci-capabilities/dorfl-item.ts +33 -0
  377. package/src/install-ci-core.ts +388 -233
  378. package/src/install-ci-github.ts +149 -1
  379. package/src/install-ci.ts +83 -37
  380. package/src/intake-marker.ts +6 -1
  381. package/src/intake-triage.ts +7 -3
  382. package/src/intake-trigger-template.ts +126 -327
  383. package/src/intake.ts +725 -544
  384. package/src/integration-core.ts +975 -523
  385. package/src/integrator.ts +28 -0
  386. package/src/isolation.ts +29 -10
  387. package/src/item-lock.ts +308 -92
  388. package/src/land-question-residue.ts +122 -0
  389. package/src/lifecycle-gather.ts +82 -10
  390. package/src/merge-answer.ts +82 -0
  391. package/src/merge-question-surfacer.ts +320 -112
  392. package/src/merge-question-tick.ts +182 -0
  393. package/src/mint-adr.ts +28 -2
  394. package/src/needs-attention.ts +350 -42
  395. package/src/phase-recorder.ts +350 -0
  396. package/src/phase.ts +177 -0
  397. package/src/pi-harness.ts +25 -5
  398. package/src/prepare.ts +4 -0
  399. package/src/prompt.ts +68 -1
  400. package/src/reap-branches.ts +107 -0
  401. package/src/ref-write.ts +324 -0
  402. package/src/repo-config.ts +8 -8
  403. package/src/repo-mirror.ts +107 -1
  404. package/src/review-verdict.ts +1 -1
  405. package/src/run.ts +47 -6
  406. package/src/scan.ts +37 -7
  407. package/src/sidecar.ts +36 -0
  408. package/src/single-job-warning.ts +135 -0
  409. package/src/spec-complete.ts +36 -14
  410. package/src/start.ts +55 -16
  411. package/src/status.ts +29 -3
  412. package/src/tasking.ts +593 -378
  413. package/src/triage-persist.ts +24 -2
  414. package/src/verify-workflow-template.ts +8 -4
  415. package/src/verify.ts +4 -0
  416. package/src/watch-session.ts +86 -28
  417. package/src/work-layout.ts +11 -3
  418. package/src/workspace.ts +210 -14
@@ -1,42 +1,71 @@
1
- import { existsSync, readFileSync } from 'node:fs';
1
+ import { existsSync, readFileSync, statSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { isEntryAnswered, parseSidecar, resolveSidecarIdentity, sidecarPathFor, } from './sidecar.js';
3
+ import { parseSidecar, resolveSidecarIdentity, sidecarPathFor, } from './sidecar.js';
4
4
  import { run as runProc } from './git.js';
5
- import { createJob } from './workspace.js';
5
+ import { createJob, withCheckoutCommitIdentity } from './workspace.js';
6
+ import { continueRebaseSentence } from './continue-branch.js';
7
+ import { ensureMirrorMain } from './repo-mirror.js';
6
8
  import { performIntegration, } from './integration-core.js';
9
+ import { changedFileBlobs, lfsObjectPath, localLfsObjectsDir, scanLfsPointers, } from './ci-handoff-lfs.js';
10
+ import { commitAbortedWork } from './needs-attention.js';
11
+ import { createPhaseRecorder, runAgentPhase } from './phase-recorder.js';
7
12
  /**
8
- * Parse the human's plain free-text answer into the deterministic
9
- * {@link MergeActionVerb}. The merge-question surfacer renders
10
- * `merge | hold | drop` in the entry's `default` as a human-readable hint, so
11
- * the human typically types one of those words verbatim. We accept any text
12
- * whose first whole word (case-insensitive) is one of `merge` / `hold` / `drop`
13
- * — this is the same machine-parseable choice shape the surfacer's applied
14
- * answer q1 documents ("a DETERMINISTIC CHOICE shape … the human picks and the
15
- * system parses unambiguously").
13
+ * The **answered MERGE-QUESTION ACTION DISPATCH** (spec
14
+ * `land-time-reverify-and-parallel-merge-ceiling`, task
15
+ * `apply-rung-merge-disposition`; Stories #15, #16) — the deterministic,
16
+ * answer-driven RUNNER-ACTION layer that turns an answered
17
+ * `kind: merge` sidecar entry into a LAND through the EXISTING
18
+ * `integration-core.ts` land primitive (rebase → re-verify on the rebased tip →
19
+ * advance).
16
20
  *
17
- * Returns `undefined` on ANYTHING else (an empty answer, a typo, a long
18
- * narrative without one of the three words at the start) so the caller can
19
- * route the ambiguity HONESTLY — never default-to-merge on a malformed answer,
20
- * which would invent a land the human did not authorise.
21
+ * This is a SIBLING of the agentic `decide()` content-decision in
22
+ * `apply-decide.ts`, NOT a route through it: a merge-acceptance has no
23
+ * judgement content (the human's plain `merge | hold | drop` answer IS the
24
+ * decision; the apply-time fresh-worktree re-verify on the rebased tip is the
25
+ * real correctness gate). Per the SPEC's resolved mechanism, routing this
26
+ * through an LLM only adds cost and non-determinism, so the apply rung
27
+ * KIND-CHECKS the sidecar BEFORE calling the agentic decider: a sidecar entry
28
+ * carrying `kind: merge` (the typed dispatch field from `sidecar-kind-field`,
29
+ * stamped by `merge-question-surfacer`) dispatches HERE deterministically;
30
+ * content kinds (observation / triage / spec) keep going through `decide()` as
31
+ * today.
32
+ *
33
+ * The KEYING is the question identity + the human's plain answer:
34
+ *
35
+ * - `answer ≈ merge` → invoke the LAND primitive (see {@link performMergeLand})
36
+ * with `committedRecovery: true` + `freshWorktreeGate: true`. The unmerged
37
+ * `work/<slug>` is checked out via the EXISTING `workspace.ts` per-job
38
+ * worktree seam ({@link createJob} off the hub mirror), NOT a bespoke
39
+ * worktree/clone; `performIntegration` then re-verifies the REBASED tip and
40
+ * REFUSES on red (routes to needs-attention through its own shared seam),
41
+ * so `main` never receives a tree that fails `verify`.
42
+ * - `answer ≈ hold` → SKIP the land; the apply rung still records the answer
43
+ * in the item body via the normal apply path (the work branch stays
44
+ * unmerged; the next surface pass may re-emit a question).
45
+ * - `answer ≈ drop` → SKIP the land; the apply rung still records the answer
46
+ * in the item body via the normal apply path. (Cancellation of the work
47
+ * branch itself is out of this task's scope — the question is recorded as
48
+ * "drop" and the human / a later surfacer handles the artifact.)
49
+ *
50
+ * The STALE-APPROVAL POLICY (SPEC OQ6, applied answer q1): default is the cheap
51
+ * "HONOUR the prior approval + land on a green re-verify" path; opt-in
52
+ * `strictMergeApproval` (resolved per-repo via the gate-family precedence chain
53
+ * by the sibling task `strict-merge-approval-gate`, default OFF) RE-SURFACES
54
+ * the merge-question instead of landing when `main`'s code moved since the
55
+ * question was asked (its recorded `askedAtMain`; see `approvedBaseMoved`).
56
+ * The RED-re-verify refusal is unchanged in both modes.
57
+ *
58
+ * House-style boundary: this module is the DETERMINISTIC DISPATCH LAYER. It
59
+ * does NOT re-implement rebase / verify / integrate (it drives the EXISTING
60
+ * `performIntegration` with `committedRecovery: true` + `freshWorktreeGate:
61
+ * true`, which {@link createJob} cuts the worktree for), and it does NOT
62
+ * improvise a worktree or clone (it uses the same `createJob` seam the build /
63
+ * recovery callers use). Tests inject the {@link MergeActionHandler} seam so
64
+ * they assert on EXTERNAL behaviour (what lands on `main`, what routes to
65
+ * needs-attention, that `verify` ran on the rebased tip).
21
66
  */
22
- export function parseMergeAnswer(text) {
23
- const trimmed = text.trim().toLowerCase();
24
- if (trimmed === '')
25
- return undefined;
26
- // The first whole alphabetic word; trailing punctuation (a comma, em-dash,
27
- // period) and any following commentary are tolerated. We deliberately do
28
- // NOT consume hyphens / apostrophes — the three verbs are plain ASCII
29
- // words, and over-tolerating typo-shapes would silently invent a verb the
30
- // human did not pick.
31
- const match = /^([a-z]+)/.exec(trimmed);
32
- if (match === null)
33
- return undefined;
34
- const word = match[1];
35
- if (word === 'merge' || word === 'hold' || word === 'drop') {
36
- return word;
37
- }
38
- return undefined;
39
- }
67
+ export { answeredMergeActionIn, parseMergeAnswer, } from './merge-answer.js';
68
+ import { answeredMergeActionIn, } from './merge-answer.js';
40
69
  /**
41
70
  * Detect the `kind: merge` action verb that should drive the next apply run.
42
71
  * The apply rung's pre-decider kind-check; returns `undefined` when there is
@@ -72,24 +101,7 @@ export function detectAnsweredMergeAction(cwd, item) {
72
101
  catch {
73
102
  return undefined;
74
103
  }
75
- // (1) Unanswered `kind: merge` follow-up ⇒ re-paused; the apply must NOT fire.
76
- for (const entry of model.entries) {
77
- if (entry.kind === 'merge' && !isEntryAnswered(entry))
78
- return undefined;
79
- }
80
- // (2) LATEST answered `kind: merge` entry — a fresh follow-up beats a stale one.
81
- for (let i = model.entries.length - 1; i >= 0; i--) {
82
- const entry = model.entries[i];
83
- if (entry.kind !== 'merge')
84
- continue;
85
- if (!isEntryAnswered(entry))
86
- continue;
87
- const verb = parseMergeAnswer(entry.answer);
88
- if (verb !== undefined) {
89
- return { verb, entry };
90
- }
91
- }
92
- return undefined;
104
+ return answeredMergeActionIn(model);
93
105
  }
94
106
  /**
95
107
  * Resolve the arbiter URL the land worktree mirrors from. Prefers the
@@ -111,42 +123,60 @@ function resolveArbiterUrl(input) {
111
123
  return url === '' ? undefined : url;
112
124
  }
113
125
  /**
114
- * The `strictMergeApproval` re-stale check (SPEC OQ6 opt-in): did `<arbiter>/
115
- * main` move past the merge-base of the work branch since the surfacer
116
- * authored the question? The git-alone analogue of GitHub's "dismiss stale
117
- * approvals when the base changes" — host-agnostic by reachability.
126
+ * The `strictMergeApproval` re-stale check (SPEC OQ6 opt-in; task
127
+ * `strict-merge-approval-restale-check-runs-before-the-continue-rebase`): did
128
+ * `main` move since the answered merge question was ASKED? The git-alone
129
+ * analogue of GitHub's "dismiss stale approvals when the base changes".
130
+ *
131
+ * ONE implementation for the laptop dispatcher ({@link performMergeAction}) and
132
+ * the CI agent half ({@link prepareMergeLand}), and both call it BEFORE
133
+ * {@link createJob}, whose continue rebase would otherwise make the kept branch
134
+ * a descendant of the current `main` and hide the move (the bug this replaced).
135
+ *
136
+ * The approved base is the `askedAtMain` the answered entry carries (stamped by
137
+ * the merge-question surfacer, and by the re-surface path with the `main` the
138
+ * follow-up is asked against, so a re-answer while `main` stays put lands and
139
+ * the CI split cannot livelock). It is compared with the arbiter's current
140
+ * `main`, freshly fetched into the hub mirror {@link createJob} then reuses.
118
141
  *
119
- * We fetch the latest `<arbiter>/main` from the JOB worktree's hub mirror (the
120
- * worktree's `origin`), compute `merge-base(<branch>, <origin/main>)`, and
121
- * compare against `<origin/main>` itself: if the merge-base IS `<origin/main>`,
122
- * the branch is a strict descendant — the merge-base did NOT move — and the
123
- * cheap default applies (HONOUR + land on green re-verify). If the merge-base
124
- * is NOT `<origin/main>`, `main` advanced past the branch's divergence point
125
- * since the branch was last rebased — the merge-base MOVED — and the strict
126
- * mode re-surfaces.
142
+ * "Moved" means the tree OUTSIDE `work/` differs: the question, its answer and
143
+ * every other ledger write are commits on `main` under `work/`, so a plain sha
144
+ * compare would re-stale every answer (the answer commit itself moves `main`).
127
145
  *
128
- * Returns `true` when the merge-base moved (⇒ re-surface), `false` otherwise.
129
- * On any plumbing failure returns `false` (do NOT spuriously re-surface — the
130
- * red re-verify is still the load-bearing safety; a transient git failure must
131
- * not block a clean answer-then-land).
146
+ * Never stale (the cheap default applies) when the entry carries no
147
+ * `askedAtMain` (a sidecar written before it existed) or on any plumbing
148
+ * failure: the red re-verify on the rebased tip stays the load-bearing safety,
149
+ * and a transient git failure must not block a clean answer-then-land.
132
150
  */
133
- function mergeBaseMoved(job, env) {
134
- const fetch = runProc('git', [
135
- 'fetch',
136
- '--quiet',
137
- job.arbiterRemote,
138
- `+refs/heads/main:refs/remotes/${job.arbiterRemote}/main`,
139
- ], job.dir, { env });
140
- if (fetch.status !== 0)
141
- return false;
142
- const mainRef = `${job.arbiterRemote}/main`;
143
- const mainSha = runProc('git', ['rev-parse', '--verify', '--quiet', mainRef], job.dir, { env });
144
- if (mainSha.status !== 0)
145
- return false;
146
- const base = runProc('git', ['merge-base', 'HEAD', mainRef], job.dir, { env });
147
- if (base.status !== 0)
148
- return false;
149
- return base.stdout.trim() !== mainSha.stdout.trim();
151
+ function approvedBaseMoved(url, input) {
152
+ const asked = input.action.entry.askedAtMain;
153
+ if (asked === undefined)
154
+ return { stale: false };
155
+ let mirror;
156
+ try {
157
+ mirror = ensureMirrorMain({
158
+ url,
159
+ workspacesDir: input.workspacesDir,
160
+ env: input.env,
161
+ });
162
+ }
163
+ catch {
164
+ return { stale: false };
165
+ }
166
+ const main = mirror.mainSha;
167
+ if (main === asked)
168
+ return { stale: false, main };
169
+ const diff = runProc('git', ['diff-tree', '--quiet', '-r', asked, main, '--', ':(exclude)work'], mirror.path, { env: input.env });
170
+ // 0: no change outside `work/`; 1: changed; anything else: plumbing failure.
171
+ return { stale: diff.status === 1, main };
172
+ }
173
+ /** The re-stale message both halves report. */
174
+ function restaleMessage(input, main) {
175
+ const asked = input.action.entry.askedAtMain ?? '(unknown)';
176
+ return (`merge-question for ${input.item} answered MERGE, but ` +
177
+ `strictMergeApproval is ON and \`main\` moved since the question was ` +
178
+ `asked (asked at ${asked}, now ${main}): RE-SURFACING the ` +
179
+ `merge-question (no land; the human re-confirms against the new base).`);
150
180
  }
151
181
  /**
152
182
  * The PRODUCTION dispatcher: an answered `kind: merge` entry's verb drives one
@@ -214,6 +244,21 @@ export async function performMergeAction(input) {
214
244
  `stays surfaced.`,
215
245
  };
216
246
  }
247
+ // STRICT re-stale check (OQ6 opt-in), BEFORE the checkout's continue rebase
248
+ // (which would push the rebased branch, and hide the move): when ON and
249
+ // `main` moved since the question was asked, RE-SURFACE the merge-question
250
+ // (the apply rung folds this into a re-pause) instead of landing. Default
251
+ // OFF ⇒ skipped; the cheap "green re-verify is enough" path runs.
252
+ if (input.strictMergeApproval === true) {
253
+ const check = approvedBaseMoved(url, input);
254
+ if (check.stale && check.main !== undefined) {
255
+ return {
256
+ outcome: 'restale',
257
+ message: restaleMessage(input, check.main),
258
+ main: check.main,
259
+ };
260
+ }
261
+ }
217
262
  // Check out the unmerged `work/<type>-<slug>` via the EXISTING per-job
218
263
  // worktree seam — the SAME seam build/recovery callers use, NOT a bespoke
219
264
  // worktree or clone. The job dir is the worktree `performIntegration` works
@@ -239,16 +284,16 @@ export async function performMergeAction(input) {
239
284
  };
240
285
  }
241
286
  try {
242
- // CONTINUE-rebase-conflict: createJob's CONTINUE-rebase aborted on a
243
- // genuine code conflict. The kept work stays on the branch (recoverable);
244
- // we refuse the land and route via the standard refusal shape.
287
+ // CONTINUE-rebase-conflict: createJob's CONTINUE-rebase aborted (a
288
+ // genuine code conflict, or any other rebase failure, named as such). The
289
+ // kept work stays on the branch (recoverable); we refuse the land and
290
+ // route via the standard refusal shape.
245
291
  if (job.continueRebaseConflict) {
246
- return {
247
- outcome: 'refused',
248
- message: `merge-question for ${input.item} answered MERGE — but rebasing ` +
249
- `\`work/${input.slug}\` onto current main conflicted (the kept work is ` +
250
- `intact on the branch; resolve and re-answer). NOT landing.`,
251
- };
292
+ const message = `merge-question for ${input.item} answered MERGE — but ` +
293
+ `${continueRebaseSentence(job.branch, job.continueRebaseFailure)} (the kept work is intact on the ` +
294
+ `branch; resolve and re-answer). NOT landing.`;
295
+ note(message);
296
+ return { outcome: 'refused', message };
252
297
  }
253
298
  if (job.continuePushFailure !== undefined) {
254
299
  return {
@@ -258,48 +303,13 @@ export async function performMergeAction(input) {
258
303
  `NOT landing; the kept work is intact on the branch.`,
259
304
  };
260
305
  }
261
- // STRICT re-stale check (OQ6 opt-in): when ON and the merge-base moved
262
- // between the surfacer's question and this apply, RE-SURFACE the
263
- // merge-question (the apply rung folds this into a re-pause) instead of
264
- // landing. Default OFF ⇒ this block is skipped; the cheap "green
265
- // re-verify is enough" path runs.
266
- if (input.strictMergeApproval === true && mergeBaseMoved(job, input.env)) {
267
- return {
268
- outcome: 'restale',
269
- message: `merge-question for ${input.item} answered MERGE — but ` +
270
- `strictMergeApproval is ON and the merge-base of \`work/${input.slug}\` ` +
271
- `moved between answer and apply: RE-SURFACING the merge-question ` +
272
- `(no land; the human re-confirms against the new base).`,
273
- };
274
- }
275
306
  // LAND through the EXISTING `performIntegration`. The branch's tip
276
307
  // already carries its done-move commit (surfacer enumerates `work/*`
277
308
  // unreachable from main, so it is a previously-built strand), so we
278
309
  // drive the committed-recovery tail — but with `freshWorktreeGate: true`
279
310
  // so the REBASED TIP is re-verified BEFORE the integrate (the
280
311
  // `committed-recovery-honours-fresh-worktree-gate` task's contract).
281
- const integration = await performIntegration({
282
- cwd: job.dir,
283
- arbiter: job.arbiterRemote,
284
- slug: input.slug,
285
- source: 'tasks-ready',
286
- recovering: false,
287
- committedRecovery: true,
288
- freshWorktreeGate: true,
289
- prepare: input.prepare,
290
- verify: input.verify,
291
- mode: 'merge',
292
- // surfaceArbiter is set so a RED rebased-tip gate (or a rebase
293
- // conflict surfaced during the retry loop) routes to needs-attention
294
- // observably on the arbiter (not local-only). The build path uses
295
- // this shape; we mirror it here for the answered-merge land.
296
- surfaceArbiter: job.arbiterRemote,
297
- recoveryRebaseRetries: input.recoveryRebaseRetries,
298
- recoveryRebaseJitterMs: input.recoveryRebaseJitterMs,
299
- mergeRetries: input.mergeRetries,
300
- env: input.env,
301
- note,
302
- });
312
+ const integration = await performIntegration(mergeLandIntegrationInput(job, input, note));
303
313
  if (integration.outcome === 'completed') {
304
314
  return {
305
315
  outcome: 'landed',
@@ -339,4 +349,204 @@ export async function performMergeAction(input) {
339
349
  }
340
350
  }
341
351
  }
352
+ /**
353
+ * The `performIntegration` input of the answered-merge land: the committed-
354
+ * recovery tail (the branch already carries its done-move) with the fresh-
355
+ * worktree gate on the rebased tip, in merge mode. Shared by the laptop
356
+ * dispatcher ({@link performMergeAction}) and the CI agent half
357
+ * ({@link prepareMergeLand}), so both run the SAME rebase and gate.
358
+ */
359
+ function mergeLandIntegrationInput(job, input, note) {
360
+ return {
361
+ cwd: job.dir,
362
+ arbiter: job.arbiterRemote,
363
+ slug: input.slug,
364
+ source: 'tasks-ready',
365
+ recovering: false,
366
+ committedRecovery: true,
367
+ freshWorktreeGate: true,
368
+ prepare: input.prepare,
369
+ verify: input.verify,
370
+ mode: 'merge',
371
+ // surfaceArbiter is set so a RED rebased-tip gate (or a rebase
372
+ // conflict surfaced during the retry loop) routes to needs-attention
373
+ // observably on the arbiter (not local-only). The build path uses
374
+ // this shape; we mirror it here for the answered-merge land.
375
+ surfaceArbiter: job.arbiterRemote,
376
+ recoveryRebaseRetries: input.recoveryRebaseRetries,
377
+ recoveryRebaseJitterMs: input.recoveryRebaseJitterMs,
378
+ mergeRetries: input.mergeRetries,
379
+ env: input.env,
380
+ note,
381
+ };
382
+ }
383
+ /**
384
+ * The AGENT half of the answered-merge land, for the CI agent job, which holds a
385
+ * read-only token: the SAME optional `strictMergeApproval` re-stale check
386
+ * (before the checkout), checkout ({@link createJob}), rebase and
387
+ * fresh-worktree gate (`prepare` +
388
+ * `verify` run the branch's code) as {@link performMergeAction}, but nothing is
389
+ * written to the arbiter. The continue rebase stays local (decision 7,
390
+ * `localContinue`), and `performIntegration` runs under the phase recorder, so
391
+ * its first write (the land, or the needs-attention route of a red gate) halts
392
+ * it and names what the apply job performs. Only an answered `merge` gets here
393
+ * (`hold` / `drop` need no agent job).
394
+ *
395
+ * The caller writes the handoff from the returned preparation (a bundle reads
396
+ * the job worktree) and then calls `dispose`. Throws when the checkout itself
397
+ * fails (the agent job then fails, and the apply job surfaces the item).
398
+ */
399
+ export async function prepareMergeLand(answered) {
400
+ // The job worktree lives in the hub mirror, which does not see the
401
+ // checkout's local git config, where the CI workflow sets the identity: the
402
+ // continue rebase (and the wip commit of a red gate) need it
403
+ // (`withCheckoutCommitIdentity`).
404
+ const input = {
405
+ ...answered,
406
+ env: withCheckoutCommitIdentity(answered.cwd, answered.env),
407
+ };
408
+ const note = input.note ?? (() => { });
409
+ const identity = resolveSidecarIdentity(input.item);
410
+ if (identity.type !== 'task' || input.action.verb !== 'merge') {
411
+ throw new Error(`prepareMergeLand: only an answered merge of a task is prepared ` +
412
+ `(got ${input.item}, answer ${input.action.verb})`);
413
+ }
414
+ const url = resolveArbiterUrl(input);
415
+ if (url === undefined) {
416
+ throw new Error(`the arbiter URL of ${input.item} could not be resolved (\`git remote ` +
417
+ `get-url ${input.arbiter}\` failed in ${input.cwd})`);
418
+ }
419
+ // The re-stale check runs BEFORE the (local) continue rebase, exactly as on
420
+ // the laptop: the same `approvedBaseMoved`.
421
+ if (input.strictMergeApproval === true) {
422
+ const check = approvedBaseMoved(url, input);
423
+ if (check.stale && check.main !== undefined) {
424
+ const main = check.main;
425
+ return {
426
+ preparation: {
427
+ kind: 'restale',
428
+ message: restaleMessage(input, main),
429
+ main,
430
+ },
431
+ dispose: () => { },
432
+ };
433
+ }
434
+ }
435
+ const job = createJob({
436
+ url,
437
+ slug: input.slug,
438
+ type: 'task',
439
+ workspacesDir: input.workspacesDir,
440
+ localContinue: true,
441
+ env: input.env,
442
+ });
443
+ const dispose = () => {
444
+ try {
445
+ job.dispose();
446
+ }
447
+ catch {
448
+ // Best-effort, as in performMergeAction: `gc` reaps a leftover.
449
+ }
450
+ };
451
+ const prepared = (preparation) => ({
452
+ preparation,
453
+ dispose,
454
+ });
455
+ try {
456
+ if (job.continueRebaseConflict) {
457
+ const reason = `${continueRebaseSentence(job.branch, job.continueRebaseFailure)}; the kept work is intact on the ` +
458
+ 'branch. Resolve it, then answer the merge question again.';
459
+ note(reason);
460
+ return prepared({ kind: 'needs-attention', reason });
461
+ }
462
+ const outcome = await runAgentPhase(createPhaseRecorder({
463
+ record: [
464
+ 'ledgerWrite.applyCompleteTransition',
465
+ 'ledgerWrite.applyNeedsAttentionTransition',
466
+ ],
467
+ }), () => performIntegration(mergeLandIntegrationInput(job, input, note)));
468
+ if (outcome.halted) {
469
+ const call = `${outcome.intent.seam}.${outcome.intent.method}`;
470
+ if (call === 'ledgerWrite.applyCompleteTransition') {
471
+ fetchKeptLfsObjects(job, input.env, note);
472
+ const tip = runProc('git', ['rev-parse', 'HEAD'], job.dir, {
473
+ env: input.env,
474
+ }).stdout.trim();
475
+ return prepared({
476
+ kind: 'integrate',
477
+ repo: job.dir,
478
+ workBranch: job.branch,
479
+ tip,
480
+ });
481
+ }
482
+ // A red gate (or prepare) on the rebased tip: the route's local half
483
+ // (the wip commit) runs here, so the rebased tip travels in the bundle.
484
+ const routed = outcome.intent.input;
485
+ commitAbortedWork({ cwd: job.dir, slug: input.slug, env: input.env });
486
+ fetchKeptLfsObjects(job, input.env, note);
487
+ return prepared({
488
+ kind: 'needs-attention',
489
+ reason: routed.reason,
490
+ ...(routed.questions === undefined
491
+ ? {}
492
+ : { questions: routed.questions }),
493
+ bundle: { repo: job.dir, workBranch: job.branch },
494
+ });
495
+ }
496
+ const result = outcome.result;
497
+ if (result.outcome === 'already-integrated') {
498
+ return prepared({
499
+ kind: 'already-integrated',
500
+ message: result.reason ?? `work/task-${input.slug} is already on main`,
501
+ });
502
+ }
503
+ // A rebase conflict on every attempt (or an invariant violation): nothing
504
+ // was written and the kept branch is untouched on the arbiter.
505
+ return prepared({
506
+ kind: 'needs-attention',
507
+ reason: result.reason ??
508
+ `the answered merge of ${input.item} ended as ${result.outcome}`,
509
+ });
510
+ }
511
+ catch (err) {
512
+ dispose();
513
+ throw err;
514
+ }
515
+ }
516
+ /**
517
+ * Bring into the job's local LFS store the objects of every LFS pointer the
518
+ * kept commits (`HEAD ^<origin>/main`) add or change, so the handoff carries
519
+ * them (`writeLfsObjects` copies from that store) and the apply job pushes them
520
+ * before the branch (decision 6). The kept branch was built elsewhere, so its
521
+ * objects live on the arbiter's LFS store, not in this fresh job: a read-only
522
+ * `git lfs fetch` of those commits. Best-effort: an object still missing is
523
+ * reported by the handoff writer, and the apply job then rejects the handoff
524
+ * and surfaces the item.
525
+ */
526
+ function fetchKeptLfsObjects(job, env, note) {
527
+ const commits = runProc('git', ['rev-list', 'HEAD', `^refs/remotes/${job.arbiterRemote}/main`], job.dir, { env })
528
+ .stdout.split('\n')
529
+ .filter((l) => l !== '');
530
+ if (commits.length === 0)
531
+ return;
532
+ const { pointers } = scanLfsPointers({
533
+ cwd: job.dir,
534
+ blobs: changedFileBlobs(job.dir, commits, env),
535
+ env,
536
+ });
537
+ if (pointers.length === 0)
538
+ return;
539
+ const store = localLfsObjectsDir(job.dir, env);
540
+ const missing = pointers.some((p) => {
541
+ const path = lfsObjectPath(store, p.oid);
542
+ return !existsSync(path) || !statSync(path).isFile();
543
+ });
544
+ if (!missing)
545
+ return;
546
+ const fetched = runProc('git', ['lfs', 'fetch', job.arbiterRemote, ...commits], job.dir, { env });
547
+ if (fetched.status !== 0) {
548
+ note(`git lfs fetch of the kept commits failed (${fetched.stderr.trim().slice(0, 300)}); ` +
549
+ 'the handoff will lack their LFS objects');
550
+ }
551
+ }
342
552
  //# sourceMappingURL=apply-merge-action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply-merge-action.js","sourceRoot":"","sources":["../src/apply-merge-action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-merge-action.js","sourceRoot":"","sources":["../src/apply-merge-action.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { isEntryAnswered, parseSidecar, sidecarPathFor, } from './sidecar.js';
4
- import { deleteRemoteWorkBranchIfPresent } from './needs-attention.js';
4
+ import { refWrite } from './ref-write.js';
5
5
  /**
6
6
  * Parse the human's plain free-text answer into a {@link StuckActionVerb}.
7
7
  * MIRRORS `parseMergeAnswer` EXACTLY: first whole ASCII word, case-insensitive,
@@ -96,7 +96,7 @@ export async function performStuckAction(input) {
96
96
  };
97
97
  }
98
98
  // verb === 'reset'
99
- const dropped = await deleteRemoteWorkBranchIfPresent({
99
+ const dropped = await refWrite.deleteRemoteWorkBranch({
100
100
  cwd: input.cwd,
101
101
  arbiter: input.arbiter,
102
102
  slug: input.slug,
@@ -1 +1 @@
1
- {"version":3,"file":"apply-stuck-action.js","sourceRoot":"","sources":["../src/apply-stuck-action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-stuck-action.js","sourceRoot":"","sources":["../src/apply-stuck-action.ts"],"names":[],"mappings":"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"}