@overdeck/desktop 0.46.0 → 0.47.1

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 (388) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +4 -1
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-CCwFGICj.js → acceptance-criteria-Cd7ZGZCq.js} +2 -2
  4. package/server/{advancing-selfheal-De1L-Sb4.js → advancing-selfheal-DieFp3qi.js} +6 -6
  5. package/server/{agent-gc-CBULruzm.js → agent-gc-BMcgTDl7.js} +5 -5
  6. package/server/{agent-state-VQk8fY9F.js → agent-state-DyZJia9f.js} +1 -1
  7. package/server/{agent-state-service-BlnSkRFA.js → agent-state-service-BOzQhLjU.js} +15 -9
  8. package/server/agent-state-service-DFO6qvHp.js +2 -0
  9. package/server/agent-state-source-Ca_zCaII.js +21 -0
  10. package/server/{agents-C5rWYhb6.js → agents-CtACUuVG.js} +23 -16
  11. package/server/{agents-BKKkxKgK.js → agents-Dnn4XgdB.js} +1 -1
  12. package/server/archive-planning-BHCd_eL5.js +2 -0
  13. package/server/{archive-planning-C0lAbNB_.js → archive-planning-Binfb99i.js} +10 -6
  14. package/server/{artifact-index-jobs-ug6ZxIP5.js → artifact-index-jobs-Jn7BGOtV.js} +2 -2
  15. package/server/{assemble-DnffNpOo.js → assemble-DsqK9OAq.js} +2 -2
  16. package/server/{tmux-dedup-DbN6MGzM.js → auto-spawn-consent-BooqhC3L.js} +262 -13
  17. package/server/{backlog-auto-trigger-Dh-i9PQf.js → backlog-auto-trigger-BADGPxov.js} +3 -3
  18. package/server/{behavior-CfIg6pKp.js → behavior-B7biGtFT.js} +2 -2
  19. package/server/boot-reconciled-stop-events-bQUzU8ns.js +44 -0
  20. package/server/{bridge-pool-patrol-CUFmjVDN.js → bridge-pool-patrol-DsPj6F7t.js} +1 -1
  21. package/server/{briefing-freshness-DHmCSLar.js → briefing-freshness-CUerZqWd.js} +2 -2
  22. package/server/{build-info-CuFfxZxp.js → build-info-D0q_i8WM.js} +3 -3
  23. package/server/{build-info-BP160gU7.js → build-info-Du74MKiP.js} +1 -1
  24. package/server/{checkpoint-manager-Dxh0FYsv.js → checkpoint-manager-Cu-R5Uzg.js} +1 -1
  25. package/server/{checkpoint-manager-DEWD82qK.js → checkpoint-manager-R5tnaxEY.js} +2 -2
  26. package/server/checkpoint-worker.js +1 -1
  27. package/server/{checkpoints-CZvbtLnr.js → checkpoints-DYtLu-PB.js} +2 -2
  28. package/server/{checkpoints-DMTgXuLG.js → checkpoints-wF84ubZ8.js} +1 -1
  29. package/server/{claude-hooks-provision-fvy4RD2b.js → claude-hooks-provision-DXI3Wqlm.js} +2 -2
  30. package/server/{claude-hooks-provision-CN-xo-do.js → claude-hooks-provision-UKxCeOyj.js} +1 -1
  31. package/server/{claude-permissions-CN0cSCPp.js → claude-permissions-DYVLnX9t.js} +2 -2
  32. package/server/{claude-settings-overlay-CJn35FHQ.js → claude-settings-overlay-DsbpIq2d.js} +2 -2
  33. package/server/{claude-settings-overlay-Dabi9slj.js → claude-settings-overlay-DxP2F_gY.js} +1 -1
  34. package/server/cli-D6mRfUE6.js +3 -0
  35. package/server/{cli-oCWYA1pE.js → cli-DzRKxxP_.js} +9 -9
  36. package/server/{cliproxy-C8mB3KuB.js → cliproxy-CG4meRFc.js} +2 -2
  37. package/server/{cliproxy-PGwTX_o8.js → cliproxy-Cwzw39yN.js} +1 -1
  38. package/server/{close-issue-D5MF5GqF.js → close-issue-BX1bATJy.js} +5 -5
  39. package/server/{closed-issue-reaper-CJ24u0Zt.js → closed-issue-reaper-DvnTSN6a.js} +1 -1
  40. package/server/{closed-issue-reaper-Cltx86x5.js → closed-issue-reaper-hLt0W86J.js} +62 -12
  41. package/server/{codex-Drlf5Xhf.js → codex-BYwi1uyW.js} +6 -6
  42. package/server/{codex-parser-DpB89Vqa.js → codex-parser-Poyz29GE.js} +2 -2
  43. package/server/{codex-BdEsUFWh.js → codex-rnJN3v3_.js} +1 -1
  44. package/server/{compaction-continuation-K2AxQX4H.js → compaction-continuation-DtMfHN0f.js} +3 -3
  45. package/server/{config-Dr3pW6w6.js → config-CX4vk1CV.js} +2 -2
  46. package/server/{config-DV-grfQc.js → config-R793W0yA.js} +1 -1
  47. package/server/{config-B2IMcBxx.js → config-ktAVnp4s.js} +2 -2
  48. package/server/{config-yaml-CmOPzmBb.js → config-yaml-CxdwhAIA.js} +10 -2
  49. package/server/{conflict-gate-B9cN3SBi.js → conflict-gate-BNv6UolH.js} +59 -13
  50. package/server/conflict-gate-BSTlwCtF.js +3 -0
  51. package/server/{context-layers-D6LZo3l1.js → context-layers-DCdaGsRG.js} +2 -2
  52. package/server/{context-layers-dR5YxHYB.js → context-layers-DlWsDiRF.js} +3 -3
  53. package/server/{control-settings-C7DUehE1.js → control-settings-qYYHrIqy.js} +13 -6
  54. package/server/{conversation-compaction-Dj4FAKoZ.js → conversation-compaction-BxUKObHb.js} +1 -1
  55. package/server/{conversation-compaction-BoqdDXWF.js → conversation-compaction-CXQrN3I_.js} +8 -8
  56. package/server/{conversation-service-BCxl4f8Z.js → conversation-service-CDnQ3ayN.js} +1 -1
  57. package/server/{conversation-service-5aCnq1zR.js → conversation-service-CZiUE8Uw.js} +8 -7
  58. package/server/{conversations-BUpYsOZg.js → conversations-D7lR670u.js} +4 -4
  59. package/server/{conversations-C34dyIb9.js → conversations-DXl5YTf4.js} +1 -1
  60. package/server/{cost-Bgcub5kW.js → cost-Aat8HfO_.js} +2 -2
  61. package/server/{cost-CvxRrucd.js → cost-CWvN9FP2.js} +3 -3
  62. package/server/{cost-sync-Dv3LUaNW.js → cost-sync-DiUBXwl6.js} +3 -3
  63. package/server/{dag-ombYYt4s.js → dag-5QlmH0oC.js} +2 -2
  64. package/server/{dangerous-git-ops-BcJPC5Rr.js → dangerous-git-ops-DWX6Og8c.js} +1 -1
  65. package/server/dashboard-db-worker.js +7 -7
  66. package/server/{deacon-hi9KLPLT.js → deacon-B1LD5cJU.js} +741 -211
  67. package/server/{deacon-DrXqT9LQ.js → deacon-PW_bg4uL.js} +3 -3
  68. package/server/{deacon-nudge-log-BNBebzeL.js → deacon-nudge-log-DPHsO14z.js} +3 -3
  69. package/server/{deacon-pending-lifecycle-Cpk0k7Hi.js → deacon-pending-lifecycle-2ZflPxgo.js} +3 -3
  70. package/server/deacon-swarm-BkKR7SXu.js +2 -0
  71. package/server/{deacon-swarm-DBxUaO-A.js → deacon-swarm-DwGUgSVp.js} +15 -14
  72. package/server/deacon.js +8 -8
  73. package/server/{dead-end-trip-CQcP70ND.js → dead-end-trip-B06RFIr2.js} +3 -3
  74. package/server/{delivery-Da0zEMY4.js → delivery-C2M73sBg.js} +1 -1
  75. package/server/{deploy-patrol-Df-Tmaq0.js → deploy-patrol-BNjeCL8u.js} +8 -8
  76. package/server/{deploy-queue-UjKGYsDe.js → deploy-queue-CKT_Ia9p.js} +2 -2
  77. package/server/{deploy-queue-9SrhZR63.js → deploy-queue-DMMYhFC8.js} +1 -1
  78. package/server/{deploy-window-rpqpWqHA.js → deploy-window-DC8lze3d.js} +6 -6
  79. package/server/{deploy-window-jOiPRHL0.js → deploy-window-D_AimdNN.js} +1 -1
  80. package/server/{dev-supervisor-CC46Ig8q.js → dev-supervisor-C4F0vbno.js} +2 -2
  81. package/server/{devcontainer-renderer-68CSCRnu.js → devcontainer-renderer-66sqMQIi.js} +3 -3
  82. package/server/{dist-CJy72uEg.js → dist-C5FT9lTG.js} +1 -1
  83. package/server/dist-qcf9gAP0.js +3 -0
  84. package/server/{dist-src-Bik83hFi.js → dist-src-B-AlGWSl.js} +1 -1
  85. package/server/{docker-BMVTSFL5.js → docker-BxrFhTZ_.js} +1 -1
  86. package/server/{docker-Dam7mbIB.js → docker-CoAT8R0J.js} +2 -2
  87. package/server/{dod-Dar-yheg.js → dod-Bg6wsKTV.js} +26 -5
  88. package/server/durable-review-pipeline-D_DcfIGP.js +3 -0
  89. package/server/{durable-review-pipeline-CGZ5QBxh.js → durable-review-pipeline-HkAgnx0L.js} +5 -2
  90. package/server/{ensure-devcontainer-C98V8yW-.js → ensure-devcontainer-Bg5HJAcO.js} +1 -1
  91. package/server/{ensure-devcontainer-B057YA81.js → ensure-devcontainer-DTxChVuA.js} +4 -4
  92. package/server/{esm-shims-Br9BPdkR.js → esm-shims-CaBWIR7f.js} +1 -1
  93. package/server/{event-store-ELqkVOn0.js → event-store-5UKzh9Jf.js} +1 -1
  94. package/server/{event-store-zY5MJHgF.js → event-store-CrHcVC5_.js} +3 -3
  95. package/server/{events-D6pyqhzM.js → events-ChEFB7Jp.js} +1 -1
  96. package/server/{events-D9PR1IC0.js → events-DhRN-6vM.js} +3 -3
  97. package/server/{factory-CRoOpGsF.js → factory-BezSPaTd.js} +5 -5
  98. package/server/{feature-registry-population--YUXU999.js → feature-registry-population-DhswNiXx.js} +4 -4
  99. package/server/{feature-registry-storage-BORBTo0y.js → feature-registry-storage-CUVNpAso.js} +2 -2
  100. package/server/{features--nFkJY8v.js → features-B2CfNPFw.js} +2 -2
  101. package/server/{feedback-target-C0ZzyHvU.js → feedback-target-CMrEAoeA.js} +1 -1
  102. package/server/{feedback-target-Dt9BsapX.js → feedback-target-VBr9gKgX.js} +18 -7
  103. package/server/{feedback-writer-D1fm-5Z8.js → feedback-writer-CY91ckuw.js} +1 -1
  104. package/server/{feedback-writer-BG0RUZiu.js → feedback-writer-xpFgU632.js} +5 -5
  105. package/server/{flywheel-BiT3odRb.js → flywheel-CTVY3yCG.js} +38 -19
  106. package/server/{flywheel-CLVB55Be.js → flywheel-DQqsSm7P.js} +14 -14
  107. package/server/{flywheel-BekukH4i.js → flywheel-DsICCjTR.js} +1 -1
  108. package/server/{flywheel-merge-order-BKw9o6ku.js → flywheel-merge-order-C-TI4JGu.js} +1 -1
  109. package/server/{flywheel-merge-order-BJv1DZz1.js → flywheel-merge-order-CMGz-imq.js} +7 -7
  110. package/server/forge-D647IMNa.js +3 -0
  111. package/server/{forge-CZbSg6Ds.js → forge-RTNqJe6a.js} +2 -2
  112. package/server/{from-D_4_dk7i.js → from-DxGcivc9.js} +1 -1
  113. package/server/fs-lock-Bre3sGoz.js +130 -0
  114. package/server/{fts-db-BeOomFa-.js → fts-db-wROfFfje.js} +2 -2
  115. package/server/{fts-operations-BdewJ_g9.js → fts-operations-BuTdlZFA.js} +2 -2
  116. package/server/{git-utils-CI6cwyyC.js → git-utils-CedsVume.js} +1 -1
  117. package/server/{git-utils-ameCgDdy.js → git-utils-DtdoEXJk.js} +4 -4
  118. package/server/{github-app-DtAsvwzK.js → github-app-DIE8BkHI.js} +1 -1
  119. package/server/{github-app-CQ1Lo6LA.js → github-app-gVnZcP9B.js} +2 -2
  120. package/server/{github-client-BfyDxuRN.js → github-client-BrAC6ELh.js} +3 -3
  121. package/server/{github-client-Cj0yl_07.js → github-client-CBOkvBUl.js} +1 -1
  122. package/server/{github-pr-lookup-BDq6Wznz.js → github-pr-lookup-CgMULTPf.js} +2 -2
  123. package/server/{harness-binary-DqkftwTb.js → harness-binary-CnBHpd57.js} +2 -2
  124. package/server/{harness-resolve-CqMqM1Mb.js → harness-resolve-BVj6sI8m.js} +4 -4
  125. package/server/{health-events-CazRxJUS.js → health-events-BBWO_Dh9.js} +2 -2
  126. package/server/{health-events-_xfTaOUs.js → health-events-Der6bOkm.js} +1 -1
  127. package/server/{hooks-BnJsxlSq.js → hooks-BJNal-bs.js} +1 -1
  128. package/server/{hooks-BO3QT1sn.js → hooks-BOavco-e.js} +2 -2
  129. package/server/{hume-CDYJxqx-.js → hume-DBocJFkA.js} +2 -2
  130. package/server/hume-DtWN8oV5.js +3 -0
  131. package/server/{idle-stack-reaper-BYqERdkE.js → idle-stack-reaper-CyGxXOfC.js} +1 -1
  132. package/server/{idle-stack-reaper-CnGx_PO_.js → idle-stack-reaper-DQFh8rDh.js} +2 -2
  133. package/server/{in-flight-guard-Bq3epG58.js → in-flight-guard-nXEKoxI7.js} +1 -1
  134. package/server/{infra-BjuxvjdS.js → infra-BDQDRopn.js} +15 -4
  135. package/server/{injection-UCf8EsjX.js → injection-CCopdUKz.js} +7 -7
  136. package/server/{injection-DZxlV2al.js → injection-DfFFEMKL.js} +1 -1
  137. package/server/inspect-agent-CPqXI81t.js +2 -0
  138. package/server/{inspect-agent-6kylZnrm.js → inspect-agent-FCDlNT_i.js} +12 -12
  139. package/server/{internal-token-DvMTQSOS.js → internal-token-BG6yQKNL.js} +2 -2
  140. package/server/{internal-token-M9omeXM1.js → internal-token-BJZa40Ld.js} +1 -1
  141. package/server/{io-VHvc0Ssp.js → io-C0NV7y6C.js} +4 -4
  142. package/server/{issue-closed-B6KJkmHZ.js → issue-closed-CNNGbhWm.js} +8 -8
  143. package/server/{issue-lifecycle-C4Zj0WmE.js → issue-lifecycle-BXfzxFCD.js} +29 -23
  144. package/server/{issue-lifecycle-9gk3fnXN.js → issue-lifecycle-DSH0GpWC.js} +1 -1
  145. package/server/{issue-service-singleton-DmCh7EHj.js → issue-service-singleton-F3A5VP6M.js} +10 -10
  146. package/server/{issue-service-singleton-PMx8F1jr.js → issue-service-singleton-lwFJ4dHk.js} +1 -1
  147. package/server/{issues-CgnQ1OGQ.js → issues-DA-U_MpR.js} +2 -2
  148. package/server/{jsonl-parser-DJOH_O-w.js → jsonl-parser-BXiGANOh.js} +3 -3
  149. package/server/{label-cleanup-Dv7AV_R1.js → label-cleanup-BnxRk0Eo.js} +3 -3
  150. package/server/{lifecycle-CTdOWYMi.js → lifecycle-DOgGnpIv.js} +2 -2
  151. package/server/{lifecycle-DDN8ApVY.js → lifecycle-Di48-w4x.js} +6 -6
  152. package/server/{lifecycle-io-D-lGdzK3.js → lifecycle-io-1XSeczTr.js} +5 -5
  153. package/server/{lifecycle-io-D_zTLvP1.js → lifecycle-io-eVG6v_8-.js} +1 -1
  154. package/server/{linear-client-BQU36QqE.js → linear-client-CYZRrcjp.js} +3 -3
  155. package/server/{linear-client-CY4O_Tu3.js → linear-client-CvGo9n7M.js} +1 -1
  156. package/server/{linear-mcp-auth-BnU4TYfY.js → linear-mcp-auth-Cp0XaP96.js} +5 -5
  157. package/server/{linear-mcp-auth-NYBq_oHZ.js → linear-mcp-auth-DoJnjdPZ.js} +1 -1
  158. package/server/memory-fts-worker.js +1 -1
  159. package/server/{merge-Bpx4jjht.js → merge-DO14mOr3.js} +3 -3
  160. package/server/{merge-idOG--29.js → merge-ZF99ig6A.js} +1 -1
  161. package/server/{merge-agent-DrXa1CpW.js → merge-agent-C1-9zbP_.js} +1 -1
  162. package/server/{merge-agent-DdMVSV2Y.js → merge-agent-gpiRkcvj.js} +31 -31
  163. package/server/{merge-batch-C5q1c1GX.js → merge-batch-C11ocNkO.js} +1 -1
  164. package/server/{merge-completeness-BMm8tMyZ.js → merge-completeness-BUzPZy0E.js} +4 -4
  165. package/server/{merge-completeness-D0ljXbk3.js → merge-completeness-CghMbyX7.js} +1 -1
  166. package/server/merge-ops-7QqziXAh.js +2 -0
  167. package/server/merge-rebase-B4pgzvQJ.js +2 -0
  168. package/server/{merge-rebase-xLnMlw5h.js → merge-rebase-iwlUzZjr.js} +2 -2
  169. package/server/{merge-set-DzsOTBg5.js → merge-set-BymrheTj.js} +1 -1
  170. package/server/{merge-set-DH7ot3yz.js → merge-set-Dbnx4chw.js} +4 -4
  171. package/server/{merge-sync-CQ-LgZ1_.js → merge-sync-CM978zez.js} +7 -4
  172. package/server/merge-sync-CqEtqjI2.js +3 -0
  173. package/server/{merge-train-DTEMyIu4.js → merge-train-DvLcAn1G.js} +4 -4
  174. package/server/{merge-train-deps-CNPJzepw.js → merge-train-deps-Cl_kcRbO.js} +21 -15
  175. package/server/{merge-verification-x3JO8Dtz.js → merge-verification-c9Y9mllw.js} +6 -6
  176. package/server/{merged-docker-cleanup-worker-CTpC27Bs.js → merged-docker-cleanup-worker-CGiDOdv8.js} +3 -3
  177. package/server/{merged-docker-cleanup-worker-Cdi9apm-.js → merged-docker-cleanup-worker-DgsLOx3E.js} +1 -1
  178. package/server/{multipart-parser-IMSBfePV.js → multipart-parser-D0twwRjz.js} +2 -2
  179. package/server/{no-resume-mode-C5ULAXwO.js → no-resume-mode-DZvP0M_S.js} +1 -1
  180. package/server/node_modules/.package-lock.json +4 -4
  181. package/server/node_modules/@types/node/README.md +1 -1
  182. package/server/node_modules/@types/node/crypto.d.ts +1 -1
  183. package/server/node_modules/@types/node/package.json +2 -2
  184. package/server/{orphan-proposed-reconciler-CWmOdM9-.js → orphan-proposed-reconciler-6r2OEfYd.js} +1 -1
  185. package/server/{orphan-proposed-reconciler-Dg6U4ADZ.js → orphan-proposed-reconciler-DtQP6oE_.js} +230 -31
  186. package/server/package-lock.json +5 -5
  187. package/server/package.json +1 -1
  188. package/server/{pan-dir-ubraCiUg.js → pan-dir-DAOb1V2-.js} +4 -4
  189. package/server/{paths-cXmOwSbh.js → paths-DuATV5iE.js} +2 -2
  190. package/server/{pending-lifecycle-claim-DEteYdS9.js → pending-lifecycle-claim-DQUHIDfX.js} +2 -2
  191. package/server/persistent-logger-CBj016pT.js +57 -0
  192. package/server/{pickup-D8xtG1J2.js → pickup-zXZl5lQI.js} +4 -3
  193. package/server/{pipeline-membership-CrAPLYtf.js → pipeline-membership-B2yUcBz7.js} +1 -1
  194. package/server/{pipeline-membership-BGSvkT2M.js → pipeline-membership-DHOXmvba.js} +1 -1
  195. package/server/{pipeline-membership-gather-CET40frr.js → pipeline-membership-gather-BIcJ-N0W.js} +114 -9
  196. package/server/{pipeline-membership-gather-DTfcgxLl.js → pipeline-membership-gather-OkLXuvxR.js} +1 -1
  197. package/server/{pipeline-notifier-ImNXknf0.js → pipeline-notifier-BmwrVKsO.js} +1 -1
  198. package/server/{pipeline-notifier-BuQ0e4hF.js → pipeline-notifier-CxMes51i.js} +2 -2
  199. package/server/{post-merge-lifecycle-worker-DbO10pum.js → post-merge-lifecycle-worker-3u_rA4R0.js} +3 -3
  200. package/server/{project-pipelines-Bim6bThI.js → project-pipelines-C3SPFJ38.js} +2 -2
  201. package/server/{project-repos-C0nuoBGv.js → project-repos-BOpBzkO6.js} +2 -2
  202. package/server/{project-repos-CRE6Ykow.js → project-repos-BgW4lcIa.js} +1 -1
  203. package/server/{projects-B03Wr-xc.js → projects-_n3Zui6K.js} +1 -1
  204. package/server/{prompts-BEx08AIu.js → prompts-B0TtboFm.js} +2 -2
  205. package/server/{providers-D7IluJe0.js → providers-BI1mOBQ4.js} +1 -1
  206. package/server/{providers-evXhiQeg.js → providers-O2smCvSz.js} +7 -7
  207. package/server/public/assets/{chunk-BO2N2NFS-D1s4-Sqp.js → chunk-BO2N2NFS-D_pGACYN.js} +4 -4
  208. package/server/public/assets/{diagram-OG6HWLK6-1gdMoSF7.js → diagram-OG6HWLK6-BO6fe3hH.js} +1 -1
  209. package/server/public/assets/{dist-DqDRYW6P.js → dist-5zingMiA.js} +3 -3
  210. package/server/public/assets/{dist-CxAOHbil.js → dist-CVxhbI2E.js} +1 -1
  211. package/server/public/assets/{ganttDiagram-6RSMTGT7-BYex-Ec7.js → ganttDiagram-6RSMTGT7-Bgj4A7kp.js} +1 -1
  212. package/server/public/assets/{highlighted-body-OFNGDK62-DlVkiG0S.js → highlighted-body-OFNGDK62-DNPK7_cm.js} +1 -1
  213. package/server/public/assets/{index-K0hAYCgV.js → index-DEpY-D1O.js} +148 -148
  214. package/server/public/assets/index-Ddkcz3WT.css +1 -0
  215. package/server/public/assets/{linear-B4cuEFmO.js → linear-BB0jQT16.js} +1 -1
  216. package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +1 -0
  217. package/server/public/assets/{pieDiagram-4H26LBE5-CBHNBIJQ.js → pieDiagram-4H26LBE5-DeGIzzpZ.js} +1 -1
  218. package/server/public/assets/{prod-CN2nHBvX.js → prod-XBLvikex.js} +4 -4
  219. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bom87VOQ.js → quadrantDiagram-W4KKPZXB-BV9SLeWz.js} +1 -1
  220. package/server/public/assets/{sankeyDiagram-5OEKKPKP-UrBeyLxk.js → sankeyDiagram-5OEKKPKP-Dwja0gj8.js} +1 -1
  221. package/server/public/assets/{xychartDiagram-2RQKCTM6-DhkbrIxR.js → xychartDiagram-2RQKCTM6-DCB4qvfw.js} +1 -1
  222. package/server/public/index.html +2 -2
  223. package/server/{pull-requests-DHWiKxo7.js → pull-requests-BonZ4WVG.js} +3 -3
  224. package/server/{pull-requests-Cv7LxzUN.js → pull-requests-DNcJUVWA.js} +1 -1
  225. package/server/{queries-DHJm7bTd.js → queries-DCX27GRr.js} +266 -155
  226. package/server/{rally-B71M9f4o.js → rally-Cxe7lKYX.js} +3 -3
  227. package/server/{rally-api-D5uXN08-.js → rally-api-Cp50exEi.js} +1 -1
  228. package/server/{rally-api-Dkqmok65.js → rally-api-CzkKenoi.js} +2 -2
  229. package/server/{rally-client-CxsA6ExK.js → rally-client-Bu3Cekkw.js} +1 -1
  230. package/server/{rally-client-Bfqm6XI4.js → rally-client-CyBBEDHu.js} +5 -5
  231. package/server/rally-x6ztTQo4.js +3 -0
  232. package/server/{reap-terminal-sessions-CvmwaqKv.js → reap-terminal-sessions-CtAhr6L0.js} +2 -2
  233. package/server/{reap-terminal-sessions-BQ23nriz.js → reap-terminal-sessions-DvFqQUnq.js} +2 -2
  234. package/server/{rebuild-stack-qeRqHZxH.js → rebuild-stack-BKYpIPDL.js} +2 -2
  235. package/server/{rebuild-stack-0EEYReVZ.js → rebuild-stack-hCQtprWC.js} +7 -7
  236. package/server/{reconstruct-cache-BbYFsqLa.js → reconstruct-cache-CF2avArx.js} +9 -8
  237. package/server/{record-CtroO946.js → record-BTwWhtBb.js} +1 -1
  238. package/server/{record-update-Z0QCxmMp.js → record-update-DaOKS7Wb.js} +5 -128
  239. package/server/{record-update-DH6dLJID.js → record-update-DhI7eySG.js} +1 -1
  240. package/server/{recovery-trip-eJe26h-f.js → recovery-trip-D-wM9EfB.js} +2 -2
  241. package/server/{release-engine-lPUp-MTd.js → release-engine-_eO3VFth.js} +5 -5
  242. package/server/{release-set-BwGeyZKX.js → release-set-vxgZwwZV.js} +3 -3
  243. package/server/{remote-BCd02Es1.js → remote-BienmcrZ.js} +3 -3
  244. package/server/{remote-CVGUhXMV.js → remote-CVPCc7Vy.js} +3 -3
  245. package/server/{remote-agents-C1bssi41.js → remote-agents-kwsEZvXu.js} +1 -1
  246. package/server/{remote-agents-C_VxssLU.js → remote-agents-kxraOCGT.js} +17 -8
  247. package/server/{remote-completion-DAB0P706.js → remote-completion-BtmZ42aP.js} +13 -13
  248. package/server/resume-DXIIfJNk.js +3 -0
  249. package/server/{review-agent-CHhI66UP.js → review-agent-CIRr0yYt.js} +31 -29
  250. package/server/{review-agent-CD4RCI0Y.js → review-agent-UpAM4DmT.js} +1 -1
  251. package/server/{review-artifacts-DSMRIfuJ.js → review-artifacts-BCODM9ww.js} +5 -5
  252. package/server/{review-context-oFuBbiEE.js → review-context-BBsNrDri.js} +9 -9
  253. package/server/{review-convoy-liveness-CpzrcJ5F.js → review-convoy-liveness-l06_LYCt.js} +2 -2
  254. package/server/review-status-CacDM78F.js +3 -0
  255. package/server/{review-status-yljtTd-q.js → review-status-CwhA9wmd.js} +329 -110
  256. package/server/{review-status-emit-CUExtHd5.js → review-status-emit-BPJwYcRy.js} +3 -3
  257. package/server/{review-status-enrichment-QV_hQkgS.js → review-status-enrichment-DvyZAbGR.js} +3 -3
  258. package/server/{review-status-source-ylw5QZUR.js → review-status-source-B70ekARK.js} +1 -1
  259. package/server/{review-status-source-CpvJnvnQ.js → review-status-source-DWnFE0b6.js} +1 -1
  260. package/server/{review-status-sync-NaWvI9Xf.js → review-status-sync-B0IS6Beh.js} +1 -1
  261. package/server/{review-status-sync-483sujRo.js → review-status-sync-h2CJX6ju.js} +11 -6
  262. package/server/{review-verdict-feedback-BPDn4li_.js → review-verdict-feedback-qRohbFG2.js} +1 -1
  263. package/server/{review-verdict-feedback-CELeUinh.js → review-verdict-feedback-yrrmgps_.js} +91 -15
  264. package/server/{rollup-DTNvelz9.js → rollup-CUoav0Op.js} +8 -8
  265. package/server/{rollup-DYZfq1c4.js → rollup-DxCjJaAM.js} +1 -1
  266. package/server/{scanner-CV35oSn4.js → scanner-ChURu_b-.js} +7 -7
  267. package/server/{sequence-io-DF_8iuhV.js → sequence-io-D9ITDxzq.js} +4 -4
  268. package/server/{sequencer-agent-B2WeCtGi.js → sequencer-agent-m7gmaakW.js} +7 -6
  269. package/server/server.js +435 -418
  270. package/server/{service-Br9rpBNA.js → service-BzFG0Us_.js} +88 -59
  271. package/server/{session-fork-D0LY152N.js → session-fork-KBq4HIHF.js} +2 -2
  272. package/server/{session-history-BUyK29eq.js → session-history-C_EMhIIF.js} +7 -55
  273. package/server/settings-9jSGHBPY.js +2 -0
  274. package/server/{settings-Bse1Pdcj.js → settings-BLbcDqUp.js} +3 -3
  275. package/server/{settings-CvVGqNEs.js → settings-DejgzzLs.js} +2 -2
  276. package/server/{shadow-engineering-BWLa8ODz.js → shadow-engineering-D8R9I8Yl.js} +3 -3
  277. package/server/{shadow-state-FV6PHfEW.js → shadow-state-C0Af4clN.js} +1 -1
  278. package/server/{shadow-state-B4fpKxOO.js → shadow-state-fzIqIMDD.js} +2 -2
  279. package/server/{shadow-utils-D7asqxOZ.js → shadow-utils-Ugca_9ND.js} +2 -2
  280. package/server/{ship-log-xplJ8t75.js → ship-log-VAv-lHrF.js} +1 -1
  281. package/server/{smart-compaction-D3U_79f-.js → smart-compaction-B2Xu5XEb.js} +7 -7
  282. package/server/{smart-compaction-CPp2Ykf6.js → smart-compaction-BcYY_Suf.js} +1 -1
  283. package/server/{spawn-planning-session-DGfZ5B8D.js → spawn-planning-session-DhCoBPct.js} +38 -50
  284. package/server/spawn-planning-session-Dsv-350T.js +3 -0
  285. package/server/{specialist-completion-Br48eiDP.js → specialist-completion-z6v3ZqJE.js} +1 -1
  286. package/server/{specialist-context-cVbGnTa3.js → specialist-context-CrA5azkJ.js} +5 -5
  287. package/server/{specialist-handoff-logger-DK-GTz4s.js → specialist-handoff-logger-CmpZYJMB.js} +2 -2
  288. package/server/{specialist-logs-Cl5-hqT8.js → specialist-logs-BorrIu0x.js} +3 -3
  289. package/server/{specialists-CNfYO3G2.js → specialists-2yLmqph9.js} +298 -180
  290. package/server/{specialists-Tdezg_6N.js → specialists-CH6ah6D-.js} +1 -1
  291. package/server/{specialists-Cicieuzu.js → specialists-Dfx9_Wzb.js} +18 -18
  292. package/server/{specialists-JHsdU3pA.js → specialists-ZdrifiKx.js} +1 -1
  293. package/server/specs-DKV3jIEs.js +3 -0
  294. package/server/{src-Ck028hjO.js → src-B2e5rGu2.js} +6 -6
  295. package/server/{src-CRmCHlma.js → src-B948bGVR.js} +57 -13
  296. package/server/{src-UWcGe0Ix.js → src-Dm_NV7f6.js} +3 -3
  297. package/server/{stack-health-DqSqx0zv.js → stack-health-Bf2WdG4E.js} +2 -2
  298. package/server/{stack-health-CJLMrLBl.js → stack-health-CoWAhA99.js} +1 -1
  299. package/server/{stale-task-claims-CYFOUNlT.js → stale-task-claims-D1Ll8fI5.js} +5 -4
  300. package/server/{staleness-D47CUJok.js → staleness-45qZ_a60.js} +1 -1
  301. package/server/{staleness-BQ-0gMYK.js → staleness-CuED1Psm.js} +1 -1
  302. package/server/{state-home-BYV7qZTW.js → state-home-B4EWfIxF.js} +2 -2
  303. package/server/{state-mapping-BVldLhBf.js → state-mapping-BEONzr8P.js} +1 -1
  304. package/server/{state-migrate-CvvBtS0Y.js → state-migrate-Cd8BH33U.js} +4 -4
  305. package/server/{stuck-remediation-Wt0UVvu1.js → stuck-remediation-ChcooZuk.js} +1 -1
  306. package/server/{stuck-remediation-mkLC6G_t.js → stuck-remediation-DmY5UJLg.js} +24 -23
  307. package/server/{substrate-bug-weights-service-XfLAKnmK.js → substrate-bug-weights-service-BvTWrFUz.js} +3 -3
  308. package/server/{summary-fork-CD7GOts0.js → summary-fork--Jr8duYh.js} +2 -2
  309. package/server/{summary-fork-xiXBnWG9.js → summary-fork-Ct514_Jl.js} +8 -8
  310. package/server/supervisor/{injection-budget-B5SbvDx2.js → injection-budget-B3UyEONL.js} +1 -1
  311. package/server/supervisor/{paths-K3noE4N_.js → paths-BBOnCYlO.js} +10 -2
  312. package/server/supervisor/pty-supervisor.js +4 -4
  313. package/server/supervisor/{pty-token-B7lp0ElT.js → pty-token-CWRffcCa.js} +3 -3
  314. package/server/{supervisor-DL788vos.js → supervisor-B7BHGcNA.js} +3 -3
  315. package/server/supervisor-CyR_mW5B.js +2 -0
  316. package/server/{swarm-readiness-BV14DF5N.js → swarm-readiness-MNE5O8hn.js} +3 -3
  317. package/server/{system-prerequisites-pdWG6ZQs.js → system-prerequisites-Cin9ZgDx.js} +2 -2
  318. package/server/{teardown-workspace-l2F4_zim.js → teardown-workspace-CvBpvc85.js} +15 -15
  319. package/server/{test-agent-queue-qakFIIGz.js → test-agent-queue-DmSIqays.js} +8 -7
  320. package/server/{test-verdict-Gw-btEfb.js → test-verdict-BieVDAV1.js} +1 -1
  321. package/server/{test-verdict-BJYDggMm.js → test-verdict-Cy2jJGTe.js} +1 -1
  322. package/server/{tldr-daemon-BKOYB616.js → tldr-daemon-Ca0eovh3.js} +1 -1
  323. package/server/{tldr-daemon-CBaWkV9k.js → tldr-daemon-IOssGwg7.js} +2 -2
  324. package/server/{tmux-B1Wbxz5o.js → tmux-CfDHob9M.js} +174 -4
  325. package/server/{tmux-DQ6jB76i.js → tmux-Ctk6RV5l.js} +1 -1
  326. package/server/{token-Cxbk023d.js → token-B10VFNOD.js} +2 -2
  327. package/server/{token-util-CLq2MmQt.js → token-util-CZ8WPtdk.js} +1 -1
  328. package/server/token-util-CrfQ2FKf.js +3 -0
  329. package/server/{tracker-config-DZ8Zn2nQ.js → tracker-config-CHbrjg6m.js} +2 -2
  330. package/server/{tracker-utils-L0FKtjq2.js → tracker-utils-DZZq_C0R.js} +2 -2
  331. package/server/{traefik-connect-bNX6jKkb.js → traefik-connect-GHomyBaD.js} +1 -1
  332. package/server/{tunnel-BAm1XgjG.js → tunnel-Bdyb-sNq.js} +3 -3
  333. package/server/{tunnel-CjSnHdTc.js → tunnel-Dz7y434T.js} +1 -1
  334. package/server/{typed-errors-BHhE85Ul.js → typed-errors-BR_RmPS_.js} +1 -1
  335. package/server/{typed-errors-2BTMxkZq.js → typed-errors-Bn_2WRU7.js} +1 -1
  336. package/server/{types-hraoaQIp.js → types-D2ETIB8T.js} +1 -1
  337. package/server/{types-q67TYYg5.js → types-Dh6RI5Vj.js} +1 -1
  338. package/server/{uat-promote-verification-CKB9ZrKC.js → uat-promote-verification-DyvQXvIn.js} +5 -5
  339. package/server/{uat-train-D5UjcyAa.js → uat-train-Dv0Bxer7.js} +0 -0
  340. package/server/{uat-train-Cu-4nvbf.js → uat-train-diX_7shd.js} +1 -1
  341. package/server/{validate-Cxsx5Uz1.js → validate-606KcYZC.js} +3 -3
  342. package/server/{validation-DEaTZafj.js → validation-Cf7aaV5A.js} +1 -1
  343. package/server/{validation-VZgJxmqc.js → validation-CnrDul1x.js} +4 -4
  344. package/server/{verification-artifact-g3yuxQDL.js → verification-artifact-D4b-bio9.js} +1 -1
  345. package/server/{verification-artifact-C85cRTc_.js → verification-artifact-GOaj8u2s.js} +1 -1
  346. package/server/{verification-runner-KDZIsBj4.js → verification-runner-B5MVxDvU.js} +19 -19
  347. package/server/{verification-runner-DlZI8yhw.js → verification-runner-DiPaUP-C.js} +1 -1
  348. package/server/{vtt-parser-Jr94BF3Y.js → vtt-parser-CMU5EZ5R.js} +1 -1
  349. package/server/{work-agent-prompt-C-vuP3_J.js → work-agent-prompt-Csb3fbVR.js} +9 -9
  350. package/server/{workflows-D0oip4eV.js → workflows-D87ajwV6.js} +113 -43
  351. package/server/workflows-DN6NyVGd.js +2 -0
  352. package/server/{workspace-BqFg__wH.js → workspace-AIOM7n00.js} +1 -1
  353. package/server/{workspace-anchor-drift-B4gMRHl4.js → workspace-anchor-drift-19cJ1bH5.js} +1 -1
  354. package/server/{workspace-anchor-drift-CZKofakh.js → workspace-anchor-drift-C3mK5wNI.js} +4 -4
  355. package/server/{workspace-config-B123aZl-.js → workspace-config-CJ7RqQiP.js} +1 -1
  356. package/server/{workspace-C0fH3aek.js → workspace-iD8oULqu.js} +3 -3
  357. package/server/{workspace-manager-CDTKjjdU.js → workspace-manager-B38rFWA1.js} +1 -1
  358. package/server/{workspace-manager-CwO-Hek7.js → workspace-manager-CXfrw4rR.js} +13 -13
  359. package/server/{workspace-metadata-D4M8BM4W.js → workspace-metadata-BuMRco5P.js} +1 -1
  360. package/server/{workspace-metadata-CQv00QwK.js → workspace-metadata-eHSj_NsP.js} +2 -2
  361. package/server/{workspaces-j1e_6aAT.js → workspaces-DbtMX2TM.js} +136 -113
  362. package/sync-sources/skills/pan-merge/SKILL.md +7 -5
  363. package/sync-sources/skills/pan-release/SKILL.md +57 -0
  364. package/server/agent-state-service-hZpxIw1E.js +0 -2
  365. package/server/archive-planning-0FJ6Xd3b.js +0 -2
  366. package/server/cli-DmXETsw-.js +0 -3
  367. package/server/conflict-gate-Dh754uyA.js +0 -3
  368. package/server/deacon-swarm-I2JfX5Tg.js +0 -2
  369. package/server/dist-DSlxIU1H.js +0 -3
  370. package/server/durable-review-pipeline-jpgCJZFp.js +0 -3
  371. package/server/forge-DK3blQb_.js +0 -3
  372. package/server/hume-Dq--7rOQ.js +0 -3
  373. package/server/inspect-agent-BVwDrVrz.js +0 -2
  374. package/server/label-reconciler--F85rufp.js +0 -113
  375. package/server/merge-ops-DdpTiEMt.js +0 -2
  376. package/server/merge-rebase-DGQpYJU3.js +0 -2
  377. package/server/merge-sync-Ca7F5JnQ.js +0 -3
  378. package/server/public/assets/index-Cc7cnFC4.css +0 -1
  379. package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +0 -1
  380. package/server/rally-YDjU513q.js +0 -3
  381. package/server/resume-u9byntrq.js +0 -3
  382. package/server/review-status-BZH8h-6W.js +0 -3
  383. package/server/settings-CdvIF84R.js +0 -2
  384. package/server/spawn-planning-session-1nFi3gfk.js +0 -2
  385. package/server/specs-Bt7WJDoC.js +0 -3
  386. package/server/supervisor-UWiQNK-y.js +0 -2
  387. package/server/token-util-zlz9U0ki.js +0 -3
  388. package/server/workflows-CHrx_hcW.js +0 -2
@@ -1,5 +1,5 @@
1
- import { c as init_review_status_sync, r as getAllReviewStatusesFromDb } from "./review-status-sync-483sujRo.js";
2
- import { H as liveOrderIssueLookup, V as listBooks } from "./flywheel-BiT3odRb.js";
1
+ import { c as init_review_status_sync, r as getAllReviewStatusesFromDb } from "./review-status-sync-h2CJX6ju.js";
2
+ import { H as liveOrderIssueLookup, V as listBooks } from "./flywheel-CTVY3yCG.js";
3
3
  import { join } from "node:path";
4
4
  import { existsSync, readdirSync, statSync } from "node:fs";
5
5
  //#region ../../lib/cloister/merge-blockers.ts
@@ -176,4 +176,4 @@ function validateBookForStart(stateRoot, book, options = {}) {
176
176
  //#endregion
177
177
  export { getMergeBlockersPayload as i, hasOrderIssuePrd as n, validateBookForStart as r, createOrderPrdLookup as t };
178
178
 
179
- //# sourceMappingURL=validate-Cxsx5Uz1.js.map
179
+ //# sourceMappingURL=validate-606KcYZC.js.map
@@ -1,3 +1,3 @@
1
- import { i as runQualityGates, n as init_validation, r as killAllGateProcessGroups } from "./validation-VZgJxmqc.js";
1
+ import { i as runQualityGates, n as init_validation, r as killAllGateProcessGroups } from "./validation-CnrDul1x.js";
2
2
  init_validation();
3
3
  export { killAllGateProcessGroups, runQualityGates };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors, ci as init_paths, si as getOverdeckHome } from "./config-yaml-CmOPzmBb.js";
3
- import { f as init_config, m as loadConfigSync } from "./config-Dr3pW6w6.js";
4
- import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-B123aZl-.js";
2
+ import { Fr as init_errors, ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
3
+ import { f as init_config, m as loadConfigSync } from "./config-CX4vk1CV.js";
4
+ import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-CJ7RqQiP.js";
5
5
  import { join } from "node:path";
6
6
  import { Effect } from "effect";
7
7
  import "fs";
@@ -522,4 +522,4 @@ var init_validation = __esmMin((() => {
522
522
  //#endregion
523
523
  export { runQualityGates as i, init_validation as n, killAllGateProcessGroups as r, DEFAULT_GATES as t };
524
524
 
525
- //# sourceMappingURL=validation-VZgJxmqc.js.map
525
+ //# sourceMappingURL=validation-CnrDul1x.js.map
@@ -53,4 +53,4 @@ function readVerificationArtifact(workspacePath) {
53
53
  //#endregion
54
54
  export { verificationArtifactPath as n, writeVerificationArtifact as r, readVerificationArtifact as t };
55
55
 
56
- //# sourceMappingURL=verification-artifact-g3yuxQDL.js.map
56
+ //# sourceMappingURL=verification-artifact-D4b-bio9.js.map
@@ -1,2 +1,2 @@
1
- import { t as readVerificationArtifact } from "./verification-artifact-g3yuxQDL.js";
1
+ import { t as readVerificationArtifact } from "./verification-artifact-D4b-bio9.js";
2
2
  export { readVerificationArtifact };
@@ -1,18 +1,18 @@
1
- import { Fr as init_errors, Gn as init_projects, Mn as findProjectByPathSync, ar as resolveProjectFromIssueSync, ci as init_paths, gr as init_issue_id, hn as init_state_plane, si as getOverdeckHome, ui as packageRoot } from "./config-yaml-CmOPzmBb.js";
2
- import { S as setReviewStatusSync, T as init_pipeline, f as init_review_status, g as markWorkspaceStuck, u as getReviewStatusSync, w as capturePipelineStageForIssue } from "./review-status-yljtTd-q.js";
3
- import { X as messageAgent, b as init_agents, pt as stopAgent, vr as setAgentPaused } from "./queries-DHJm7bTd.js";
4
- import { t as init_tracker_utils } from "./tracker-utils-L0FKtjq2.js";
5
- import { i as readReviewStatusMap, n as init_review_status_source } from "./review-status-source-CpvJnvnQ.js";
6
- import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-C0nuoBGv.js";
7
- import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-CTdOWYMi.js";
8
- import { m as readWorkspacePlanSync, o as init_io, t as XBriefMergeConflictError, v as init_types, y as subItemsOf } from "./io-VHvc0Ssp.js";
9
- import { n as init_shadow_utils } from "./shadow-utils-D7asqxOZ.js";
10
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-BG0RUZiu.js";
11
- import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-Dt9BsapX.js";
12
- import { i as runQualityGates, n as init_validation, t as DEFAULT_GATES } from "./validation-VZgJxmqc.js";
13
- import { r as writeVerificationArtifact, t as readVerificationArtifact } from "./verification-artifact-g3yuxQDL.js";
14
- import { i as readPendingDeploy, n as init_deploy_queue } from "./deploy-queue-UjKGYsDe.js";
15
- import { n as getXBriefACStatusSync } from "./acceptance-criteria-CCwFGICj.js";
1
+ import { Fr as init_errors, Gn as init_projects, Mn as findProjectByPathSync, ar as resolveProjectFromIssueSync, ci as getOverdeckHome, di as packageRoot, gr as init_issue_id, hn as init_state_plane, li as init_paths } from "./config-yaml-CxdwhAIA.js";
2
+ import { C as setReviewStatusSync, E as init_pipeline, T as capturePipelineStageForIssue, _ as markWorkspaceStuck, d as getReviewStatusSync, p as init_review_status } from "./review-status-CwhA9wmd.js";
3
+ import { X as messageAgent, b as init_agents, pt as stopAgent, vr as setAgentPaused } from "./queries-DCX27GRr.js";
4
+ import { t as init_tracker_utils } from "./tracker-utils-DZZq_C0R.js";
5
+ import { i as readReviewStatusMap, n as init_review_status_source } from "./review-status-source-DWnFE0b6.js";
6
+ import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-BOpBzkO6.js";
7
+ import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-DOgGnpIv.js";
8
+ import { m as readWorkspacePlanSync, o as init_io, t as XBriefMergeConflictError, v as init_types, y as subItemsOf } from "./io-C0NV7y6C.js";
9
+ import { n as init_shadow_utils } from "./shadow-utils-Ugca_9ND.js";
10
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-xpFgU632.js";
11
+ import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-VBr9gKgX.js";
12
+ import { i as runQualityGates, n as init_validation, t as DEFAULT_GATES } from "./validation-CnrDul1x.js";
13
+ import { r as writeVerificationArtifact, t as readVerificationArtifact } from "./verification-artifact-D4b-bio9.js";
14
+ import { i as readPendingDeploy, n as init_deploy_queue } from "./deploy-queue-CKT_Ia9p.js";
15
+ import { n as getXBriefACStatusSync } from "./acceptance-criteria-Cd7ZGZCq.js";
16
16
  import { join } from "node:path";
17
17
  import { Data, Effect } from "effect";
18
18
  import { basename as basename$1, dirname as dirname$1, join as join$1 } from "path";
@@ -654,7 +654,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
654
654
  verificationNotes: `Verification deferred: ${failedGate.error}. Workspace stack rebuild triggered; verification re-runs on the next cycle.`
655
655
  });
656
656
  try {
657
- const { rebuildWorkspaceStack } = await import("./rebuild-stack-qeRqHZxH.js");
657
+ const { rebuildWorkspaceStack } = await import("./rebuild-stack-BKYpIPDL.js");
658
658
  const rebuildResult = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[${logPrefix}] ${issueId} stack rebuild: ${m}`) }));
659
659
  if (!rebuildResult.success) console.warn(`[${logPrefix}] Stack rebuild for ${issueId} failed: ${rebuildResult.error}`);
660
660
  } catch (err) {
@@ -850,7 +850,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
850
850
  if (changesetHasContent === void 0) console.warn(`[${logPrefix}] empty-changeset guard skipped (one or more repo diffs failed)`);
851
851
  let lastVerifiedCommit;
852
852
  try {
853
- const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-CI6cwyyC.js");
853
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-CedsVume.js");
854
854
  lastVerifiedCommit = await snapshotWorkspaceHeadsPromise(issueId, workspacePath);
855
855
  } catch {}
856
856
  const prePassMergedOutcome = skipMergedVerification(issueId, logPrefix);
@@ -867,7 +867,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
867
867
  const repo = findProjectByPathSync(workspacePath)?.github_repo;
868
868
  if (!repo || !repo.includes("/")) return;
869
869
  const [owner, name] = repo.split("/");
870
- const { postOverdeckTestsStatus } = await import("./github-app-DtAsvwzK.js");
870
+ const { postOverdeckTestsStatus } = await import("./github-app-DIE8BkHI.js");
871
871
  await postOverdeckTestsStatus(workspacePath, owner, name, "success", "Verification gate passed");
872
872
  } catch (err) {
873
873
  console.warn(`[${logPrefix}] Failed to post overdeck/tests status: ${err.message}`);
@@ -905,4 +905,4 @@ function runVerificationForIssueInProcess(issueId, workspacePath, workspaceInfo,
905
905
  //#endregion
906
906
  export { workspaceChangesetHasContent as a, runVerificationForIssueInProcess as i, reconcileInterruptedVerifications as n, runVerificationForIssue as r, changesetHasNoContent as t };
907
907
 
908
- //# sourceMappingURL=verification-runner-KDZIsBj4.js.map
908
+ //# sourceMappingURL=verification-runner-B5MVxDvU.js.map
@@ -1,2 +1,2 @@
1
- import { n as reconcileInterruptedVerifications, r as runVerificationForIssue } from "./verification-runner-KDZIsBj4.js";
1
+ import { n as reconcileInterruptedVerifications, r as runVerificationForIssue } from "./verification-runner-B5MVxDvU.js";
2
2
  export { reconcileInterruptedVerifications, runVerificationForIssue };
@@ -107,4 +107,4 @@ function consolidateSpeakerCues(cues) {
107
107
  //#endregion
108
108
  export { vttToMarkdown };
109
109
 
110
- //# sourceMappingURL=vtt-parser-Jr94BF3Y.js.map
110
+ //# sourceMappingURL=vtt-parser-CMU5EZ5R.js.map
@@ -1,12 +1,12 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { An as extractTeamPrefix, Bt as readRecordContinueViewSync, Gn as init_projects, Nt as getProjectConfigFromWorkspacePath, Pn as findProjectByTeamSync, Pt as init_record, Vt as resolveProjectForIssue, t as init_config_yaml, u as isTldrEnabledSync } from "./config-yaml-CmOPzmBb.js";
3
- import { F as getReadableWorkspacePanPaths, d as readPlanSync, i as findPlanSync, o as init_io, p as readWorkspacePlan } from "./io-VHvc0Ssp.js";
4
- import { f as init_config, m as loadConfigSync } from "./config-Dr3pW6w6.js";
5
- import { i as NotImplementedError, o as init_interface } from "./rally-api-Dkqmok65.js";
6
- import { n as createTrackerFromConfig, r as init_factory } from "./factory-CRoOpGsF.js";
7
- import { i as createActiveSlice, l as init_dag, o as getDispatchableItems } from "./dag-ombYYt4s.js";
8
- import { l as readFeedback, n as readWorkspaceContext, r as writeWorkspaceContext, t as init_pan_dir } from "./pan-dir-ubraCiUg.js";
9
- import { n as renderPrompt, t as init_prompts } from "./prompts-BEx08AIu.js";
2
+ import { An as extractTeamPrefix, Bt as readRecordContinueViewSync, Gn as init_projects, Nt as getProjectConfigFromWorkspacePath, Pn as findProjectByTeamSync, Pt as init_record, Vt as resolveProjectForIssue, t as init_config_yaml, u as isTldrEnabledSync } from "./config-yaml-CxdwhAIA.js";
3
+ import { F as getReadableWorkspacePanPaths, d as readPlanSync, i as findPlanSync, o as init_io, p as readWorkspacePlan } from "./io-C0NV7y6C.js";
4
+ import { f as init_config, m as loadConfigSync } from "./config-CX4vk1CV.js";
5
+ import { i as NotImplementedError, o as init_interface } from "./rally-api-CzkKenoi.js";
6
+ import { n as createTrackerFromConfig, r as init_factory } from "./factory-BezSPaTd.js";
7
+ import { i as createActiveSlice, l as init_dag, o as getDispatchableItems } from "./dag-5QlmH0oC.js";
8
+ import { l as readFeedback, n as readWorkspaceContext, r as writeWorkspaceContext, t as init_pan_dir } from "./pan-dir-DAOb1V2-.js";
9
+ import { n as renderPrompt, t as init_prompts } from "./prompts-B0TtboFm.js";
10
10
  import { Effect } from "effect";
11
11
  import { existsSync, readdirSync, statSync } from "fs";
12
12
  import { dirname, join } from "path";
@@ -447,4 +447,4 @@ __esmMin((() => {
447
447
  }))();
448
448
  export { buildPolyrepoContext, buildWorkAgentPrompt, extractStitchDesigns, getTrackerContext, readFeatureContext, readPlanningContext, writeStoryFeatureContext };
449
449
 
450
- //# sourceMappingURL=work-agent-prompt-C-vuP3_J.js.map
450
+ //# sourceMappingURL=work-agent-prompt-Csb3fbVR.js.map
@@ -1,17 +1,18 @@
1
- import { Ft as markRecordPipelineClosedOutSync, Gr as OVERDECK_HOME, Lt as readIssueRecord, Nt as getProjectConfigFromWorkspacePath, Pt as init_record, Vt as resolveProjectForIssue, Wt as writeCloseOutDodGate, ci as init_paths, gr as init_issue_id, hr as extractPrefixSync, mr as extractNumberSync } from "./config-yaml-CmOPzmBb.js";
2
- import { C as capturePipelineStage, E as resolvePipelineTelemetryContext, T as init_pipeline, f as init_review_status, l as getReviewStatus } from "./review-status-yljtTd-q.js";
3
- import { b as init_agents, i as listRunningAgents } from "./queries-DHJm7bTd.js";
4
- import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population--YUXU999.js";
5
- import { f as init_config, s as getDashboardApiUrlSync } from "./config-Dr3pW6w6.js";
6
- import { i as loadCloisterConfig, r as init_config$1 } from "./config-B2IMcBxx.js";
7
- import { r as getAutoCloseOutCanonicalState, t as pruneStoppedAgentsForIssue } from "./agent-gc-CBULruzm.js";
8
- import { i as findWorkspacePath, t as archivePlanning } from "./archive-planning-C0lAbNB_.js";
9
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-q67TYYg5.js";
10
- import { t as closeIssue } from "./close-issue-D5MF5GqF.js";
11
- import { i as gatherIssueBranchContainment, s as init_pipeline_membership_gather } from "./pipeline-membership-gather-CET40frr.js";
12
- import { o as init_pull_requests, r as fetchIssuePullRequest, t as fetchCommitCheckRuns } from "./pull-requests-DHWiKxo7.js";
13
- import { i as canAcceptDodMisses, n as DOD_ROWS, r as acceptFlagFor, t as BRANCH_ABSENT_MERGE_ERROR } from "./dod-Dar-yheg.js";
14
- import { t as teardownWorkspace } from "./teardown-workspace-l2F4_zim.js";
1
+ import { Ft as markRecordPipelineClosedOutSync, Gr as OVERDECK_HOME, Lt as readIssueRecord, Nt as getProjectConfigFromWorkspacePath, Pt as init_record, Vt as resolveProjectForIssue, Wt as writeCloseOutDodGate, gr as init_issue_id, hr as extractPrefixSync, li as init_paths, mr as extractNumberSync } from "./config-yaml-CxdwhAIA.js";
2
+ import { D as resolvePipelineTelemetryContext, E as init_pipeline, p as init_review_status, u as getReviewStatus, w as capturePipelineStage } from "./review-status-CwhA9wmd.js";
3
+ import { b as init_agents, i as listRunningAgents } from "./queries-DCX27GRr.js";
4
+ import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-DhswNiXx.js";
5
+ import { f as init_config, s as getDashboardApiUrlSync } from "./config-CX4vk1CV.js";
6
+ import { i as loadCloisterConfig, r as init_config$1 } from "./config-ktAVnp4s.js";
7
+ import { r as getAutoCloseOutCanonicalState, t as pruneStoppedAgentsForIssue } from "./agent-gc-BMcgTDl7.js";
8
+ import { i as isTrackerIssueClosed, n as init_issue_closed } from "./issue-closed-CNNGbhWm.js";
9
+ import { i as findWorkspacePath, t as archivePlanning } from "./archive-planning-Binfb99i.js";
10
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-Dh6RI5Vj.js";
11
+ import { i as gatherIssueBranchContainment, s as init_pipeline_membership_gather } from "./pipeline-membership-gather-BIcJ-N0W.js";
12
+ import { t as closeIssue } from "./close-issue-BX1bATJy.js";
13
+ import { o as init_pull_requests, r as fetchIssuePullRequest, t as fetchCommitCheckRuns } from "./pull-requests-BonZ4WVG.js";
14
+ import { a as canAcceptDodMisses, i as buildAbandonedDodGate, n as DOD_ROWS, r as acceptFlagFor, t as BRANCH_ABSENT_MERGE_ERROR } from "./dod-Bg6wsKTV.js";
15
+ import { t as teardownWorkspace } from "./teardown-workspace-CvBpvc85.js";
15
16
  import { resolve } from "node:path";
16
17
  import { Effect } from "effect";
17
18
  import { existsSync } from "fs";
@@ -33,6 +34,7 @@ init_agents();
33
34
  init_config();
34
35
  init_review_status();
35
36
  init_record();
37
+ init_issue_closed();
36
38
  init_pull_requests();
37
39
  init_pipeline_membership_gather();
38
40
  const execFileAsync = promisify(execFile);
@@ -63,6 +65,7 @@ const defaultMergedRowDeps = {
63
65
  }
64
66
  };
65
67
  const defaultPostMergeRowDeps = {
68
+ readStrikeLanded: async (issueId) => strikeLanded((await loadStatus(issueId, defaultDeps))?.status),
66
69
  readCanonicalState: async (ctx) => {
67
70
  return getAutoCloseOutCanonicalState(ctx.issueId);
68
71
  },
@@ -78,13 +81,14 @@ const defaultMainVerifyRowDeps = { readCheckRuns: async (ctx, mergeCommit) => {
78
81
  return fetchCommitCheckRuns(ctx.github.owner, ctx.github.repo, mergeCommit);
79
82
  } };
80
83
  const defaultEvaluateDodGateDeps = {
81
- review: checkReviewRow,
82
- tests: checkTestsRow,
83
- verification: checkVerificationRow,
84
+ review: (issueId, settlement) => checkReviewRow(issueId, defaultDeps, settlement),
85
+ tests: (issueId, settlement) => checkTestsRow(issueId, defaultDeps, settlement),
86
+ verification: (issueId, settlement) => checkVerificationRow(issueId, defaultDeps, settlement),
84
87
  merged: checkMergedRow,
85
88
  postMerge: checkPostMergeRow,
86
89
  mainVerify: checkMainVerifyRow,
87
90
  deploy: checkDeployRow,
91
+ trackerClosed: isTrackerIssueClosed,
88
92
  now: () => (/* @__PURE__ */ new Date()).toISOString()
89
93
  };
90
94
  const defaultDeployRowDeps = {
@@ -150,21 +154,66 @@ async function loadStatus(issueId, deps) {
150
154
  return null;
151
155
  }
152
156
  }
153
- async function checkVerdict(issueId, id, field, deps) {
157
+ /**
158
+ * PAN-3180: `landed` is the strike path's own durable statement that this issue's
159
+ * work reached main through `strike/<id>`. It is written by the server merge door
160
+ * (`mergeCompletionStatus` in `merge-strike.ts`) and mirrored into the per-issue
161
+ * record's `pipeline` block, so it outlives review-status clearing. Every earlier
162
+ * landing state (`ready`/`landing`/`recovering`/`needs_you`) is a strike still in
163
+ * flight and earns no waiver.
164
+ */
165
+ function strikeLanded(status) {
166
+ return status?.strikeLandingState === "landed";
167
+ }
168
+ /**
169
+ * PAN-3180: a strike dispatches neither a review nor a test specialist — that
170
+ * bypass is the whole point of the path. So for a strike-landed issue these rows
171
+ * are `skip` (deliberately not run), never `pass` (ran and succeeded) and never
172
+ * `miss` (outstanding). A reader of the close-out record still sees the real
173
+ * verdict and the reason it was never produced.
174
+ */
175
+ const STRIKE_BYPASS_NOTE = {
176
+ review: "no review specialist is dispatched for a strike",
177
+ tests: "no test specialist is dispatched for a strike"
178
+ };
179
+ /**
180
+ * A specialist that ran and returned a negative verdict is a different fact from
181
+ * one that was never dispatched, so the strike waiver never covers it — those
182
+ * still block until an operator records an explicit `--accept-<row>` override.
183
+ */
184
+ const NEGATIVE_VERDICTS = new Set([
185
+ "failed",
186
+ "blocked",
187
+ "dispatch_failed"
188
+ ]);
189
+ /**
190
+ * PAN-3187: a tracker-closed issue with landed work cannot produce a verdict it
191
+ * never produced while active. Negative test/verification verdicts settle only
192
+ * when main verification proves the landed state green; review negatives remain.
193
+ */
194
+ function terminalVerdictSettlement(id, value, observed, settlement) {
195
+ if (!settlement?.trackerClosed || !settlement.landedWork) return null;
196
+ if (!NEGATIVE_VERDICTS.has(value ?? "")) return result(id, "skip", `${observed}; settled because the tracker issue is closed and merged work is landed`);
197
+ if (id !== "review" && settlement.mainVerifyStatus === "pass") return result(id, "skip", `${observed}; superseded because the tracker issue is closed, merged work is landed, and main verification passed`);
198
+ return null;
199
+ }
200
+ async function checkVerdict(issueId, id, field, deps, settlement) {
154
201
  const loaded = await loadStatus(issueId, deps);
155
202
  if (!loaded) return result(id, "miss", "no review status or journal record found");
156
203
  const value = loaded.status[field];
157
204
  const source = loaded.source === "journal" ? " from pipeline journal" : "";
158
205
  const observed = `${field}: ${value ?? "missing"}${source}${value === "skipped" ? " (skipped per issue policy)" : ""}`;
159
- return result(id, value === "passed" || value === "skipped" ? "pass" : "miss", observed);
206
+ if (value === "passed" || value === "skipped") return result(id, "pass", observed);
207
+ if (strikeLanded(loaded.status) && !NEGATIVE_VERDICTS.has(value ?? "")) return result(id, "skip", `${observed}; skipped by the strike path (strikeLandingState: landed) — ${STRIKE_BYPASS_NOTE[id]}`);
208
+ return terminalVerdictSettlement(id, value, observed, settlement) ?? result(id, "miss", observed);
160
209
  }
161
- function checkReviewRow(issueId, deps = defaultDeps) {
162
- return checkVerdict(issueId, "review", "reviewStatus", deps);
210
+ function checkReviewRow(issueId, deps = defaultDeps, settlement) {
211
+ return checkVerdict(issueId, "review", "reviewStatus", deps, settlement);
163
212
  }
164
- function checkTestsRow(issueId, deps = defaultDeps) {
165
- return checkVerdict(issueId, "tests", "testStatus", deps);
213
+ function checkTestsRow(issueId, deps = defaultDeps, settlement) {
214
+ return checkVerdict(issueId, "tests", "testStatus", deps, settlement);
166
215
  }
167
- async function checkVerificationRow(issueId, deps = defaultDeps) {
216
+ async function checkVerificationRow(issueId, deps = defaultDeps, settlement) {
168
217
  const loaded = await loadStatus(issueId, deps);
169
218
  if (!loaded) return result("verification", "miss", "no review status or journal record found");
170
219
  const value = loaded.status.verificationStatus;
@@ -175,7 +224,8 @@ async function checkVerificationRow(issueId, deps = defaultDeps) {
175
224
  if (value === "skipped") notes.push("skipped per issue policy");
176
225
  if (accepted && !commit) notes.push("no lastVerifiedCommit recorded");
177
226
  const observed = `verificationStatus: ${value ?? "missing"}${commit ? ` at ${commit}` : ""}${notes.length > 0 ? ` (${notes.join("; ")})` : ""}`;
178
- return result("verification", accepted ? "pass" : "miss", observed);
227
+ if (accepted) return result("verification", "pass", observed);
228
+ return terminalVerdictSettlement("verification", value, observed, settlement) ?? result("verification", "miss", observed);
179
229
  }
180
230
  async function checkMergedRow(ctx, deps = defaultMergedRowDeps) {
181
231
  const verified = await deps.verifyMerged(ctx).catch((error) => ({
@@ -237,7 +287,10 @@ async function checkPostMergeRow(ctx, merged, deps = defaultPostMergeRowDeps) {
237
287
  const runningAgents = (await deps.listAgents()).filter((agent) => agent.issueId.toUpperCase() === issueId && (agent.role === "work" || agent.role === "plan") && (agent.status === "starting" || agent.status === "running"));
238
288
  const stateObserved = canonicalState ? `canonical state: ${canonicalState}` : `canonical state unavailable; mergeStatus: ${mergeStatus ?? "missing"}`;
239
289
  const agentsObserved = runningAgents.length > 0 ? `running agents: ${runningAgents.map((agent) => agent.id).join(", ")}` : "no running work/planning agents";
290
+ if (canonicalState === "done") return result("post-merge", runningAgents.length === 0 ? "pass" : "miss", `terminal canonical state: done — the post-merge lifecycle already ran to close-out; ${agentsObserved}`);
291
+ if (canonicalState === "canceled") return result("post-merge", runningAgents.length === 0 ? "skip" : "miss", `terminal canonical state: canceled — post-merge lifecycle not applicable; ${agentsObserved}`);
240
292
  const lifecycleObserved = canonicalState === "verifying_on_main" || mergeStatus === "merged";
293
+ if (!lifecycleObserved && await (deps.readStrikeLanded ?? defaultPostMergeRowDeps.readStrikeLanded)(ctx.issueId)) return result("post-merge", runningAgents.length === 0 ? "skip" : "miss", `strike landing (strikeLandingState: landed) — the work-agent post-merge handoff is not the strike path's lifecycle; ${stateObserved}; ${agentsObserved}`);
241
294
  if (!lifecycleObserved && merged?.evidence === "branch-containment") return result("post-merge", runningAgents.length === 0 ? "pass" : "miss", `non-PR landing (branch-containment evidence) — post-merge lifecycle not applicable; ${agentsObserved}`);
242
295
  return result("post-merge", lifecycleObserved && runningAgents.length === 0 ? "pass" : "miss", `${stateObserved}; ${agentsObserved}`);
243
296
  } catch (error) {
@@ -258,6 +311,7 @@ async function checkMainVerifyRow(ctx, mergeCommit, deps = defaultMainVerifyRowD
258
311
  async function checkDeployRow(ctx, merge, deps = defaultDeployRowDeps) {
259
312
  if (!merge.mergeCommit) {
260
313
  if (merge.mergedRowStatus === "miss") return result("deploy", "skip", "no merge commit resolved because the merged row missed — deploy ancestry depends on row 4; build ancestry unchecked");
314
+ if (merge.mainVerifyRowStatus === "skip") return result("deploy", "skip", "verified-on-main skipped — no merge commit resolvable, so deploy build-ancestry has no durable anchor either (same landing class as DoD row 6 skip)");
261
315
  return result("deploy", "miss", "merged row passed without a resolvable merge commit; build ancestry cannot be checked");
262
316
  }
263
317
  const baseUrl = deps.dashboardUrl().replace(/\/$/, "");
@@ -292,19 +346,33 @@ async function evaluateDodGate(ctx, opts = {}, deps = defaultEvaluateDodGateDeps
292
346
  ...defaultMergedRowDeps,
293
347
  verifyMerged: opts.verifyMerged
294
348
  }) : await deps.merged(ctx);
295
- const rows = await Promise.all([
296
- deps.review(ctx.issueId),
297
- deps.tests(ctx.issueId),
298
- deps.verification(ctx.issueId),
299
- Promise.resolve(merged),
349
+ const mainVerify = await deps.mainVerify(ctx, merged.mergeCommit);
350
+ const settlement = {
351
+ trackerClosed: await (deps.trackerClosed ?? defaultEvaluateDodGateDeps.trackerClosed)(ctx.issueId),
352
+ landedWork: merged.status === "pass",
353
+ mainVerifyStatus: mainVerify.status
354
+ };
355
+ const [review, tests, verification, postMerge, deploy] = await Promise.all([
356
+ deps.review(ctx.issueId, settlement),
357
+ deps.tests(ctx.issueId, settlement),
358
+ deps.verification(ctx.issueId, settlement),
300
359
  deps.postMerge(ctx, merged),
301
- deps.mainVerify(ctx, merged.mergeCommit),
302
360
  deps.deploy(ctx, {
303
361
  mergedAt: merged.mergedAt,
304
362
  mergeCommit: merged.mergeCommit,
305
- mergedRowStatus: merged.status
363
+ mergedRowStatus: merged.status,
364
+ mainVerifyRowStatus: mainVerify.status
306
365
  })
307
366
  ]);
367
+ const rows = [
368
+ review,
369
+ tests,
370
+ verification,
371
+ merged,
372
+ postMerge,
373
+ mainVerify,
374
+ deploy
375
+ ];
308
376
  for (const row of rows) if (row.status === "miss" && acceptedRows.has(row.id)) row.acceptedBy = {
309
377
  flag: acceptFlagFor(rowDefinition(row.id)),
310
378
  by,
@@ -417,7 +485,7 @@ function closeOut(ctx, opts = {}) {
417
485
  const allSteps = [];
418
486
  const uatEvidenceStep = yield* Effect.promise(async () => {
419
487
  try {
420
- const { healUatPromotionVerification } = await import("./uat-promote-verification-CKB9ZrKC.js");
488
+ const { healUatPromotionVerification } = await import("./uat-promote-verification-DyvQXvIn.js");
421
489
  const evidence = await healUatPromotionVerification(ctx.issueId);
422
490
  if (!evidence) return stepSkipped("dod:uat-promotion-evidence", ["No missing UAT-promotion verification evidence found"]);
423
491
  return stepOk("dod:uat-promotion-evidence", [`Recorded verification from ${evidence.generation}`, ...evidence.mergeSha ? [`Promoted to main at ${evidence.mergeSha.slice(0, 9)}`] : []]);
@@ -426,7 +494,8 @@ function closeOut(ctx, opts = {}) {
426
494
  }
427
495
  });
428
496
  allSteps.push(uatEvidenceStep);
429
- const dodGate = yield* Effect.promise(() => evaluateDodGate(ctx, {
497
+ const abandon = opts.abandonDisposition;
498
+ const dodGate = abandon ? buildAbandonedDodGate(abandon.reason, abandon.by) : yield* Effect.promise(() => evaluateDodGate(ctx, {
430
499
  acceptedRows: opts.dodAcceptedRows,
431
500
  acceptedBy: opts.dodAcceptedBy,
432
501
  verifyMerged: verifyBranchMergedImpl
@@ -480,7 +549,7 @@ function closeOut(ctx, opts = {}) {
480
549
  });
481
550
  const closeSteps = yield* closeIssue(ctx, {
482
551
  tracker: opts.tracker,
483
- comment: ctx.auto ? "Closed via automatic close-out ceremony" : "Closed via close-out ceremony",
552
+ comment: abandon ? `Closed without landing evidence — disposition recorded: ${abandon.reason}` : ctx.auto ? "Closed via automatic close-out ceremony" : "Closed via close-out ceremony",
484
553
  applyLabel: true
485
554
  });
486
555
  allSteps.push(...closeSteps);
@@ -490,7 +559,7 @@ function closeOut(ctx, opts = {}) {
490
559
  }
491
560
  const markTerminal = yield* markPipelineClosedOutStep(ctx);
492
561
  allSteps.push(markTerminal);
493
- const recordDodGate = yield* recordDodGateStep(ctx, dodGate);
562
+ const recordDodGate = yield* recordDodGateStep(ctx, dodGate, abandon);
494
563
  allSteps.push(recordDodGate);
495
564
  if (!recordDodGate.success) {
496
565
  allSteps.push(stepFailed("close-out:abort", "Stopped — Definition-of-Done audit could not be persisted; review status preserved"));
@@ -522,14 +591,15 @@ function markPipelineClosedOutStep(ctx) {
522
591
  catch: (err) => err
523
592
  }).pipe(Effect.catch((err) => Effect.succeed(stepSkipped(step, [`Pipeline terminal marker failed (non-fatal): ${err.message ?? String(err)}`]))));
524
593
  }
525
- function recordDodGateStep(ctx, dodGate) {
594
+ function recordDodGateStep(ctx, dodGate, abandonDisposition) {
526
595
  const step = "close-out:record-dod-gate";
527
596
  return Effect.tryPromise({
528
597
  try: async () => {
529
598
  await writeCloseOutDodGate(getProjectConfigFromWorkspacePath(ctx.projectPath), ctx.issueId.toUpperCase(), {
530
599
  evaluatedAt: (/* @__PURE__ */ new Date()).toISOString(),
531
600
  rows: dodGate.rows,
532
- accepted: dodGate.accepted
601
+ accepted: dodGate.accepted,
602
+ ...abandonDisposition ? { disposition: abandonDisposition } : {}
533
603
  });
534
604
  return stepOk(step, ["Recorded Definition-of-Done gate with 8 rows"]);
535
605
  },
@@ -614,7 +684,7 @@ function cancelIssueWorkflow(ctx, opts = {}) {
614
684
  async function completeXBriefStep(ctx) {
615
685
  const step = "close-out:vbrief-completed";
616
686
  try {
617
- const { transitionXBriefOnMain } = await import("./lifecycle-io-D_zTLvP1.js");
687
+ const { transitionXBriefOnMain } = await import("./lifecycle-io-eVG6v_8-.js");
618
688
  const result = await Effect.runPromise(transitionXBriefOnMain(ctx.projectPath, ctx.issueId, "completed", "completed", `scope: complete ${ctx.issueId.toUpperCase()} xBRIEF`));
619
689
  const details = [result.moved ? "Updated xBRIEF lifecycle to completed" : "xBRIEF lifecycle already completed", result.statusUpdated ? "Updated plan.status to completed" : "plan.status already completed"];
620
690
  if (result.committed) details.push("Committed xBRIEF completion on main");
@@ -633,7 +703,7 @@ async function verifyBranchMergedImpl(ctx) {
633
703
  const strikeBranchName = `strike/${issueLower}`;
634
704
  try {
635
705
  try {
636
- const { loadReviewStatuses } = await import("./review-status-BZH8h-6W.js");
706
+ const { loadReviewStatuses } = await import("./review-status-CacDM78F.js");
637
707
  if (loadReviewStatuses()[ctx.issueId.toUpperCase()]?.mergeStatus === "merged") return stepOk(step, ["Merge specialist confirmed merge completed"]);
638
708
  } catch {}
639
709
  const featureResult = await verifyConventionBranchMerged(ctx, featureBranchName);
@@ -866,7 +936,7 @@ async function resetIssueToTodoImpl(ctx) {
866
936
  */
867
937
  async function resetPostMergeStateForIssue(issueId) {
868
938
  try {
869
- const { resetPostMergeState } = await import("./merge-agent-DrXa1CpW.js");
939
+ const { resetPostMergeState } = await import("./merge-agent-C1-9zbP_.js");
870
940
  resetPostMergeState(issueId);
871
941
  resetPostMergeState(issueId.toUpperCase());
872
942
  } catch {
@@ -882,7 +952,7 @@ function clearReviewStatusStep(issueId) {
882
952
  async function clearReviewStatusStepImpl(issueId) {
883
953
  const step = "clear-review-status";
884
954
  try {
885
- const { clearReviewStatus } = await import("./review-status-BZH8h-6W.js");
955
+ const { clearReviewStatus } = await import("./review-status-CacDM78F.js");
886
956
  clearReviewStatus(issueId.toUpperCase());
887
957
  return stepOk(step, ["Review status cleared"]);
888
958
  } catch {
@@ -949,4 +1019,4 @@ async function resetIssueToCanceledImpl(ctx) {
949
1019
  //#endregion
950
1020
  export { deepWipe as a, closeOut as i, cancelIssueWorkflow as n, resetToTodo as o, close as r, verifyBranchMergedImpl as s, approve as t };
951
1021
 
952
- //# sourceMappingURL=workflows-D0oip4eV.js.map
1022
+ //# sourceMappingURL=workflows-D87ajwV6.js.map
@@ -0,0 +1,2 @@
1
+ import { a as deepWipe, i as closeOut } from "./workflows-D87ajwV6.js";
2
+ export { closeOut, deepWipe };
@@ -1,3 +1,3 @@
1
- import { i as injectMemoryHookSettings, n as init_workspace, r as injectCavemanSettings, t as determineCavemanVariant } from "./workspace-C0fH3aek.js";
1
+ import { i as injectMemoryHookSettings, n as init_workspace, r as injectCavemanSettings, t as determineCavemanVariant } from "./workspace-iD8oULqu.js";
2
2
  init_workspace();
3
3
  export { determineCavemanVariant, injectCavemanSettings, injectMemoryHookSettings };
@@ -1,3 +1,3 @@
1
- import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-CZKofakh.js";
1
+ import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-C3mK5wNI.js";
2
2
  init_workspace_anchor_drift();
3
3
  export { evaluateWorkspaceAnchorDrift };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { _n as isStatePlanePath, hn as init_state_plane, pn as STATE_PLANE_PATHS } from "./config-yaml-CmOPzmBb.js";
3
- import { a as init_git_utils, o as parseCompositeSnapshot, u as snapshotWorkspaceHeadsPromise } from "./git-utils-ameCgDdy.js";
2
+ import { _n as isStatePlanePath, hn as init_state_plane, pn as STATE_PLANE_PATHS } from "./config-yaml-CxdwhAIA.js";
3
+ import { a as init_git_utils, o as parseCompositeSnapshot, u as snapshotWorkspaceHeadsPromise } from "./git-utils-DtdoEXJk.js";
4
4
  import { execFile, spawn } from "child_process";
5
5
  import { promisify } from "util";
6
6
  //#region ../../lib/pipeline-state-paths.ts
@@ -156,7 +156,7 @@ async function evaluateWorkspaceAnchorDrift(issueId, workspacePath, storedAnchor
156
156
  currentAnchor
157
157
  };
158
158
  try {
159
- const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-CRE6Ykow.js");
159
+ const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-BgW4lcIa.js");
160
160
  const roots = resolveWorkspaceRepoRootsSync(issueId, workspacePath);
161
161
  if (!storedIsComposite) {
162
162
  const root = roots[0];
@@ -221,4 +221,4 @@ var init_workspace_anchor_drift = __esmMin((() => {
221
221
  //#endregion
222
222
  export { init_workspace_anchor_drift as n, evaluateWorkspaceAnchorDrift as t };
223
223
 
224
- //# sourceMappingURL=workspace-anchor-drift-CZKofakh.js.map
224
+ //# sourceMappingURL=workspace-anchor-drift-C3mK5wNI.js.map
@@ -25,4 +25,4 @@ var init_workspace_config = __esmMin((() => {}));
25
25
  //#endregion
26
26
  export { init_workspace_config as n, replacePlaceholdersSync as r, getDefaultWorkspaceConfigSync as t };
27
27
 
28
- //# sourceMappingURL=workspace-config-B123aZl-.js.map
28
+ //# sourceMappingURL=workspace-config-CJ7RqQiP.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors, Tr as FsError } from "./config-yaml-CmOPzmBb.js";
3
- import { i as init_settings, t as areMemoryObservationsEnabled } from "./settings-Bse1Pdcj.js";
2
+ import { Fr as init_errors, Tr as FsError } from "./config-yaml-CxdwhAIA.js";
3
+ import { i as init_settings, t as areMemoryObservationsEnabled } from "./settings-BLbcDqUp.js";
4
4
  import { Effect } from "effect";
5
5
  import { existsSync } from "fs";
6
6
  import { join } from "path";
@@ -238,4 +238,4 @@ var init_workspace = __esmMin((() => {
238
238
  //#endregion
239
239
  export { readCavemanVariant as a, injectMemoryHookSettings as i, init_workspace as n, injectCavemanSettings as r, determineCavemanVariant as t };
240
240
 
241
- //# sourceMappingURL=workspace-C0fH3aek.js.map
241
+ //# sourceMappingURL=workspace-iD8oULqu.js.map
@@ -1,3 +1,3 @@
1
- import { a as removeWorkspace, i as preTrustDirectory, m as copyOverdeckSettingsToWorkspaceSync, o as stopWorkspaceDocker, r as init_workspace_manager, t as createWorkspace, u as preTrustDirectorySync } from "./workspace-manager-CwO-Hek7.js";
1
+ import { a as removeWorkspace, i as preTrustDirectory, m as copyOverdeckSettingsToWorkspaceSync, o as stopWorkspaceDocker, r as init_workspace_manager, t as createWorkspace, u as preTrustDirectorySync } from "./workspace-manager-CXfrw4rR.js";
2
2
  init_workspace_manager();
3
3
  export { copyOverdeckSettingsToWorkspaceSync, createWorkspace, preTrustDirectory, preTrustDirectorySync, removeWorkspace, stopWorkspaceDocker };
@@ -1,12 +1,12 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as CACHE_RULES_DIR, Fr as init_errors, Gn as init_projects, Qr as SYNC_SOURCES, Tr as FsError, Zr as SKILLS_DIR, ci as init_paths, f as loadConfigSync, jr as ProcessSpawnError, t as init_config_yaml, zr as CACHE_AGENTS_DIR } from "./config-yaml-CmOPzmBb.js";
3
- import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, s as PAN_FEEDBACK_DIRNAME } from "./types-hraoaQIp.js";
4
- import { t as init_pan_dir } from "./pan-dir-ubraCiUg.js";
5
- import { n as init_workspace_config, r as replacePlaceholdersSync, t as getDefaultWorkspaceConfigSync } from "./workspace-config-B123aZl-.js";
6
- import { n as init_tunnel, r as removeTunnelIngress, t as addTunnelIngress } from "./tunnel-BAm1XgjG.js";
7
- import { i as init_hume, n as createHumeConfig, r as deleteHumeConfig } from "./hume-CDYJxqx-.js";
8
- import { a as renderDevcontainerSync, i as processTemplatesSync, n as createWorkspacePlaceholdersSync, o as sanitizeComposeFileSync, r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-68CSCRnu.js";
9
- import { n as init_docker, r as stopWorkspaceDockerPromise, t as getContainersReferencingWorkspacePathPromise } from "./docker-Dam7mbIB.js";
2
+ import { Br as CACHE_RULES_DIR, Fr as init_errors, Gn as init_projects, Qr as SYNC_SOURCES, Tr as FsError, Zr as SKILLS_DIR, f as loadConfigSync, jr as ProcessSpawnError, li as init_paths, t as init_config_yaml, zr as CACHE_AGENTS_DIR } from "./config-yaml-CxdwhAIA.js";
3
+ import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, s as PAN_FEEDBACK_DIRNAME } from "./types-D2ETIB8T.js";
4
+ import { t as init_pan_dir } from "./pan-dir-DAOb1V2-.js";
5
+ import { n as init_workspace_config, r as replacePlaceholdersSync, t as getDefaultWorkspaceConfigSync } from "./workspace-config-CJ7RqQiP.js";
6
+ import { n as init_tunnel, r as removeTunnelIngress, t as addTunnelIngress } from "./tunnel-Bdyb-sNq.js";
7
+ import { i as init_hume, n as createHumeConfig, r as deleteHumeConfig } from "./hume-DBocJFkA.js";
8
+ import { a as renderDevcontainerSync, i as processTemplatesSync, n as createWorkspacePlaceholdersSync, o as sanitizeComposeFileSync, r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-66sqMQIi.js";
9
+ import { n as init_docker, r as stopWorkspaceDockerPromise, t as getContainersReferencingWorkspacePathPromise } from "./docker-CoAT8R0J.js";
10
10
  import { join } from "node:path";
11
11
  import { Effect } from "effect";
12
12
  import { chmodSync, copyFileSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "fs";
@@ -1125,7 +1125,7 @@ async function createWorkspacePromise(options) {
1125
1125
  await execAsync$1(`cp -r "${mainTldrDir}" "${workspaceTldrDir}"`);
1126
1126
  result.steps.push("Copied TLDR index from main branch");
1127
1127
  }
1128
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BKOYB616.js");
1128
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Ca0eovh3.js");
1129
1129
  const tldrService = getTldrDaemonServiceSync(workspacePath, venvPath);
1130
1130
  await tldrService.start(true);
1131
1131
  result.steps.push("Started TLDR daemon");
@@ -1246,7 +1246,7 @@ async function createWorkspacePromise(options) {
1246
1246
  result.steps.push("Pre-trusted workspace in Claude Code");
1247
1247
  } catch {}
1248
1248
  try {
1249
- const { determineCavemanVariant, injectCavemanSettings } = await import("./workspace-BqFg__wH.js");
1249
+ const { determineCavemanVariant, injectCavemanSettings } = await import("./workspace-AIOM7n00.js");
1250
1250
  const cavemanConfig = loadConfigSync().config.caveman;
1251
1251
  const variant = determineCavemanVariant(cavemanConfig);
1252
1252
  await Effect.runPromise(injectCavemanSettings(workspacePath, variant));
@@ -1262,7 +1262,7 @@ async function createWorkspacePromise(options) {
1262
1262
  result.steps.push(`Overdeck settings copy skipped: ${settingsErr instanceof Error ? settingsErr.message : String(settingsErr)}`);
1263
1263
  }
1264
1264
  try {
1265
- const { injectMemoryHookSettings } = await import("./workspace-BqFg__wH.js");
1265
+ const { injectMemoryHookSettings } = await import("./workspace-AIOM7n00.js");
1266
1266
  await injectMemoryHookSettings(workspacePath);
1267
1267
  result.steps.push("Injected memory hooks into .claude/settings.json");
1268
1268
  } catch (memoryHookErr) {
@@ -1347,7 +1347,7 @@ async function removeWorkspacePromise(options) {
1347
1347
  }
1348
1348
  const venvPath = join$1(workspacePath, ".venv");
1349
1349
  if (existsSync(venvPath)) try {
1350
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BKOYB616.js");
1350
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Ca0eovh3.js");
1351
1351
  await getTldrDaemonServiceSync(workspacePath, venvPath).stop();
1352
1352
  result.steps.push("Stopped TLDR daemon");
1353
1353
  } catch (error) {
@@ -1469,4 +1469,4 @@ var init_workspace_manager = __esmMin((() => {
1469
1469
  //#endregion
1470
1470
  export { removeWorkspace as a, installGitHooksInDir as c, relocateVenvScripts as d, detectPlatform as f, ensurePanGitignoreSync as h, preTrustDirectory as i, installPreRebaseHook as l, copyOverdeckSettingsToWorkspaceSync as m, getContainersReferencingWorkspacePath as n, stopWorkspaceDocker as o, init_platform as p, init_workspace_manager as r, init_git_hooks as s, createWorkspace as t, preTrustDirectorySync as u };
1471
1471
 
1472
- //# sourceMappingURL=workspace-manager-CwO-Hek7.js.map
1472
+ //# sourceMappingURL=workspace-manager-CXfrw4rR.js.map
@@ -1,2 +1,2 @@
1
- import { n as deleteWorkspaceMetadataSync } from "./workspace-metadata-CQv00QwK.js";
1
+ import { n as deleteWorkspaceMetadataSync } from "./workspace-metadata-eHSj_NsP.js";
2
2
  export { deleteWorkspaceMetadataSync };