@on-par/factory-core 0.9.6 → 0.9.7-next.10

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 (75) hide show
  1. package/dist/internal.d.ts +2 -2
  2. package/dist/internal.d.ts.map +1 -1
  3. package/dist/internal.js +1 -0
  4. package/dist/internal.js.map +1 -1
  5. package/dist/logger/index.d.ts +2 -1
  6. package/dist/logger/index.d.ts.map +1 -1
  7. package/dist/logger/index.js +1 -0
  8. package/dist/logger/index.js.map +1 -1
  9. package/dist/phases/check.d.ts +29 -0
  10. package/dist/phases/check.d.ts.map +1 -1
  11. package/dist/phases/check.js +2 -2
  12. package/dist/phases/check.js.map +1 -1
  13. package/dist/phases/plan-design-retry.d.ts +9 -0
  14. package/dist/phases/plan-design-retry.d.ts.map +1 -0
  15. package/dist/phases/plan-design-retry.js +22 -0
  16. package/dist/phases/plan-design-retry.js.map +1 -0
  17. package/dist/phases/plan-routes.d.ts +17 -0
  18. package/dist/phases/plan-routes.d.ts.map +1 -0
  19. package/dist/phases/plan-routes.js +34 -0
  20. package/dist/phases/plan-routes.js.map +1 -0
  21. package/dist/phases/plan-test-helpers.d.ts +12 -0
  22. package/dist/phases/plan-test-helpers.d.ts.map +1 -0
  23. package/dist/phases/plan-test-helpers.js +44 -0
  24. package/dist/phases/plan-test-helpers.js.map +1 -0
  25. package/dist/phases/plan.d.ts +4 -12
  26. package/dist/phases/plan.d.ts.map +1 -1
  27. package/dist/phases/plan.js +59 -70
  28. package/dist/phases/plan.js.map +1 -1
  29. package/dist/phases/ship-git.d.ts +52 -0
  30. package/dist/phases/ship-git.d.ts.map +1 -0
  31. package/dist/phases/ship-git.js +104 -0
  32. package/dist/phases/ship-git.js.map +1 -0
  33. package/dist/phases/ship-spec.d.ts +5 -0
  34. package/dist/phases/ship-spec.d.ts.map +1 -0
  35. package/dist/phases/ship-spec.js +26 -0
  36. package/dist/phases/ship-spec.js.map +1 -0
  37. package/dist/phases/ship.d.ts +11 -7
  38. package/dist/phases/ship.d.ts.map +1 -1
  39. package/dist/phases/ship.js +73 -144
  40. package/dist/phases/ship.js.map +1 -1
  41. package/dist/run/ci-rework-loop.d.ts +56 -0
  42. package/dist/run/ci-rework-loop.d.ts.map +1 -0
  43. package/dist/run/ci-rework-loop.js +112 -0
  44. package/dist/run/ci-rework-loop.js.map +1 -0
  45. package/dist/run/ci-rework.d.ts +13 -0
  46. package/dist/run/ci-rework.d.ts.map +1 -0
  47. package/dist/run/ci-rework.js +59 -0
  48. package/dist/run/ci-rework.js.map +1 -0
  49. package/dist/run/run-issue.d.ts +4 -2
  50. package/dist/run/run-issue.d.ts.map +1 -1
  51. package/dist/run/run-issue.js +11 -37
  52. package/dist/run/run-issue.js.map +1 -1
  53. package/dist/run/ship-park.d.ts +14 -0
  54. package/dist/run/ship-park.d.ts.map +1 -0
  55. package/dist/run/ship-park.js +21 -0
  56. package/dist/run/ship-park.js.map +1 -0
  57. package/dist/steward/detect.d.ts +5 -2
  58. package/dist/steward/detect.d.ts.map +1 -1
  59. package/dist/steward/detect.js +5 -2
  60. package/dist/steward/detect.js.map +1 -1
  61. package/dist/types/index.d.ts +23 -0
  62. package/dist/types/index.d.ts.map +1 -1
  63. package/dist/utils/ci-evidence.d.ts +21 -0
  64. package/dist/utils/ci-evidence.d.ts.map +1 -0
  65. package/dist/utils/ci-evidence.js +66 -0
  66. package/dist/utils/ci-evidence.js.map +1 -0
  67. package/dist/utils/ci-watch.d.ts +12 -0
  68. package/dist/utils/ci-watch.d.ts.map +1 -1
  69. package/dist/utils/ci-watch.js +1 -1
  70. package/dist/utils/ci-watch.js.map +1 -1
  71. package/dist/utils/index.d.ts +2 -1
  72. package/dist/utils/index.d.ts.map +1 -1
  73. package/dist/utils/index.js +2 -0
  74. package/dist/utils/index.js.map +1 -1
  75. package/package.json +5 -5
@@ -2,10 +2,11 @@
2
2
  import { exec as execCb } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { withLifecycle } from '../bus/index.js';
5
- import { readDesignArtifact } from '../design/index.js';
6
5
  import { gatherEvidencePack } from '../reports/evidence-pack.js';
7
6
  import { renderPrBody } from '../reports/pr-body.js';
8
- import { readSpec } from '../spec/index.js';
7
+ import { describePushFailure, readRemoteBranchSha, shortDetail, verifyRemoteHead, } from './ship-git.js';
8
+ import { readRisk, readSpecBody } from './ship-spec.js';
9
+ import { collectCiFailureEvidence } from '../utils/ci-evidence.js';
9
10
  import { DEFAULT_CI_DEADLINE_MS, resolveCiNoChecksGraceMs, watchChecksWithInfraRerun, } from '../utils/ci-watch.js';
10
11
  import { shellEscape } from '../utils/index.js';
11
12
  import { GITHUB_ISSUE_SOURCE } from '../work/github-issue.js';
@@ -48,6 +49,50 @@ async function shipPhaseImpl(opts) {
48
49
  return { ok: false };
49
50
  }
50
51
  let prNumber = openLookup.status === 'found' ? openLookup.prNumber : undefined;
52
+ const reentry = opts.reentry;
53
+ let watchRef = branch;
54
+ let headSha;
55
+ if (reentry) {
56
+ if (prNumber !== reentry.prNumber) {
57
+ const reason = `re-entry expected open PR #${reentry.prNumber} for ${branch} but found ${prNumber === undefined ? 'none' : `#${prNumber}`}`;
58
+ log('ship', reason);
59
+ return { ok: false, reason };
60
+ }
61
+ let localSha;
62
+ try {
63
+ localSha = (await run('git rev-parse HEAD', { cwd: worktree })).stdout.trim();
64
+ }
65
+ catch (err) {
66
+ const reason = `could not read local HEAD on re-entry (${shortDetail(err)})`;
67
+ log('ship', reason);
68
+ return { ok: false, prNumber, reason };
69
+ }
70
+ if (localSha && localSha === reentry.previousHeadSha) {
71
+ const reason = `CI rework produced no new commit on ${branch}`;
72
+ log('ship', reason);
73
+ return { ok: false, prNumber, ciOutcome: 'failure', reason, headSha: localSha };
74
+ }
75
+ try {
76
+ await run(`git push origin ${shellEscape(branch)}`, { cwd: worktree });
77
+ }
78
+ catch (err) {
79
+ const { kind, detail } = describePushFailure(err);
80
+ const reason = `re-entry push of ${branch} failed (${kind}): ${detail}`;
81
+ log('ship', reason);
82
+ return { ok: false, prNumber, reason };
83
+ }
84
+ const remoteHead = await verifyRemoteHead(run, worktree, branch);
85
+ if (remoteHead.status !== 'match') {
86
+ const reason = remoteHead.status === 'mismatch'
87
+ ? `remote head ${remoteHead.remoteSha} does not match local HEAD ${remoteHead.localSha} for ${branch} after re-entry push`
88
+ : `could not verify the remote head for ${branch} after re-entry push (${remoteHead.detail})`;
89
+ log('ship', reason);
90
+ return { ok: false, prNumber, reason };
91
+ }
92
+ watchRef = remoteHead.remoteSha;
93
+ headSha = remoteHead.remoteSha;
94
+ log('ship', `re-entry pushed ${branch} @ ${headSha}`);
95
+ }
51
96
  if (!prNumber) {
52
97
  // Recovery decisions must compare against the *current* remote — a stale
53
98
  // remote-tracking ref makes already-delivered work look like recovery work (#520).
@@ -217,22 +262,23 @@ async function shipPhaseImpl(opts) {
217
262
  log('fail', `Could not create or find PR for ${branch}`);
218
263
  return { ok: false };
219
264
  }
220
- try {
221
- const body = gatherEvidencePack({
222
- issue,
223
- checkSummary,
224
- reworkRounds: opts.reworkRounds,
225
- specPath: opts.specPath,
226
- eventsFile: opts.eventsFile,
227
- startedAt: opts.startedAt,
228
- logsDir: opts.logsDir,
229
- reviewRouting: opts.reviewRouting,
230
- pinNotes: opts.pinNotes,
231
- });
232
- await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
233
- log('evidence', `posted evidence pack to PR #${prNumber}`);
234
- }
235
- catch { }
265
+ if (!reentry)
266
+ try {
267
+ const body = gatherEvidencePack({
268
+ issue,
269
+ checkSummary,
270
+ reworkRounds: opts.reworkRounds,
271
+ specPath: opts.specPath,
272
+ eventsFile: opts.eventsFile,
273
+ startedAt: opts.startedAt,
274
+ logsDir: opts.logsDir,
275
+ reviewRouting: opts.reviewRouting,
276
+ pinNotes: opts.pinNotes,
277
+ });
278
+ await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
279
+ log('evidence', `posted evidence pack to PR #${prNumber}`);
280
+ }
281
+ catch { }
236
282
  let ciOutcome;
237
283
  // Watch CI (best-effort)
238
284
  if (watchCI) {
@@ -242,7 +288,7 @@ async function shipPhaseImpl(opts) {
242
288
  octokit,
243
289
  owner,
244
290
  repo: repoName,
245
- ref: branch,
291
+ ref: watchRef,
246
292
  rerun,
247
293
  deadlineMs: DEFAULT_CI_DEADLINE_MS,
248
294
  noChecksGraceMs: opts.ciNoChecksGraceMs ?? resolveCiNoChecksGraceMs(),
@@ -256,7 +302,8 @@ async function shipPhaseImpl(opts) {
256
302
  else if (ciOutcome === 'failure') {
257
303
  const reason = `CI failed for PR #${prNumber}`;
258
304
  log('ship', reason);
259
- return { ok: false, prNumber, reason, ciOutcome };
305
+ const ciFailure = await collectCiFailureEvidence({ octokit, owner, repo: repoName, ref: watchRef, prNumber });
306
+ return { ok: false, prNumber, reason, ciOutcome, ciFailure, ...(headSha ? { headSha } : {}) };
260
307
  }
261
308
  else if (ciOutcome === 'infra-failure') {
262
309
  const reason = `CI failed again for infrastructure reasons for PR #${prNumber} after one rerun`;
@@ -286,29 +333,12 @@ async function shipPhaseImpl(opts) {
286
333
  log('ready', ciOutcome === 'no-checks'
287
334
  ? `PR #${prNumber} ready for review (CI skipped: no checks found)`
288
335
  : `PR #${prNumber} ready for review`);
289
- return ciOutcome === undefined ? { ok: true, prNumber } : { ok: true, prNumber, ciOutcome };
290
- }
291
- /** The frozen spec body for the PR description; undefined when there is no readable spec. */
292
- async function readSpecBody(specPath) {
293
- if (!specPath)
294
- return undefined;
295
- try {
296
- return (await readSpec(specPath)).body;
297
- }
298
- catch {
299
- return undefined;
300
- }
301
- }
302
- /** The design artifact's Risk / blast radius for the PR body; undefined when there is no readable artifact. */
303
- async function readRisk(specPath) {
304
- if (!specPath)
305
- return undefined;
306
- try {
307
- return (await readDesignArtifact(specPath))?.riskBlastRadius;
308
- }
309
- catch {
310
- return undefined;
311
- }
336
+ return {
337
+ ok: true,
338
+ prNumber,
339
+ ...(ciOutcome === undefined ? {} : { ciOutcome }),
340
+ ...(headSha ? { headSha } : {}),
341
+ };
312
342
  }
313
343
  async function computeDiffStat(run, worktree) {
314
344
  try {
@@ -406,105 +436,4 @@ async function commitLeftoverBuildOutput(o) {
406
436
  o.log('ship', `committed ${o.statusLines.length} uncommitted path(s) left after check on ${o.branch}`);
407
437
  return { ok: true };
408
438
  }
409
- /** Bound on the failure text copied into one NDJSON event row. */
410
- const MAX_PUSH_ERROR_DETAIL = 400;
411
- const NON_FAST_FORWARD_MARKERS = [
412
- 'non-fast-forward',
413
- '! [rejected]',
414
- 'fetch first',
415
- 'updates were rejected',
416
- 'stale info',
417
- ];
418
- const NETWORK_MARKERS = [
419
- 'could not resolve host',
420
- 'failed to connect',
421
- 'connection timed out',
422
- 'connection refused',
423
- 'network is unreachable',
424
- 'operation timed out',
425
- 'the remote end hung up unexpectedly',
426
- ];
427
- function classifyPushFailure(text) {
428
- const t = text.toLowerCase();
429
- if (NON_FAST_FORWARD_MARKERS.some((m) => t.includes(m)))
430
- return 'non-fast-forward';
431
- if (NETWORK_MARKERS.some((m) => t.includes(m)))
432
- return 'network';
433
- return 'unknown';
434
- }
435
- /**
436
- * The real reason a push failed, from git's own stderr when the runner exposes it
437
- * (node's promisified `exec` rejection carries `stderr`), else the Error message, else the
438
- * value's string form. Flattened to one line and bounded so a single event row stays
439
- * greppable in `.factory/events.ndjson`.
440
- */
441
- function describePushFailure(err) {
442
- const raw = err?.stderr;
443
- const stderr = typeof raw === 'string' ? raw : '';
444
- const text = stderr.trim() || (err instanceof Error ? err.message : String(err));
445
- const detail = text.replace(/\s+/g, ' ').trim().slice(0, MAX_PUSH_ERROR_DETAIL);
446
- return { kind: classifyPushFailure(detail), detail: detail || 'no error output' };
447
- }
448
- /** Bound on the ls-remote failure text copied into one NDJSON event row (#735). */
449
- const MAX_REMOTE_HEAD_DETAIL = 200;
450
- /** Same flatten-and-bound shaping as {@link describePushFailure}, kept separate so that
451
- * function's asserted output never changes. */
452
- function shortDetail(err) {
453
- const raw = err?.stderr;
454
- const stderr = typeof raw === 'string' ? raw : '';
455
- const text = stderr.trim() || (err instanceof Error ? err.message : String(err));
456
- return text.replace(/\s+/g, ' ').trim().slice(0, MAX_REMOTE_HEAD_DETAIL) || 'no error output';
457
- }
458
- /** The SHA on the `refs/heads/<branch>` line of `git ls-remote` output. `--heads origin <branch>`
459
- * is a suffix pattern, so it can list more than one ref — match the ref name exactly rather than
460
- * trusting the first line. */
461
- function parseRemoteHeadSha(stdout, branch) {
462
- for (const line of stdout.split('\n')) {
463
- const [sha, ref] = line.trim().split(/\s+/);
464
- if (ref === `refs/heads/${branch}` && sha)
465
- return sha;
466
- }
467
- return undefined;
468
- }
469
- /** origin/<branch>'s current SHA, `null` when the branch is absent, or the failure detail (#1869). */
470
- async function readRemoteBranchSha(run, worktree, branch) {
471
- try {
472
- const { stdout } = await run(`git ls-remote --heads origin ${shellEscape(branch)}`, { cwd: worktree });
473
- return { status: 'ok', sha: parseRemoteHeadSha(stdout, branch) ?? null };
474
- }
475
- catch (err) {
476
- return { status: 'unreadable', detail: shortDetail(err) };
477
- }
478
- }
479
- /**
480
- * A zero-exit push is not proof the remote branch actually carries this run's commits — a
481
- * concurrent push or an update that silently applied nothing leaves the remote head elsewhere,
482
- * and a PR opened against it would advertise work that is not there (#735).
483
- */
484
- async function verifyRemoteHead(run, worktree, branch) {
485
- let localSha;
486
- try {
487
- const { stdout } = await run('git rev-parse HEAD', { cwd: worktree });
488
- localSha = stdout.trim();
489
- }
490
- catch (err) {
491
- return { status: 'unreadable', detail: shortDetail(err) };
492
- }
493
- if (!localSha)
494
- return { status: 'unreadable', detail: 'git rev-parse HEAD produced no SHA' };
495
- let listing;
496
- try {
497
- const { stdout } = await run(`git ls-remote --heads origin ${shellEscape(branch)}`, { cwd: worktree });
498
- listing = stdout;
499
- }
500
- catch (err) {
501
- return { status: 'unreadable', localSha, detail: shortDetail(err) };
502
- }
503
- const remoteSha = parseRemoteHeadSha(listing, branch);
504
- if (!remoteSha)
505
- return { status: 'unreadable', localSha, detail: `no refs/heads/${branch} on origin` };
506
- return remoteSha === localSha
507
- ? { status: 'match', localSha, remoteSha }
508
- : { status: 'mismatch', localSha, remoteSha };
509
- }
510
439
  //# sourceMappingURL=ship.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ship.js","sourceRoot":"","sources":["../../src/phases/ship.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ship.js","sourceRoot":"","sources":["../../src/phases/ship.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type checkPhase as checkPhaseDefault, reworkWorker as reworkWorkerDefault } from '../phases/check.js';
2
+ import type { PlanResult } from '../phases/plan.js';
3
+ import type { shipPhase as shipPhaseDefault, ShipResult } from '../phases/ship.js';
4
+ import type { ReviewRouting } from '../review/routing.js';
5
+ import type { CiFailureEvidence, Constitution } from '../types/index.js';
6
+ import { listPrChangedFiles as listPrChangedFilesDefault } from './ci-rework.js';
7
+ import type { BuildRoute, ParkReason } from './outcome.js';
8
+ import type { RunPorts, RunRequest } from './run-issue.js';
9
+ /** Injectable seams for the CI rework loop; RunPorts extends this. */
10
+ export interface CiReworkPorts {
11
+ /** BUILD rework worker used for CI rework rounds; defaults to check.ts's reworkWorker. */
12
+ reworkWorker?: typeof reworkWorkerDefault;
13
+ /** Lists a PR's changed files for CI alert attribution; defaults to the GitHub REST lister. */
14
+ listPrChangedFiles?: typeof listPrChangedFilesDefault;
15
+ }
16
+ export interface CiReworkLoopContext {
17
+ request: RunRequest;
18
+ ports: RunPorts;
19
+ shipPhase: typeof shipPhaseDefault;
20
+ checkPhase: typeof checkPhaseDefault;
21
+ /** The options the first CHECK ran with; reused verbatim for each re-CHECK. */
22
+ checkOpts: Parameters<typeof checkPhaseDefault>[0];
23
+ check: Awaited<ReturnType<typeof checkPhaseDefault>>;
24
+ constitution: Constitution | null;
25
+ appPort: number | undefined;
26
+ appBaseUrl: string | undefined;
27
+ onPgid: (pgid: number) => void;
28
+ runId: string;
29
+ }
30
+ export interface CiReworkShipInputs {
31
+ builtRoute: BuildRoute;
32
+ builtModel: string;
33
+ reviewRouting: ReviewRouting | undefined;
34
+ pinNote: string | undefined;
35
+ planSlice: PlanResult['slice'];
36
+ }
37
+ export interface ShipWithCiReworkResult {
38
+ ship: ShipResult;
39
+ /** Set when the run must park: a failed re-CHECK or a SHIP that did not succeed. */
40
+ parked?: {
41
+ reason: ParkReason;
42
+ message: string;
43
+ checkFailure?: {
44
+ failureSignature: string;
45
+ failingChecks: string[];
46
+ };
47
+ ciFailure?: CiFailureEvidence;
48
+ };
49
+ }
50
+ /**
51
+ * Runs SHIP. When the CI watch fails on CodeQL alerts in files the PR changed, feeds them to the
52
+ * BUILD rework worker, re-runs CHECK and re-enters SHIP on the same PR, up to
53
+ * resolveMaxCiReworkRounds() rounds — a counter separate from CHECK's own rework rounds.
54
+ */
55
+ export declare function shipWithCiRework(ctx: CiReworkLoopContext, inputs: CiReworkShipInputs): Promise<ShipWithCiReworkResult>;
56
+ //# sourceMappingURL=ci-rework-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-rework-loop.d.ts","sourceRoot":"","sources":["../../src/run/ci-rework-loop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,IAAI,iBAAiB,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,IAAI,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAIL,kBAAkB,IAAI,yBAAyB,EAEhD,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG3D,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,0FAA0F;IAC1F,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAC;IAC1C,+FAA+F;IAC/F,kBAAkB,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACvD;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,OAAO,gBAAgB,CAAC;IACnC,UAAU,EAAE,OAAO,iBAAiB,CAAC;IACrC,+EAA+E;IAC/E,SAAS,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,oFAAoF;IACpF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE;YAAE,gBAAgB,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACrE,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,CAAC;CACH;AAID;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAsGjC"}
@@ -0,0 +1,112 @@
1
+ // packages/core/src/run/ci-rework-loop.ts — SHIP with a bounded CI rework loop (#2816)
2
+ import { reworkWorker as reworkWorkerDefault } from '../phases/check.js';
3
+ import { attributableCodeqlAlerts, CI_REWORK_INSTRUCTIONS, ciReworkSummary, listPrChangedFiles as listPrChangedFilesDefault, resolveMaxCiReworkRounds, } from './ci-rework.js';
4
+ import { shipParkReason } from './ship-park.js';
5
+ const errorMessage = (err) => (err instanceof Error ? err.message : String(err));
6
+ /**
7
+ * Runs SHIP. When the CI watch fails on CodeQL alerts in files the PR changed, feeds them to the
8
+ * BUILD rework worker, re-runs CHECK and re-enters SHIP on the same PR, up to
9
+ * resolveMaxCiReworkRounds() rounds — a counter separate from CHECK's own rework rounds.
10
+ */
11
+ export async function shipWithCiRework(ctx, inputs) {
12
+ const { request, ports, shipPhase, checkPhase, check } = ctx;
13
+ const rework = ports.reworkWorker ?? reworkWorkerDefault;
14
+ const listChanged = ports.listPrChangedFiles ?? listPrChangedFilesDefault;
15
+ const { builtRoute, builtModel, planSlice } = inputs;
16
+ const log = ports.events();
17
+ const shipOpts = {
18
+ issue: request.issue,
19
+ repo: request.repo,
20
+ worktree: ports.workspace.path,
21
+ branch: request.branch,
22
+ recordedRemoteSha: ports.workspace.remoteBranch?.sha,
23
+ octokit: ports.octokit,
24
+ watchCI: !request.skipCI,
25
+ log: ports.events('ship'),
26
+ approvalGate: request.options.interactive ? ports.createApprovalGate?.() : undefined,
27
+ specPath: request.specPath,
28
+ eventsFile: request.eventsFile,
29
+ startedAt: request.startedAt,
30
+ logsDir: request.logsDir,
31
+ work: request.work,
32
+ laneId: request.lane,
33
+ reviewRouting: inputs.reviewRouting,
34
+ ...(inputs.pinNote ? { pinNotes: [inputs.pinNote] } : {}),
35
+ slice: planSlice ? { index: planSlice.index, count: planSlice.plan.slices.length } : undefined,
36
+ };
37
+ let ship = await shipPhase({ ...shipOpts, checkSummary: check.summary, reworkRounds: check.reworkRounds });
38
+ const [owner, repoName] = request.repo.split('/');
39
+ const maxRounds = resolveMaxCiReworkRounds();
40
+ let rounds = 0;
41
+ let lastCiFailure = ship.ciFailure;
42
+ let suffix = '';
43
+ while (!ship.ok && ship.ciOutcome === 'failure' && ship.prNumber !== undefined) {
44
+ lastCiFailure = ship.ciFailure ?? lastCiFailure;
45
+ let changed;
46
+ try {
47
+ changed = await listChanged(ports.octokit, owner, repoName, ship.prNumber);
48
+ }
49
+ catch (err) {
50
+ const msg = `could not list PR #${ship.prNumber} files for CI attribution: ${errorMessage(err)}`;
51
+ ports.events('ship')('ship', msg);
52
+ break;
53
+ }
54
+ const attributable = attributableCodeqlAlerts(ship.ciFailure, changed);
55
+ if (attributable.length === 0)
56
+ break;
57
+ if (rounds >= maxRounds) {
58
+ suffix = ` — CI rework budget exhausted after ${rounds} round${rounds === 1 ? '' : 's'}`;
59
+ break;
60
+ }
61
+ rounds++;
62
+ log('rework', `CI rework round ${rounds}/${maxRounds}: ${attributable.length} attributable CodeQL alert(s) on PR #${ship.prNumber}`);
63
+ const worked = await rework({
64
+ issue: request.issue,
65
+ worktree: ports.workspace.path,
66
+ specPath: request.specPath,
67
+ summary: ciReworkSummary(attributable),
68
+ constitution: ctx.constitution,
69
+ router: ports.router,
70
+ log: ports.events('build'),
71
+ buildTimeoutSeconds: request.timeouts.build,
72
+ sandbox: request.sandboxPolicy,
73
+ appPort: ctx.appPort,
74
+ appBaseUrl: ctx.appBaseUrl,
75
+ onPgid: ctx.onPgid,
76
+ reworkRoute: builtRoute,
77
+ reworkModel: builtModel,
78
+ runId: ctx.runId,
79
+ extraInstructions: CI_REWORK_INSTRUCTIONS,
80
+ });
81
+ if (!worked.modelCompleted) {
82
+ suffix = ' — CI rework worker never ran';
83
+ break;
84
+ }
85
+ const recheck = await checkPhase(ctx.checkOpts);
86
+ if (!recheck.passed) {
87
+ const checkFailure = recheck.failureSignature !== undefined
88
+ ? {
89
+ failureSignature: recheck.failureSignature,
90
+ failingChecks: recheck.summary.results.filter((r) => r.result === 'FAIL').map((r) => r.checker),
91
+ }
92
+ : undefined;
93
+ const message = `${recheck.summary.failures} check failures after CI rework round ${rounds}`;
94
+ return { ship, parked: { reason: 'fail', message, ...(checkFailure ? { checkFailure } : {}) } };
95
+ }
96
+ ship = await shipPhase({
97
+ ...shipOpts,
98
+ checkSummary: recheck.summary,
99
+ reworkRounds: recheck.reworkRounds,
100
+ reentry: { prNumber: ship.prNumber, previousHeadSha: ship.headSha },
101
+ });
102
+ }
103
+ if (ship.ok)
104
+ return { ship };
105
+ const message = ship.denied
106
+ ? `ship denied: ${ship.deniedReason}`
107
+ : ship.reason
108
+ ? `ship phase failed: ${ship.reason}${suffix}`
109
+ : `ship phase failed${suffix}`;
110
+ return { ship, parked: { reason: shipParkReason(ship), message, ciFailure: ship.ciFailure ?? lastCiFailure } };
111
+ }
112
+ //# sourceMappingURL=ci-rework-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-rework-loop.js","sourceRoot":"","sources":["../../src/run/ci-rework-loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Octokit } from '@octokit/rest';
2
+ import type { CheckSummary, CiCodeScanningAlert, CiFailureEvidence } from '../types/index.js';
3
+ export declare const MAX_CI_REWORK_ROUNDS = 2;
4
+ export declare const CI_REWORK_ENV = "FACTORY_MAX_CI_REWORK_ROUNDS";
5
+ export declare const CI_REWORK_INSTRUCTIONS: string;
6
+ /** Non-negative integer from FACTORY_MAX_CI_REWORK_ROUNDS (0 disables CI rework); anything else falls back to the default. */
7
+ export declare function resolveMaxCiReworkRounds(env?: NodeJS.ProcessEnv): number;
8
+ /** Alerts whose file is among the PR's changed files; the rest are pre-existing or baseline. */
9
+ export declare function attributableCodeqlAlerts(evidence: CiFailureEvidence | undefined, changedFiles: readonly string[]): CiCodeScanningAlert[];
10
+ /** The same CheckSummary shape local CHECK rework consumes, with one FAIL `ci_codeql` result. */
11
+ export declare function ciReworkSummary(alerts: readonly CiCodeScanningAlert[]): CheckSummary;
12
+ export declare function listPrChangedFiles(octokit: Octokit, owner: string, repo: string, prNumber: number): Promise<string[]>;
13
+ //# sourceMappingURL=ci-rework.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-rework.d.ts","sourceRoot":"","sources":["../../src/run/ci-rework.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9F,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,aAAa,iCAAiC,CAAC;AAK5D,eAAO,MAAM,sBAAsB,QAGhB,CAAC;AAEpB,8HAA8H;AAC9H,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGrF;AASD,gGAAgG;AAChG,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,mBAAmB,EAAE,CAOvB;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,GAAG,YAAY,CAUpF;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB"}
@@ -0,0 +1,59 @@
1
+ // packages/core/src/run/ci-rework.ts — attribution, budget and feedback for SHIP CI rework (#2816)
2
+ export const MAX_CI_REWORK_ROUNDS = 2;
3
+ export const CI_REWORK_ENV = 'FACTORY_MAX_CI_REWORK_ROUNDS';
4
+ const LIST_FILES_PAGE_SIZE = 100;
5
+ const LIST_FILES_MAX_PAGES = 30;
6
+ export const CI_REWORK_INSTRUCTIONS = 'CI (CodeQL) flagged the alerts above on files this PR changed. Fix the root cause in the code at the listed file:line. ' +
7
+ 'Suppression is forbidden: do not add `// codeql[...]`, `lgtm`, `eslint-disable` or `@ts-ignore` comments, do not exclude queries or paths in any config, and do not dismiss alerts. ' +
8
+ 'Commit the fix.';
9
+ /** Non-negative integer from FACTORY_MAX_CI_REWORK_ROUNDS (0 disables CI rework); anything else falls back to the default. */
10
+ export function resolveMaxCiReworkRounds(env = process.env) {
11
+ const value = (env[CI_REWORK_ENV] ?? '').trim();
12
+ return /^\d+$/.test(value) ? Number(value) : MAX_CI_REWORK_ROUNDS;
13
+ }
14
+ function alertPath(location) {
15
+ const trimmed = location.trim();
16
+ if (trimmed === '' || trimmed === '(unknown location)')
17
+ return undefined;
18
+ const path = trimmed.replace(/:\d+$/, '').replace(/^\.\//, '');
19
+ return path === '' ? undefined : path;
20
+ }
21
+ /** Alerts whose file is among the PR's changed files; the rest are pre-existing or baseline. */
22
+ export function attributableCodeqlAlerts(evidence, changedFiles) {
23
+ if (!evidence)
24
+ return [];
25
+ const changed = new Set(changedFiles);
26
+ return evidence.alerts.filter((alert) => {
27
+ const path = alertPath(alert.location);
28
+ return path !== undefined && changed.has(path);
29
+ });
30
+ }
31
+ /** The same CheckSummary shape local CHECK rework consumes, with one FAIL `ci_codeql` result. */
32
+ export function ciReworkSummary(alerts) {
33
+ const lines = alerts.map((a) => `- ${a.ruleId} at ${a.location} — ${a.message}`);
34
+ const details = ['CodeQL alerts on files this PR changed:', ...lines].join('\n');
35
+ return {
36
+ failures: 1,
37
+ passes: 0,
38
+ skips: 0,
39
+ total: 1,
40
+ results: [{ checker: 'ci_codeql', result: 'FAIL', details }],
41
+ };
42
+ }
43
+ export async function listPrChangedFiles(octokit, owner, repo, prNumber) {
44
+ const files = [];
45
+ for (let page = 1; page <= LIST_FILES_MAX_PAGES; page++) {
46
+ const { data } = await octokit.rest.pulls.listFiles({
47
+ owner,
48
+ repo,
49
+ pull_number: prNumber,
50
+ per_page: LIST_FILES_PAGE_SIZE,
51
+ page,
52
+ });
53
+ files.push(...data.map((f) => f.filename));
54
+ if (data.length < LIST_FILES_PAGE_SIZE)
55
+ break;
56
+ }
57
+ return files;
58
+ }
59
+ //# sourceMappingURL=ci-rework.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-rework.js","sourceRoot":"","sources":["../../src/run/ci-rework.ts"],"names":[],"mappings":"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"}