@on-par/factory-core 0.9.3 → 0.9.5-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/dist/checkers/base-health.js +2 -2
  2. package/dist/checkers/base-health.js.map +1 -1
  3. package/dist/checkers/baseline-cache.d.ts +6 -4
  4. package/dist/checkers/baseline-cache.d.ts.map +1 -1
  5. package/dist/checkers/baseline-cache.js +24 -7
  6. package/dist/checkers/baseline-cache.js.map +1 -1
  7. package/dist/checkers/baseline.d.ts +2 -0
  8. package/dist/checkers/baseline.d.ts.map +1 -1
  9. package/dist/checkers/baseline.js +34 -3
  10. package/dist/checkers/baseline.js.map +1 -1
  11. package/dist/checkers/constitution-preflight.d.ts +8 -0
  12. package/dist/checkers/constitution-preflight.d.ts.map +1 -0
  13. package/dist/checkers/constitution-preflight.js +71 -0
  14. package/dist/checkers/constitution-preflight.js.map +1 -0
  15. package/dist/checkers/design-smells.d.ts.map +1 -1
  16. package/dist/checkers/design-smells.js +1 -0
  17. package/dist/checkers/design-smells.js.map +1 -1
  18. package/dist/checkers/index.d.ts +11 -0
  19. package/dist/checkers/index.d.ts.map +1 -1
  20. package/dist/checkers/index.js +87 -9
  21. package/dist/checkers/index.js.map +1 -1
  22. package/dist/config/config-lint.d.ts +28 -0
  23. package/dist/config/config-lint.d.ts.map +1 -0
  24. package/dist/config/config-lint.js +39 -0
  25. package/dist/config/config-lint.js.map +1 -0
  26. package/dist/config/config-schema-lint.d.ts +17 -0
  27. package/dist/config/config-schema-lint.d.ts.map +1 -0
  28. package/dist/config/config-schema-lint.js +104 -0
  29. package/dist/config/config-schema-lint.js.map +1 -0
  30. package/dist/config/example.d.ts.map +1 -1
  31. package/dist/config/example.js +23 -1
  32. package/dist/config/example.js.map +1 -1
  33. package/dist/config/index.d.ts +19 -3
  34. package/dist/config/index.d.ts.map +1 -1
  35. package/dist/config/index.js +38 -13
  36. package/dist/config/index.js.map +1 -1
  37. package/dist/config/repo.d.ts +3 -0
  38. package/dist/config/repo.d.ts.map +1 -1
  39. package/dist/config/repo.js +12 -1
  40. package/dist/config/repo.js.map +1 -1
  41. package/dist/config/template-tokens.d.ts +21 -0
  42. package/dist/config/template-tokens.d.ts.map +1 -0
  43. package/dist/config/template-tokens.js +62 -0
  44. package/dist/config/template-tokens.js.map +1 -0
  45. package/dist/constitutions/index.d.ts.map +1 -1
  46. package/dist/constitutions/index.js +2 -0
  47. package/dist/constitutions/index.js.map +1 -1
  48. package/dist/events/kinds.d.ts +1 -1
  49. package/dist/events/kinds.d.ts.map +1 -1
  50. package/dist/events/kinds.js +4 -0
  51. package/dist/events/kinds.js.map +1 -1
  52. package/dist/filing/index.d.ts.map +1 -1
  53. package/dist/filing/index.js +1 -0
  54. package/dist/filing/index.js.map +1 -1
  55. package/dist/harness/catalog.d.ts +4 -1
  56. package/dist/harness/catalog.d.ts.map +1 -1
  57. package/dist/harness/catalog.js +7 -1
  58. package/dist/harness/catalog.js.map +1 -1
  59. package/dist/harness/classify.d.ts.map +1 -1
  60. package/dist/harness/classify.js +5 -0
  61. package/dist/harness/classify.js.map +1 -1
  62. package/dist/harness/codex-cli.d.ts.map +1 -1
  63. package/dist/harness/codex-cli.js +7 -0
  64. package/dist/harness/codex-cli.js.map +1 -1
  65. package/dist/harness/contract.d.ts.map +1 -1
  66. package/dist/harness/contract.js +1 -0
  67. package/dist/harness/contract.js.map +1 -1
  68. package/dist/harness/opencode.d.ts +17 -2
  69. package/dist/harness/opencode.d.ts.map +1 -1
  70. package/dist/harness/opencode.js +150 -36
  71. package/dist/harness/opencode.js.map +1 -1
  72. package/dist/internal.d.ts +25 -6
  73. package/dist/internal.d.ts.map +1 -1
  74. package/dist/internal.js +17 -5
  75. package/dist/internal.js.map +1 -1
  76. package/dist/models/index.d.ts +5 -0
  77. package/dist/models/index.d.ts.map +1 -1
  78. package/dist/models/index.js +33 -3
  79. package/dist/models/index.js.map +1 -1
  80. package/dist/phases/build.d.ts +6 -0
  81. package/dist/phases/build.d.ts.map +1 -1
  82. package/dist/phases/build.js +19 -4
  83. package/dist/phases/build.js.map +1 -1
  84. package/dist/phases/check.d.ts +5 -1
  85. package/dist/phases/check.d.ts.map +1 -1
  86. package/dist/phases/check.js +33 -7
  87. package/dist/phases/check.js.map +1 -1
  88. package/dist/phases/plan.d.ts +16 -3
  89. package/dist/phases/plan.d.ts.map +1 -1
  90. package/dist/phases/plan.js +104 -30
  91. package/dist/phases/plan.js.map +1 -1
  92. package/dist/phases/ship-stack.d.ts +43 -0
  93. package/dist/phases/ship-stack.d.ts.map +1 -0
  94. package/dist/phases/ship-stack.js +91 -0
  95. package/dist/phases/ship-stack.js.map +1 -0
  96. package/dist/phases/ship.d.ts +5 -0
  97. package/dist/phases/ship.d.ts.map +1 -1
  98. package/dist/phases/ship.js +2 -1
  99. package/dist/phases/ship.js.map +1 -1
  100. package/dist/queue/index.d.ts.map +1 -1
  101. package/dist/queue/index.js +2 -11
  102. package/dist/queue/index.js.map +1 -1
  103. package/dist/readiness/decompose.d.ts +4 -2
  104. package/dist/readiness/decompose.d.ts.map +1 -1
  105. package/dist/readiness/decompose.js +6 -2
  106. package/dist/readiness/decompose.js.map +1 -1
  107. package/dist/readiness/enrich.d.ts +6 -0
  108. package/dist/readiness/enrich.d.ts.map +1 -1
  109. package/dist/readiness/enrich.js +20 -1
  110. package/dist/readiness/enrich.js.map +1 -1
  111. package/dist/readiness/slice-gate.d.ts +5 -0
  112. package/dist/readiness/slice-gate.d.ts.map +1 -1
  113. package/dist/readiness/slice-gate.js +10 -4
  114. package/dist/readiness/slice-gate.js.map +1 -1
  115. package/dist/readiness/slice-plan-github.d.ts +25 -0
  116. package/dist/readiness/slice-plan-github.d.ts.map +1 -1
  117. package/dist/readiness/slice-plan-github.js +23 -1
  118. package/dist/readiness/slice-plan-github.js.map +1 -1
  119. package/dist/readiness/slice-plan.d.ts +11 -2
  120. package/dist/readiness/slice-plan.d.ts.map +1 -1
  121. package/dist/readiness/slice-plan.js +19 -4
  122. package/dist/readiness/slice-plan.js.map +1 -1
  123. package/dist/reports/benchmark-artifacts.d.ts +1 -1
  124. package/dist/reports/benchmark-artifacts.d.ts.map +1 -1
  125. package/dist/reports/evidence-pack.d.ts +4 -0
  126. package/dist/reports/evidence-pack.d.ts.map +1 -1
  127. package/dist/reports/evidence-pack.js +5 -1
  128. package/dist/reports/evidence-pack.js.map +1 -1
  129. package/dist/router/index.d.ts +17 -0
  130. package/dist/router/index.d.ts.map +1 -1
  131. package/dist/router/index.js +84 -1
  132. package/dist/router/index.js.map +1 -1
  133. package/dist/run/outcome.d.ts +3 -1
  134. package/dist/run/outcome.d.ts.map +1 -1
  135. package/dist/run/outcome.js.map +1 -1
  136. package/dist/run/resume-context.d.ts +51 -0
  137. package/dist/run/resume-context.d.ts.map +1 -1
  138. package/dist/run/resume-context.js +97 -0
  139. package/dist/run/resume-context.js.map +1 -1
  140. package/dist/run/run-issue.d.ts +16 -1
  141. package/dist/run/run-issue.d.ts.map +1 -1
  142. package/dist/run/run-issue.js +290 -187
  143. package/dist/run/run-issue.js.map +1 -1
  144. package/dist/sandbox/egress-proxy.d.ts +16 -0
  145. package/dist/sandbox/egress-proxy.d.ts.map +1 -1
  146. package/dist/sandbox/egress-proxy.js +91 -7
  147. package/dist/sandbox/egress-proxy.js.map +1 -1
  148. package/dist/sandbox/index.d.ts +2 -0
  149. package/dist/sandbox/index.d.ts.map +1 -1
  150. package/dist/sandbox/index.js +3 -1
  151. package/dist/sandbox/index.js.map +1 -1
  152. package/dist/steward/diagnose.d.ts +5 -1
  153. package/dist/steward/diagnose.d.ts.map +1 -1
  154. package/dist/steward/diagnose.js +13 -5
  155. package/dist/steward/diagnose.js.map +1 -1
  156. package/dist/steward/run.d.ts +2 -0
  157. package/dist/steward/run.d.ts.map +1 -1
  158. package/dist/steward/run.js +1 -0
  159. package/dist/steward/run.js.map +1 -1
  160. package/dist/triage/index.d.ts +25 -0
  161. package/dist/triage/index.d.ts.map +1 -0
  162. package/dist/triage/index.js +95 -0
  163. package/dist/triage/index.js.map +1 -0
  164. package/dist/types/index.d.ts +10 -2
  165. package/dist/types/index.d.ts.map +1 -1
  166. package/dist/usage/index.d.ts +19 -1
  167. package/dist/usage/index.d.ts.map +1 -1
  168. package/dist/usage/index.js +27 -1
  169. package/dist/usage/index.js.map +1 -1
  170. package/dist/utils/codex-config.d.ts +19 -1
  171. package/dist/utils/codex-config.d.ts.map +1 -1
  172. package/dist/utils/codex-config.js +51 -2
  173. package/dist/utils/codex-config.js.map +1 -1
  174. package/dist/utils/opencode-config.d.ts +12 -0
  175. package/dist/utils/opencode-config.d.ts.map +1 -0
  176. package/dist/utils/opencode-config.js +24 -0
  177. package/dist/utils/opencode-config.js.map +1 -0
  178. package/dist/work/github-issue.d.ts +2 -0
  179. package/dist/work/github-issue.d.ts.map +1 -1
  180. package/dist/work/github-issue.js +18 -0
  181. package/dist/work/github-issue.js.map +1 -1
  182. package/package.json +5 -5
@@ -8,7 +8,7 @@ import { withLifecycle } from '../bus/index.js';
8
8
  import { buildConstitutionContext } from '../constitutions/index.js';
9
9
  import { findUnresolvedRegressions, parseDesignArtifact, renderDesignArtifact } from '../design/index.js';
10
10
  import { buildFastPathSpec, isFastPathEligible } from '../efficiency/fast-path.js';
11
- import { buildReadinessEnrichmentPrompt, buildReadinessEnrichmentRetryPrompt, composeEnrichedIssueBody, stripEnrichedBlock, } from '../readiness/enrich.js';
11
+ import { buildReadinessEnrichmentPrompt, buildReadinessEnrichmentRetryPrompt, composeEnrichedIssueBody, scoreEnrichedIssueReadiness, stripEnrichedBlock, } from '../readiness/enrich.js';
12
12
  import { decomposeOversizedIssue, renderChildIssueBody } from '../readiness/decompose.js';
13
13
  import { resolveSliceGate } from '../readiness/slice-gate.js';
14
14
  import { DEFAULT_MAX_SLICES } from '../readiness/slice-plan.js';
@@ -27,8 +27,56 @@ import { createDefaultWorkSourceRegistry } from '../work/index.js';
27
27
  * on other endpoints (e.g. merge_commit_sha, singular assignee).
28
28
  */
29
29
  const GITHUB_ISSUE_UPDATE_API_VERSION = '2026-03-10';
30
+ /** Order PLAN falls back through when its chosen route cannot run here. */
31
+ const ROUTE_FALLBACK_ORDER = ['claude', 'codex', 'opencode'];
32
+ /** Build routes whose task resolves to at least one runnable model, in fallback order.
33
+ * Returns [] when the router cannot answer, which callers treat as "no restriction". */
34
+ export function runnableBuildRoutes(router) {
35
+ try {
36
+ return ROUTE_FALLBACK_ORDER.filter((route) => router.resolveAll(`build_${route}`).length > 0);
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ }
42
+ /** The route PLAN should use when it chose none, or chose one that cannot run here. */
43
+ export function defaultBuildRoute(runnable) {
44
+ return runnable[0] ?? 'claude';
45
+ }
46
+ /** Keep the requested route when it can run here (or the router cannot say); otherwise fall back. */
47
+ export function resolveRunnableBuildRoute(requested, runnable) {
48
+ if (runnable.length === 0 || runnable.includes(requested))
49
+ return { route: requested, rerouted: false };
50
+ return { route: defaultBuildRoute(runnable), rerouted: true };
51
+ }
52
+ /** Step-3 route bullets, in display order. */
53
+ const ROUTE_BULLETS = {
54
+ codex: ` - route: codex — when the implementation from a frozen spec is bounded and mechanical
55
+ (known-repro fixes, well-scoped features, refactors, test writing, CI/tooling)`,
56
+ claude: ` - route: claude — when the work needs UX, design, or architecture judgment; naming/API
57
+ design calls; is a tiny diff (<20 lines); needs session tools; or when the repo's
58
+ pinned build worker is a claude-cli model (e.g. claude-sonnet-5 in .factory/config.json)`,
59
+ opencode: ` - route: opencode — when the repo's pinned build worker is an opencode-harness model
60
+ (e.g. opencode-deepseek-v4-flash in .factory/config.json); bounded mechanical work`,
61
+ };
30
62
  export function buildPlanPrompt(opts) {
31
63
  const { issue, issueTitle, issueBody, specPath, constitutionCtx, adrCtx } = opts;
64
+ const runnable = opts.runnableRoutes ?? [];
65
+ const fallbackRoute = defaultBuildRoute(runnable);
66
+ const offered = runnable.length > 0 ? runnable : ROUTE_FALLBACK_ORDER;
67
+ const routeBullets = ['codex', 'claude', 'opencode']
68
+ .filter((r) => offered.includes(r))
69
+ .map((r) => ROUTE_BULLETS[r])
70
+ .join('\n');
71
+ const exampleRoute = offered.includes('codex') ? 'codex' : fallbackRoute;
72
+ const replaceNote = offered.includes('codex') && offered.includes('claude')
73
+ ? `(Replace 'codex' in the frontmatter with 'claude' if that's the route you chose.)\n`
74
+ : offered.length > 1
75
+ ? `(Set route: in the frontmatter to the route you chose.)\n`
76
+ : '';
77
+ const runnableNote = runnable.length > 0 && runnable.length < ROUTE_FALLBACK_ORDER.length
78
+ ? `\n Only these routes can run on this machine: ${runnable.join(', ')}. Choose one of them.`
79
+ : '';
32
80
  return `You are the PLAN phase of a multi-agent software factory for issue #${issue}.
33
81
  Do NOT implement anything. You are already inside the isolated worktree (cwd).
34
82
 
@@ -48,15 +96,9 @@ Steps:
48
96
  2. Explore the codebase (read/search only) enough to name the exact files, functions,
49
97
  and existing patterns/tests this issue touches, and any edge cases.
50
98
  3. Decide the build route:
51
- - route: codex — when the implementation from a frozen spec is bounded and mechanical
52
- (known-repro fixes, well-scoped features, refactors, test writing, CI/tooling)
53
- - route: claude — when the work needs UX, design, or architecture judgment; naming/API
54
- design calls; is a tiny diff (<20 lines); needs session tools; or when the repo's
55
- pinned build worker is a claude-cli model (e.g. claude-sonnet-5 in .factory/config.json)
56
- - route: opencode — when the repo's pinned build worker is an opencode-harness model
57
- (e.g. opencode-deepseek-v4-flash in .factory/config.json); bounded mechanical work
99
+ ${routeBullets}
58
100
  A pinned build worker's harness always wins over your judgment: the factory forces the
59
- route to match it after PLAN. Default to route: claude when genuinely unsure.
101
+ route to match it after PLAN. Default to route: ${fallbackRoute} when genuinely unsure.${runnableNote}
60
102
  4. RIGHT-SIZE THE SLICE. A single BUILD pass must be bounded: aim for roughly
61
103
  5-15 minutes of agent work, a handful of files, at most ~6 target types /
62
104
  ~8 signatures / ~10 call edges in the design block. If the issue genuinely
@@ -96,7 +138,7 @@ ${constitutionCtx ? '5. The constitution above defines the standards for this pr
96
138
 
97
139
  Write EXACTLY ONE file, at ${specPath}, in this shape:
98
140
  ---
99
- route: codex
141
+ route: ${exampleRoute}
100
142
  design:
101
143
  restatedProblem: >-
102
144
  <one paragraph, the problem in your own words — if this is wrong, stop>
@@ -166,8 +208,7 @@ ${constitutionCtx ? `## Constitution compliance\nFor each standard in the consti
166
208
  ## Non-goals
167
209
  <explicitly out of scope, from the issue>
168
210
 
169
- (Replace 'codex' in the frontmatter with 'claude' if that's the route you chose.)
170
- The design: block is machine-validated — keys must match exactly as shown.
211
+ ${replaceNote}The design: block is machine-validated — keys must match exactly as shown.
171
212
  targetTypes / signatures / callGraph must be grounded in the real checkout: every
172
213
  file must be one that exists (or one you are creating), and every name/symbol must
173
214
  be one you actually read or are adding — omit an entry rather than guess. Quote
@@ -201,16 +242,17 @@ function blockedNoChangeSpecReason(body) {
201
242
  return null;
202
243
  return 'PLAN returned a blocked/no-change note instead of a frozen spec';
203
244
  }
204
- /** The file-mode size-gate escalation: log it and build the parked (or decomposed) PlanResult. */
205
- function fileModeEscalation(childIssues, readiness, specPath, log, prefix = '') {
245
+ /** The file-mode size-gate escalation: logs size-gate-decomposed when children were filed and
246
+ * size-gate-escalated otherwise, and builds the parked (or decomposed) PlanResult. */
247
+ function fileModeEscalation(childIssues, readiness, specPath, route, log, prefix = '') {
206
248
  const reason = prefix +
207
249
  (childIssues.length > 0
208
250
  ? `issue exceeds the size gate (${readiness.sizeReason ?? 'too big'}) — decomposed into ${childIssues.map((n) => `#${n}`).join(', ')}`
209
251
  : `issue exceeds the size gate (${readiness.sizeReason ?? 'too big'}) — parked for decomposition`);
210
- log('size-gate-escalated', reason, { readiness });
252
+ log(childIssues.length > 0 ? 'size-gate-decomposed' : 'size-gate-escalated', reason, { readiness });
211
253
  return {
212
254
  ok: false,
213
- route: 'claude',
255
+ route,
214
256
  specPath,
215
257
  model: '',
216
258
  escalate: reason,
@@ -234,7 +276,9 @@ async function planPhaseImpl(opts) {
234
276
  let issueBody = work.brief;
235
277
  log('work_request', `resolved work request ${work.id} (${work.kind}, ${work.acceptanceCriteria.length} acceptance criteria)`);
236
278
  const constitutionCtx = buildConstitutionContext(constitution);
237
- let readiness = scoreIssueReadiness({ title: issueTitle, body: issueBody });
279
+ const runnableRoutes = runnableBuildRoutes(router);
280
+ const failureRoute = defaultBuildRoute(runnableRoutes);
281
+ let readiness = scoreEnrichedIssueReadiness({ title: issueTitle, body: issueBody });
238
282
  if (opts.enforceReadiness &&
239
283
  source.kind === GITHUB_ISSUE_SOURCE &&
240
284
  readiness.template === 'factory-task' &&
@@ -289,7 +333,14 @@ async function planPhaseImpl(opts) {
289
333
  previous = { previousOutput: enrichment.output, template: candidate.template, stillMissing: candidate.missing };
290
334
  }
291
335
  if (!enriched) {
292
- return { ok: false, route: 'claude', specPath, model: lastModel, escalate: lastReason, designArtifact: null };
336
+ return {
337
+ ok: false,
338
+ route: failureRoute,
339
+ specPath,
340
+ model: lastModel,
341
+ escalate: lastReason,
342
+ designArtifact: null,
343
+ };
293
344
  }
294
345
  }
295
346
  catch (error) {
@@ -297,7 +348,7 @@ async function planPhaseImpl(opts) {
297
348
  log('readiness_enrichment_failed', `enrichment failed: ${reason}`);
298
349
  return {
299
350
  ok: false,
300
- route: 'claude',
351
+ route: failureRoute,
301
352
  specPath,
302
353
  model: '',
303
354
  escalate: `readiness enrichment failed: ${reason}`,
@@ -305,10 +356,15 @@ async function planPhaseImpl(opts) {
305
356
  };
306
357
  }
307
358
  }
359
+ // ADR-0161: stack PRs are not built yet; stack runs the slice-mode gates (its fallback).
360
+ const sliceMode = opts.sizeGateMode === 'slice' || opts.sizeGateMode === 'stack';
361
+ if (enforceSizeGate && opts.sizeGateMode === 'stack') {
362
+ log('plan', 'sizeGate.mode stack: stacked PRs are not built yet — using slice mode');
363
+ }
308
364
  let planningSlice = false;
309
365
  let sliceLabel = '';
310
366
  let plannedSlice;
311
- if (enforceSizeGate && opts.sizeGateMode === 'slice' && source.kind === GITHUB_ISSUE_SOURCE) {
367
+ if (enforceSizeGate && sliceMode && source.kind === GITHUB_ISSUE_SOURCE) {
312
368
  const params = source.params;
313
369
  const gate = await resolveSliceGate({
314
370
  issue: params.issue,
@@ -327,7 +383,7 @@ async function planPhaseImpl(opts) {
327
383
  });
328
384
  const park = (reason) => ({
329
385
  ok: false,
330
- route: 'claude',
386
+ route: failureRoute,
331
387
  specPath,
332
388
  model: '',
333
389
  escalate: reason,
@@ -337,7 +393,7 @@ async function planPhaseImpl(opts) {
337
393
  log('escalate', gate.reason);
338
394
  return park(gate.reason);
339
395
  }
340
- if (gate.kind === 'over-cap') {
396
+ if (gate.kind === 'over-cap' || gate.kind === 'unsliceable') {
341
397
  log('size-gate-escalated', gate.reason);
342
398
  return park(gate.reason);
343
399
  }
@@ -358,7 +414,7 @@ async function planPhaseImpl(opts) {
358
414
  }
359
415
  }
360
416
  if (enforceSizeGate &&
361
- opts.sizeGateMode !== 'slice' &&
417
+ !sliceMode &&
362
418
  source.kind === GITHUB_ISSUE_SOURCE &&
363
419
  readiness.template === 'factory-task' &&
364
420
  readiness.sizeOk === false) {
@@ -376,7 +432,7 @@ async function planPhaseImpl(opts) {
376
432
  onProviderFailure,
377
433
  fileSubIssues: true,
378
434
  });
379
- return fileModeEscalation(decomposeResult.childIssues, readiness, specPath, log);
435
+ return fileModeEscalation(decomposeResult.childIssues, readiness, specPath, failureRoute, log);
380
436
  }
381
437
  // The fast path emits a compact Codex spec, so it is only valid when the route may be codex:
382
438
  // a pinned claude/opencode build route (#1367) must go through model PLAN like any other issue.
@@ -436,7 +492,7 @@ async function planPhaseImpl(opts) {
436
492
  let steering;
437
493
  let replans = 0;
438
494
  while (true) {
439
- const prompt = applySteering(buildPlanPrompt({ issue, issueTitle, issueBody, specPath, constitutionCtx, adrCtx }), steering);
495
+ const prompt = applySteering(buildPlanPrompt({ issue, issueTitle, issueBody, specPath, constitutionCtx, adrCtx, runnableRoutes }), steering);
440
496
  if (replans > 0) {
441
497
  log('plan', `Re-planning after operator redirect (attempt ${replans + 1})`);
442
498
  }
@@ -463,7 +519,7 @@ async function planPhaseImpl(opts) {
463
519
  log('escalate', escalateLine ?? 'plan escalated');
464
520
  return {
465
521
  ok: false,
466
- route: 'claude',
522
+ route: failureRoute,
467
523
  specPath,
468
524
  model: result.model,
469
525
  escalate: escalateLine,
@@ -477,7 +533,9 @@ async function planPhaseImpl(opts) {
477
533
  }
478
534
  // Read route from spec frontmatter (single normalization site: parseSpec)
479
535
  const parsed = await readSpec(specPath);
480
- let route = parsed.route ?? 'claude';
536
+ // Re-read after the PLAN call: a CLI that failed sign-in during PLAN is no longer runnable (#2495).
537
+ const runnableNow = runnableBuildRoutes(router);
538
+ let route = parsed.route ?? defaultBuildRoute(runnableNow);
481
539
  if (localOnly && route !== 'codex') {
482
540
  log('warn', 'local-only mode requires a local Codex harness — forcing route to codex');
483
541
  route = 'codex';
@@ -490,6 +548,13 @@ async function planPhaseImpl(opts) {
490
548
  // since it's the frozen artifact downstream consumers (eval scoring, PR review) read.
491
549
  await updateSpecRoute(specPath, 'claude', 'codex-disabled');
492
550
  }
551
+ const resolved = resolveRunnableBuildRoute(route, runnableNow);
552
+ if (resolved.rerouted) {
553
+ const next = resolved.route;
554
+ log('model-override', `route ${route} has no runnable model on this machine, rerouting to ${next}`);
555
+ route = next;
556
+ await updateSpecRoute(specPath, next, 'route-unavailable');
557
+ }
493
558
  if (opts.preferredRoute && route !== opts.preferredRoute) {
494
559
  log('model-override', `pinned build route ${opts.preferredRoute} — overriding plan's ${route}`);
495
560
  route = opts.preferredRoute;
@@ -522,6 +587,7 @@ async function planPhaseImpl(opts) {
522
587
  // ~40 min of agent churn is a planning failure, not a build problem.
523
588
  // Decompose the issue instead of handing a mega-slice to BUILD: detect
524
589
  // complexity at planning time and keep each build pass short (2026-08-15).
590
+ // File mode files the decomposition as sub-issues and re-queues them (#2662).
525
591
  if (enforceSizeGate &&
526
592
  source.kind === GITHUB_ISSUE_SOURCE &&
527
593
  (designArtifact.targetTypes.length > MAX_BUILD_TARGET_TYPES ||
@@ -540,7 +606,7 @@ async function planPhaseImpl(opts) {
540
606
  designArtifact: null,
541
607
  });
542
608
  // ADR-0147: in slice mode the post-plan gate slices a whole issue; a slice is never sliced again.
543
- if (opts.sizeGateMode === 'slice') {
609
+ if (sliceMode) {
544
610
  if (planningSlice) {
545
611
  const reason = `${sliceLabel} exceeds the bounded-build budget (${scope}) — parked; a slice is never sliced again`;
546
612
  log('size-gate-escalated', reason);
@@ -565,7 +631,7 @@ async function planPhaseImpl(opts) {
565
631
  const reason = `plan scope exceeds the bounded-build budget (${scope}) — sliced into ${gate.plan.slices.length} slice(s); the next run plans slice ${gate.slice.index}`;
566
632
  return { ...park(reason), sliced: { sliceCount: gate.plan.slices.length } };
567
633
  }
568
- if (gate.kind === 'over-cap') {
634
+ if (gate.kind === 'over-cap' || gate.kind === 'unsliceable') {
569
635
  log('size-gate-escalated', gate.reason);
570
636
  return park(gate.reason);
571
637
  }
@@ -573,7 +639,8 @@ async function planPhaseImpl(opts) {
573
639
  log('escalate', reason);
574
640
  return park(reason);
575
641
  }
576
- await decomposeOversizedIssue({
642
+ // File mode (#2662): file the decomposition as sub-issues and re-queue them instead of parking.
643
+ const decomposeResult = await decomposeOversizedIssue({
577
644
  issue: params.issue,
578
645
  repo: params.repo,
579
646
  title: issueTitle,
@@ -584,7 +651,14 @@ async function planPhaseImpl(opts) {
584
651
  log: (type, msg) => log(type, msg),
585
652
  timeoutSeconds: Math.min(timeoutSeconds ?? 1800, 300),
586
653
  onProviderFailure,
654
+ fileSubIssues: true,
587
655
  });
656
+ const { childIssues } = decomposeResult;
657
+ if (childIssues.length > 0) {
658
+ const reason = `plan scope exceeds the bounded-build budget (${scope}) — decomposed into ${childIssues.map((n) => `#${n}`).join(', ')}`;
659
+ log('size-gate-decomposed', reason);
660
+ return { ...park(reason), decomposed: { childIssues } };
661
+ }
588
662
  log('size-gate-escalated', fileReason);
589
663
  return park(fileReason);
590
664
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/phases/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/phases/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { Octokit } from '@octokit/rest';
2
+ import type { EventKind } from '../events/kinds.js';
3
+ import { type SlicePlan } from '../readiness/slice-plan.js';
4
+ import type { CheckSummary } from '../types/index.js';
5
+ /** One built, already-pushed slice branch, bottom to top. */
6
+ export interface StackSliceInput {
7
+ /** 1-based slice index from the slice plan. */
8
+ index: number;
9
+ /** Pushed head branch of this slice. */
10
+ branch: string;
11
+ diffStat: string;
12
+ specBody?: string;
13
+ risk?: string;
14
+ checkSummary?: CheckSummary;
15
+ reworkRounds?: number;
16
+ }
17
+ export interface StackedPr {
18
+ index: number;
19
+ prNumber: number;
20
+ branch: string;
21
+ base: string;
22
+ }
23
+ export type SliceStackResult = {
24
+ ok: true;
25
+ stackNumber: number;
26
+ prs: StackedPr[];
27
+ } | {
28
+ ok: false;
29
+ reason: string;
30
+ prs: StackedPr[];
31
+ };
32
+ /** Opens one draft PR per built slice (slice 1 on main, slice k on slice k-1's branch), links them as one
33
+ * GitHub stack, and records every PR and branch in the slice-plan comment. Only the top PR closes the issue. */
34
+ export declare function openSliceStack(opts: {
35
+ octokit: Octokit;
36
+ repo: string;
37
+ issue: number;
38
+ title: string;
39
+ plan: SlicePlan;
40
+ slices: readonly StackSliceInput[];
41
+ log: (type: EventKind, msg: string) => void;
42
+ }): Promise<SliceStackResult>;
43
+ //# sourceMappingURL=ship-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-stack.d.ts","sourceRoot":"","sources":["../../src/phases/ship-stack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAkB,MAAM,4BAA4B,CAAC;AAG5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,gBAAgB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAMxG;iHACiH;AACjH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+E5B"}
@@ -0,0 +1,91 @@
1
+ // src/phases/ship-stack.ts — ADR-0161 stack mode SHIP: open every built slice PR and link them as one GitHub stack.
2
+ import { withSliceState } from '../readiness/slice-plan.js';
3
+ import { upsertSlicePlanComment } from '../readiness/slice-plan-github.js';
4
+ import { renderPrBody } from '../reports/pr-body.js';
5
+ import { findOpenPR, isPullAlreadyExistsError } from './ship.js';
6
+ function messageOf(err) {
7
+ return err instanceof Error ? err.message : String(err);
8
+ }
9
+ /** Opens one draft PR per built slice (slice 1 on main, slice k on slice k-1's branch), links them as one
10
+ * GitHub stack, and records every PR and branch in the slice-plan comment. Only the top PR closes the issue. */
11
+ export async function openSliceStack(opts) {
12
+ const { octokit, repo, issue, plan, log } = opts;
13
+ const [owner, repoName] = repo.split('/');
14
+ const count = plan.slices.length;
15
+ const sorted = [...opts.slices].sort((a, b) => a.index - b.index);
16
+ if (sorted.length === 0)
17
+ return { ok: false, reason: 'no built slices to open', prs: [] };
18
+ const prs = [];
19
+ let failure;
20
+ for (const [i, slice] of sorted.entries()) {
21
+ const base = i === 0 ? 'main' : sorted[i - 1].branch;
22
+ const top = slice.index === count;
23
+ const label = `slice ${slice.index}/${count}`;
24
+ let prNumber;
25
+ try {
26
+ const { data: pr } = await octokit.rest.pulls.create({
27
+ owner,
28
+ repo: repoName,
29
+ head: slice.branch,
30
+ base,
31
+ title: `${opts.title} — ${label} (#${issue})`,
32
+ draft: true,
33
+ body: renderPrBody({
34
+ summaryLine: `Implements ${label} of #${issue}.`,
35
+ specBody: slice.specBody,
36
+ diffStat: slice.diffStat,
37
+ checkSummary: slice.checkSummary,
38
+ reworkRounds: slice.reworkRounds,
39
+ risk: slice.risk,
40
+ closes: top ? issue : undefined,
41
+ partOf: top ? undefined : issue,
42
+ }),
43
+ });
44
+ prNumber = pr.number;
45
+ log('pr_opened', `opened PR #${prNumber} for ${label} on ${slice.branch} (base ${base})`);
46
+ }
47
+ catch (err) {
48
+ const existing = isPullAlreadyExistsError(err)
49
+ ? await findOpenPR(octokit, owner, repoName, slice.branch)
50
+ : undefined;
51
+ if (existing?.status === 'found') {
52
+ prNumber = existing.prNumber;
53
+ log('recovered', `PR #${prNumber} already existed for ${label} on ${slice.branch}; reusing it`);
54
+ }
55
+ else {
56
+ failure = `could not open the PR for ${label} (${slice.branch}): ${messageOf(err)}`;
57
+ log('ship', failure);
58
+ break;
59
+ }
60
+ }
61
+ prs.push({ index: slice.index, prNumber, branch: slice.branch, base });
62
+ }
63
+ let stackNumber = 0;
64
+ if (failure === undefined) {
65
+ try {
66
+ const { data } = await octokit.request('POST /repos/{owner}/{repo}/stacks', {
67
+ owner,
68
+ repo: repoName,
69
+ pull_requests: prs.map((p) => p.prNumber),
70
+ });
71
+ stackNumber = data.number;
72
+ log('ship', `linked PRs ${prs.map((p) => `#${p.prNumber}`).join(', ')} as stack ${stackNumber}`);
73
+ }
74
+ catch (err) {
75
+ failure = `could not link the slice PRs as a stack: ${messageOf(err)}`;
76
+ log('ship', failure);
77
+ }
78
+ }
79
+ if (prs.length > 0) {
80
+ try {
81
+ const recorded = prs.reduce((p, s) => withSliceState(p, s.index, 'pr-open', s.prNumber, s.branch), plan);
82
+ await upsertSlicePlanComment({ octokit, repo, issue, plan: recorded });
83
+ log('ship', `recorded slices ${prs.map((p) => p.index).join(', ')} as pr-open in the slice plan comment`);
84
+ }
85
+ catch (err) {
86
+ return { ok: false, reason: `could not record the slice plan comment: ${messageOf(err)}`, prs };
87
+ }
88
+ }
89
+ return failure === undefined ? { ok: true, stackNumber, prs } : { ok: false, reason: failure, prs };
90
+ }
91
+ //# sourceMappingURL=ship-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-stack.js","sourceRoot":"","sources":["../../src/phases/ship-stack.ts"],"names":[],"mappings":"AAAA,oHAAoH;AAKpH,OAAO,EAAkB,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAyBjE,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;iHACiH;AACjH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAQpC;IACC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAE1F,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,IAAI,OAA2B,CAAC;IAEhC,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,MAAM,CAAC;QACtD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;QAClC,MAAM,KAAK,GAAG,SAAS,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;QAC9C,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnD,KAAK;gBACL,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,KAAK,CAAC,MAAM;gBAClB,IAAI;gBACJ,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,GAAG;gBAC7C,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,YAAY,CAAC;oBACjB,WAAW,EAAE,cAAc,KAAK,QAAQ,KAAK,GAAG;oBAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;oBAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;iBAChC,CAAC;aACH,CAAC,CAAC;YACH,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC;YACrB,GAAG,CAAC,WAAW,EAAE,cAAc,QAAQ,QAAQ,KAAK,OAAO,KAAK,CAAC,MAAM,UAAU,IAAI,GAAG,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,wBAAwB,CAAC,GAAG,CAAC;gBAC5C,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;gBAC1D,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,QAAQ,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;gBACjC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC7B,GAAG,CAAC,WAAW,EAAE,OAAO,QAAQ,wBAAwB,KAAK,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,6BAA6B,KAAK,KAAK,KAAK,CAAC,MAAM,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpF,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,mCAAmC,EAAE;gBAC1E,KAAK;gBACL,IAAI,EAAE,QAAQ;gBACd,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aAC1C,CAAC,CAAC;YACH,WAAW,GAAI,IAA2B,CAAC,MAAM,CAAC;YAClD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC;QACnG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,GAAG,4CAA4C,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;YACzG,MAAM,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvE,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC5G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4CAA4C,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;QAClG,CAAC;IACH,CAAC;IAED,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACtG,CAAC"}
@@ -48,6 +48,8 @@ declare function shipPhaseImpl(opts: {
48
48
  reworkRounds?: number;
49
49
  /** PR classifier decision (#1724), rendered into the evidence pack. */
50
50
  reviewRouting?: ReviewRouting;
51
+ /** Model pins that were not honored (#2511), rendered into the evidence pack. */
52
+ pinNotes?: string[];
51
53
  /** The run's resolved work request; when its kind is not 'github-issue', the PR
52
54
  * title/body come from it instead of fetching the (nonexistent) issue (#507). */
53
55
  work?: Pick<WorkRequest, 'id' | 'kind' | 'title'>;
@@ -66,6 +68,9 @@ declare function shipPhaseImpl(opts: {
66
68
  }): Promise<ShipResult>;
67
69
  export declare function findOpenPR(octokit: Octokit, owner: string, repo: string, branch: string): Promise<PrLookup>;
68
70
  export declare function findMergedPR(octokit: Octokit, owner: string, repo: string, branch: string): Promise<PrLookup>;
71
+ /** A `pulls.create` 422 whose message says the PR already exists — recoverable by re-querying,
72
+ * unlike every other 422 (e.g. "No commits between ..."), which still propagates (#641). */
73
+ export declare function isPullAlreadyExistsError(err: unknown): boolean;
69
74
  /** The result of asking GitHub whether a PR exists for a branch. `error` is never collapsed
70
75
  * into `absent` — an unanswered lookup makes ship fail closed rather than open a duplicate
71
76
  * PR (#641). */
@@ -1 +1 @@
1
- {"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../../src/phases/ship.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../../src/phases/ship.ts"],"names":[],"mappings":"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"}
@@ -227,6 +227,7 @@ async function shipPhaseImpl(opts) {
227
227
  startedAt: opts.startedAt,
228
228
  logsDir: opts.logsDir,
229
229
  reviewRouting: opts.reviewRouting,
230
+ pinNotes: opts.pinNotes,
230
231
  });
231
232
  await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
232
233
  log('evidence', `posted evidence pack to PR #${prNumber}`);
@@ -350,7 +351,7 @@ export async function findMergedPR(octokit, owner, repo, branch) {
350
351
  }
351
352
  /** A `pulls.create` 422 whose message says the PR already exists — recoverable by re-querying,
352
353
  * unlike every other 422 (e.g. "No commits between ..."), which still propagates (#641). */
353
- function isPullAlreadyExistsError(err) {
354
+ export function isPullAlreadyExistsError(err) {
354
355
  const e = err;
355
356
  if (e?.status !== 422)
356
357
  return false;