@deftai/directive-runtime 0.129.4 → 0.129.6

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 (303) hide show
  1. package/Taskfile.yml +235 -0
  2. package/UPGRADING.md +1 -0
  3. package/contracts/design-critique.md +1 -1
  4. package/contracts/path-write-fence.md +6 -0
  5. package/dist/applying-host-release.d.ts +16 -0
  6. package/dist/applying-host-release.js +98 -0
  7. package/dist/authz.d.ts +1 -1
  8. package/dist/authz.js +1 -1
  9. package/dist/check.d.ts +1 -0
  10. package/dist/check.js +27 -4
  11. package/dist/design-critique-ensure-arc-dest.d.ts +16 -0
  12. package/dist/design-critique-ensure-arc-dest.js +168 -0
  13. package/dist/dispatch.d.ts +1 -1
  14. package/dist/dispatch.js +8 -0
  15. package/dist/hook-dispatch.js +11 -5
  16. package/dist/human-presence-mint.d.ts +6 -1
  17. package/dist/human-presence-mint.js +20 -6
  18. package/dist/pre-pr-run.d.ts +7 -1
  19. package/dist/pre-pr-run.js +25 -1
  20. package/dist/session-start.js +40 -6
  21. package/dist/setup-wiring.d.ts +36 -0
  22. package/dist/setup-wiring.js +169 -14
  23. package/dist/verify-ac.d.ts +7 -2
  24. package/dist/verify-ac.js +13 -5
  25. package/dist/verify-source-cli/verify-deposit-closure.js +5 -5
  26. package/dist/windows-bin-ps1.d.ts +2 -2
  27. package/dist/windows-bin-ps1.js +5 -11
  28. package/docs/deft-directive-disable.md +3 -3
  29. package/docs/scope-provenance.md +4 -0
  30. package/package.json +2 -3
  31. package/packs/lessons/lessons-pack-0.1.json +15 -0
  32. package/packs/skills/skills-pack-0.1.json +2 -2
  33. package/skills/deft-directive-design-critique/SKILL.md +1 -1
  34. package/skills/deft-directive-release/SKILL.md +54 -1
  35. package/tasks/materialize.cjs +106 -5
  36. package/tasks/materialize.test.cjs +108 -0
  37. package/tasks/materialize.yml +14 -2
  38. package/vendor/directive-content/Taskfile.yml +235 -0
  39. package/vendor/directive-content/UPGRADING.md +1 -0
  40. package/vendor/directive-content/contracts/design-critique.md +1 -1
  41. package/vendor/directive-content/contracts/path-write-fence.md +6 -0
  42. package/vendor/directive-content/docs/deft-directive-disable.md +3 -3
  43. package/vendor/directive-content/docs/scope-provenance.md +4 -0
  44. package/vendor/directive-content/packs/lessons/lessons-pack-0.1.json +15 -0
  45. package/vendor/directive-content/packs/skills/skills-pack-0.1.json +2 -2
  46. package/vendor/directive-content/skills/deft-directive-design-critique/SKILL.md +1 -1
  47. package/vendor/directive-content/skills/deft-directive-release/SKILL.md +54 -1
  48. package/vendor/directive-content/tasks/materialize.cjs +106 -5
  49. package/vendor/directive-content/tasks/materialize.test.cjs +108 -0
  50. package/vendor/directive-content/tasks/materialize.yml +14 -2
  51. package/vendor/directive-core/dist/.tsbuildinfo +1 -1
  52. package/vendor/directive-core/dist/authz/classify.d.ts +18 -0
  53. package/vendor/directive-core/dist/authz/classify.d.ts.map +1 -1
  54. package/vendor/directive-core/dist/authz/classify.js +196 -14
  55. package/vendor/directive-core/dist/authz/classify.js.map +1 -1
  56. package/vendor/directive-core/dist/authz/evaluate.d.ts +5 -0
  57. package/vendor/directive-core/dist/authz/evaluate.d.ts.map +1 -1
  58. package/vendor/directive-core/dist/authz/evaluate.js +15 -5
  59. package/vendor/directive-core/dist/authz/evaluate.js.map +1 -1
  60. package/vendor/directive-core/dist/authz/templates.d.ts +2 -2
  61. package/vendor/directive-core/dist/authz/templates.d.ts.map +1 -1
  62. package/vendor/directive-core/dist/authz/templates.js +1 -0
  63. package/vendor/directive-core/dist/authz/templates.js.map +1 -1
  64. package/vendor/directive-core/dist/authz/types.d.ts +1 -1
  65. package/vendor/directive-core/dist/authz/types.d.ts.map +1 -1
  66. package/vendor/directive-core/dist/authz/types.js +2 -0
  67. package/vendor/directive-core/dist/authz/types.js.map +1 -1
  68. package/vendor/directive-core/dist/authz/verb-classification.d.ts.map +1 -1
  69. package/vendor/directive-core/dist/authz/verb-classification.js +30 -3
  70. package/vendor/directive-core/dist/authz/verb-classification.js.map +1 -1
  71. package/vendor/directive-core/dist/cache/fetch.d.ts.map +1 -1
  72. package/vendor/directive-core/dist/cache/fetch.js +50 -4
  73. package/vendor/directive-core/dist/cache/fetch.js.map +1 -1
  74. package/vendor/directive-core/dist/check/cached-orchestrator.d.ts.map +1 -1
  75. package/vendor/directive-core/dist/check/cached-orchestrator.js +101 -2
  76. package/vendor/directive-core/dist/check/cached-orchestrator.js.map +1 -1
  77. package/vendor/directive-core/dist/check/context.d.ts +199 -0
  78. package/vendor/directive-core/dist/check/context.d.ts.map +1 -1
  79. package/vendor/directive-core/dist/check/context.js +417 -2
  80. package/vendor/directive-core/dist/check/context.js.map +1 -1
  81. package/vendor/directive-core/dist/check/gate-lists.d.ts +42 -0
  82. package/vendor/directive-core/dist/check/gate-lists.d.ts.map +1 -1
  83. package/vendor/directive-core/dist/check/gate-lists.js +226 -0
  84. package/vendor/directive-core/dist/check/gate-lists.js.map +1 -1
  85. package/vendor/directive-core/dist/check/index.d.ts +1 -0
  86. package/vendor/directive-core/dist/check/index.d.ts.map +1 -1
  87. package/vendor/directive-core/dist/check/index.js +1 -0
  88. package/vendor/directive-core/dist/check/index.js.map +1 -1
  89. package/vendor/directive-core/dist/check/named-cause.d.ts.map +1 -1
  90. package/vendor/directive-core/dist/check/named-cause.js +1 -0
  91. package/vendor/directive-core/dist/check/named-cause.js.map +1 -1
  92. package/vendor/directive-core/dist/check/orchestrator.d.ts +1 -0
  93. package/vendor/directive-core/dist/check/orchestrator.d.ts.map +1 -1
  94. package/vendor/directive-core/dist/check/orchestrator.js +69 -4
  95. package/vendor/directive-core/dist/check/orchestrator.js.map +1 -1
  96. package/vendor/directive-core/dist/design-critique/arc-dest.d.ts +22 -5
  97. package/vendor/directive-core/dist/design-critique/arc-dest.d.ts.map +1 -1
  98. package/vendor/directive-core/dist/design-critique/arc-dest.js +61 -0
  99. package/vendor/directive-core/dist/design-critique/arc-dest.js.map +1 -1
  100. package/vendor/directive-core/dist/design-critique/run-posture.d.ts +7 -2
  101. package/vendor/directive-core/dist/design-critique/run-posture.d.ts.map +1 -1
  102. package/vendor/directive-core/dist/design-critique/run-posture.js +6 -1
  103. package/vendor/directive-core/dist/design-critique/run-posture.js.map +1 -1
  104. package/vendor/directive-core/dist/finish-loop/pr-finish-loop.d.ts +7 -0
  105. package/vendor/directive-core/dist/finish-loop/pr-finish-loop.d.ts.map +1 -1
  106. package/vendor/directive-core/dist/finish-loop/pr-finish-loop.js +42 -0
  107. package/vendor/directive-core/dist/finish-loop/pr-finish-loop.js.map +1 -1
  108. package/vendor/directive-core/dist/hooks/classify/host-session-identity.d.ts +15 -2
  109. package/vendor/directive-core/dist/hooks/classify/host-session-identity.d.ts.map +1 -1
  110. package/vendor/directive-core/dist/hooks/classify/host-session-identity.js +46 -5
  111. package/vendor/directive-core/dist/hooks/classify/host-session-identity.js.map +1 -1
  112. package/vendor/directive-core/dist/hooks/dispatcher.d.ts.map +1 -1
  113. package/vendor/directive-core/dist/hooks/dispatcher.js +235 -22
  114. package/vendor/directive-core/dist/hooks/dispatcher.js.map +1 -1
  115. package/vendor/directive-core/dist/hooks/scope.d.ts +38 -9
  116. package/vendor/directive-core/dist/hooks/scope.d.ts.map +1 -1
  117. package/vendor/directive-core/dist/hooks/scope.js +102 -16
  118. package/vendor/directive-core/dist/hooks/scope.js.map +1 -1
  119. package/vendor/directive-core/dist/hooks/shell-write-targets.d.ts +5 -0
  120. package/vendor/directive-core/dist/hooks/shell-write-targets.d.ts.map +1 -1
  121. package/vendor/directive-core/dist/hooks/shell-write-targets.js +18 -1
  122. package/vendor/directive-core/dist/hooks/shell-write-targets.js.map +1 -1
  123. package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts +5 -0
  124. package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts.map +1 -1
  125. package/vendor/directive-core/dist/init-deposit/host-hook-outer.js +22 -9
  126. package/vendor/directive-core/dist/init-deposit/host-hook-outer.js.map +1 -1
  127. package/vendor/directive-core/dist/init-deposit/scaffold.d.ts +8 -1
  128. package/vendor/directive-core/dist/init-deposit/scaffold.d.ts.map +1 -1
  129. package/vendor/directive-core/dist/init-deposit/scaffold.js +38 -4
  130. package/vendor/directive-core/dist/init-deposit/scaffold.js.map +1 -1
  131. package/vendor/directive-core/dist/install-health/cheap.d.ts +13 -1
  132. package/vendor/directive-core/dist/install-health/cheap.d.ts.map +1 -1
  133. package/vendor/directive-core/dist/install-health/cheap.js +39 -4
  134. package/vendor/directive-core/dist/install-health/cheap.js.map +1 -1
  135. package/vendor/directive-core/dist/install-health/constants.d.ts +18 -2
  136. package/vendor/directive-core/dist/install-health/constants.d.ts.map +1 -1
  137. package/vendor/directive-core/dist/install-health/constants.js +18 -2
  138. package/vendor/directive-core/dist/install-health/constants.js.map +1 -1
  139. package/vendor/directive-core/dist/install-health/index.d.ts +1 -1
  140. package/vendor/directive-core/dist/install-health/index.d.ts.map +1 -1
  141. package/vendor/directive-core/dist/install-health/index.js +1 -1
  142. package/vendor/directive-core/dist/install-health/index.js.map +1 -1
  143. package/vendor/directive-core/dist/policy/deft-directive-disable.d.ts +42 -5
  144. package/vendor/directive-core/dist/policy/deft-directive-disable.d.ts.map +1 -1
  145. package/vendor/directive-core/dist/policy/deft-directive-disable.js +71 -41
  146. package/vendor/directive-core/dist/policy/deft-directive-disable.js.map +1 -1
  147. package/vendor/directive-core/dist/policy/write-fence.d.ts +7 -0
  148. package/vendor/directive-core/dist/policy/write-fence.d.ts.map +1 -1
  149. package/vendor/directive-core/dist/policy/write-fence.js +81 -14
  150. package/vendor/directive-core/dist/policy/write-fence.js.map +1 -1
  151. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.d.ts +6 -1
  152. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.d.ts.map +1 -1
  153. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.js +24 -12
  154. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.js.map +1 -1
  155. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.d.ts +68 -14
  156. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.d.ts.map +1 -1
  157. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.js +278 -47
  158. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.js.map +1 -1
  159. package/vendor/directive-core/dist/pr-closing-keywords/main.d.ts +19 -0
  160. package/vendor/directive-core/dist/pr-closing-keywords/main.d.ts.map +1 -1
  161. package/vendor/directive-core/dist/pr-closing-keywords/main.js +31 -16
  162. package/vendor/directive-core/dist/pr-closing-keywords/main.js.map +1 -1
  163. package/vendor/directive-core/dist/pr-merge-readiness/compute.d.ts +8 -0
  164. package/vendor/directive-core/dist/pr-merge-readiness/compute.d.ts.map +1 -1
  165. package/vendor/directive-core/dist/pr-merge-readiness/compute.js +54 -2
  166. package/vendor/directive-core/dist/pr-merge-readiness/compute.js.map +1 -1
  167. package/vendor/directive-core/dist/pr-merge-readiness/gh.d.ts +7 -0
  168. package/vendor/directive-core/dist/pr-merge-readiness/gh.d.ts.map +1 -1
  169. package/vendor/directive-core/dist/pr-merge-readiness/gh.js +180 -49
  170. package/vendor/directive-core/dist/pr-merge-readiness/gh.js.map +1 -1
  171. package/vendor/directive-core/dist/pr-merge-readiness/main.d.ts +2 -0
  172. package/vendor/directive-core/dist/pr-merge-readiness/main.d.ts.map +1 -1
  173. package/vendor/directive-core/dist/pr-merge-readiness/main.js +1 -0
  174. package/vendor/directive-core/dist/pr-merge-readiness/main.js.map +1 -1
  175. package/vendor/directive-core/dist/pr-monitor/monitor.d.ts.map +1 -1
  176. package/vendor/directive-core/dist/pr-monitor/monitor.js +1 -0
  177. package/vendor/directive-core/dist/pr-monitor/monitor.js.map +1 -1
  178. package/vendor/directive-core/dist/pr-monitor/readiness.d.ts.map +1 -1
  179. package/vendor/directive-core/dist/pr-monitor/readiness.js +1 -0
  180. package/vendor/directive-core/dist/pr-monitor/readiness.js.map +1 -1
  181. package/vendor/directive-core/dist/pr-monitor/types.d.ts +2 -0
  182. package/vendor/directive-core/dist/pr-monitor/types.d.ts.map +1 -1
  183. package/vendor/directive-core/dist/pr-wait-mergeable/cascade.d.ts +6 -0
  184. package/vendor/directive-core/dist/pr-wait-mergeable/cascade.d.ts.map +1 -1
  185. package/vendor/directive-core/dist/pr-wait-mergeable/cascade.js +27 -0
  186. package/vendor/directive-core/dist/pr-wait-mergeable/cascade.js.map +1 -1
  187. package/vendor/directive-core/dist/pr-wait-mergeable/constants.d.ts +15 -0
  188. package/vendor/directive-core/dist/pr-wait-mergeable/constants.d.ts.map +1 -1
  189. package/vendor/directive-core/dist/pr-wait-mergeable/constants.js +18 -0
  190. package/vendor/directive-core/dist/pr-wait-mergeable/constants.js.map +1 -1
  191. package/vendor/directive-core/dist/pr-wait-mergeable/index.d.ts +2 -1
  192. package/vendor/directive-core/dist/pr-wait-mergeable/index.d.ts.map +1 -1
  193. package/vendor/directive-core/dist/pr-wait-mergeable/index.js +2 -1
  194. package/vendor/directive-core/dist/pr-wait-mergeable/index.js.map +1 -1
  195. package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.d.ts +81 -0
  196. package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.d.ts.map +1 -1
  197. package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.js +687 -3
  198. package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.js.map +1 -1
  199. package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts +59 -1
  200. package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts.map +1 -1
  201. package/vendor/directive-core/dist/pre-pr-controller/controller.js +155 -2
  202. package/vendor/directive-core/dist/pre-pr-controller/controller.js.map +1 -1
  203. package/vendor/directive-core/dist/pre-pr-controller/index.d.ts +1 -1
  204. package/vendor/directive-core/dist/pre-pr-controller/index.d.ts.map +1 -1
  205. package/vendor/directive-core/dist/pre-pr-controller/index.js +1 -1
  206. package/vendor/directive-core/dist/pre-pr-controller/index.js.map +1 -1
  207. package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts +7 -0
  208. package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts.map +1 -1
  209. package/vendor/directive-core/dist/pre-pr-controller/phases.js +11 -0
  210. package/vendor/directive-core/dist/pre-pr-controller/phases.js.map +1 -1
  211. package/vendor/directive-core/dist/pre-pr-controller/types.d.ts +1 -1
  212. package/vendor/directive-core/dist/pre-pr-controller/types.d.ts.map +1 -1
  213. package/vendor/directive-core/dist/pre-pr-controller/types.js.map +1 -1
  214. package/vendor/directive-core/dist/preflight-gh/pre-push.d.ts.map +1 -1
  215. package/vendor/directive-core/dist/preflight-gh/pre-push.js +58 -2
  216. package/vendor/directive-core/dist/preflight-gh/pre-push.js.map +1 -1
  217. package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.d.ts +1 -1
  218. package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.d.ts.map +1 -1
  219. package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.js +1 -1
  220. package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.js.map +1 -1
  221. package/vendor/directive-core/dist/product-first-done-gate/index.d.ts +1 -1
  222. package/vendor/directive-core/dist/product-first-done-gate/index.d.ts.map +1 -1
  223. package/vendor/directive-core/dist/product-first-done-gate/index.js +1 -1
  224. package/vendor/directive-core/dist/product-first-done-gate/index.js.map +1 -1
  225. package/vendor/directive-core/dist/release/gh.d.ts.map +1 -1
  226. package/vendor/directive-core/dist/release/gh.js +2 -1
  227. package/vendor/directive-core/dist/release/gh.js.map +1 -1
  228. package/vendor/directive-core/dist/release/pipeline.d.ts.map +1 -1
  229. package/vendor/directive-core/dist/release/pipeline.js +13 -1
  230. package/vendor/directive-core/dist/release/pipeline.js.map +1 -1
  231. package/vendor/directive-core/dist/release/preflight.d.ts +11 -0
  232. package/vendor/directive-core/dist/release/preflight.d.ts.map +1 -1
  233. package/vendor/directive-core/dist/release/preflight.js +65 -0
  234. package/vendor/directive-core/dist/release/preflight.js.map +1 -1
  235. package/vendor/directive-core/dist/release/types.d.ts +4 -0
  236. package/vendor/directive-core/dist/release/types.d.ts.map +1 -1
  237. package/vendor/directive-core/dist/release/version.d.ts +4 -2
  238. package/vendor/directive-core/dist/release/version.d.ts.map +1 -1
  239. package/vendor/directive-core/dist/release/version.js +4 -2
  240. package/vendor/directive-core/dist/release/version.js.map +1 -1
  241. package/vendor/directive-core/dist/release-publish/gh-api.d.ts.map +1 -1
  242. package/vendor/directive-core/dist/release-publish/gh-api.js +4 -2
  243. package/vendor/directive-core/dist/release-publish/gh-api.js.map +1 -1
  244. package/vendor/directive-core/dist/release-publish/main.d.ts.map +1 -1
  245. package/vendor/directive-core/dist/release-publish/main.js +15 -4
  246. package/vendor/directive-core/dist/release-publish/main.js.map +1 -1
  247. package/vendor/directive-core/dist/release-publish/pipeline.d.ts +11 -0
  248. package/vendor/directive-core/dist/release-publish/pipeline.d.ts.map +1 -1
  249. package/vendor/directive-core/dist/release-publish/pipeline.js +143 -2
  250. package/vendor/directive-core/dist/release-publish/pipeline.js.map +1 -1
  251. package/vendor/directive-core/dist/release-rollback/gh.d.ts.map +1 -1
  252. package/vendor/directive-core/dist/release-rollback/gh.js +2 -1
  253. package/vendor/directive-core/dist/release-rollback/gh.js.map +1 -1
  254. package/vendor/directive-core/dist/scope/delivery-evidence.d.ts +37 -0
  255. package/vendor/directive-core/dist/scope/delivery-evidence.d.ts.map +1 -1
  256. package/vendor/directive-core/dist/scope/delivery-evidence.js +106 -6
  257. package/vendor/directive-core/dist/scope/delivery-evidence.js.map +1 -1
  258. package/vendor/directive-core/dist/scope/transition.d.ts +3 -1
  259. package/vendor/directive-core/dist/scope/transition.d.ts.map +1 -1
  260. package/vendor/directive-core/dist/scope/transition.js +4 -0
  261. package/vendor/directive-core/dist/scope/transition.js.map +1 -1
  262. package/vendor/directive-core/dist/session/git.d.ts +21 -2
  263. package/vendor/directive-core/dist/session/git.d.ts.map +1 -1
  264. package/vendor/directive-core/dist/session/git.js +21 -4
  265. package/vendor/directive-core/dist/session/git.js.map +1 -1
  266. package/vendor/directive-core/dist/session/occupancy.d.ts +93 -6
  267. package/vendor/directive-core/dist/session/occupancy.d.ts.map +1 -1
  268. package/vendor/directive-core/dist/session/occupancy.js +215 -52
  269. package/vendor/directive-core/dist/session/occupancy.js.map +1 -1
  270. package/vendor/directive-core/dist/session/session-start.d.ts.map +1 -1
  271. package/vendor/directive-core/dist/session/session-start.js +5 -2
  272. package/vendor/directive-core/dist/session/session-start.js.map +1 -1
  273. package/vendor/directive-core/dist/swarm/dest-place.d.ts +1 -1
  274. package/vendor/directive-core/dist/swarm/dest-place.d.ts.map +1 -1
  275. package/vendor/directive-core/dist/swarm/dest-place.js +36 -41
  276. package/vendor/directive-core/dist/swarm/dest-place.js.map +1 -1
  277. package/vendor/directive-core/dist/swarm/finalize-owed.d.ts +14 -0
  278. package/vendor/directive-core/dist/swarm/finalize-owed.d.ts.map +1 -1
  279. package/vendor/directive-core/dist/swarm/finalize-owed.js +214 -48
  280. package/vendor/directive-core/dist/swarm/finalize-owed.js.map +1 -1
  281. package/vendor/directive-core/dist/swarm/launch.d.ts.map +1 -1
  282. package/vendor/directive-core/dist/swarm/launch.js +15 -4
  283. package/vendor/directive-core/dist/swarm/launch.js.map +1 -1
  284. package/vendor/directive-core/dist/swarm/worktree-pm-install.d.ts +49 -2
  285. package/vendor/directive-core/dist/swarm/worktree-pm-install.d.ts.map +1 -1
  286. package/vendor/directive-core/dist/swarm/worktree-pm-install.js +207 -12
  287. package/vendor/directive-core/dist/swarm/worktree-pm-install.js.map +1 -1
  288. package/vendor/directive-core/dist/swarm/worktrees-cli.d.ts +6 -0
  289. package/vendor/directive-core/dist/swarm/worktrees-cli.d.ts.map +1 -1
  290. package/vendor/directive-core/dist/swarm/worktrees-cli.js +79 -2
  291. package/vendor/directive-core/dist/swarm/worktrees-cli.js.map +1 -1
  292. package/vendor/directive-core/dist/swarm/worktrees.d.ts +12 -1
  293. package/vendor/directive-core/dist/swarm/worktrees.d.ts.map +1 -1
  294. package/vendor/directive-core/dist/swarm/worktrees.js +34 -26
  295. package/vendor/directive-core/dist/swarm/worktrees.js.map +1 -1
  296. package/vendor/directive-core/dist/verify-ac/evaluate.d.ts +52 -0
  297. package/vendor/directive-core/dist/verify-ac/evaluate.d.ts.map +1 -1
  298. package/vendor/directive-core/dist/verify-ac/evaluate.js +361 -1
  299. package/vendor/directive-core/dist/verify-ac/evaluate.js.map +1 -1
  300. package/vendor/directive-core/dist/verify-ac/index.d.ts +1 -1
  301. package/vendor/directive-core/dist/verify-ac/index.d.ts.map +1 -1
  302. package/vendor/directive-core/dist/verify-ac/index.js +1 -1
  303. package/vendor/directive-core/dist/verify-ac/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/pr-closeout-attestable/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAmB,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,wCAAwC,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,4BAA4B,GAE7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EAEjB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAqE7B,SAAS,YAAY,CAAC,IAAY,EAAE,WAAmB;IACrD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CACrB,KAAc,EACd,UAAkB,EAClB,GAAyC;IAEzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnB,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;QACtD,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,iBAAiB,GACrB,GAAG,0BAA0B,kBAAkB,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;IACpF,wGAAwG,CAAC;AAE3G,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,GAAG,uBAAuB,WAAW,KAAK,sCAAsC,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,SAA8B;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;IACpC,MAAM,KAAK,GAAG;QACZ,WAAW,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,GAAG;QAChD,oBAAoB,SAAS,CAAC,MAAM,EAAE;KACvC,CAAC;IAEF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CACR,4CAA4C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAC9F,qEAAqE,EACrE,mDAAmD,IAAI,CAAC,CAAC,CAAC,SAAS;YACjE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC,GAAG,EACxC,4DAA4D,EAC5D,uBAAuB,iBAAiB,EAAE,CAC3C,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAY,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5F,KAAK,CAAC,IAAI,CACR,oBAAoB,aAAa,CAAC,KAAK,CAAC,EAAE,EAC1C,uBAAuB,iBAAiB,EAAE,CAC3C,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CACR,4CAA4C,IAAI,CAAC,CAAC,CAAC,KAAK;YACtD,qDAAqD,CACxD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,cAAc,GAClB,gGAAgG;IAChG,0FAA0F,CAAC;AAE7F,SAAS,aAAa,CACpB,QAAgB,EAChB,QAAoC,EACpC,WAAmB,EACnB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,MAAM,aAAa,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;IAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAG;QACZ,sCAAsC,QAAQ,WAAW,MAAM,aAAa,QAAQ,CAAC,MAAM,GAAG;YAC5F,kBAAkB,SAAS,SAAS,QAAQ,0BAA0B,aAAa,GAAG;YACtF,iBAAiB,WAAW,IAAI;QAClC,yFAAyF;QACzF,0FAA0F;QAC1F,iEAAiE;QACjE,wBAAwB;KACzB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,SAAS,aAAa,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAClE,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAErF,KAAK,CAAC,IAAI,CACR,6FAA6F,EAC7F,+FAA+F,EAC/F,sFAAsF,EACtF,0DAA0D,CAC3D,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CACR,2FAA2F,EAC3F,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CACR,4FAA4F,EAC5F,oDAAoD,EACpD,kDAAkD,QAAQ,EAAE,CAC7D,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,sFAAsF,EACtF,0BAA0B,EAC1B,kDAAkD,QAAQ,EAAE,CAC7D,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CACR,+FAA+F,EAC/F,kDAAkD,CACnD,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAClB,QAAgB,EAChB,OAAe,EACf,OAAO,GAAG,KAAK;IAEf,OAAO;QACL,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,kCAAkC,OAAO,EAAE;QACpD,MAAM,EAAE,QAAQ;QAChB,QAAQ;QACR,aAAa,EAAE,EAAE;QACjB,QAAQ,EAAE,EAAE;QACZ,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,UAAU,QAAQ,CACtB,WAAmB,EACnB,QAAgB,EAChB,UAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAErC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,QAAQ,EAAE,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,IAAI,4BAA4B,CAAC;IAEhF,MAAM,cAAc,GAAG,GAA+B,EAAE,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,KAAK;YACZ,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,6EAA6E;QACjF,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;QACjC,QAAQ;QACR,aAAa,EAAE,EAAE;QACjB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,2EAA2E;IAC3E,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC5C,eAAe,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,kEAAkE;QAClE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACjD,OAAO,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE7C,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,aAAqB,CAAC;IAE1B,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,yEAAyE;QACzE,2EAA2E;QAC3E,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,WAAW,CAChB,QAAQ,EACR,oFAAoF;gBAClF,qEAAqE,EACvE,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QACD,oEAAoE;QACpE,yEAAyE;QACzE,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,IAAI,oBAAoB,CAAC;QACtE,MAAM,eAAe,GAAG,UAAU,CAAC,oBAAoB,IAAI,iBAAiB,CAAC;QAC7E,MAAM,YAAY,GAAG,UAAU,CAAC,mBAAmB,IAAI,mBAAmB,CAAC;QAC3E,MAAM,YAAY,GAAG,UAAU,CAAC,qBAAqB,IAAI,qBAAqB,CAAC;QAC/E,MAAM,MAAM,GACV,UAAU,CAAC,SAAS,KAAK,SAAS;YAChC,CAAC,CAAC,UAAU,CAAC,SAAS;YACtB,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,WAAW,CAChB,QAAQ,EACR,mBAAmB,QAAQ,mBAAmB,IAAI,qBAAqB;gBACrE,2FAA2F,EAC7F,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,WAAW,CAChB,QAAQ,EACR,GAAG,MAAM,CAAC,OAAO,gEAAgE;gBAC/E,oCAAoC,EACtC,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,wEAAwE;YACxE,OAAO,cAAc,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,WAAW,CAChB,QAAQ,EACR,gCAAgC,GAAG,mCAAmC;gBACpE,4DAA4D,EAC9D,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,WAAW,CAChB,QAAQ,EACR,qBAAqB,OAAO,eAAe,QAAQ,SAAS,MAAM,IAAI;gBACpE,uEAAuE;gBACvE,4CAA4C,EAC9C,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,GAAkB,IAAI,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC3C,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACjD,OAAO,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,cAAc,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,UAAU,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,WAAW,CAChB,QAAQ,EACR,wBAAwB,GAAG,yCAAyC;oBAClE,IAAI,KAAK,0DAA0D;oBACnE,oDAAoD,EACtD,MAAM,CAAC,OAAO,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QACD,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,aAAa,GAAG,YAAY,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,6EAA6E;YAC7E,uEAAuE;YACvE,wCAAwC;YACxC,OAAO,WAAW,CAChB,QAAQ,EACR,oFAAoF;gBAClF,qEAAqE,EACvE,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QACD,+EAA+E;QAC/E,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE;YAC/E,GAAG,OAAO,CAAC,YAAY;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,SAAS;YACP,UAAU,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,aAAa,GAAG,eAAe,CAAC;QAChC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;oBAChD,OAAO,cAAc,EAAE,CAAC;gBAC1B,CAAC;gBACD,OAAO,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,OAAO,cAAc,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,WAAW,CAChB,QAAQ,EACR,oFAAoF;YAClF,qEAAqE,EACvE,MAAM,CAAC,OAAO,CACf,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,WAAW,CAChB,QAAQ,EACR,mDAAmD,QAAQ,EAAE;YAC3D,UAAU,IAAI,KAAK;YACnB,sFAAsF;YACtF,yBAAyB,EAC3B,MAAM,CAAC,OAAO,CACf,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GACT,OAAO,CAAC,cAAc,KAAK,SAAS;QAClC,CAAC,CAAC,OAAO,CAAC,cAAc;QACxB,CAAC,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI;YACjE,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC;IACb,MAAM,IAAI,GAAG,iBAAiB,CAAC;QAC7B,SAAS,EAAE,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC;QACrD,KAAK;QACL,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC7C,uBAAuB,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;KAClF,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,kCAAkC,IAAI,CAAC,OAAO,EAAE;YACzD,MAAM,EAAE,QAAQ;YAChB,QAAQ;YACR,aAAa;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,KAAK;gBACZ,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,sCAAsC,QAAQ,0DAA0D;YAC5G,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACjC,QAAQ;YACR,aAAa;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,wCAAwC,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,iFAAiF;QACjF,kFAAkF;QAClF,kFAAkF;QAClF,mFAAmF;QACnF,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CACrF,EAAE,MAAM,CAAC;QACV,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;QAC/D,iEAAiE;QACjE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,UAAU,GAA0B,IAAI,CAAC,OAAO;aACnD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;aAChF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC;gBACrE,aAAa,EAAE,IAAI,KAAK,SAAS,IAAI,4BAA4B,CAAC,IAAI,CAAC;aACxE,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;YACrE,MAAM,EAAE,QAAQ;YAChB,QAAQ;YACR,aAAa;YACb,QAAQ;YACR,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,IAAI,GACR,sCAAsC,QAAQ,WAAW,SAAS,IAAI;QACtE,8EAA8E,CAAC;IACjF,OAAO;QACL,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI;QAC1E,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;QACjC,QAAQ;QACR,aAAa;QACb,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/pr-closeout-attestable/evaluate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Working-tree vs PR-head assert for closeout (#3875).
2
+ * Working-tree vs PR-head assert for closeout (#3875 / #6128).
3
3
  *
4
4
  * Before closeout reads briefs from disk, the tree must be the PR head that
5
5
  * merges. Local HEAD is compared to an already-fetched PR head SHA (or an
@@ -7,17 +7,41 @@
7
7
  *
8
8
  * When the caller's cwd is not the PR head (cascade from primary), a linked
9
9
  * worktree whose HEAD matches the PR head is accepted and returned as
10
- * `resolvedProjectRoot` so briefs are read from that tree. Dirty `xbrief/` /
11
- * `vbrief/` on the chosen tree fails closed (local attestation must not
12
- * green-light an unattested committed brief).
10
+ * `resolvedProjectRoot` so briefs are read from that tree. Prefer a
11
+ * lifecycle-clean match when several SHA matches exist (#6128 Prefer-A). Dirty
12
+ * `xbrief/` / `vbrief/` on the chosen tree fails closed with a named reason and
13
+ * deletion-restorative remediation (local attestation must not green-light an
14
+ * unattested committed brief).
13
15
  */
14
16
  import type { RunGhFn } from "../pr-protected-issues/types.js";
15
17
  export type ResolveLocalHeadShaFn = (projectRoot: string) => string | null;
16
18
  export type FetchPrHeadShaFn = (prNumber: number, repo: string, runGh: RunGhFn) => string | null;
19
+ /** One porcelain status entry with C-quoting undone. */
20
+ export interface LifecyclePorcelainEntry {
21
+ readonly x: string;
22
+ readonly y: string;
23
+ readonly path: string;
24
+ }
25
+ /** Three-state lifecycle classifier for xbrief/vbrief (#6128 Prefer-A). */
26
+ export type LifecycleClassifyResult = {
27
+ readonly status: "clean";
28
+ } | {
29
+ readonly status: "dirty";
30
+ readonly entries: readonly LifecyclePorcelainEntry[];
31
+ } | {
32
+ readonly status: "unverifiable";
33
+ readonly diagnostic: string;
34
+ };
35
+ export type ClassifyLifecycleDirtyFn = (projectRoot: string) => LifecycleClassifyResult;
17
36
  /** Linked-worktree lookup: verified found/absent, or unverified list failure. */
18
37
  export type FindWorktreeAtShaResult = {
19
38
  readonly status: "found";
20
39
  readonly path: string;
40
+ /**
41
+ * True when another SHA-matching worktree (besides `path`) has an xbrief
42
+ * layout. Documented false default for two-arg injectors.
43
+ */
44
+ readonly anotherShaMatchHasXbrief?: boolean;
21
45
  } | {
22
46
  readonly status: "absent";
23
47
  } | {
@@ -25,7 +49,9 @@ export type FindWorktreeAtShaResult = {
25
49
  readonly message: string;
26
50
  };
27
51
  export type ResolveWorktreeAtShaFn = (projectRoot: string, sha: string) => FindWorktreeAtShaResult;
52
+ /** Legacy dirty probe: null clean, sample dirty, sentinel unverifiable. */
28
53
  export type ResolveLifecycleDirtyFn = (projectRoot: string) => string | null;
54
+ export type CloseoutRefuseReason = "lifecycle-dirty" | "brief-root-layout-missing";
29
55
  export interface PrHeadAssertOptions {
30
56
  /** When false, skip the assert (tests only). Production default is enabled. */
31
57
  readonly enabled?: boolean;
@@ -37,8 +63,11 @@ export interface PrHeadAssertOptions {
37
63
  readonly fetchPrHeadSha?: FetchPrHeadShaFn;
38
64
  /** Injected linked-worktree lookup (cascade from a non-PR-head cwd). */
39
65
  readonly resolveWorktreeAtSha?: ResolveWorktreeAtShaFn;
40
- /** Injected dirty-lifecycle probe; when set, skips `git status --porcelain`. */
41
- readonly resolveLifecycleDirty?: ResolveLifecycleDirtyFn;
66
+ /**
67
+ * Injected three-state lifecycle classifier (#6128). Replaces the former
68
+ * `resolveLifecycleDirty` options seam at both in-scope call sites.
69
+ */
70
+ readonly classifyLifecycleDirty?: ClassifyLifecycleDirtyFn;
42
71
  /** When false, skip the dirty-lifecycle refuse (tests only). */
43
72
  readonly checkLifecycleDirty?: boolean;
44
73
  }
@@ -55,30 +84,55 @@ export interface PrHeadAssertOk {
55
84
  export interface PrHeadAssertFail {
56
85
  readonly ok: false;
57
86
  readonly message: string;
87
+ /** One-poll terminal discriminant for wait-mergeable (#6128). */
88
+ readonly reason?: CloseoutRefuseReason;
58
89
  }
59
90
  export type PrHeadAssertResult = PrHeadAssertOk | PrHeadAssertFail;
91
+ /** Behaviour-identical unverifiable sentinel for `resolveLifecycleDirty`. */
92
+ export declare const LIFECYCLE_STATUS_UNREADABLE = "cannot read git status for xbrief/vbrief before closeout";
60
93
  /** True when full or abbreviated SHAs name the same commit (min prefix length). */
61
94
  export declare function shasMatch(a: string, b: string): boolean;
62
95
  /** `git rev-parse HEAD` in `projectRoot`; null when git is missing or fails. */
63
96
  export declare function resolveLocalHeadSha(projectRoot: string): string | null;
97
+ /** Parse `git status --porcelain` lines into {x,y,path} with C-quoting undone. */
98
+ export declare function parseLifecyclePorcelainEntries(stdout: string): LifecyclePorcelainEntry[];
64
99
  /**
65
- * First linked worktree (same common dir) whose HEAD matches `sha`.
66
- * Used when cascade/`pr:merge-ready` runs from primary but a dest worktree
67
- * already holds the PR head. Returns status=error when the list cannot be
68
- * read; status=absent only when the list is verified and no match exists.
100
+ * Three-state classifier for lifecycle dirt under `xbrief/` / `vbrief/`.
101
+ * Classification and pathspec derivation read `entries[]`; display samples are
102
+ * derived at the refuse site only.
69
103
  */
70
- export declare function findWorktreeAtSha(projectRoot: string, sha: string): FindWorktreeAtShaResult;
104
+ export declare function classifyLifecycleDirty(projectRoot: string): LifecycleClassifyResult;
71
105
  /**
72
- * Non-null when `xbrief/` or `vbrief/` has uncommitted changes under `projectRoot`.
73
- * Returns a short porcelain sample for the refusal message.
106
+ * Behaviour-identical thin wrapper over {@link classifyLifecycleDirty}:
107
+ * null for clean, three-entry join for dirty, unverifiable sentinel for
108
+ * unverifiable — keeps semantic-green compiling without signature change.
74
109
  */
75
110
  export declare function resolveLifecycleDirty(projectRoot: string): string | null;
111
+ /**
112
+ * Rank SHA-matching linked worktrees: one porcelain list read, path order,
113
+ * prefer lifecycle-clean via optional third-parameter classifier (default real
114
+ * three-state). `ResolveWorktreeAtShaFn` stays two-argument for injectors.
115
+ * Excludes prunable/gone. All-dirty returns found with ranked-first non-clean
116
+ * path (never absent). Carries `anotherShaMatchHasXbrief` on found.
117
+ */
118
+ export declare function findWorktreeAtSha(projectRoot: string, sha: string, classify?: ClassifyLifecycleDirtyFn): FindWorktreeAtShaResult;
76
119
  /** REST `pulls/<N>` head.sha via the closeout runner (plain gh when available). */
77
120
  export declare function fetchPrHeadShaViaApi(prNumber: number, repo: string, runGh: RunGhFn): string | null;
121
+ /**
122
+ * Deletion-restorative remediation buckets (#6128 Prefer-A Recut-8 errata).
123
+ * Tracked codes only; never emit `git stash push -u`.
124
+ * Deletions-only template: git -C "<dirty-root>" checkout HEAD -- <deleted-paths>
125
+ * (Approach1 sole-pin un-pin). Modify/add/rename never get a bare checkout.
126
+ */
127
+ export declare function formatLifecycleDirtyRemediation(dirtyRoot: string, entries: readonly LifecyclePorcelainEntry[]): string;
128
+ export declare function refuseDirtyLifecycle(projectRoot: string, classified: Extract<LifecycleClassifyResult, {
129
+ status: "dirty";
130
+ }>): PrHeadAssertFail;
78
131
  /**
79
132
  * Assert local HEAD equals the PR head that will merge.
80
133
  * Fail closed (message for exit 2) when either side is unreadable or they differ
81
- * and no linked worktree matches. Refuse a dirty lifecycle tree on the chosen root.
134
+ * and no linked worktree matches. Prefer a lifecycle-clean SHA match; refuse a
135
+ * dirty lifecycle tree on the chosen root with reason lifecycle-dirty.
82
136
  */
83
137
  export declare function assertWorkingTreeIsPrHead(projectRoot: string, prNumber: number, repo: string, runGh: RunGhFn, options?: PrHeadAssertOptions): PrHeadAssertResult;
84
138
  //# sourceMappingURL=pr-head-assert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-head-assert.d.ts","sourceRoot":"","sources":["../../src/pr-closeout-attestable/pr-head-assert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr-head-assert.d.ts","sourceRoot":"","sources":["../../src/pr-closeout-attestable/pr-head-assert.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Working-tree vs PR-head assert for closeout (#3875).
2
+ * Working-tree vs PR-head assert for closeout (#3875 / #6128).
3
3
  *
4
4
  * Before closeout reads briefs from disk, the tree must be the PR head that
5
5
  * merges. Local HEAD is compared to an already-fetched PR head SHA (or an
@@ -7,11 +7,17 @@
7
7
  *
8
8
  * When the caller's cwd is not the PR head (cascade from primary), a linked
9
9
  * worktree whose HEAD matches the PR head is accepted and returned as
10
- * `resolvedProjectRoot` so briefs are read from that tree. Dirty `xbrief/` /
11
- * `vbrief/` on the chosen tree fails closed (local attestation must not
12
- * green-light an unattested committed brief).
10
+ * `resolvedProjectRoot` so briefs are read from that tree. Prefer a
11
+ * lifecycle-clean match when several SHA matches exist (#6128 Prefer-A). Dirty
12
+ * `xbrief/` / `vbrief/` on the chosen tree fails closed with a named reason and
13
+ * deletion-restorative remediation (local attestation must not green-light an
14
+ * unattested committed brief).
13
15
  */
14
16
  import { spawnSync } from "node:child_process";
17
+ import { existsSync, realpathSync } from "node:fs";
18
+ import { join } from "node:path";
19
+ /** Behaviour-identical unverifiable sentinel for `resolveLifecycleDirty`. */
20
+ export const LIFECYCLE_STATUS_UNREADABLE = "cannot read git status for xbrief/vbrief before closeout";
15
21
  /** Git short-SHA floor (same 7 as /^[0-9a-f]{7,40}$/i); length-derived, not a numeric const. */
16
22
  const MIN_SHA_PREFIX = "xxxxxxx".length;
17
23
  /** True when full or abbreviated SHAs name the same commit (min prefix length). */
@@ -35,65 +41,188 @@ export function resolveLocalHeadSha(projectRoot) {
35
41
  const sha = (typeof result.stdout === "string" ? result.stdout : "").trim();
36
42
  return /^[0-9a-f]{7,40}$/i.test(sha) ? sha : null;
37
43
  }
44
+ /** Strip git porcelain C-style quoting so classifiers see real paths. */
45
+ function unquotePorcelainPath(path) {
46
+ if (path.length < 2 || path[0] !== '"' || path[path.length - 1] !== '"') {
47
+ return path;
48
+ }
49
+ return path.slice(1, -1).replace(/\\([\\"ntr])/g, (_m, c) => {
50
+ if (c === "n")
51
+ return "\n";
52
+ if (c === "t")
53
+ return "\t";
54
+ if (c === "r")
55
+ return "\r";
56
+ return c;
57
+ });
58
+ }
59
+ /** Parse `git status --porcelain` lines into {x,y,path} with C-quoting undone. */
60
+ export function parseLifecyclePorcelainEntries(stdout) {
61
+ const entries = [];
62
+ for (const raw of stdout.replace(/\r\n/g, "\n").split("\n")) {
63
+ if (raw.length < 4)
64
+ continue;
65
+ const x = raw.slice(0, 1);
66
+ const y = raw.slice(1, 2);
67
+ const entry = raw.slice(3);
68
+ if (entry.includes(" -> ")) {
69
+ const renamed = entry.split(" -> ").pop();
70
+ if (renamed !== undefined && renamed.length > 0) {
71
+ entries.push({ x, y, path: unquotePorcelainPath(renamed) });
72
+ }
73
+ }
74
+ else if (entry.length > 0) {
75
+ entries.push({ x, y, path: unquotePorcelainPath(entry) });
76
+ }
77
+ }
78
+ return entries;
79
+ }
80
+ function sampleFromEntries(entries) {
81
+ return entries
82
+ .slice(0, 3)
83
+ .map((e) => `${e.x}${e.y} ${e.path}`.trim())
84
+ .join("; ");
85
+ }
38
86
  /**
39
- * First linked worktree (same common dir) whose HEAD matches `sha`.
40
- * Used when cascade/`pr:merge-ready` runs from primary but a dest worktree
41
- * already holds the PR head. Returns status=error when the list cannot be
42
- * read; status=absent only when the list is verified and no match exists.
87
+ * Three-state classifier for lifecycle dirt under `xbrief/` / `vbrief/`.
88
+ * Classification and pathspec derivation read `entries[]`; display samples are
89
+ * derived at the refuse site only.
43
90
  */
44
- export function findWorktreeAtSha(projectRoot, sha) {
45
- const result = spawnSync("git", ["-C", projectRoot, "worktree", "list", "--porcelain"], {
91
+ export function classifyLifecycleDirty(projectRoot) {
92
+ const result = spawnSync("git", ["-C", projectRoot, "status", "--porcelain", "--", "xbrief", "vbrief"], {
46
93
  encoding: "utf8",
47
94
  windowsHide: true,
48
95
  });
49
96
  if (result.error !== undefined || (result.status ?? 1) !== 0) {
50
- const detail = result.error !== undefined
51
- ? result.error.message
52
- : `git worktree list exited ${String(result.status ?? 1)}`;
53
97
  return {
54
- status: "error",
55
- message: `cannot list linked worktrees under ${projectRoot} (${detail})`,
98
+ status: "unverifiable",
99
+ diagnostic: LIFECYCLE_STATUS_UNREADABLE,
56
100
  };
57
101
  }
58
102
  const text = typeof result.stdout === "string" ? result.stdout : "";
103
+ const entries = parseLifecyclePorcelainEntries(text);
104
+ if (entries.length === 0) {
105
+ return { status: "clean" };
106
+ }
107
+ return { status: "dirty", entries };
108
+ }
109
+ /**
110
+ * Behaviour-identical thin wrapper over {@link classifyLifecycleDirty}:
111
+ * null for clean, three-entry join for dirty, unverifiable sentinel for
112
+ * unverifiable — keeps semantic-green compiling without signature change.
113
+ */
114
+ export function resolveLifecycleDirty(projectRoot) {
115
+ const classified = classifyLifecycleDirty(projectRoot);
116
+ if (classified.status === "clean") {
117
+ return null;
118
+ }
119
+ if (classified.status === "unverifiable") {
120
+ return classified.diagnostic;
121
+ }
122
+ return sampleFromEntries(classified.entries);
123
+ }
124
+ function hasXbriefLayout(projectRoot) {
125
+ return existsSync(join(projectRoot, "xbrief"));
126
+ }
127
+ function parseWorktreePorcelainList(text) {
128
+ const entries = [];
59
129
  let currentPath = null;
130
+ let currentHead = null;
131
+ let prunable = false;
132
+ const flush = () => {
133
+ if (currentPath !== null) {
134
+ entries.push({ path: currentPath, head: currentHead, prunable });
135
+ }
136
+ currentPath = null;
137
+ currentHead = null;
138
+ prunable = false;
139
+ };
60
140
  for (const line of text.split(/\r?\n/)) {
61
141
  if (line.startsWith("worktree ")) {
142
+ flush();
62
143
  currentPath = line.slice("worktree ".length).trim();
63
144
  continue;
64
145
  }
65
146
  if (line.startsWith("HEAD ") && currentPath !== null) {
66
- const head = line.slice("HEAD ".length).trim();
67
- if (shasMatch(head, sha)) {
68
- return { status: "found", path: currentPath };
69
- }
70
- currentPath = null;
147
+ currentHead = line.slice("HEAD ".length).trim();
148
+ continue;
71
149
  }
150
+ if (line.startsWith("prunable") || line === "gone") {
151
+ prunable = true;
152
+ }
153
+ }
154
+ flush();
155
+ return entries;
156
+ }
157
+ function resolvePathKey(p) {
158
+ try {
159
+ const native = realpathSync.native;
160
+ return native !== undefined ? native(p) : realpathSync(p);
161
+ }
162
+ catch {
163
+ return p.replace(/\\/g, "/").toLowerCase();
72
164
  }
73
- return { status: "absent" };
74
165
  }
75
166
  /**
76
- * Non-null when `xbrief/` or `vbrief/` has uncommitted changes under `projectRoot`.
77
- * Returns a short porcelain sample for the refusal message.
167
+ * Rank SHA-matching linked worktrees: one porcelain list read, path order,
168
+ * prefer lifecycle-clean via optional third-parameter classifier (default real
169
+ * three-state). `ResolveWorktreeAtShaFn` stays two-argument for injectors.
170
+ * Excludes prunable/gone. All-dirty returns found with ranked-first non-clean
171
+ * path (never absent). Carries `anotherShaMatchHasXbrief` on found.
78
172
  */
79
- export function resolveLifecycleDirty(projectRoot) {
80
- const result = spawnSync("git", ["-C", projectRoot, "status", "--porcelain", "--", "xbrief", "vbrief"], {
173
+ export function findWorktreeAtSha(projectRoot, sha, classify = classifyLifecycleDirty) {
174
+ const result = spawnSync("git", ["-C", projectRoot, "worktree", "list", "--porcelain"], {
81
175
  encoding: "utf8",
82
176
  windowsHide: true,
83
177
  });
84
178
  if (result.error !== undefined || (result.status ?? 1) !== 0) {
85
- return "cannot read git status for xbrief/vbrief before closeout";
179
+ const detail = result.error !== undefined
180
+ ? result.error.message
181
+ : `git worktree list exited ${String(result.status ?? 1)}`;
182
+ return {
183
+ status: "error",
184
+ message: `cannot list linked worktrees under ${projectRoot} (${detail})`,
185
+ };
86
186
  }
87
- const text = (typeof result.stdout === "string" ? result.stdout : "").trim();
88
- if (text.length === 0) {
89
- return null;
187
+ const text = typeof result.stdout === "string" ? result.stdout : "";
188
+ const listed = parseWorktreePorcelainList(text);
189
+ const shaMatches = listed
190
+ .filter((e) => e.head !== null && shasMatch(e.head, sha) && !e.prunable && existsSync(e.path))
191
+ .sort((a, b) => a.path.localeCompare(b.path));
192
+ if (shaMatches.length === 0) {
193
+ return { status: "absent" };
90
194
  }
91
- const sample = text
92
- .split(/\r?\n/)
93
- .slice(0, 3)
94
- .map((line) => line.trim())
95
- .join("; ");
96
- return sample;
195
+ const withBrief = shaMatches.filter((e) => hasXbriefLayout(e.path));
196
+ let firstClean = null;
197
+ let firstNonClean = null;
198
+ for (const match of shaMatches) {
199
+ const classified = classify(match.path);
200
+ if (classified.status === "clean") {
201
+ if (firstClean === null) {
202
+ firstClean = match.path;
203
+ }
204
+ }
205
+ else if (firstNonClean === null) {
206
+ firstNonClean = match.path;
207
+ }
208
+ }
209
+ const selected = firstClean ?? firstNonClean;
210
+ if (selected === null) {
211
+ return { status: "absent" };
212
+ }
213
+ const anotherShaMatchHasXbrief = withBrief.some((e) => {
214
+ try {
215
+ return resolvePathKey(e.path) !== resolvePathKey(selected);
216
+ }
217
+ catch {
218
+ return e.path !== selected;
219
+ }
220
+ });
221
+ return {
222
+ status: "found",
223
+ path: selected,
224
+ anotherShaMatchHasXbrief,
225
+ };
97
226
  }
98
227
  /** REST `pulls/<N>` head.sha via the closeout runner (plain gh when available). */
99
228
  export function fetchPrHeadShaViaApi(prNumber, repo, runGh) {
@@ -121,18 +250,82 @@ export function fetchPrHeadShaViaApi(prNumber, repo, runGh) {
121
250
  return null;
122
251
  }
123
252
  }
124
- function refuseDirtyLifecycle(projectRoot, dirtySample) {
253
+ function isUntrackedEntry(entry) {
254
+ return entry.x === "?" || entry.y === "?";
255
+ }
256
+ function isTrackedModifyAddRename(entry) {
257
+ if (isUntrackedEntry(entry))
258
+ return false;
259
+ return /[MAR]/.test(entry.x) || /[MAR]/.test(entry.y);
260
+ }
261
+ /** Pure tracked deletion (D) with no M/A/R on either side — excludes MD/DM (#6137 Greptile P1). */
262
+ function isRestorableDeletion(entry) {
263
+ if (isUntrackedEntry(entry))
264
+ return false;
265
+ if (!(entry.x === "D" || entry.y === "D"))
266
+ return false;
267
+ return !isTrackedModifyAddRename(entry);
268
+ }
269
+ function shellSingleQuote(arg) {
270
+ return "'" + arg.replace(/'/g, "'\''") + "'";
271
+ }
272
+ /**
273
+ * Deletion-restorative remediation buckets (#6128 Prefer-A Recut-8 errata).
274
+ * Tracked codes only; never emit `git stash push -u`.
275
+ * Deletions-only template: git -C "<dirty-root>" checkout HEAD -- <deleted-paths>
276
+ * (Approach1 sole-pin un-pin). Modify/add/rename never get a bare checkout.
277
+ */
278
+ export function formatLifecycleDirtyRemediation(dirtyRoot, entries) {
279
+ const tracked = entries.filter((e) => !isUntrackedEntry(e));
280
+ const deletions = tracked.filter(isRestorableDeletion);
281
+ const modifies = tracked.filter(isTrackedModifyAddRename);
282
+ if (tracked.length === 0) {
283
+ return (`No tracked xbrief/vbrief dirt under ${dirtyRoot} (untracked-only). ` +
284
+ "Commit and push, or discard local lifecycle edits, then retry. " +
285
+ "Do not use git stash push -u as copy-paste remediation.");
286
+ }
287
+ if (modifies.length === 0 && deletions.length > 0) {
288
+ const paths = deletions.map((e) => shellSingleQuote(e.path)).join(" ");
289
+ return (`Deletions-only lifecycle dirt (Approach1 sole-pin un-pin). Restore with:\n` +
290
+ ` git -C ${shellSingleQuote(dirtyRoot)} checkout HEAD -- ${paths}\n` +
291
+ "Then retry closeout / wait-mergeable.");
292
+ }
293
+ if (deletions.length > 0 && modifies.length > 0) {
294
+ const deletedPaths = deletions.map((e) => shellSingleQuote(e.path)).join(" ");
295
+ const modifiedPaths = modifies.map((e) => e.path).join(", ");
296
+ return (`Tracked modify/add/rename present (${modifiedPaths}); do not bare-checkout over those. ` +
297
+ `Optional restore for deleted paths only:\n` +
298
+ ` git -C ${shellSingleQuote(dirtyRoot)} checkout HEAD -- ${deletedPaths}\n` +
299
+ `(excludes modified entries). Otherwise commit and push, or discard local lifecycle edits. ` +
300
+ "Do not use unqualified stash.");
301
+ }
302
+ return (`Tracked modify/add/rename lifecycle dirt under ${dirtyRoot}. ` +
303
+ "Do not bare-checkout HEAD over those paths. Commit and push, or discard local " +
304
+ "lifecycle edits, then retry. Do not use unqualified stash.");
305
+ }
306
+ export function refuseDirtyLifecycle(projectRoot, classified) {
307
+ const sample = sampleFromEntries(classified.entries);
308
+ const remediation = formatLifecycleDirtyRemediation(projectRoot, classified.entries);
125
309
  return {
126
310
  ok: false,
311
+ reason: "lifecycle-dirty",
127
312
  message: `lifecycle tree under ${projectRoot} has uncommitted xbrief/vbrief changes ` +
128
- `(${dirtySample}). Closeout reads the committed PR-head brief — commit, ` +
129
- "stash, or discard local lifecycle edits and retry.",
313
+ `(${sample}). Closeout reads the committed PR-head brief. ${remediation}`,
314
+ };
315
+ }
316
+ function refuseUnverifiableLifecycle(projectRoot, diagnostic) {
317
+ return {
318
+ ok: false,
319
+ message: `lifecycle tree under ${projectRoot} status is unverifiable (${diagnostic}). ` +
320
+ "Closeout cannot certify briefs without a readable git status — fix git and retry. " +
321
+ "No discard remediation is printed for unverifiable status reads.",
130
322
  };
131
323
  }
132
324
  /**
133
325
  * Assert local HEAD equals the PR head that will merge.
134
326
  * Fail closed (message for exit 2) when either side is unreadable or they differ
135
- * and no linked worktree matches. Refuse a dirty lifecycle tree on the chosen root.
327
+ * and no linked worktree matches. Prefer a lifecycle-clean SHA match; refuse a
328
+ * dirty lifecycle tree on the chosen root with reason lifecycle-dirty.
136
329
  */
137
330
  export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, options = {}) {
138
331
  if (options.enabled === false) {
@@ -140,13 +333,14 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
140
333
  }
141
334
  const resolveLocal = options.resolveLocalHeadSha ?? resolveLocalHeadSha;
142
335
  const fetchPrHead = options.fetchPrHeadSha ?? fetchPrHeadShaViaApi;
143
- const resolveWorktree = options.resolveWorktreeAtSha ?? findWorktreeAtSha;
144
- const resolveDirty = options.resolveLifecycleDirty ?? resolveLifecycleDirty;
336
+ const classify = options.classifyLifecycleDirty ?? classifyLifecycleDirty;
337
+ const resolveWorktree = options.resolveWorktreeAtSha ??
338
+ ((root, sha) => findWorktreeAtSha(root, sha, classify));
145
339
  // Hermetic tests inject SHAs and have no real git tree — skip dirty unless
146
- // they opt in (`checkLifecycleDirty: true` or inject `resolveLifecycleDirty`).
340
+ // they opt in (`checkLifecycleDirty: true` or inject classifier).
147
341
  const checkDirty = options.checkLifecycleDirty === true ||
148
342
  (options.checkLifecycleDirty !== false &&
149
- (options.resolveLifecycleDirty !== undefined ||
343
+ (options.classifyLifecycleDirty !== undefined ||
150
344
  (options.localHeadSha === undefined && options.prHeadSha === undefined)));
151
345
  const localHead = options.localHeadSha !== undefined ? options.localHeadSha : resolveLocal(projectRoot);
152
346
  if (localHead === null || localHead.trim().length === 0) {
@@ -167,9 +361,32 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
167
361
  let effectiveRoot = projectRoot;
168
362
  let effectiveLocal = localHead.trim();
169
363
  let resolvedProjectRoot;
170
- if (!shasMatch(localHead, prHead)) {
364
+ let candidateZeroNonClean = null;
365
+ const atTip = shasMatch(localHead, prHead);
366
+ if (atTip && checkDirty) {
367
+ const localClass = classify(projectRoot);
368
+ if (localClass.status === "clean") {
369
+ return {
370
+ ok: true,
371
+ localHeadSha: effectiveLocal,
372
+ prHeadSha: prHead.trim(),
373
+ };
374
+ }
375
+ // Caller-at-tip dirty/unverifiable: still enumerate siblings (candidate zero).
376
+ candidateZeroNonClean = localClass;
377
+ }
378
+ if (!atTip || candidateZeroNonClean !== null) {
171
379
  const lookup = resolveWorktree(projectRoot, prHead.trim());
172
380
  if (lookup.status === "error") {
381
+ if (candidateZeroNonClean !== null) {
382
+ // Candidate-zero dirty lookup degrades to dirty/unverifiable refuse.
383
+ if (candidateZeroNonClean.status === "dirty") {
384
+ return refuseDirtyLifecycle(projectRoot, candidateZeroNonClean);
385
+ }
386
+ return refuseUnverifiableLifecycle(projectRoot, candidateZeroNonClean.status === "unverifiable"
387
+ ? candidateZeroNonClean.diagnostic
388
+ : LIFECYCLE_STATUS_UNREADABLE);
389
+ }
173
390
  return {
174
391
  ok: false,
175
392
  message: `${lookup.message}. Refusing to certify briefs when the PR-head worktree lookup ` +
@@ -177,6 +394,14 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
177
394
  };
178
395
  }
179
396
  if (lookup.status === "absent" || lookup.path.trim().length === 0) {
397
+ if (candidateZeroNonClean !== null) {
398
+ if (candidateZeroNonClean.status === "dirty") {
399
+ return refuseDirtyLifecycle(projectRoot, candidateZeroNonClean);
400
+ }
401
+ return refuseUnverifiableLifecycle(projectRoot, candidateZeroNonClean.status === "unverifiable"
402
+ ? candidateZeroNonClean.diagnostic
403
+ : LIFECYCLE_STATUS_UNREADABLE);
404
+ }
180
405
  return {
181
406
  ok: false,
182
407
  message: `working tree HEAD ${localHead} is not PR #${prNumber} head ${prHead}. ` +
@@ -195,13 +420,19 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
195
420
  }
196
421
  effectiveRoot = alt;
197
422
  effectiveLocal = altHead.trim();
198
- resolvedProjectRoot = alt;
423
+ if (resolvePathKey(alt) !== resolvePathKey(projectRoot)) {
424
+ resolvedProjectRoot = alt;
425
+ }
199
426
  }
200
427
  if (checkDirty) {
201
- const dirty = resolveDirty(effectiveRoot);
202
- if (dirty !== null) {
428
+ // Selection probe advisory; refuse authoritative (post-selection three-state).
429
+ const dirty = classify(effectiveRoot);
430
+ if (dirty.status === "dirty") {
203
431
  return refuseDirtyLifecycle(effectiveRoot, dirty);
204
432
  }
433
+ if (dirty.status === "unverifiable") {
434
+ return refuseUnverifiableLifecycle(effectiveRoot, dirty.diagnostic);
435
+ }
205
436
  }
206
437
  return {
207
438
  ok: true,