@deftai/directive-runtime 0.129.5 → 0.129.7

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 (222) hide show
  1. package/Taskfile.yml +316 -0
  2. package/UPGRADING.md +1 -0
  3. package/commands.md +5 -3
  4. package/contracts/design-critique.md +1 -1
  5. package/contracts/path-write-fence.md +6 -0
  6. package/dist/applying-host-release.d.ts +16 -0
  7. package/dist/applying-host-release.js +98 -0
  8. package/dist/authz.d.ts +1 -1
  9. package/dist/authz.js +1 -1
  10. package/dist/check.d.ts +1 -0
  11. package/dist/check.js +27 -4
  12. package/dist/design-critique-ensure-arc-dest.d.ts +16 -0
  13. package/dist/design-critique-ensure-arc-dest.js +168 -0
  14. package/dist/dispatch.d.ts +1 -1
  15. package/dist/dispatch.js +8 -0
  16. package/dist/hook-dispatch.js +3 -2
  17. package/dist/human-presence-mint.d.ts +6 -1
  18. package/dist/human-presence-mint.js +20 -6
  19. package/dist/session-start.d.ts +8 -2
  20. package/dist/session-start.js +70 -15
  21. package/dist/setup-wiring.d.ts +36 -0
  22. package/dist/setup-wiring.js +169 -14
  23. package/dist/vbrief-preflight.d.ts +4 -0
  24. package/dist/vbrief-preflight.js +34 -0
  25. package/dist/verify-scope-provenance.d.ts +13 -1
  26. package/dist/verify-scope-provenance.js +44 -1
  27. package/dist/verify-source-cli/verify-deposit-closure.js +5 -5
  28. package/dist/windows-bin-ps1.d.ts +2 -2
  29. package/dist/windows-bin-ps1.js +5 -11
  30. package/docs/deft-directive-disable.md +3 -3
  31. package/docs/getting-started.md +2 -0
  32. package/docs/scope-provenance.md +15 -1
  33. package/package.json +2 -3
  34. package/packs/lessons/lessons-pack-0.1.json +15 -0
  35. package/packs/skills/skills-pack-0.1.json +3 -3
  36. package/skills/deft-directive-design-critique/SKILL.md +1 -1
  37. package/skills/deft-directive-release/SKILL.md +31 -1
  38. package/skills/deft-directive-review-cycle/SKILL.md +15 -6
  39. package/skills/deft-directive-swarm/references/host-grok-build.md +3 -2
  40. package/vendor/directive-content/Taskfile.yml +316 -0
  41. package/vendor/directive-content/UPGRADING.md +1 -0
  42. package/vendor/directive-content/commands.md +5 -3
  43. package/vendor/directive-content/contracts/design-critique.md +1 -1
  44. package/vendor/directive-content/contracts/path-write-fence.md +6 -0
  45. package/vendor/directive-content/docs/deft-directive-disable.md +3 -3
  46. package/vendor/directive-content/docs/getting-started.md +2 -0
  47. package/vendor/directive-content/docs/scope-provenance.md +15 -1
  48. package/vendor/directive-content/packs/lessons/lessons-pack-0.1.json +15 -0
  49. package/vendor/directive-content/packs/skills/skills-pack-0.1.json +3 -3
  50. package/vendor/directive-content/skills/deft-directive-design-critique/SKILL.md +1 -1
  51. package/vendor/directive-content/skills/deft-directive-release/SKILL.md +31 -1
  52. package/vendor/directive-content/skills/deft-directive-review-cycle/SKILL.md +15 -6
  53. package/vendor/directive-content/skills/deft-directive-swarm/references/host-grok-build.md +3 -2
  54. package/vendor/directive-core/dist/.tsbuildinfo +1 -1
  55. package/vendor/directive-core/dist/authz/classify.d.ts +12 -0
  56. package/vendor/directive-core/dist/authz/classify.d.ts.map +1 -1
  57. package/vendor/directive-core/dist/authz/classify.js +40 -12
  58. package/vendor/directive-core/dist/authz/classify.js.map +1 -1
  59. package/vendor/directive-core/dist/authz/templates.d.ts +2 -2
  60. package/vendor/directive-core/dist/authz/templates.d.ts.map +1 -1
  61. package/vendor/directive-core/dist/authz/templates.js +1 -0
  62. package/vendor/directive-core/dist/authz/templates.js.map +1 -1
  63. package/vendor/directive-core/dist/authz/types.d.ts +1 -1
  64. package/vendor/directive-core/dist/authz/types.d.ts.map +1 -1
  65. package/vendor/directive-core/dist/authz/types.js +2 -0
  66. package/vendor/directive-core/dist/authz/types.js.map +1 -1
  67. package/vendor/directive-core/dist/authz/verb-classification.d.ts.map +1 -1
  68. package/vendor/directive-core/dist/authz/verb-classification.js +30 -3
  69. package/vendor/directive-core/dist/authz/verb-classification.js.map +1 -1
  70. package/vendor/directive-core/dist/cache/fetch.d.ts.map +1 -1
  71. package/vendor/directive-core/dist/cache/fetch.js +50 -4
  72. package/vendor/directive-core/dist/cache/fetch.js.map +1 -1
  73. package/vendor/directive-core/dist/design-critique/arc-dest.d.ts +22 -5
  74. package/vendor/directive-core/dist/design-critique/arc-dest.d.ts.map +1 -1
  75. package/vendor/directive-core/dist/design-critique/arc-dest.js +61 -0
  76. package/vendor/directive-core/dist/design-critique/arc-dest.js.map +1 -1
  77. package/vendor/directive-core/dist/design-critique/run-posture.d.ts +7 -2
  78. package/vendor/directive-core/dist/design-critique/run-posture.d.ts.map +1 -1
  79. package/vendor/directive-core/dist/design-critique/run-posture.js +6 -1
  80. package/vendor/directive-core/dist/design-critique/run-posture.js.map +1 -1
  81. package/vendor/directive-core/dist/fs/contained-write.d.ts +8 -2
  82. package/vendor/directive-core/dist/fs/contained-write.d.ts.map +1 -1
  83. package/vendor/directive-core/dist/fs/contained-write.js +22 -6
  84. package/vendor/directive-core/dist/fs/contained-write.js.map +1 -1
  85. package/vendor/directive-core/dist/hooks/dispatcher.d.ts +1 -1
  86. package/vendor/directive-core/dist/hooks/dispatcher.d.ts.map +1 -1
  87. package/vendor/directive-core/dist/hooks/dispatcher.js +290 -16
  88. package/vendor/directive-core/dist/hooks/dispatcher.js.map +1 -1
  89. package/vendor/directive-core/dist/hooks/shell-write-targets.d.ts +5 -0
  90. package/vendor/directive-core/dist/hooks/shell-write-targets.d.ts.map +1 -1
  91. package/vendor/directive-core/dist/hooks/shell-write-targets.js +18 -1
  92. package/vendor/directive-core/dist/hooks/shell-write-targets.js.map +1 -1
  93. package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts +26 -1
  94. package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts.map +1 -1
  95. package/vendor/directive-core/dist/init-deposit/agent-hooks.js +52 -3
  96. package/vendor/directive-core/dist/init-deposit/agent-hooks.js.map +1 -1
  97. package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts +48 -0
  98. package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts.map +1 -1
  99. package/vendor/directive-core/dist/init-deposit/host-hook-outer.js +170 -9
  100. package/vendor/directive-core/dist/init-deposit/host-hook-outer.js.map +1 -1
  101. package/vendor/directive-core/dist/init-deposit/scaffold.d.ts +8 -1
  102. package/vendor/directive-core/dist/init-deposit/scaffold.d.ts.map +1 -1
  103. package/vendor/directive-core/dist/init-deposit/scaffold.js +38 -4
  104. package/vendor/directive-core/dist/init-deposit/scaffold.js.map +1 -1
  105. package/vendor/directive-core/dist/install-health/cheap.d.ts +2 -1
  106. package/vendor/directive-core/dist/install-health/cheap.d.ts.map +1 -1
  107. package/vendor/directive-core/dist/install-health/cheap.js +4 -3
  108. package/vendor/directive-core/dist/install-health/cheap.js.map +1 -1
  109. package/vendor/directive-core/dist/install-health/constants.d.ts +18 -2
  110. package/vendor/directive-core/dist/install-health/constants.d.ts.map +1 -1
  111. package/vendor/directive-core/dist/install-health/constants.js +18 -2
  112. package/vendor/directive-core/dist/install-health/constants.js.map +1 -1
  113. package/vendor/directive-core/dist/policy/deft-directive-disable.d.ts +42 -5
  114. package/vendor/directive-core/dist/policy/deft-directive-disable.d.ts.map +1 -1
  115. package/vendor/directive-core/dist/policy/deft-directive-disable.js +71 -41
  116. package/vendor/directive-core/dist/policy/deft-directive-disable.js.map +1 -1
  117. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.d.ts +6 -1
  118. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.d.ts.map +1 -1
  119. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.js +24 -12
  120. package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.js.map +1 -1
  121. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.d.ts +68 -14
  122. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.d.ts.map +1 -1
  123. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.js +278 -47
  124. package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.js.map +1 -1
  125. package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.d.ts +10 -5
  126. package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.d.ts.map +1 -1
  127. package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.js +41 -18
  128. package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.js.map +1 -1
  129. package/vendor/directive-core/dist/preflight-gh/pre-push.d.ts +3 -2
  130. package/vendor/directive-core/dist/preflight-gh/pre-push.d.ts.map +1 -1
  131. package/vendor/directive-core/dist/preflight-gh/pre-push.js +19 -18
  132. package/vendor/directive-core/dist/preflight-gh/pre-push.js.map +1 -1
  133. package/vendor/directive-core/dist/release/gh.d.ts.map +1 -1
  134. package/vendor/directive-core/dist/release/gh.js +2 -1
  135. package/vendor/directive-core/dist/release/gh.js.map +1 -1
  136. package/vendor/directive-core/dist/release/version.d.ts +4 -2
  137. package/vendor/directive-core/dist/release/version.d.ts.map +1 -1
  138. package/vendor/directive-core/dist/release/version.js +4 -2
  139. package/vendor/directive-core/dist/release/version.js.map +1 -1
  140. package/vendor/directive-core/dist/release-publish/gh-api.d.ts.map +1 -1
  141. package/vendor/directive-core/dist/release-publish/gh-api.js +4 -2
  142. package/vendor/directive-core/dist/release-publish/gh-api.js.map +1 -1
  143. package/vendor/directive-core/dist/release-publish/main.d.ts.map +1 -1
  144. package/vendor/directive-core/dist/release-publish/main.js +15 -4
  145. package/vendor/directive-core/dist/release-publish/main.js.map +1 -1
  146. package/vendor/directive-core/dist/release-publish/pipeline.d.ts +11 -0
  147. package/vendor/directive-core/dist/release-publish/pipeline.d.ts.map +1 -1
  148. package/vendor/directive-core/dist/release-publish/pipeline.js +143 -2
  149. package/vendor/directive-core/dist/release-publish/pipeline.js.map +1 -1
  150. package/vendor/directive-core/dist/release-rollback/gh.d.ts.map +1 -1
  151. package/vendor/directive-core/dist/release-rollback/gh.js +2 -1
  152. package/vendor/directive-core/dist/release-rollback/gh.js.map +1 -1
  153. package/vendor/directive-core/dist/scope/delivery-evidence.d.ts +202 -19
  154. package/vendor/directive-core/dist/scope/delivery-evidence.d.ts.map +1 -1
  155. package/vendor/directive-core/dist/scope/delivery-evidence.js +948 -107
  156. package/vendor/directive-core/dist/scope/delivery-evidence.js.map +1 -1
  157. package/vendor/directive-core/dist/scope/transition.d.ts +4 -1
  158. package/vendor/directive-core/dist/scope/transition.d.ts.map +1 -1
  159. package/vendor/directive-core/dist/scope/transition.js +2 -2
  160. package/vendor/directive-core/dist/scope/transition.js.map +1 -1
  161. package/vendor/directive-core/dist/scope-provenance/base-fence.d.ts +11 -2
  162. package/vendor/directive-core/dist/scope-provenance/base-fence.d.ts.map +1 -1
  163. package/vendor/directive-core/dist/scope-provenance/base-fence.js +16 -1
  164. package/vendor/directive-core/dist/scope-provenance/base-fence.js.map +1 -1
  165. package/vendor/directive-core/dist/scope-provenance/evaluate.d.ts +12 -0
  166. package/vendor/directive-core/dist/scope-provenance/evaluate.d.ts.map +1 -1
  167. package/vendor/directive-core/dist/scope-provenance/evaluate.js +41 -5
  168. package/vendor/directive-core/dist/scope-provenance/evaluate.js.map +1 -1
  169. package/vendor/directive-core/dist/scope-provenance/forge-approval.d.ts +106 -0
  170. package/vendor/directive-core/dist/scope-provenance/forge-approval.d.ts.map +1 -0
  171. package/vendor/directive-core/dist/scope-provenance/forge-approval.js +382 -0
  172. package/vendor/directive-core/dist/scope-provenance/forge-approval.js.map +1 -0
  173. package/vendor/directive-core/dist/session/git.d.ts +21 -2
  174. package/vendor/directive-core/dist/session/git.d.ts.map +1 -1
  175. package/vendor/directive-core/dist/session/git.js +21 -4
  176. package/vendor/directive-core/dist/session/git.js.map +1 -1
  177. package/vendor/directive-core/dist/session/occupancy.d.ts +93 -6
  178. package/vendor/directive-core/dist/session/occupancy.d.ts.map +1 -1
  179. package/vendor/directive-core/dist/session/occupancy.js +215 -52
  180. package/vendor/directive-core/dist/session/occupancy.js.map +1 -1
  181. package/vendor/directive-core/dist/session/orientation-compression.d.ts +18 -2
  182. package/vendor/directive-core/dist/session/orientation-compression.d.ts.map +1 -1
  183. package/vendor/directive-core/dist/session/orientation-compression.js +38 -5
  184. package/vendor/directive-core/dist/session/orientation-compression.js.map +1 -1
  185. package/vendor/directive-core/dist/session/session-start.d.ts +47 -2
  186. package/vendor/directive-core/dist/session/session-start.d.ts.map +1 -1
  187. package/vendor/directive-core/dist/session/session-start.js +154 -3
  188. package/vendor/directive-core/dist/session/session-start.js.map +1 -1
  189. package/vendor/directive-core/dist/swarm/approach1-babysitter.d.ts +18 -4
  190. package/vendor/directive-core/dist/swarm/approach1-babysitter.d.ts.map +1 -1
  191. package/vendor/directive-core/dist/swarm/approach1-babysitter.js +28 -4
  192. package/vendor/directive-core/dist/swarm/approach1-babysitter.js.map +1 -1
  193. package/vendor/directive-core/dist/swarm/dest-place.d.ts +1 -1
  194. package/vendor/directive-core/dist/swarm/dest-place.d.ts.map +1 -1
  195. package/vendor/directive-core/dist/swarm/dest-place.js +36 -41
  196. package/vendor/directive-core/dist/swarm/dest-place.js.map +1 -1
  197. package/vendor/directive-core/dist/swarm/finalize-cohort.d.ts +29 -0
  198. package/vendor/directive-core/dist/swarm/finalize-cohort.d.ts.map +1 -1
  199. package/vendor/directive-core/dist/swarm/finalize-cohort.js +122 -11
  200. package/vendor/directive-core/dist/swarm/finalize-cohort.js.map +1 -1
  201. package/vendor/directive-core/dist/swarm/finalize-owed.d.ts +14 -0
  202. package/vendor/directive-core/dist/swarm/finalize-owed.d.ts.map +1 -1
  203. package/vendor/directive-core/dist/swarm/finalize-owed.js +214 -48
  204. package/vendor/directive-core/dist/swarm/finalize-owed.js.map +1 -1
  205. package/vendor/directive-core/dist/swarm/launch.d.ts.map +1 -1
  206. package/vendor/directive-core/dist/swarm/launch.js +15 -4
  207. package/vendor/directive-core/dist/swarm/launch.js.map +1 -1
  208. package/vendor/directive-core/dist/swarm/worktree-pm-install.d.ts +49 -2
  209. package/vendor/directive-core/dist/swarm/worktree-pm-install.d.ts.map +1 -1
  210. package/vendor/directive-core/dist/swarm/worktree-pm-install.js +207 -12
  211. package/vendor/directive-core/dist/swarm/worktree-pm-install.js.map +1 -1
  212. package/vendor/directive-core/dist/swarm/worktrees-cli.d.ts +6 -0
  213. package/vendor/directive-core/dist/swarm/worktrees-cli.d.ts.map +1 -1
  214. package/vendor/directive-core/dist/swarm/worktrees-cli.js +79 -2
  215. package/vendor/directive-core/dist/swarm/worktrees-cli.js.map +1 -1
  216. package/vendor/directive-core/dist/swarm/worktrees.d.ts +12 -1
  217. package/vendor/directive-core/dist/swarm/worktrees.d.ts.map +1 -1
  218. package/vendor/directive-core/dist/swarm/worktrees.js +34 -26
  219. package/vendor/directive-core/dist/swarm/worktrees.js.map +1 -1
  220. package/vendor/directive-core/dist/triage/evaluate/worktrees.d.ts.map +1 -1
  221. package/vendor/directive-core/dist/triage/evaluate/worktrees.js +219 -60
  222. package/vendor/directive-core/dist/triage/evaluate/worktrees.js.map +1 -1
@@ -8,10 +8,9 @@
8
8
  */
9
9
  import { existsSync, mkdirSync } from "node:fs";
10
10
  import { dirname, isAbsolute, join, resolve as pathResolve } from "node:path";
11
- import { reconstituteLinkedWorktreeDeposit } from "../init-deposit/gitignore.js";
12
11
  import { isLinkedWorktreePath, mainWorktreeRoot } from "../session/main-worktree.js";
13
12
  import { ensureSubagentStatusDir } from "./subagent-status-dir.js";
14
- import { installWorktreePackages, worktreeHasRuntimePin, } from "./worktree-pm-install.js";
13
+ import { prepareLinkedWorktree } from "./worktree-pm-install.js";
15
14
  import { defaultGitRunner } from "./worktrees.js";
16
15
  function resolvePath(raw, repoRoot) {
17
16
  const candidate = isAbsolute(raw) ? raw : pathResolve(repoRoot, raw);
@@ -120,16 +119,24 @@ export function destPlaceImplementSpawn(input) {
120
119
  `(ownership check before deposit reconstitution).`,
121
120
  };
122
121
  }
123
- const reuseDeposit = reconstituteLinkedWorktreeDeposit(worktreePath, {
124
- preferPrimaryCore: true,
122
+ const prep = prepareLinkedWorktree(worktreePath, {
123
+ repoRoot,
124
+ runner: input.pmRunner,
125
125
  });
126
- if (reuseDeposit.status === "refused") {
126
+ if (!prep.ok) {
127
+ const code = prep.code === "foreign-worktree"
128
+ ? "foreign-worktree"
129
+ : prep.code === "live-stranger-lease"
130
+ ? "live-stranger-lease"
131
+ : prep.code === "pin-missing"
132
+ ? "pin-missing"
133
+ : prep.code === "pm-failed"
134
+ ? "pm-failed"
135
+ : "deposit-refused";
127
136
  return {
128
137
  ok: false,
129
- code: "deposit-refused",
130
- message: `dest-place refused reuse of ${worktreePath}: deposit reconstitution refused: ` +
131
- `${reuseDeposit.message}. Pick a fresh path or repair the payload source; ` +
132
- `this path was left in place (no force-remove).`,
138
+ code,
139
+ message: `dest-place refused reuse of ${worktreePath}: ${prep.message}`,
133
140
  };
134
141
  }
135
142
  ensureSubagentStatusDir(worktreePath);
@@ -161,38 +168,26 @@ export function destPlaceImplementSpawn(input) {
161
168
  `(rc=${proc.returncode}): ${proc.stderr.trim() || "<no stderr>"}`,
162
169
  };
163
170
  }
164
- if (worktreeHasRuntimePin(worktreePath)) {
165
- const pm = installWorktreePackages(worktreePath, { runner: input.pmRunner });
166
- if (!pm.ok) {
167
- return {
168
- ok: false,
169
- code: "deposit-refused",
170
- message: `dest-place PM install failed for ${worktreePath}: ${pm.message}. ` +
171
- `Worktree left in place (no force-remove).`,
172
- };
173
- }
174
- }
175
- else {
176
- const deposit = reconstituteLinkedWorktreeDeposit(worktreePath, {
177
- preferPrimaryCore: true,
178
- });
179
- if (deposit.status === "refused") {
180
- return {
181
- ok: false,
182
- code: "deposit-refused",
183
- message: `dest-place deposit reconstitution refused for ${worktreePath}: ${deposit.message}. ` +
184
- `Worktree left in place (no force-remove). Retry reconstitutes the same path when HEAD matches; ` +
185
- `or pick a fresh path.`,
186
- };
187
- }
188
- const pm = installWorktreePackages(worktreePath, { runner: input.pmRunner });
189
- if (!pm.ok && pm.message.includes("Yarn/Bun")) {
190
- return {
191
- ok: false,
192
- code: "deposit-refused",
193
- message: `dest-place PM install refused for ${worktreePath}: ${pm.message}`,
194
- };
195
- }
171
+ const prep = prepareLinkedWorktree(worktreePath, {
172
+ repoRoot,
173
+ runner: input.pmRunner,
174
+ });
175
+ if (!prep.ok) {
176
+ const code = prep.code === "foreign-worktree"
177
+ ? "foreign-worktree"
178
+ : prep.code === "live-stranger-lease"
179
+ ? "live-stranger-lease"
180
+ : prep.code === "pin-missing"
181
+ ? "pin-missing"
182
+ : prep.code === "pm-failed"
183
+ ? "pm-failed"
184
+ : "deposit-refused";
185
+ return {
186
+ ok: false,
187
+ code,
188
+ message: `dest-place prep failed for ${worktreePath}: ${prep.message}. ` +
189
+ `Worktree left in place (no force-remove).`,
190
+ };
196
191
  }
197
192
  ensureSubagentStatusDir(worktreePath);
198
193
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"dest-place.js","sourceRoot":"","sources":["../../src/swarm/dest-place.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dest-place.js","sourceRoot":"","sources":["../../src/swarm/dest-place.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { RunGhFn } from "../pr-protected-issues/types.js";
2
+ import { type FetchPrChangedFilesFn } from "../scope/delivery-evidence.js";
2
3
  import { type SweepResult } from "./complete-cohort.js";
3
4
  import { runText } from "./subprocess.js";
5
+ import { type WorktreePm, type WorktreePmRunner } from "./worktree-pm-install.js";
4
6
  /** Structured awaiting-land state (#4919). Distinct from validation/REST failures. */
5
7
  export interface FinalizeOriginClosePending {
6
8
  readonly kind: "origin-close";
@@ -60,7 +62,34 @@ export interface FinalizeCohortArgs {
60
62
  * isolated delivery checkout (#4714 R5). Default: the calling project root.
61
63
  */
62
64
  readonly retainedDests?: readonly string[];
65
+ /** Test seam: package-manager runner for the lifecycle checkout install (#5882). */
66
+ readonly pmRunner?: WorktreePmRunner;
67
+ /** Test seam: PR changed-files lookup for the lifecycle-shaped PR guard (#6212). */
68
+ readonly fetchPrChangedFiles?: FetchPrChangedFilesFn;
63
69
  }
70
+ /**
71
+ * Lifecycle checkout package install disposition (#5882). Surfaced on finalize
72
+ * lines only; it is not an acceptance predicate member.
73
+ */
74
+ export type LifecycleInstallDisposition = {
75
+ readonly kind: "not-pinned";
76
+ } | {
77
+ readonly kind: "installed";
78
+ readonly pm: WorktreePm;
79
+ } | {
80
+ readonly kind: "skipped-unsupported-pm";
81
+ } | {
82
+ readonly kind: "failed";
83
+ readonly pm: WorktreePm | null;
84
+ readonly message: string;
85
+ };
86
+ /**
87
+ * Install packages on the lifecycle checkout before the completion sweep (#5882).
88
+ * Gated by the runtime pin, as linked-worktree prep gates it. npm/pnpm failure is
89
+ * `failed`; Yarn/Bun is diagnosed-only (`skipped-unsupported-pm`).
90
+ */
91
+ export declare function installLifecycleCheckoutPackages(checkout: string, runner?: WorktreePmRunner): LifecycleInstallDisposition;
92
+ export declare function formatLifecycleInstallDisposition(disposition: LifecycleInstallDisposition): string;
64
93
  /** Shared with finalize-owed protected skip (#5143 / #4919). */
65
94
  export declare const PROTECTED_STAYING_OPEN_LABELS: Set<string>;
66
95
  /** True when origin labels mean the issue stays open (epic/tracker/umbrella) (#5143). */
@@ -1 +1 @@
1
- {"version":3,"file":"finalize-cohort.d.ts","sourceRoot":"","sources":["../../src/swarm/finalize-cohort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finalize-cohort.d.ts","sourceRoot":"","sources":["../../src/swarm/finalize-cohort.ts"],"names":[],"mappings":"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"}
@@ -12,13 +12,37 @@ import { policyColonInvocation } from "../policy/policy-invocation.js";
12
12
  import { ENV_ALLOW_BOT_MERGE, evaluateAgentMerge, resolveHumanMergePolicy, } from "../policy/require-human-merge.js";
13
13
  import { parseAllDeftStoryMarks } from "../pr-closing-keywords/main.js";
14
14
  import { defaultRunGh, fetchClosingIssuesReferences } from "../pr-protected-issues/gh.js";
15
- import { classifyStoredDeliveryDisposition, evidenceFromPrPayload, verifyDeliveryAncestry, } from "../scope/delivery-evidence.js";
15
+ import { LIFECYCLE_FOLDERS } from "../scope/constants.js";
16
+ import { classifyStoredDeliveryDisposition, defaultFetchPrChangedFiles, evidenceFromPrPayload, verifyDeliveryAncestry, } from "../scope/delivery-evidence.js";
16
17
  import { materializeRetainedBrief, SOURCE_RECOVERY_REMEDIATION } from "./brief-transport.js";
17
18
  import { completeCohort } from "./complete-cohort.js";
18
19
  import { EXIT_CONFIG_ERROR, EXIT_GATE_FAILED, EXIT_INCOMPLETE, EXIT_OK } from "./constants.js";
19
20
  import { cancelledBriefReferencesIssue, completedBriefReferencesIssue, resolveStories, terminalBriefReferencesIssue, } from "./launch.js";
20
21
  import { evaluateLifecycleDiff, expectedLifecycleRels, parseStagedXbriefPaths, } from "./lifecycle-diff.js";
21
22
  import { runText } from "./subprocess.js";
23
+ import { detectWorktreePm, installWorktreePackages, worktreeHasRuntimePin, } from "./worktree-pm-install.js";
24
+ /**
25
+ * Install packages on the lifecycle checkout before the completion sweep (#5882).
26
+ * Gated by the runtime pin, as linked-worktree prep gates it. npm/pnpm failure is
27
+ * `failed`; Yarn/Bun is diagnosed-only (`skipped-unsupported-pm`).
28
+ */
29
+ export function installLifecycleCheckoutPackages(checkout, runner) {
30
+ if (!worktreeHasRuntimePin(checkout)) {
31
+ return { kind: "not-pinned" };
32
+ }
33
+ if (detectWorktreePm(checkout) === null) {
34
+ return { kind: "skipped-unsupported-pm" };
35
+ }
36
+ const installed = installWorktreePackages(checkout, { runner });
37
+ if (!installed.ok) {
38
+ return { kind: "failed", pm: installed.pm, message: installed.message };
39
+ }
40
+ return { kind: "installed", pm: installed.pm };
41
+ }
42
+ export function formatLifecycleInstallDisposition(disposition) {
43
+ const pm = "pm" in disposition && disposition.pm !== null ? ` pm=${disposition.pm}` : "";
44
+ return `lifecycle install disposition=${disposition.kind}${pm}`;
45
+ }
22
46
  function splitCsv(values) {
23
47
  const out = [];
24
48
  for (const value of values) {
@@ -342,9 +366,13 @@ function collectProductPullRequestOrigins(projectRoot, prNumbers) {
342
366
  /**
343
367
  * PR-body `deft-story: N` may bind only when this PR is delivery for N (#4864 / #4919):
344
368
  * TIP_NONTERMINAL or completed brief for N with metadata.productPullRequest === this PR.
345
- * Absent stamp never binds (unrelated completed issue must not close).
369
+ * Absent stamp never binds on its own (unrelated completed issue must not close).
370
+ * Also reports a stamp naming another PR and whether an unstamped active brief
371
+ * exists, for the operator-story bind at the call site (#6212).
346
372
  */
347
373
  function deftStoryMarkBindsDelivery(projectRoot, issue, prNumber) {
374
+ let otherPr = null;
375
+ let unstampedActive = false;
348
376
  for (const folder of MARK_READER_FOLDERS) {
349
377
  const dir = resolve(projectRoot, folder);
350
378
  if (!existsSync(dir)) {
@@ -367,8 +395,15 @@ function deftStoryMarkBindsDelivery(projectRoot, issue, prNumber) {
367
395
  if (typeof plan !== "object" || plan === null || Array.isArray(plan)) {
368
396
  continue;
369
397
  }
370
- if (productPullRequestFromPlan(plan) === prNumber) {
371
- return true;
398
+ const stamped = productPullRequestFromPlan(plan);
399
+ if (stamped === prNumber) {
400
+ return { stampMatch: true, otherPr: null, unstampedActive: false };
401
+ }
402
+ if (stamped !== null) {
403
+ otherPr ??= stamped;
404
+ }
405
+ else if (folder.endsWith("/active")) {
406
+ unstampedActive = true;
372
407
  }
373
408
  }
374
409
  catch {
@@ -376,7 +411,25 @@ function deftStoryMarkBindsDelivery(projectRoot, issue, prNumber) {
376
411
  }
377
412
  }
378
413
  }
379
- return false;
414
+ return { stampMatch: false, otherPr, unstampedActive };
415
+ }
416
+ /**
417
+ * Lifecycle-shaped PR (#6212): every changed path is a brief under an
418
+ * `xbrief|vbrief/<lifecycle>/` folder or root `CHANGELOG.md`. Activation and
419
+ * lifecycle PRs carry `deft-story` marks too, so they never bind as delivery.
420
+ */
421
+ function isLifecycleShapedPr(files) {
422
+ const folders = new Set(LIFECYCLE_FOLDERS);
423
+ return files.every((f) => {
424
+ const path = f.filename.replace(/\\/g, "/");
425
+ if (path === "CHANGELOG.md") {
426
+ return true;
427
+ }
428
+ const parts = path.split("/");
429
+ return (parts.length === 3 &&
430
+ (parts[0] === "xbrief" || parts[0] === "vbrief") &&
431
+ folders.has(parts[1] ?? ""));
432
+ });
380
433
  }
381
434
  /**
382
435
  * Persist productPullRequest on an active brief before leftover-complete so the
@@ -1167,6 +1220,8 @@ function waitForLifecycleLand(args) {
1167
1220
  export function finalizeCohort(args) {
1168
1221
  const projectRoot = resolve(args.projectRoot ?? process.cwd());
1169
1222
  const runGh = args.runGh ?? defaultRunGh;
1223
+ const fetchPrChangedFiles = args.fetchPrChangedFiles ??
1224
+ ((prNumber, repository) => defaultFetchPrChangedFiles(prNumber, repository, runGh));
1170
1225
  const runGit = args.runGit ?? runText;
1171
1226
  const gitRunner = asGitRunner(runGit);
1172
1227
  const prNumbers = [...(args.prNumbers ?? [])].sort((a, b) => a - b);
@@ -1356,7 +1411,12 @@ export function finalizeCohort(args) {
1356
1411
  const validatedPrs = [];
1357
1412
  /** Full-story close intent from PR-body `deft-story: N` (#4864). Not Tracking/Refs scrape. */
1358
1413
  const fullStoryCloseIssues = new Set();
1414
+ /** A refused deft-story mark stops the stamp and sweep in every write mode (#6212). */
1415
+ let deftStoryMarkRefused = false;
1359
1416
  let closingLookupFailed = false;
1417
+ // Operator --stories issues: their deft-story marks may bind before the sweep stamp (#6212).
1418
+ const operatorResolved = storyTokens.length > 0 ? resolveStories(projectRoot, storyTokens) : null;
1419
+ const operatorStoryIssues = new Set(collectOriginIssueNumbers(operatorResolved?.resolved.map((story) => story.path) ?? [], storyTokens));
1360
1420
  if (prNumbers.length > 0 && errors.length === 0) {
1361
1421
  if (repo === null || repo.length === 0) {
1362
1422
  errors.push("--repo OWNER/REPO is required when --pr is supplied (or set $GH_REPO).");
@@ -1408,11 +1468,39 @@ export function finalizeCohort(args) {
1408
1468
  evidenceByIssue.set(issue, prEvidence);
1409
1469
  }
1410
1470
  const prBody = typeof snap.payload.body === "string" ? snap.payload.body : "";
1471
+ let prFiles;
1411
1472
  for (const issue of parseAllDeftStoryMarks(prBody)) {
1412
- if (!deftStoryMarkBindsDelivery(projectRoot, issue, prNumber)) {
1473
+ const mark = deftStoryMarkBindsDelivery(projectRoot, issue, prNumber);
1474
+ let bound = mark.stampMatch;
1475
+ let reason = `need active or completed brief #${String(issue)} with ` +
1476
+ `metadata.productPullRequest=${String(prNumber)}`;
1477
+ // Operator named N in --stories (#6212): an unstamped active brief binds this
1478
+ // validated PR, and the sweep stamps it. A lifecycle-shaped PR never binds.
1479
+ if (!bound && operatorStoryIssues.has(issue)) {
1480
+ if (mark.otherPr !== null) {
1481
+ reason =
1482
+ `brief #${String(issue)} is already stamped ` +
1483
+ `metadata.productPullRequest=${String(mark.otherPr)}`;
1484
+ }
1485
+ else if (mark.unstampedActive) {
1486
+ if (prFiles === undefined) {
1487
+ prFiles = fetchPrChangedFiles(prNumber, repo);
1488
+ }
1489
+ if (prFiles === null) {
1490
+ reason = `changed-file lookup for PR #${String(prNumber)} failed`;
1491
+ }
1492
+ else if (isLifecycleShapedPr(prFiles)) {
1493
+ reason = `PR #${String(prNumber)} changes only briefs and CHANGELOG.md`;
1494
+ }
1495
+ else {
1496
+ bound = true;
1497
+ }
1498
+ }
1499
+ }
1500
+ if (!bound) {
1501
+ deftStoryMarkRefused = true;
1413
1502
  errors.push(`#${String(issue)}: deft-story mark on PR #${String(prNumber)} does not bind PR delivery ` +
1414
- `(need active or completed brief #${String(issue)} with ` +
1415
- `metadata.productPullRequest=${String(prNumber)}) (#4864).`);
1503
+ `(${reason}) (#4864).`);
1416
1504
  continue;
1417
1505
  }
1418
1506
  fullStoryCloseIssues.add(issue);
@@ -1448,8 +1536,8 @@ export function finalizeCohort(args) {
1448
1536
  };
1449
1537
  // Operator-supplied story tokens keep the hard-error contract: an explicit
1450
1538
  // --stories token that does not resolve to an active brief is a real error.
1451
- if (storyTokens.length > 0) {
1452
- const resolved = resolveStories(projectRoot, storyTokens);
1539
+ if (operatorResolved !== null) {
1540
+ const resolved = operatorResolved;
1453
1541
  for (const story of resolved.resolved) {
1454
1542
  addStory(story.path);
1455
1543
  }
@@ -1705,6 +1793,7 @@ export function finalizeCohort(args) {
1705
1793
  let pendingOrigin = null;
1706
1794
  let createdSweepBranch = null;
1707
1795
  let lifecycle = null;
1796
+ let lifecycleInstall = null;
1708
1797
  // Closure assignment is invisible to finally control flow, so a bare let stays null.
1709
1798
  const held = { outcome: null };
1710
1799
  const respond = (partial) => {
@@ -1768,11 +1857,31 @@ export function finalizeCohort(args) {
1768
1857
  if (branchResult.branch === branchName) {
1769
1858
  createdSweepBranch = branchName;
1770
1859
  }
1860
+ // Sweep is required: install packages so Taskfile includes that
1861
+ // resolve through node_modules exist on this checkout (#5882).
1862
+ lifecycleInstall = installLifecycleCheckoutPackages(prepared.checkout, args.pmRunner);
1863
+ if (lifecycleInstall.kind === "failed") {
1864
+ errors.push(`environment/setup: ${formatLifecycleInstallDisposition(lifecycleInstall)}: ` +
1865
+ `${oneLine(lifecycleInstall.message)}. The completion sweep did not run; ` +
1866
+ "this is not an acceptance commands-failed result. Fix the package install " +
1867
+ `on origin/${deliveryBranch}, then re-run swarm:finalize-cohort.`);
1868
+ skipSweep = true;
1869
+ }
1870
+ else if (lifecycleInstall.kind === "skipped-unsupported-pm") {
1871
+ warnings.push(`${formatLifecycleInstallDisposition(lifecycleInstall)}: Yarn/Bun lifecycle ` +
1872
+ "checkout was not installed (AC5.7). Taskfile includes that resolve through " +
1873
+ "node_modules can be missing during the completion sweep.");
1874
+ }
1771
1875
  }
1772
1876
  }
1773
1877
  }
1774
1878
  }
1775
1879
  }
1880
+ // --no-commit skips the error stop above, but a refused mark must never let the
1881
+ // single-PR default evidence stamp that PR; a retry would then bind it (#6212).
1882
+ if (!dryRun && deftStoryMarkRefused) {
1883
+ skipSweep = true;
1884
+ }
1776
1885
  let sweep = null;
1777
1886
  if (!skipSweep) {
1778
1887
  // Stamp on the sweep root (checkout or project) so leftover-complete preserves bind (#4864).
@@ -1824,7 +1933,9 @@ export function finalizeCohort(args) {
1824
1933
  });
1825
1934
  sweep = sweepResult.sweep;
1826
1935
  if (sweepResult.exitCode !== 0) {
1827
- errors.push("cohort completion sweep failed.");
1936
+ errors.push(lifecycleInstall === null
1937
+ ? "cohort completion sweep failed."
1938
+ : `cohort completion sweep failed (${formatLifecycleInstallDisposition(lifecycleInstall)}).`);
1828
1939
  if (sweep !== null) {
1829
1940
  errors.push(...sweepDetailLines(sweep));
1830
1941
  }