@on-par/factory-core 0.9.28-next.8 → 0.9.28

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 (285) hide show
  1. package/dist/blockers/declared-prerequisites.d.ts +4 -1
  2. package/dist/blockers/declared-prerequisites.d.ts.map +1 -1
  3. package/dist/blockers/declared-prerequisites.js +10 -5
  4. package/dist/blockers/declared-prerequisites.js.map +1 -1
  5. package/dist/checkers/app-smoke.d.ts.map +1 -1
  6. package/dist/checkers/app-smoke.js +4 -1
  7. package/dist/checkers/app-smoke.js.map +1 -1
  8. package/dist/checkers/evidence-plan.d.ts +2 -0
  9. package/dist/checkers/evidence-plan.d.ts.map +1 -1
  10. package/dist/checkers/evidence-plan.js +13 -6
  11. package/dist/checkers/evidence-plan.js.map +1 -1
  12. package/dist/checkers/evidence-selector.d.ts +2 -0
  13. package/dist/checkers/evidence-selector.d.ts.map +1 -1
  14. package/dist/checkers/evidence-selector.js +13 -10
  15. package/dist/checkers/evidence-selector.js.map +1 -1
  16. package/dist/checkers/evidence-workspace.d.ts +21 -0
  17. package/dist/checkers/evidence-workspace.d.ts.map +1 -0
  18. package/dist/checkers/evidence-workspace.js +118 -0
  19. package/dist/checkers/evidence-workspace.js.map +1 -0
  20. package/dist/checkers/index.js +1 -1
  21. package/dist/checkers/index.js.map +1 -1
  22. package/dist/checkers/internal-exports.d.ts +3 -1
  23. package/dist/checkers/internal-exports.d.ts.map +1 -1
  24. package/dist/checkers/internal-exports.js +3 -1
  25. package/dist/checkers/internal-exports.js.map +1 -1
  26. package/dist/checkers/resolve-commands.d.ts.map +1 -1
  27. package/dist/checkers/resolve-commands.js +5 -1
  28. package/dist/checkers/resolve-commands.js.map +1 -1
  29. package/dist/config/example.d.ts.map +1 -1
  30. package/dist/config/example.js +5 -2
  31. package/dist/config/example.js.map +1 -1
  32. package/dist/config/index.d.ts +6 -32
  33. package/dist/config/index.d.ts.map +1 -1
  34. package/dist/config/index.js +17 -32
  35. package/dist/config/index.js.map +1 -1
  36. package/dist/config/merge-policy.d.ts +36 -0
  37. package/dist/config/merge-policy.d.ts.map +1 -0
  38. package/dist/config/merge-policy.js +31 -0
  39. package/dist/config/merge-policy.js.map +1 -0
  40. package/dist/config/repo.js +1 -1
  41. package/dist/config/repo.js.map +1 -1
  42. package/dist/config/run-config-env.d.ts +5 -0
  43. package/dist/config/run-config-env.d.ts.map +1 -0
  44. package/dist/config/run-config-env.js +11 -0
  45. package/dist/config/run-config-env.js.map +1 -0
  46. package/dist/config/run-config-ladder.d.ts +18 -0
  47. package/dist/config/run-config-ladder.d.ts.map +1 -0
  48. package/dist/config/run-config-ladder.js +110 -0
  49. package/dist/config/run-config-ladder.js.map +1 -0
  50. package/dist/config/run-config-source.d.ts +6 -6
  51. package/dist/config/run-config-source.d.ts.map +1 -1
  52. package/dist/config/run-config-source.js +16 -15
  53. package/dist/config/run-config-source.js.map +1 -1
  54. package/dist/constitutions/index.d.ts.map +1 -1
  55. package/dist/constitutions/index.js +8 -0
  56. package/dist/constitutions/index.js.map +1 -1
  57. package/dist/environment/process-groups.d.ts +5 -0
  58. package/dist/environment/process-groups.d.ts.map +1 -1
  59. package/dist/environment/process-groups.js +19 -0
  60. package/dist/environment/process-groups.js.map +1 -1
  61. package/dist/events/config-traits.d.ts +1 -1
  62. package/dist/events/config-traits.d.ts.map +1 -1
  63. package/dist/events/config-traits.js +2 -0
  64. package/dist/events/config-traits.js.map +1 -1
  65. package/dist/events/queue-traits.d.ts +1 -1
  66. package/dist/events/queue-traits.d.ts.map +1 -1
  67. package/dist/events/queue-traits.js +8 -1
  68. package/dist/events/queue-traits.js.map +1 -1
  69. package/dist/events/rotation.js +1 -1
  70. package/dist/events/rotation.js.map +1 -1
  71. package/dist/fakes/octokit.d.ts +13 -1
  72. package/dist/fakes/octokit.d.ts.map +1 -1
  73. package/dist/fakes/octokit.js +13 -0
  74. package/dist/fakes/octokit.js.map +1 -1
  75. package/dist/filing/redact.d.ts +1 -0
  76. package/dist/filing/redact.d.ts.map +1 -1
  77. package/dist/filing/redact.js +1 -1
  78. package/dist/filing/redact.js.map +1 -1
  79. package/dist/harness/opencode-version.d.ts +2 -2
  80. package/dist/harness/opencode-version.d.ts.map +1 -1
  81. package/dist/harness/opencode-version.js +3 -3
  82. package/dist/harness/opencode-version.js.map +1 -1
  83. package/dist/internal.d.ts +13 -1
  84. package/dist/internal.d.ts.map +1 -1
  85. package/dist/internal.js +14 -0
  86. package/dist/internal.js.map +1 -1
  87. package/dist/kpis/index.d.ts.map +1 -1
  88. package/dist/kpis/index.js +2 -1
  89. package/dist/kpis/index.js.map +1 -1
  90. package/dist/kpis/park.d.ts.map +1 -1
  91. package/dist/kpis/park.js +2 -1
  92. package/dist/kpis/park.js.map +1 -1
  93. package/dist/kpis/phase.d.ts.map +1 -1
  94. package/dist/kpis/phase.js +1 -0
  95. package/dist/kpis/phase.js.map +1 -1
  96. package/dist/land/changelog.d.ts +8 -0
  97. package/dist/land/changelog.d.ts.map +1 -0
  98. package/dist/land/changelog.js +90 -0
  99. package/dist/land/changelog.js.map +1 -0
  100. package/dist/land/sync.d.ts.map +1 -1
  101. package/dist/land/sync.js +93 -32
  102. package/dist/land/sync.js.map +1 -1
  103. package/dist/phases/check-evidence.d.ts.map +1 -1
  104. package/dist/phases/check-evidence.js +5 -1
  105. package/dist/phases/check-evidence.js.map +1 -1
  106. package/dist/phases/ship-approval.d.ts +17 -0
  107. package/dist/phases/ship-approval.d.ts.map +1 -0
  108. package/dist/phases/ship-approval.js +21 -0
  109. package/dist/phases/ship-approval.js.map +1 -0
  110. package/dist/phases/ship-branch-push.d.ts +17 -0
  111. package/dist/phases/ship-branch-push.d.ts.map +1 -0
  112. package/dist/phases/ship-branch-push.js +77 -0
  113. package/dist/phases/ship-branch-push.js.map +1 -0
  114. package/dist/phases/ship-ci-watch.d.ts +25 -0
  115. package/dist/phases/ship-ci-watch.d.ts.map +1 -0
  116. package/dist/phases/ship-ci-watch.js +53 -0
  117. package/dist/phases/ship-ci-watch.js.map +1 -0
  118. package/dist/phases/ship-evidence-comment.d.ts +14 -0
  119. package/dist/phases/ship-evidence-comment.d.ts.map +1 -0
  120. package/dist/phases/ship-evidence-comment.js +31 -0
  121. package/dist/phases/ship-evidence-comment.js.map +1 -0
  122. package/dist/phases/ship-existing-pr.d.ts +11 -0
  123. package/dist/phases/ship-existing-pr.d.ts.map +1 -0
  124. package/dist/phases/ship-existing-pr.js +36 -0
  125. package/dist/phases/ship-existing-pr.js.map +1 -0
  126. package/dist/phases/ship-finish.d.ts +15 -0
  127. package/dist/phases/ship-finish.d.ts.map +1 -0
  128. package/dist/phases/ship-finish.js +69 -0
  129. package/dist/phases/ship-finish.js.map +1 -0
  130. package/dist/phases/ship-git-detail.d.ts +31 -0
  131. package/dist/phases/ship-git-detail.d.ts.map +1 -0
  132. package/dist/phases/ship-git-detail.js +71 -0
  133. package/dist/phases/ship-git-detail.js.map +1 -0
  134. package/dist/phases/ship-git-remote.d.ts +51 -0
  135. package/dist/phases/ship-git-remote.d.ts.map +1 -0
  136. package/dist/phases/ship-git-remote.js +70 -0
  137. package/dist/phases/ship-git-remote.js.map +1 -0
  138. package/dist/phases/ship-git.d.ts +4 -79
  139. package/dist/phases/ship-git.d.ts.map +1 -1
  140. package/dist/phases/ship-git.js +2 -135
  141. package/dist/phases/ship-git.js.map +1 -1
  142. package/dist/phases/ship-main-sync.d.ts +18 -0
  143. package/dist/phases/ship-main-sync.d.ts.map +1 -0
  144. package/dist/phases/ship-main-sync.js +34 -0
  145. package/dist/phases/ship-main-sync.js.map +1 -0
  146. package/dist/phases/ship-open-pr.d.ts +24 -0
  147. package/dist/phases/ship-open-pr.d.ts.map +1 -0
  148. package/dist/phases/ship-open-pr.js +75 -0
  149. package/dist/phases/ship-open-pr.js.map +1 -0
  150. package/dist/phases/ship-options.d.ts +81 -0
  151. package/dist/phases/ship-options.d.ts.map +1 -0
  152. package/dist/phases/ship-options.js +4 -0
  153. package/dist/phases/ship-options.js.map +1 -0
  154. package/dist/phases/ship-recovery.d.ts +16 -0
  155. package/dist/phases/ship-recovery.d.ts.map +1 -0
  156. package/dist/phases/ship-recovery.js +81 -0
  157. package/dist/phases/ship-recovery.js.map +1 -0
  158. package/dist/phases/ship-reentry.d.ts +20 -0
  159. package/dist/phases/ship-reentry.d.ts.map +1 -0
  160. package/dist/phases/ship-reentry.js +47 -0
  161. package/dist/phases/ship-reentry.js.map +1 -0
  162. package/dist/phases/ship.d.ts +4 -76
  163. package/dist/phases/ship.d.ts.map +1 -1
  164. package/dist/phases/ship.js +67 -425
  165. package/dist/phases/ship.js.map +1 -1
  166. package/dist/phases/stack-order.d.ts +9 -0
  167. package/dist/phases/stack-order.d.ts.map +1 -1
  168. package/dist/phases/stack-order.js +13 -0
  169. package/dist/phases/stack-order.js.map +1 -1
  170. package/dist/queue/comment-rework-trigger.d.ts +24 -0
  171. package/dist/queue/comment-rework-trigger.d.ts.map +1 -0
  172. package/dist/queue/comment-rework-trigger.js +128 -0
  173. package/dist/queue/comment-rework-trigger.js.map +1 -0
  174. package/dist/queue/github-queue.d.ts +4 -2
  175. package/dist/queue/github-queue.d.ts.map +1 -1
  176. package/dist/queue/github-queue.js.map +1 -1
  177. package/dist/queue/internal-exports.d.ts +3 -0
  178. package/dist/queue/internal-exports.d.ts.map +1 -1
  179. package/dist/queue/internal-exports.js +2 -0
  180. package/dist/queue/internal-exports.js.map +1 -1
  181. package/dist/queue/lane-discovery-interval.d.ts +6 -0
  182. package/dist/queue/lane-discovery-interval.d.ts.map +1 -0
  183. package/dist/queue/lane-discovery-interval.js +9 -0
  184. package/dist/queue/lane-discovery-interval.js.map +1 -0
  185. package/dist/queue/linear-queue-backend.d.ts +17 -0
  186. package/dist/queue/linear-queue-backend.d.ts.map +1 -0
  187. package/dist/queue/linear-queue-backend.js +42 -0
  188. package/dist/queue/linear-queue-backend.js.map +1 -0
  189. package/dist/queue/linear-queue.d.ts +4 -2
  190. package/dist/queue/linear-queue.d.ts.map +1 -1
  191. package/dist/queue/linear-queue.js +79 -2
  192. package/dist/queue/linear-queue.js.map +1 -1
  193. package/dist/queue/prerequisite-stack.d.ts +47 -0
  194. package/dist/queue/prerequisite-stack.d.ts.map +1 -0
  195. package/dist/queue/prerequisite-stack.js +41 -0
  196. package/dist/queue/prerequisite-stack.js.map +1 -0
  197. package/dist/queue/queue-backend.d.ts +11 -5
  198. package/dist/queue/queue-backend.d.ts.map +1 -1
  199. package/dist/queue/queue-backend.js +8 -3
  200. package/dist/queue/queue-backend.js.map +1 -1
  201. package/dist/queue/review-rework-trigger.d.ts +7 -2
  202. package/dist/queue/review-rework-trigger.d.ts.map +1 -1
  203. package/dist/queue/review-rework-trigger.js +16 -8
  204. package/dist/queue/review-rework-trigger.js.map +1 -1
  205. package/dist/reports/pr-body.d.ts +5 -2
  206. package/dist/reports/pr-body.d.ts.map +1 -1
  207. package/dist/reports/pr-body.js +21 -10
  208. package/dist/reports/pr-body.js.map +1 -1
  209. package/dist/run/ci-rework-loop.d.ts.map +1 -1
  210. package/dist/run/ci-rework-loop.js +5 -1
  211. package/dist/run/ci-rework-loop.js.map +1 -1
  212. package/dist/run/feedback-github.d.ts +50 -0
  213. package/dist/run/feedback-github.d.ts.map +1 -0
  214. package/dist/run/feedback-github.js +87 -0
  215. package/dist/run/feedback-github.js.map +1 -0
  216. package/dist/run/feedback-round-hooks.d.ts +19 -0
  217. package/dist/run/feedback-round-hooks.d.ts.map +1 -0
  218. package/dist/run/feedback-round-hooks.js +106 -0
  219. package/dist/run/feedback-round-hooks.js.map +1 -0
  220. package/dist/run/feedback-round.d.ts +97 -0
  221. package/dist/run/feedback-round.d.ts.map +1 -0
  222. package/dist/run/feedback-round.js +275 -0
  223. package/dist/run/feedback-round.js.map +1 -0
  224. package/dist/run/linear-run.d.ts +23 -0
  225. package/dist/run/linear-run.d.ts.map +1 -0
  226. package/dist/run/linear-run.js +18 -0
  227. package/dist/run/linear-run.js.map +1 -0
  228. package/dist/run/park-comment.d.ts +9 -0
  229. package/dist/run/park-comment.d.ts.map +1 -1
  230. package/dist/run/park-comment.js +12 -0
  231. package/dist/run/park-comment.js.map +1 -1
  232. package/dist/run/ports.d.ts +10 -0
  233. package/dist/run/ports.d.ts.map +1 -1
  234. package/dist/run/ports.js +12 -0
  235. package/dist/run/ports.js.map +1 -1
  236. package/dist/run/pr-run-state.d.ts +99 -0
  237. package/dist/run/pr-run-state.d.ts.map +1 -0
  238. package/dist/run/pr-run-state.js +235 -0
  239. package/dist/run/pr-run-state.js.map +1 -0
  240. package/dist/run/prerequisite-restack.d.ts +39 -0
  241. package/dist/run/prerequisite-restack.d.ts.map +1 -0
  242. package/dist/run/prerequisite-restack.js +79 -0
  243. package/dist/run/prerequisite-restack.js.map +1 -0
  244. package/dist/run/review-rework-cap.d.ts +3 -1
  245. package/dist/run/review-rework-cap.d.ts.map +1 -1
  246. package/dist/run/review-rework-cap.js +2 -1
  247. package/dist/run/review-rework-cap.js.map +1 -1
  248. package/dist/run/review-rework.d.ts +17 -2
  249. package/dist/run/review-rework.d.ts.map +1 -1
  250. package/dist/run/review-rework.js +99 -33
  251. package/dist/run/review-rework.js.map +1 -1
  252. package/dist/run/run-issue.d.ts +5 -1
  253. package/dist/run/run-issue.d.ts.map +1 -1
  254. package/dist/run/run-issue.js +35 -28
  255. package/dist/run/run-issue.js.map +1 -1
  256. package/dist/run/stack-rebase.d.ts +28 -0
  257. package/dist/run/stack-rebase.d.ts.map +1 -0
  258. package/dist/run/stack-rebase.js +79 -0
  259. package/dist/run/stack-rebase.js.map +1 -0
  260. package/dist/run/stack-restack.d.ts.map +1 -1
  261. package/dist/run/stack-restack.js +21 -49
  262. package/dist/run/stack-restack.js.map +1 -1
  263. package/dist/utils/command-runner.d.ts.map +1 -1
  264. package/dist/utils/command-runner.js +4 -1
  265. package/dist/utils/command-runner.js.map +1 -1
  266. package/dist/utils/exec.d.ts.map +1 -1
  267. package/dist/utils/exec.js +4 -1
  268. package/dist/utils/exec.js.map +1 -1
  269. package/dist/utils/in-place.d.ts +24 -0
  270. package/dist/utils/in-place.d.ts.map +1 -0
  271. package/dist/utils/in-place.js +105 -0
  272. package/dist/utils/in-place.js.map +1 -0
  273. package/dist/work/internal-exports.d.ts +3 -0
  274. package/dist/work/internal-exports.d.ts.map +1 -0
  275. package/dist/work/internal-exports.js +4 -0
  276. package/dist/work/internal-exports.js.map +1 -0
  277. package/dist/work/ticket-writeback.d.ts +22 -0
  278. package/dist/work/ticket-writeback.d.ts.map +1 -0
  279. package/dist/work/ticket-writeback.js +73 -0
  280. package/dist/work/ticket-writeback.js.map +1 -0
  281. package/dist/work/work-key.d.ts +2 -0
  282. package/dist/work/work-key.d.ts.map +1 -1
  283. package/dist/work/work-key.js +4 -0
  284. package/dist/work/work-key.js.map +1 -1
  285. package/package.json +5 -5
package/dist/land/sync.js CHANGED
@@ -2,8 +2,10 @@ import { readFileSync, writeFileSync } from 'node:fs';
2
2
  import { basename } from 'node:path';
3
3
  import { parseAdr, upsertIndexRow } from '@on-par/adr-kit';
4
4
  import { shellEscape } from '../utils/index.js';
5
+ import { mergeChangelogUnreleased } from './changelog.js';
5
6
  const TIMEOUT = 120_000;
6
7
  const ADR_INDEX_PATH = 'docs/adr/README.md';
8
+ const CHANGELOG_PATH = 'CHANGELOG.md';
7
9
  const ADR_FILE = /^docs\/adr\/[^/]+\.md$/i;
8
10
  const NON_ADR = /^(readme|index|_?template)\.md$/i;
9
11
  function output(result) {
@@ -63,8 +65,41 @@ export async function syncLandBranch(opts) {
63
65
  const addedPaths = pathsFromNul(output(await run(`git diff --diff-filter=A --name-only -z ${shellEscape(base)} HEAD -- docs/adr`)))
64
66
  .filter((path) => ADR_FILE.test(path) && !NON_ADR.test(basename(path)))
65
67
  .sort();
68
+ const changedSince = async (rev) => pathsFromNul(output(await run(`git diff --name-only -z ${shellEscape(base)} ${rev} -- ${shellEscape(CHANGELOG_PATH)}`))).length > 0;
69
+ const changelogBothChanged = (await changedSince(shellEscape(head))) && (await changedSince('origin/main'));
70
+ const resolveChangelog = async () => {
71
+ try {
72
+ const show = async (rev) => output(await run(`git show ${shellEscape(`${rev}:${CHANGELOG_PATH}`)}`));
73
+ return mergeChangelogUnreleased(await show(base), await show(head), await show('origin/main'));
74
+ }
75
+ catch (error) {
76
+ return { ok: false, reason: errorText(error) };
77
+ }
78
+ };
79
+ const writeChangelog = async (text) => {
80
+ writeFileSync(`${opts.worktree}/${CHANGELOG_PATH}`, text);
81
+ await run(`git add -- ${shellEscape(CHANGELOG_PATH)}`);
82
+ };
83
+ const resolved = [];
66
84
  try {
67
- await run('git merge --no-edit origin/main');
85
+ await run(changelogBothChanged ? 'git merge --no-edit --no-commit origin/main' : 'git merge --no-edit origin/main');
86
+ if (changelogBothChanged) {
87
+ mergeStarted = true;
88
+ const changelog = await resolveChangelog();
89
+ if (!changelog.ok)
90
+ return await abort(`unresolved merge conflicts: ${CHANGELOG_PATH}`, [CHANGELOG_PATH]);
91
+ try {
92
+ await writeChangelog(changelog.text);
93
+ const remaining = pathsFromNul(output(await run('git diff --name-only --diff-filter=U -z'))).sort();
94
+ if (remaining.length > 0)
95
+ throw new Error(`unresolved paths remain: ${remaining.join(', ')}`);
96
+ await run('git commit --no-edit');
97
+ }
98
+ catch (resolveError) {
99
+ return await abort(`${CHANGELOG_PATH} resolution failed: ${errorText(resolveError)}`, [CHANGELOG_PATH]);
100
+ }
101
+ resolved.push(CHANGELOG_PATH);
102
+ }
68
103
  }
69
104
  catch (mergeError) {
70
105
  mergeStarted = true;
@@ -79,40 +114,68 @@ export async function syncLandBranch(opts) {
79
114
  return await abort(`merge failed without unmerged paths: ${errorText(mergeError)}`);
80
115
  }
81
116
  opts.log('conflict_detected', `land sync conflicts: ${conflicts.join(', ')}`, { paths: conflicts });
82
- const otherPaths = conflicts.filter((path) => path !== ADR_INDEX_PATH);
117
+ const changelogConflicted = conflicts.includes(CHANGELOG_PATH);
118
+ const changelog = changelogConflicted || changelogBothChanged ? await resolveChangelog() : undefined;
119
+ const changelogPending = changelog?.ok === true ? changelog : undefined;
120
+ const otherPaths = conflicts.filter((path) => path !== ADR_INDEX_PATH && path !== CHANGELOG_PATH);
121
+ if (changelogConflicted && !changelogPending)
122
+ otherPaths.push(CHANGELOG_PATH);
123
+ otherPaths.sort();
83
124
  if (otherPaths.length > 0) {
84
125
  return await abort(`unresolved merge conflicts: ${otherPaths.join(', ')}`, otherPaths);
85
126
  }
86
- let replayFailure;
87
- try {
88
- await run(`git checkout --theirs -- ${shellEscape(ADR_INDEX_PATH)}`);
89
- let readme = readFileSync(`${opts.worktree}/${ADR_INDEX_PATH}`, 'utf8');
90
- for (const path of addedPaths) {
91
- const filename = basename(path);
92
- const source = readFileSync(`${opts.worktree}/${path}`, 'utf8');
93
- const adr = parseAdr(source, { filename });
94
- const title = adr.title.trim();
95
- if (adr.number === undefined || title === '') {
96
- replayFailure = `${filename}: ADR requires a number and title`;
97
- break;
127
+ if (conflicts.includes(ADR_INDEX_PATH)) {
128
+ let replayFailure;
129
+ try {
130
+ await run(`git checkout --theirs -- ${shellEscape(ADR_INDEX_PATH)}`);
131
+ let readme = readFileSync(`${opts.worktree}/${ADR_INDEX_PATH}`, 'utf8');
132
+ for (const path of addedPaths) {
133
+ const filename = basename(path);
134
+ const source = readFileSync(`${opts.worktree}/${path}`, 'utf8');
135
+ const adr = parseAdr(source, { filename });
136
+ const title = adr.title.trim();
137
+ if (adr.number === undefined || title === '') {
138
+ replayFailure = `${filename}: ADR requires a number and title`;
139
+ break;
140
+ }
141
+ readme = upsertIndexRow(readme, { number: adr.number, title, status: adr.status, href: filename });
142
+ }
143
+ if (!replayFailure) {
144
+ writeFileSync(`${opts.worktree}/${ADR_INDEX_PATH}`, readme);
145
+ await run(`git add -- ${shellEscape(ADR_INDEX_PATH)}`);
98
146
  }
99
- readme = upsertIndexRow(readme, { number: adr.number, title, status: adr.status, href: filename });
100
147
  }
101
- if (!replayFailure) {
102
- writeFileSync(`${opts.worktree}/${ADR_INDEX_PATH}`, readme);
103
- await run(`git add -- ${shellEscape(ADR_INDEX_PATH)}`);
104
- const remaining = pathsFromNul(output(await run('git diff --name-only --diff-filter=U -z'))).sort();
105
- if (remaining.length > 0)
106
- replayFailure = `unresolved paths remain: ${remaining.join(', ')}`;
107
- else
108
- await run('git commit --no-edit');
148
+ catch (replayError) {
149
+ replayFailure = errorText(replayError);
150
+ }
151
+ if (replayFailure)
152
+ return await abort(`ADR index replay failed: ${replayFailure}`, [ADR_INDEX_PATH]);
153
+ resolved.push(ADR_INDEX_PATH);
154
+ }
155
+ if (changelogPending) {
156
+ try {
157
+ await writeChangelog(changelogPending.text);
109
158
  }
159
+ catch (changelogError) {
160
+ return await abort(`${CHANGELOG_PATH} resolution failed: ${errorText(changelogError)}`, [CHANGELOG_PATH]);
161
+ }
162
+ resolved.push(CHANGELOG_PATH);
163
+ }
164
+ const failedPath = resolved.includes(ADR_INDEX_PATH) ? ADR_INDEX_PATH : CHANGELOG_PATH;
165
+ const label = failedPath === ADR_INDEX_PATH ? 'ADR index replay failed' : `${CHANGELOG_PATH} resolution failed`;
166
+ let commitFailure;
167
+ try {
168
+ const remaining = pathsFromNul(output(await run('git diff --name-only --diff-filter=U -z'))).sort();
169
+ if (remaining.length > 0)
170
+ commitFailure = `unresolved paths remain: ${remaining.join(', ')}`;
171
+ else
172
+ await run('git commit --no-edit');
110
173
  }
111
- catch (replayError) {
112
- replayFailure = errorText(replayError);
174
+ catch (commitError) {
175
+ commitFailure = errorText(commitError);
113
176
  }
114
- if (replayFailure)
115
- return await abort(`ADR index replay failed: ${replayFailure}`, [ADR_INDEX_PATH]);
177
+ if (commitFailure)
178
+ return await abort(`${label}: ${commitFailure}`, [failedPath]);
116
179
  }
117
180
  try {
118
181
  await run(`git push origin ${shellEscape(opts.branch)}`);
@@ -120,11 +183,9 @@ export async function syncLandBranch(opts) {
120
183
  catch (pushError) {
121
184
  return { ok: false, message: `push rejected: ${errorText(pushError)}`, paths: [] };
122
185
  }
123
- if (mergeStarted) {
124
- opts.log('conflict_resolved', 'resolved ADR index conflict mechanically', {
125
- mode: 'mechanical',
126
- paths: [ADR_INDEX_PATH],
127
- });
186
+ for (const path of resolved) {
187
+ const what = path === ADR_INDEX_PATH ? 'ADR index' : `${CHANGELOG_PATH} Unreleased`;
188
+ opts.log('conflict_resolved', `resolved ${what} conflict mechanically`, { mode: 'mechanical', paths: [path] });
128
189
  }
129
190
  return { ok: true };
130
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/land/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/land/sync.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-evidence.d.ts","sourceRoot":"","sources":["../../src/phases/check-evidence.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAA2B,MAAM,8BAA8B,CAAC;AAExF,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAiB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA0DnF,sFAAsF;AACtF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,WAAW,GAAE,OAAO,eAAiC,GACpD,OAAO,CAAC,YAAY,CAAC,CAqEvB"}
1
+ {"version":3,"file":"check-evidence.d.ts","sourceRoot":"","sources":["../../src/phases/check-evidence.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAA2B,MAAM,8BAA8B,CAAC;AAExF,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAiB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA0DnF,sFAAsF;AACtF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,WAAW,GAAE,OAAO,eAAiC,GACpD,OAAO,CAAC,YAAY,CAAC,CAwEvB"}
@@ -3,6 +3,7 @@ import { loadRepoConfig } from '../config/repo.js';
3
3
  import { parseDesignArtifact } from '../design/index.js';
4
4
  import { resolveEvidenceAllowlist } from '../checkers/evidence-allowlist.js';
5
5
  import { resolveEvidenceTestRunner } from '../checkers/evidence-selector.js';
6
+ import { resolveWorkspaceTestRunners } from '../checkers/evidence-workspace.js';
6
7
  import { runEvidencePlan } from '../checkers/evidence-plan.js';
7
8
  import { createEvidenceSideEffectsGuard } from '../checkers/side-effects.js';
8
9
  import { summarizeCheckerOutputs } from '../checkers/index.js';
@@ -96,7 +97,10 @@ export async function appendEvidencePlanStep(summary, ctx, constitution, runEvid
96
97
  const allowlist = resolveEvidenceAllowlist(packageJsonFromContext(ctx), repoConfig, lockfiles);
97
98
  guard = createEvidenceSideEffectsGuard(ctx);
98
99
  const testRunner = resolveEvidenceTestRunner(allowlist, packageJsonFromContext(ctx));
99
- const results = await runEvidence(entries, allowlist, { ...ctx, testRunner }, guard);
100
+ const workspaceTestRunners = testRunner
101
+ ? []
102
+ : await resolveWorkspaceTestRunners(ctx.worktree, packageJsonFromContext(ctx));
103
+ const results = await runEvidence(entries, allowlist, { ...ctx, testRunner, workspaceTestRunners }, guard);
100
104
  output = outputForResults(results);
101
105
  }
102
106
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"check-evidence.js","sourceRoot":"","sources":["../../src/phases/check-evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-evidence.js","sourceRoot":"","sources":["../../src/phases/check-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,eAAe,EAA2B,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAuB,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,SAAS,UAAU,CAAC,MAAqB,EAAE,WAA0B,EAAE,OAAqB;IAC1F,MAAM,OAAO,GAAG;QACd,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9F,MAAM;QACN,WAAW;KACZ,CAAC;IACF,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA6B;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,OAAO,GAAG,OAAO;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,OAAO,IAAI,oCAAoC;QACxD,mBAAmB,EAAE,OAAO;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,MAAc;IAC1B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAmB;IACjD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAmB;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,EAAE,CACP,uBAAuB,EACvB,mCAAmC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,CACzH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAqB,EACrB,GAAmB,EACnB,YAAiC,EACjC,WAAW,GAA2B,eAAe;IAErD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAC;IAC9D,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC;IAE7D,IAAI,MAAqB,CAAC;IAC1B,IAAI,iBAAiB,GAAkB,eAAe,CAAC,8BAA8B,CAAC,CAAC;IACvF,IAAI,YAAY,EAAE,mBAAmB,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1C,iBAAiB,GAAG,eAAe,CAAC,0BAA0B,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QAC3D,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvC,iBAAiB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,IAAI,OAAwC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,kCAAkC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/G,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,GAAG,EAAE,CACP,OAAO,EACP,mCAAmC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,CACzH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACpD,iBAAiB,GAAG,eAAe,CAAC,oCAAoC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,IAAI,KAAoE,CAAC;YACzE,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,SAAS,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC/F,KAAK,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;gBAC5C,MAAM,UAAU,GAAG,yBAAyB,CAAC,SAAS,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrF,MAAM,oBAAoB,GAAG,UAAU;oBACrC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,MAAM,2BAA2B,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC;gBAClG,MAAM,GAAG;oBACP,OAAO,EAAE,eAAe;oBACxB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,+BAA+B,OAAO,EAAE;oBACjD,mBAAmB,EAAE,EAAE;iBACxB,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;gBAChD,iBAAiB,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;gBAC3D,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,IAAI,KAAK,CAAC,MAAM;oBAAE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,CAAC;;gBAAM,iBAAiB,GAAG,eAAe,CAAC,6CAA6C,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,oCAAoC,MAAM,CAAC,MAAM,GAAG,EAAE;QACnF,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACnC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,mCAAmC,iBAAiB,CAAC,MAAM,GAAG,EAAE;QAC7F,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACnC,CAAC,CAAC;IACH,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ApprovalGate } from '../approvals/index.js';
2
+ import type { CheckSummary } from '../types/index.js';
3
+ import { type WorkKey } from '../work/work-key.js';
4
+ import type { CommandRunner } from './ship-git.js';
5
+ import type { ShipPhaseOptions } from './ship-options.js';
6
+ import type { ShipResult } from './ship-types.js';
7
+ export declare function requestShipApproval(ctx: {
8
+ approvalGate: ApprovalGate;
9
+ issue: WorkKey;
10
+ branch: string;
11
+ worktree: string;
12
+ base: string;
13
+ run: CommandRunner;
14
+ checkSummary?: CheckSummary;
15
+ log: ShipPhaseOptions['log'];
16
+ }): Promise<ShipResult | undefined>;
17
+ //# sourceMappingURL=ship-approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-approval.d.ts","sourceRoot":"","sources":["../../src/phases/ship-approval.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,aAAa,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAC9B,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAmBlC"}
@@ -0,0 +1,21 @@
1
+ // packages/core/src/phases/ship-approval.ts — SHIP approval gate request
2
+ import { issueNumberOf } from '../work/work-key.js';
3
+ import { computeDiffStat } from './ship-diff-stat.js';
4
+ export async function requestShipApproval(ctx) {
5
+ const { approvalGate, issue, branch, worktree, base, run, checkSummary, log } = ctx;
6
+ // Log a 'ship'-typed event before anything else so the TUI's activePhase
7
+ // advances to SHIP first — otherwise a denial reports failedPhase as
8
+ // whichever phase (CHECK/BUILD) last logged, which is misleading.
9
+ log('ship', `Starting ship phase for ${branch}`);
10
+ const diffStat = await computeDiffStat(run, worktree, base);
11
+ log('approval_requested', `awaiting approval to ship ${branch}${checkSummary ? ` (checks: ${checkSummary.passes} pass, ${checkSummary.failures} fail, ${checkSummary.skips} skip)` : ''}`);
12
+ const response = await approvalGate({ issue: issueNumberOf(issue), branch, worktree, diffStat, checkSummary });
13
+ if (!response.approved) {
14
+ const reason = response.reason ?? 'denied';
15
+ log('ship_denied', `ship denied for ${branch}: ${reason}`);
16
+ return { ok: false, denied: true, deniedReason: reason };
17
+ }
18
+ log('approval_granted', `approval granted for ${branch}`);
19
+ return undefined;
20
+ }
21
+ //# sourceMappingURL=ship-approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-approval.js","sourceRoot":"","sources":["../../src/phases/ship-approval.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAIzE,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GASzC;IACC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACpF,yEAAyE;IACzE,qEAAqE;IACrE,kEAAkE;IAClE,GAAG,CAAC,MAAM,EAAE,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5D,GAAG,CACD,oBAAoB,EACpB,6BAA6B,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,aAAa,YAAY,CAAC,MAAM,UAAU,YAAY,CAAC,QAAQ,UAAU,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAChK,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAC/G,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC;QAC3C,GAAG,CAAC,aAAa,EAAE,mBAAmB,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC3D,CAAC;IACD,GAAG,CAAC,kBAAkB,EAAE,wBAAwB,MAAM,EAAE,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Octokit } from '@octokit/rest';
2
+ import type { WorkKey } from '../work/work-key.js';
3
+ import { type CommandRunner } from './ship-git.js';
4
+ import type { ShipPhaseOptions } from './ship-options.js';
5
+ import type { ShipResult } from './ship-types.js';
6
+ export declare function pushNewBranch(ctx: {
7
+ run: CommandRunner;
8
+ worktree: string;
9
+ branch: string;
10
+ issue: WorkKey | undefined;
11
+ octokit: Octokit;
12
+ owner: string;
13
+ repoName: string;
14
+ recordedRemoteSha?: string;
15
+ log: ShipPhaseOptions['log'];
16
+ }): Promise<ShipResult | undefined>;
17
+ //# sourceMappingURL=ship-branch-push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-branch-push.d.ts","sourceRoot":"","sources":["../../src/phases/ship-branch-push.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,aAAa,EAAgD,MAAM,eAAe,CAAC;AACjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,wBAAsB,aAAa,CAAC,GAAG,EAAE;IACvC,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAC9B,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAqElC"}
@@ -0,0 +1,77 @@
1
+ // packages/core/src/phases/ship-branch-push.ts — SHIP push of a new branch before PR creation
2
+ import { shellEscape } from '../utils/index.js';
3
+ import { pushAndVerifyRemoteHead, readRemoteBranchSha } from './ship-git.js';
4
+ import { recoverOrStop } from './ship-recovery.js';
5
+ export async function pushNewBranch(ctx) {
6
+ const { run, worktree, branch, issue, octokit, owner, repoName, log } = ctx;
7
+ const stop = await recoverOrStop({
8
+ run,
9
+ worktree,
10
+ branch,
11
+ issue,
12
+ octokit,
13
+ owner,
14
+ repoName,
15
+ log,
16
+ });
17
+ if (stop)
18
+ return stop;
19
+ // Push branch. A rejected push means the remote head does not contain this run's
20
+ // commits — opening a PR against it would advertise work that is not there, so the
21
+ // ship fails closed here rather than continuing to PR creation (#734).
22
+ let pushCmd = `git push -u origin ${shellEscape(branch)}`;
23
+ const recorded = ctx.recordedRemoteSha;
24
+ let leased = false;
25
+ if (recorded) {
26
+ // A retry rebuilds the branch from origin/main, so an earlier run's push is stale. Replace it
27
+ // only while the remote is still exactly what was recorded at worktree creation (#1869).
28
+ const current = await readRemoteBranchSha(run, worktree, branch);
29
+ if (current.status === 'unreadable') {
30
+ const reason = `could not read origin/${branch} to check recorded SHA ${recorded} (${current.detail})`;
31
+ log('ship', `${reason} — aborting before push`);
32
+ return { ok: false, reason };
33
+ }
34
+ if (current.sha === null) {
35
+ log('ship', `origin/${branch} recorded @ ${recorded} no longer exists — nothing to replace, plain push`);
36
+ }
37
+ else if (current.sha !== recorded) {
38
+ const reason = `origin/${branch} moved since it was recorded: recorded ${recorded}, current ${current.sha}`;
39
+ log('ship', `${reason} — aborting before push`);
40
+ return { ok: false, reason };
41
+ }
42
+ else {
43
+ pushCmd = `git push ${shellEscape(`--force-with-lease=${branch}:${recorded}`)} -u origin ${shellEscape(branch)}`;
44
+ leased = true;
45
+ log('ship', `replacing stale origin/${branch} @ ${recorded} with a leased push`);
46
+ }
47
+ }
48
+ // A zero-exit push is not proof the remote branch actually carries this run's commits — a
49
+ // concurrent push or an update that silently applied nothing leaves the remote head elsewhere,
50
+ // and a PR opened against it advertises work that is not there (#735). Fail closed, like the
51
+ // push-failure abort (#734).
52
+ const pushed = await pushAndVerifyRemoteHead(run, worktree, branch, pushCmd);
53
+ if (pushed.status === 'push-failed') {
54
+ const pushReason = `git push failed (${pushed.kind}): ${pushed.detail}`;
55
+ log('ship', `${pushReason} — aborting before PR creation`);
56
+ if (leased) {
57
+ return {
58
+ ok: false,
59
+ reason: `leased push of ${branch} over recorded ${recorded} was rejected (${pushed.kind})`,
60
+ };
61
+ }
62
+ return { ok: false, reason: pushReason };
63
+ }
64
+ if (pushed.status === 'mismatch') {
65
+ const reason = `remote head ${pushed.remoteSha} does not match local HEAD ${pushed.localSha} for ${branch}`;
66
+ log('ship', `${reason} — aborting before PR creation`);
67
+ return { ok: false, reason };
68
+ }
69
+ if (pushed.status === 'unreadable') {
70
+ const reason = `could not verify the remote head for ${branch} (${pushed.detail}); local HEAD ${pushed.localSha ?? 'unknown'}`;
71
+ log('ship', `${reason} — aborting before PR creation`);
72
+ return { ok: false, reason };
73
+ }
74
+ log('ship', `remote head ${pushed.remoteSha} matches local HEAD ${pushed.localSha} for ${branch}`);
75
+ return undefined;
76
+ }
77
+ //# sourceMappingURL=ship-branch-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-branch-push.js","sourceRoot":"","sources":["../../src/phases/ship-branch-push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Octokit } from '@octokit/rest';
2
+ import type { EventKind } from '../events/kinds.js';
3
+ import { type InfraRerunOutcome, watchChecksWithInfraRerun } from '../utils/ci-watch.js';
4
+ import type { ShipResult } from './ship-types.js';
5
+ export declare function watchShipCi(ctx: {
6
+ octokit: Octokit;
7
+ owner: string;
8
+ repo: string;
9
+ repoName: string;
10
+ prNumber: number;
11
+ watchRef: string;
12
+ headSha: string | undefined;
13
+ rerun?: (argv: readonly string[]) => Promise<{
14
+ ok: boolean;
15
+ }>;
16
+ deadlineMs?: number;
17
+ baseBranch: string;
18
+ ciWatch?: typeof watchChecksWithInfraRerun;
19
+ log: (type: EventKind, msg: string) => void;
20
+ }): Promise<{
21
+ ciOutcome?: InfraRerunOutcome;
22
+ ciWatchError?: string;
23
+ result?: ShipResult;
24
+ }>;
25
+ //# sourceMappingURL=ship-ci-watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-ci-watch.d.ts","sourceRoot":"","sources":["../../src/phases/ship-ci-watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAA0B,KAAK,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,wBAAsB,WAAW,CAAC,GAAG,EAAE;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,yBAAyB,CAAC;IAC3C,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,GAAG,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CA+DzF"}
@@ -0,0 +1,53 @@
1
+ import { collectCiFailureEvidence } from '../utils/ci-evidence.js';
2
+ import { DEFAULT_CI_DEADLINE_MS, watchChecksWithInfraRerun } from '../utils/ci-watch.js';
3
+ import { shortDetail } from './ship-git.js';
4
+ export async function watchShipCi(ctx) {
5
+ const { octokit, owner, repo, repoName, prNumber, watchRef, headSha, log } = ctx;
6
+ const ciDeadlineMs = ctx.deadlineMs ?? DEFAULT_CI_DEADLINE_MS;
7
+ let ciOutcome;
8
+ let ciWatchError;
9
+ log('ship', `Watching CI for PR #${prNumber}`);
10
+ try {
11
+ ciOutcome = await (ctx.ciWatch ?? watchChecksWithInfraRerun)({
12
+ octokit,
13
+ owner,
14
+ repo: repoName,
15
+ ref: watchRef,
16
+ rerun: ctx.rerun,
17
+ deadlineMs: ciDeadlineMs,
18
+ probeNoCi: true,
19
+ requiredChecks: { branch: ctx.baseBranch },
20
+ onProgress: ({ total, completed, pending, remainingMs, waitingFor }) => log('ship', waitingFor?.length
21
+ ? `CI for PR #${prNumber}: waiting for required check${waitingFor.length > 1 ? 's' : ''} ${waitingFor.map((w) => `${w.name} (${w.state})`).join(', ')}, ${Math.ceil(remainingMs / 60_000)} min left`
22
+ : `CI for PR #${prNumber}: ${pending} pending, ${completed}/${total} completed, ${Math.ceil(remainingMs / 60_000)} min left before the CI timeout`),
23
+ onNoChecks: ({ sha, defaultBranch }) => log('ship', `no CI configured on ${repo} (no workflow files on ${sha} and no checks or statuses on recent ${defaultBranch} commits); skipping CI wait`),
24
+ onRescued: ({ headSha, runIds }) => log('ci-rescued', `CI rescued for PR #${prNumber}: reran infra-failed run(s) ${runIds.join(', ')} on ${headSha.slice(0, 12)} once and the re-watch is green`),
25
+ onRescueFailed: ({ headSha, runIds, outcome }) => log('ci-rescue-failed', `CI rescue failed for PR #${prNumber}: reran infra-failed run(s) ${runIds.join(', ')} on ${headSha.slice(0, 12)} once and the re-watch ended ${outcome}`),
26
+ });
27
+ if (ciOutcome === 'success')
28
+ log('ship', `CI green for PR #${prNumber}`);
29
+ else if (ciOutcome === 'failure') {
30
+ const reason = `CI failed for PR #${prNumber}`;
31
+ log('ship', reason);
32
+ const ciFailure = await collectCiFailureEvidence({ octokit, owner, repo: repoName, ref: watchRef, prNumber });
33
+ return {
34
+ ciOutcome,
35
+ result: { ok: false, prNumber, reason, ciOutcome, ciFailure, ...(headSha ? { headSha } : {}) },
36
+ };
37
+ }
38
+ else if (ciOutcome === 'infra-failure') {
39
+ const reason = `CI failed again for infrastructure reasons for PR #${prNumber} after one rerun`;
40
+ log('ship', reason);
41
+ return { ciOutcome, result: { ok: false, prNumber, reason, ciOutcome } };
42
+ }
43
+ else if (ciOutcome === 'timeout') {
44
+ log('ship', `CI pending for PR #${prNumber}: CI did not finish within ${ciDeadlineMs / 60_000} min; leaving PR as draft`);
45
+ }
46
+ }
47
+ catch (err) {
48
+ ciWatchError = shortDetail(err);
49
+ log('warn', `CI watch for PR #${prNumber} failed: ${ciWatchError}; treating CI as pending`);
50
+ }
51
+ return { ciOutcome, ciWatchError };
52
+ }
53
+ //# sourceMappingURL=ship-ci-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-ci-watch.js","sourceRoot":"","sources":["../../src/phases/ship-ci-watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { CommandRunner } from './ship-git.js';
2
+ import type { ShipPhaseOptions } from './ship-options.js';
3
+ import type { lazyWalkthrough } from './ship-walkthrough.js';
4
+ export declare function postEvidenceComment(ctx: {
5
+ opts: ShipPhaseOptions;
6
+ run: CommandRunner;
7
+ owner: string;
8
+ repoName: string;
9
+ prNumber: number;
10
+ walkthrough: ReturnType<typeof lazyWalkthrough>;
11
+ /** The commit CHECK ran on, when SHIP merged main after it; unset reads HEAD. */
12
+ checkedSha?: string;
13
+ }): Promise<void>;
14
+ //# sourceMappingURL=ship-evidence-comment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-evidence-comment.d.ts","sourceRoot":"","sources":["../../src/phases/ship-evidence-comment.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wBAAsB,mBAAmB,CAAC,GAAG,EAAE;IAC7C,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAChD,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB"}
@@ -0,0 +1,31 @@
1
+ // packages/core/src/phases/ship-evidence-comment.ts — SHIP evidence-pack PR comment
2
+ import { gatherEvidencePack } from '../reports/evidence-pack.js';
3
+ export async function postEvidenceComment(ctx) {
4
+ const { opts, run, owner, repoName, prNumber, walkthrough } = ctx;
5
+ const { issue, octokit, worktree, checkSummary, log } = opts;
6
+ try {
7
+ let checkedSha = ctx.checkedSha;
8
+ if (!checkedSha)
9
+ try {
10
+ checkedSha = (await run('git rev-parse HEAD', { cwd: worktree })).stdout.trim() || undefined;
11
+ }
12
+ catch { }
13
+ const body = gatherEvidencePack({
14
+ issue,
15
+ checkSummary,
16
+ reworkRounds: opts.reworkRounds,
17
+ specPath: opts.specPath,
18
+ eventsFile: opts.eventsFile,
19
+ startedAt: opts.startedAt,
20
+ logsDir: opts.logsDir,
21
+ reviewRouting: opts.reviewRouting,
22
+ pinNotes: opts.pinNotes,
23
+ headSha: checkedSha,
24
+ walkthrough: await walkthrough.walkthrough(),
25
+ });
26
+ await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
27
+ log('evidence', `posted evidence pack to PR #${prNumber}`);
28
+ }
29
+ catch { }
30
+ }
31
+ //# sourceMappingURL=ship-evidence-comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-evidence-comment.js","sourceRoot":"","sources":["../../src/phases/ship-evidence-comment.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAKjE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GASzC;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAClE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC;QACH,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU;YACb,IAAI,CAAC;gBACH,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;YAC/F,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,MAAM,IAAI,GAAG,kBAAkB,CAAC;YAC9B,KAAK;YACL,YAAY;YACZ,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE,MAAM,WAAW,CAAC,WAAW,EAAE;SAC7C,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,GAAG,CAAC,UAAU,EAAE,+BAA+B,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type CommandRunner } from './ship-git.js';
2
+ import type { ShipPhaseOptions } from './ship-options.js';
3
+ import type { ShipResult } from './ship-types.js';
4
+ export declare function syncExistingPr(ctx: {
5
+ run: CommandRunner;
6
+ worktree: string;
7
+ branch: string;
8
+ prNumber: number;
9
+ log: ShipPhaseOptions['log'];
10
+ }): Promise<ShipResult | undefined>;
11
+ //# sourceMappingURL=ship-existing-pr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-existing-pr.d.ts","sourceRoot":"","sources":["../../src/phases/ship-existing-pr.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,aAAa,EAA6C,MAAM,eAAe,CAAC;AACrH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,wBAAsB,cAAc,CAAC,GAAG,EAAE;IACxC,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAC9B,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAmClC"}