@tokenfactory/acc-runner 0.41.5 → 0.41.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/prepr-gate.d.ts +191 -0
- package/dist/prepr-gate.d.ts.map +1 -1
- package/dist/prepr-gate.js +336 -2
- package/dist/prepr-gate.js.map +1 -1
- package/package.json +1 -1
package/dist/prepr-gate.d.ts
CHANGED
|
@@ -47,6 +47,21 @@ export interface PreprGateResult {
|
|
|
47
47
|
offending: string[];
|
|
48
48
|
outputTail: string;
|
|
49
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* RF-14: set when the `test` gate FAILED but EVERY failing test was already in
|
|
52
|
+
* the known-failure set (baseline ∪ active quarantines) — i.e. this task
|
|
53
|
+
* introduced none of them. The PR was NOT blocked and `ok` stays `true`; the
|
|
54
|
+
* caller logs this so the pre-existing debt stays visible rather than silent.
|
|
55
|
+
* Never set together with a `test` `failure` (a new failure blocks instead).
|
|
56
|
+
*/
|
|
57
|
+
testBaselineExcused?: {
|
|
58
|
+
/** Failing ids that were already known red (`<relFile> > <full name>`). */
|
|
59
|
+
preExisting: string[];
|
|
60
|
+
/** Where the known set came from, for the runner log. */
|
|
61
|
+
source: string;
|
|
62
|
+
/** Tail of the failing suite's output — kept for the operator. */
|
|
63
|
+
outputTail: string;
|
|
64
|
+
};
|
|
50
65
|
/**
|
|
51
66
|
* MIGFIX-01: set when the pre-PR auto-renumber (opt-in) renamed a NEW migration
|
|
52
67
|
* to the next contiguous seq before the seq-lint ran. `output` is the
|
|
@@ -164,6 +179,73 @@ export interface PreprGateDeps {
|
|
|
164
179
|
* never rewrites already-pushed history). Injectable for tests.
|
|
165
180
|
*/
|
|
166
181
|
commitRenumbered?: (workdir: string) => Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* RF-14 knob. When true (the DEFAULT) a failed `test` gate is re-classified
|
|
184
|
+
* against the known-failure set before it blocks. Precedence: explicit dep,
|
|
185
|
+
* else `ACC_PREPR_TEST_BASELINE_CONSULT` env, else `true`.
|
|
186
|
+
*
|
|
187
|
+
* This is the one knob in this module that defaults ON, deliberately: the other
|
|
188
|
+
* knobs ADD a way to block a PR (so shipping them off is the conservative
|
|
189
|
+
* default), while this one only ever declines to block on a failure the task
|
|
190
|
+
* did not cause, and only when a durable record says so. Set the env to `0` to
|
|
191
|
+
* restore "any red test hard-fails the task".
|
|
192
|
+
*/
|
|
193
|
+
testBaselineConsult?: boolean;
|
|
194
|
+
/**
|
|
195
|
+
* RF-14: the known-failing test ids this gate may decline to block on —
|
|
196
|
+
* RF-6's baseline ∪ the active flake quarantines. Return `null` when no such
|
|
197
|
+
* record is available: the gate then fails CLOSED and every failure blocks,
|
|
198
|
+
* exactly as it did before RF-14.
|
|
199
|
+
*
|
|
200
|
+
* Default: `defaultLoadKnownFailures` — the union of
|
|
201
|
+
* 1. the baseline artifact named by `ACC_PREPR_TEST_BASELINE` (a path,
|
|
202
|
+
* absolute or workdir-relative), in the SAME `{sha, failures[]}` shape
|
|
203
|
+
* `scripts/ci/test-baseline.mjs --load-baseline` writes, so the exact CI
|
|
204
|
+
* artifact can be handed to a runner host; and
|
|
205
|
+
* 2. the worktree's checked-in flake-quarantine manifest
|
|
206
|
+
* (`tests/flake-quarantine/quarantine-manifest.json`, projected from
|
|
207
|
+
* acc.activity_events by scripts/flake-quarantine-sync.ts).
|
|
208
|
+
* Both are credential-free reads of the task worktree, so this works on a
|
|
209
|
+
* runner host with no DB access. Wiring the DB-backed loader
|
|
210
|
+
* (api/_lib/test-baseline.ts `loadKnownTestFailures`, pinned to the task's
|
|
211
|
+
* merge-base) through the task-runner is the remaining half — it lives in
|
|
212
|
+
* task-runner.ts, outside this track's scope.
|
|
213
|
+
*/
|
|
214
|
+
loadKnownTestFailures?: (workdir: string) => Promise<PreprKnownFailures | null>;
|
|
215
|
+
/**
|
|
216
|
+
* RF-14: recover the failing test ids from the failed `test` gate's own output.
|
|
217
|
+
* Default: `extractVitestFailures` (parses vitest's `FAIL <file> > <name>`
|
|
218
|
+
* lines and cross-checks them against the reporter's own failed COUNT).
|
|
219
|
+
* Injectable so the unit suite can drive the classifier without a real suite,
|
|
220
|
+
* and so a repo on another runner can supply its own parser.
|
|
221
|
+
*/
|
|
222
|
+
extractTestFailures?: (output: string) => PreprTestFailureScan;
|
|
223
|
+
}
|
|
224
|
+
/** RF-14: the known-failing set a failed `test` gate is measured against. */
|
|
225
|
+
export interface PreprKnownFailures {
|
|
226
|
+
/**
|
|
227
|
+
* Known-red identifiers. Each is a full test id (`<relFile> > <full name>`) OR
|
|
228
|
+
* a bare test FILE — the quarantine ledger records both shapes, and a
|
|
229
|
+
* file-level entry excuses every test in that file (see `isKnownFailure`).
|
|
230
|
+
*/
|
|
231
|
+
ids: string[];
|
|
232
|
+
/** Human description of where the ids came from, for the runner log. */
|
|
233
|
+
source: string;
|
|
234
|
+
}
|
|
235
|
+
/** RF-14: what could be recovered from a failed `test` gate's output. */
|
|
236
|
+
export interface PreprTestFailureScan {
|
|
237
|
+
/** Failing test ids, in reporter order, de-duplicated. */
|
|
238
|
+
ids: string[];
|
|
239
|
+
/** The failed count the reporter itself printed, or null when unreadable. */
|
|
240
|
+
declared: number | null;
|
|
241
|
+
/**
|
|
242
|
+
* True only when the parse is PROVABLY complete: the reporter declared a
|
|
243
|
+
* failed count and we recovered exactly that many ids. Anything else — a
|
|
244
|
+
* reporter we cannot read, a collect/import error, a count mismatch — is
|
|
245
|
+
* `false`, and the gate then blocks. A partial parse is the one way this
|
|
246
|
+
* feature could wave a real regression through, so it is never trusted.
|
|
247
|
+
*/
|
|
248
|
+
complete: boolean;
|
|
167
249
|
}
|
|
168
250
|
/**
|
|
169
251
|
* Text-source extensions the NUL/binary check scans. An allowlist (never a
|
|
@@ -246,6 +328,115 @@ export declare function migrationLintBlockingResolved(explicit: boolean | undefi
|
|
|
246
328
|
* renumber the operator otherwise had to do by hand.
|
|
247
329
|
*/
|
|
248
330
|
export declare function autoRenumberResolved(explicit: boolean | undefined, env: NodeJS.ProcessEnv): boolean;
|
|
331
|
+
/**
|
|
332
|
+
* RF-14: resolve whether a failed `test` gate is measured against the
|
|
333
|
+
* known-failure set. Precedence: explicit dep → `ACC_PREPR_TEST_BASELINE_CONSULT`
|
|
334
|
+
* → `true`. See `PreprGateDeps.testBaselineConsult` for why this one defaults ON.
|
|
335
|
+
*/
|
|
336
|
+
export declare function testBaselineConsultResolved(explicit: boolean | undefined, env: NodeJS.ProcessEnv): boolean;
|
|
337
|
+
/**
|
|
338
|
+
* Worktree-relative path of the checked-in flake-quarantine manifest, the
|
|
339
|
+
* credential-free half of the known-failure set. Written by
|
|
340
|
+
* scripts/flake-quarantine-sync.ts from acc.activity_events; duplicated here
|
|
341
|
+
* (rather than imported from api/_lib/flake-quarantine.ts) per the standing
|
|
342
|
+
* cross-package convention — the published CLI cannot depend on api/.
|
|
343
|
+
*/
|
|
344
|
+
export declare const QUARANTINE_MANIFEST_REL = "tests/flake-quarantine/quarantine-manifest.json";
|
|
345
|
+
/** Env var naming a baseline artifact to consult (see `loadKnownTestFailures`). */
|
|
346
|
+
export declare const TEST_BASELINE_ENV = "ACC_PREPR_TEST_BASELINE";
|
|
347
|
+
/**
|
|
348
|
+
* The id shape RF-6 uses everywhere: `<repo-relative test file> > <full name>`.
|
|
349
|
+
* Mirrors `assertionId` in scripts/ci/test-baseline.mjs so a baseline recorded by
|
|
350
|
+
* CI and a failure observed by the runner are the SAME string. Duplicated for the
|
|
351
|
+
* same cross-package reason as above; drift here means the gate simply excuses
|
|
352
|
+
* nothing (it can never over-excuse), because a mismatched id looks unknown.
|
|
353
|
+
*/
|
|
354
|
+
export declare const TEST_ID_SEPARATOR = " > ";
|
|
355
|
+
/** The file half of a test id (`a.test.ts > x > y` → `a.test.ts`). */
|
|
356
|
+
export declare function testIdFile(id: string): string;
|
|
357
|
+
/**
|
|
358
|
+
* True when `id` is covered by the known-failure set: an exact id match, or a
|
|
359
|
+
* FILE-level entry (which is how the quarantine ledger records "this whole suite
|
|
360
|
+
* is quarantined"). Nothing else counts — no prefix or fuzzy matching, so a
|
|
361
|
+
* known `foo.test.ts > a` never excuses `foo2.test.ts > a`.
|
|
362
|
+
*/
|
|
363
|
+
export declare function isKnownFailure(id: string, known: Iterable<string>): boolean;
|
|
364
|
+
/**
|
|
365
|
+
* Split the observed failing ids into the ones this task introduced and the ones
|
|
366
|
+
* that were already red. `newFailures` is what blocks the PR.
|
|
367
|
+
*/
|
|
368
|
+
export declare function splitKnownFailures(current: string[], known: string[]): {
|
|
369
|
+
newFailures: string[];
|
|
370
|
+
preExisting: string[];
|
|
371
|
+
};
|
|
372
|
+
/**
|
|
373
|
+
* The failed-TEST count vitest's own summary printed (`Tests 2 failed | 1 passed`).
|
|
374
|
+
* Returns 0 when the summary line is present but reports no failures
|
|
375
|
+
* (`Tests 1 passed`, `Tests no tests`), and null when there is no summary line
|
|
376
|
+
* at all — the difference matters: 0 is a fact, null is "unreadable, fail closed".
|
|
377
|
+
* `Test Files` deliberately does not match: files are not tests, and a file that
|
|
378
|
+
* failed to COLLECT is counted there but never in `Tests`.
|
|
379
|
+
*/
|
|
380
|
+
export declare function parseVitestFailedCount(output: string): number | null;
|
|
381
|
+
/**
|
|
382
|
+
* The failed-SUITE count from vitest's `Failed Suites N` section header. A suite
|
|
383
|
+
* failure is a whole file that never collected (a bad import, a syntax error, a
|
|
384
|
+
* throwing top level); it is reported separately from `Tests` and must therefore
|
|
385
|
+
* be cross-checked separately. Returns 0 when the section is absent.
|
|
386
|
+
*/
|
|
387
|
+
export declare function parseVitestFailedSuiteCount(output: string): number;
|
|
388
|
+
/**
|
|
389
|
+
* One parsed `FAIL` line: an id, plus whether it came from the collect-failure
|
|
390
|
+
* (`FAIL <file> [ <file> ]`) form.
|
|
391
|
+
*/
|
|
392
|
+
export interface ParsedFailLine {
|
|
393
|
+
id: string;
|
|
394
|
+
suite: boolean;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Failing ids from vitest's default reporter output. It prints one
|
|
398
|
+
* `FAIL <file> > <full name>` line per failed test under "Failed Tests", and
|
|
399
|
+
* `FAIL <file> [ <file> ]` per uncollectable file under "Failed Suites" — the
|
|
400
|
+
* latter is mapped to `<file> > <file>`, the SAME id
|
|
401
|
+
* scripts/ci/test-baseline.mjs records for a collect failure, so a baseline
|
|
402
|
+
* written by CI and a failure observed here are the same string. Order-preserving
|
|
403
|
+
* and de-duplicated.
|
|
404
|
+
*/
|
|
405
|
+
export declare function parseVitestFailLines(output: string): ParsedFailLine[];
|
|
406
|
+
/** Failing ids only — the ordered, de-duplicated id list. */
|
|
407
|
+
export declare function parseVitestFailureIds(output: string): string[];
|
|
408
|
+
/**
|
|
409
|
+
* Recover the failing ids from a red `test` gate's output and decide whether the
|
|
410
|
+
* recovery can be TRUSTED. Trust requires BOTH of the reporter's own counts to
|
|
411
|
+
* match what was parsed — failed tests against `Tests N failed`, failed suites
|
|
412
|
+
* against `Failed Suites N`. So a reporter shape we do not understand, a
|
|
413
|
+
* truncated log, an unhandled error with no FAIL line, or a hook failure printed
|
|
414
|
+
* in a third shape all come back `complete: false`, and the gate blocks.
|
|
415
|
+
*/
|
|
416
|
+
export declare function extractVitestFailures(output: string): PreprTestFailureScan;
|
|
417
|
+
/** Baseline ids from the `{sha, failures[]}` / `string[]` artifact shapes. */
|
|
418
|
+
export declare function baselineIdsFrom(raw: unknown): string[];
|
|
419
|
+
/** Quarantined identifiers from the checked-in flake-quarantine manifest. */
|
|
420
|
+
export declare function quarantineIdsFrom(raw: unknown): string[];
|
|
421
|
+
/**
|
|
422
|
+
* RF-14: decide what a red `test` gate means. Returns `excused` only when the
|
|
423
|
+
* failing set is fully recoverable AND every member of it is already known red.
|
|
424
|
+
* Every other path returns `excused: false` with the reason the gate should log,
|
|
425
|
+
* so "block" stays the default outcome of anything unclear.
|
|
426
|
+
*/
|
|
427
|
+
export declare function excuseKnownTestFailures(workdir: string, output: string, deps: PreprGateDeps, env: NodeJS.ProcessEnv): Promise<{
|
|
428
|
+
excused: boolean;
|
|
429
|
+
reason: string;
|
|
430
|
+
newFailures: string[];
|
|
431
|
+
preExisting: string[];
|
|
432
|
+
source: string;
|
|
433
|
+
}>;
|
|
434
|
+
/**
|
|
435
|
+
* The operator-facing body of a `test` gate failure that survived the baseline
|
|
436
|
+
* consult: the NEW failures named exactly first (that is the actionable part),
|
|
437
|
+
* then the pre-existing ones, then the suite's own tail.
|
|
438
|
+
*/
|
|
439
|
+
export declare function formatNewTestFailures(newFailures: string[], preExisting: string[], source: string, outputTail: string): string;
|
|
249
440
|
/**
|
|
250
441
|
* Run the repo's own quality gates in `workdir` before a PR is opened.
|
|
251
442
|
* `ok === false` means the caller MUST NOT open a PR — fail the task with
|
package/dist/prepr-gate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepr-gate.d.ts","sourceRoot":"","sources":["../src/prepr-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepr-gate.d.ts","sourceRoot":"","sources":["../src/prepr-gate.ts"],"names":[],"mappings":"AA6CA,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,OAAO,GACP,WAAW,GACX,MAAM,GACN,OAAO,GACP,MAAM,GACN,gBAAgB,CAAC;AAErB;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,EAA2C,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,EAAE,EAAE,OAAO,CAAC;IACZ,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,GAAG,EAAE,aAAa,EAAE,CAAC;IACrB,2EAA2E;IAC3E,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE;QACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,uDAAuD;QACvD,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACZ,yEAAyE;QACzE,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE;QACpB,2EAA2E;QAC3E,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,yDAAyD;QACzD,MAAM,EAAE,MAAM,CAAC;QACf,kEAAkE;QAClE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE;;;;OAIG;IACH,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,aAAa,KAChB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,qBAAqB,CAAC,EAAE,CACtB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACxC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,oBAAoB,CAAC;CAChE;AAED,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,aAS1B,CAAC;AAEH,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAUpF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBjD;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAW1E;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG1E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAKT;AAQD,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAGlE;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAKT;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAKT;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,oDAAoD,CAAC;AAEzF,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAQ3E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EAAE,GACd;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAQlD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOpE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAgBrE;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAa1E;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAQtD;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CASxD;AAqKD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAyCD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EAAE,EACrB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR;AAeD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,eAAe,CAAC,CA+N1B"}
|
package/dist/prepr-gate.js
CHANGED
|
@@ -19,6 +19,20 @@
|
|
|
19
19
|
* (the caller logs that it was skipped). Every I/O boundary is an injectable
|
|
20
20
|
* dep so the gate-runner can be unit-tested with pass/fail injected and never
|
|
21
21
|
* shells out in tests.
|
|
22
|
+
*
|
|
23
|
+
* RF-14 — NEW FAILURES ONLY on the `test` gate. RF-6 taught CI to fail only on
|
|
24
|
+
* test failures a PR actually INTRODUCED (scripts/ci/test-baseline.mjs, the
|
|
25
|
+
* `test-baseline` job) and taught the reviewer the same (RF-6's
|
|
26
|
+
* `loadKnownTestFailures` feeds api/_lib/reviewer-agent.ts). This gate ran the
|
|
27
|
+
* suite with no such context, so it was the last consumer where ONE red trunk
|
|
28
|
+
* test hard-failed EVERY task — before a PR even existed, which is strictly
|
|
29
|
+
* worse than the CI case: the task dead-letters instead of being reviewed. It
|
|
30
|
+
* happened for real (RF-14, 2026-07-30: two OS-portability reds cost RF-9 twelve
|
|
31
|
+
* run attempts). So when the `test` gate fails, the gate now names the failing
|
|
32
|
+
* tests and compares them against the KNOWN-failure set (baseline ∪ active
|
|
33
|
+
* quarantines): a failure already in that set is reported and NOT blocking; a
|
|
34
|
+
* failure absent from it still blocks. Every ambiguity fails CLOSED (blocks) —
|
|
35
|
+
* see `excuseKnownTestFailures`.
|
|
22
36
|
*/
|
|
23
37
|
import path from "node:path";
|
|
24
38
|
import fs from "node:fs/promises";
|
|
@@ -211,6 +225,180 @@ export function autoRenumberResolved(explicit, env) {
|
|
|
211
225
|
return false;
|
|
212
226
|
return !(v === "0" || v === "false" || v === "no" || v === "off");
|
|
213
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* RF-14: resolve whether a failed `test` gate is measured against the
|
|
230
|
+
* known-failure set. Precedence: explicit dep → `ACC_PREPR_TEST_BASELINE_CONSULT`
|
|
231
|
+
* → `true`. See `PreprGateDeps.testBaselineConsult` for why this one defaults ON.
|
|
232
|
+
*/
|
|
233
|
+
export function testBaselineConsultResolved(explicit, env) {
|
|
234
|
+
if (typeof explicit === "boolean")
|
|
235
|
+
return explicit;
|
|
236
|
+
const v = env.ACC_PREPR_TEST_BASELINE_CONSULT?.trim().toLowerCase();
|
|
237
|
+
if (v === undefined || v === "")
|
|
238
|
+
return true;
|
|
239
|
+
return !(v === "0" || v === "false" || v === "no" || v === "off");
|
|
240
|
+
}
|
|
241
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
242
|
+
// RF-14: new-failures-only classification of a red `test` gate
|
|
243
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
244
|
+
/**
|
|
245
|
+
* Worktree-relative path of the checked-in flake-quarantine manifest, the
|
|
246
|
+
* credential-free half of the known-failure set. Written by
|
|
247
|
+
* scripts/flake-quarantine-sync.ts from acc.activity_events; duplicated here
|
|
248
|
+
* (rather than imported from api/_lib/flake-quarantine.ts) per the standing
|
|
249
|
+
* cross-package convention — the published CLI cannot depend on api/.
|
|
250
|
+
*/
|
|
251
|
+
export const QUARANTINE_MANIFEST_REL = "tests/flake-quarantine/quarantine-manifest.json";
|
|
252
|
+
/** Env var naming a baseline artifact to consult (see `loadKnownTestFailures`). */
|
|
253
|
+
export const TEST_BASELINE_ENV = "ACC_PREPR_TEST_BASELINE";
|
|
254
|
+
/**
|
|
255
|
+
* The id shape RF-6 uses everywhere: `<repo-relative test file> > <full name>`.
|
|
256
|
+
* Mirrors `assertionId` in scripts/ci/test-baseline.mjs so a baseline recorded by
|
|
257
|
+
* CI and a failure observed by the runner are the SAME string. Duplicated for the
|
|
258
|
+
* same cross-package reason as above; drift here means the gate simply excuses
|
|
259
|
+
* nothing (it can never over-excuse), because a mismatched id looks unknown.
|
|
260
|
+
*/
|
|
261
|
+
export const TEST_ID_SEPARATOR = " > ";
|
|
262
|
+
/** The file half of a test id (`a.test.ts > x > y` → `a.test.ts`). */
|
|
263
|
+
export function testIdFile(id) {
|
|
264
|
+
const at = id.indexOf(TEST_ID_SEPARATOR);
|
|
265
|
+
return (at === -1 ? id : id.slice(0, at)).trim();
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* True when `id` is covered by the known-failure set: an exact id match, or a
|
|
269
|
+
* FILE-level entry (which is how the quarantine ledger records "this whole suite
|
|
270
|
+
* is quarantined"). Nothing else counts — no prefix or fuzzy matching, so a
|
|
271
|
+
* known `foo.test.ts > a` never excuses `foo2.test.ts > a`.
|
|
272
|
+
*/
|
|
273
|
+
export function isKnownFailure(id, known) {
|
|
274
|
+
const file = testIdFile(id);
|
|
275
|
+
for (const raw of known) {
|
|
276
|
+
const k = raw.trim();
|
|
277
|
+
if (!k)
|
|
278
|
+
continue;
|
|
279
|
+
if (k === id.trim() || k === file)
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Split the observed failing ids into the ones this task introduced and the ones
|
|
286
|
+
* that were already red. `newFailures` is what blocks the PR.
|
|
287
|
+
*/
|
|
288
|
+
export function splitKnownFailures(current, known) {
|
|
289
|
+
const newFailures = [];
|
|
290
|
+
const preExisting = [];
|
|
291
|
+
for (const id of current) {
|
|
292
|
+
if (isKnownFailure(id, known))
|
|
293
|
+
preExisting.push(id);
|
|
294
|
+
else
|
|
295
|
+
newFailures.push(id);
|
|
296
|
+
}
|
|
297
|
+
return { newFailures, preExisting };
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* The failed-TEST count vitest's own summary printed (`Tests 2 failed | 1 passed`).
|
|
301
|
+
* Returns 0 when the summary line is present but reports no failures
|
|
302
|
+
* (`Tests 1 passed`, `Tests no tests`), and null when there is no summary line
|
|
303
|
+
* at all — the difference matters: 0 is a fact, null is "unreadable, fail closed".
|
|
304
|
+
* `Test Files` deliberately does not match: files are not tests, and a file that
|
|
305
|
+
* failed to COLLECT is counted there but never in `Tests`.
|
|
306
|
+
*/
|
|
307
|
+
export function parseVitestFailedCount(output) {
|
|
308
|
+
// LAST match, not first: the summary is printed after the suite's own stdout,
|
|
309
|
+
// so a test that logged a "Tests …" line of its own cannot shadow it.
|
|
310
|
+
const lines = [...output.matchAll(/^[^\S\n]*Tests[^\S\n]+(.*)$/gm)];
|
|
311
|
+
if (lines.length === 0)
|
|
312
|
+
return null;
|
|
313
|
+
const failed = /(\d+)\s+failed/.exec(lines[lines.length - 1][1]);
|
|
314
|
+
return failed ? Number(failed[1]) : 0;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* The failed-SUITE count from vitest's `Failed Suites N` section header. A suite
|
|
318
|
+
* failure is a whole file that never collected (a bad import, a syntax error, a
|
|
319
|
+
* throwing top level); it is reported separately from `Tests` and must therefore
|
|
320
|
+
* be cross-checked separately. Returns 0 when the section is absent.
|
|
321
|
+
*/
|
|
322
|
+
export function parseVitestFailedSuiteCount(output) {
|
|
323
|
+
const all = [...output.matchAll(/Failed Suites\s+(\d+)/g)];
|
|
324
|
+
return all.length === 0 ? 0 : Number(all[all.length - 1][1]);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Failing ids from vitest's default reporter output. It prints one
|
|
328
|
+
* `FAIL <file> > <full name>` line per failed test under "Failed Tests", and
|
|
329
|
+
* `FAIL <file> [ <file> ]` per uncollectable file under "Failed Suites" — the
|
|
330
|
+
* latter is mapped to `<file> > <file>`, the SAME id
|
|
331
|
+
* scripts/ci/test-baseline.mjs records for a collect failure, so a baseline
|
|
332
|
+
* written by CI and a failure observed here are the same string. Order-preserving
|
|
333
|
+
* and de-duplicated.
|
|
334
|
+
*/
|
|
335
|
+
export function parseVitestFailLines(output) {
|
|
336
|
+
const out = [];
|
|
337
|
+
const seen = new Set();
|
|
338
|
+
for (const raw of output.split("\n")) {
|
|
339
|
+
const m = /^\s*FAIL\s+(.+?)\s*$/.exec(raw.replace(/\r$/, ""));
|
|
340
|
+
if (!m)
|
|
341
|
+
continue;
|
|
342
|
+
const rest = m[1];
|
|
343
|
+
const collect = /^(\S+)\s+\[\s*\S+\s*\]$/.exec(rest);
|
|
344
|
+
// A `FAIL` line in neither shape is kept verbatim so the count cross-check
|
|
345
|
+
// notices it, rather than silently dropping a failure.
|
|
346
|
+
const id = collect ? `${collect[1]}${TEST_ID_SEPARATOR}<file>` : rest;
|
|
347
|
+
if (seen.has(id))
|
|
348
|
+
continue;
|
|
349
|
+
seen.add(id);
|
|
350
|
+
out.push({ id, suite: !!collect });
|
|
351
|
+
}
|
|
352
|
+
return out;
|
|
353
|
+
}
|
|
354
|
+
/** Failing ids only — the ordered, de-duplicated id list. */
|
|
355
|
+
export function parseVitestFailureIds(output) {
|
|
356
|
+
return parseVitestFailLines(output).map((f) => f.id);
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Recover the failing ids from a red `test` gate's output and decide whether the
|
|
360
|
+
* recovery can be TRUSTED. Trust requires BOTH of the reporter's own counts to
|
|
361
|
+
* match what was parsed — failed tests against `Tests N failed`, failed suites
|
|
362
|
+
* against `Failed Suites N`. So a reporter shape we do not understand, a
|
|
363
|
+
* truncated log, an unhandled error with no FAIL line, or a hook failure printed
|
|
364
|
+
* in a third shape all come back `complete: false`, and the gate blocks.
|
|
365
|
+
*/
|
|
366
|
+
export function extractVitestFailures(output) {
|
|
367
|
+
const parsed = parseVitestFailLines(output);
|
|
368
|
+
const ids = parsed.map((f) => f.id);
|
|
369
|
+
const tests = parsed.filter((f) => !f.suite).length;
|
|
370
|
+
const suites = parsed.filter((f) => f.suite).length;
|
|
371
|
+
const declaredTests = parseVitestFailedCount(output);
|
|
372
|
+
const declaredSuites = parseVitestFailedSuiteCount(output);
|
|
373
|
+
const complete = declaredTests !== null &&
|
|
374
|
+
tests === declaredTests &&
|
|
375
|
+
suites === declaredSuites &&
|
|
376
|
+
ids.length > 0;
|
|
377
|
+
return { ids, declared: declaredTests, complete };
|
|
378
|
+
}
|
|
379
|
+
/** Baseline ids from the `{sha, failures[]}` / `string[]` artifact shapes. */
|
|
380
|
+
export function baselineIdsFrom(raw) {
|
|
381
|
+
if (Array.isArray(raw)) {
|
|
382
|
+
return raw.filter((x) => typeof x === "string");
|
|
383
|
+
}
|
|
384
|
+
const failures = raw?.failures;
|
|
385
|
+
return Array.isArray(failures)
|
|
386
|
+
? failures.filter((x) => typeof x === "string")
|
|
387
|
+
: [];
|
|
388
|
+
}
|
|
389
|
+
/** Quarantined identifiers from the checked-in flake-quarantine manifest. */
|
|
390
|
+
export function quarantineIdsFrom(raw) {
|
|
391
|
+
const list = raw?.quarantined;
|
|
392
|
+
if (!Array.isArray(list))
|
|
393
|
+
return [];
|
|
394
|
+
const out = [];
|
|
395
|
+
for (const entry of list) {
|
|
396
|
+
const id = entry?.identifier;
|
|
397
|
+
if (typeof id === "string" && id.trim())
|
|
398
|
+
out.push(id.trim());
|
|
399
|
+
}
|
|
400
|
+
return out;
|
|
401
|
+
}
|
|
214
402
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
215
403
|
// Default I/O implementations
|
|
216
404
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -307,6 +495,108 @@ async function defaultRunMigrationRenumber(workdir, files) {
|
|
|
307
495
|
const changed = (status.stdout ?? "").trim().length > 0;
|
|
308
496
|
return { changed, output };
|
|
309
497
|
}
|
|
498
|
+
/**
|
|
499
|
+
* RF-14: the credential-free known-failure set readable from the task worktree —
|
|
500
|
+
* the `ACC_PREPR_TEST_BASELINE` artifact (if named) unioned with the checked-in
|
|
501
|
+
* flake-quarantine manifest. Returns null when NEITHER source yielded an id, so
|
|
502
|
+
* the caller fails closed rather than treating "no record" as "nothing is new".
|
|
503
|
+
*/
|
|
504
|
+
async function defaultLoadKnownFailures(workdir, env) {
|
|
505
|
+
const ids = new Set();
|
|
506
|
+
const sources = [];
|
|
507
|
+
const rel = env[TEST_BASELINE_ENV]?.trim();
|
|
508
|
+
if (rel) {
|
|
509
|
+
const abs = path.isAbsolute(rel) ? rel : path.join(workdir, rel);
|
|
510
|
+
try {
|
|
511
|
+
const found = baselineIdsFrom(JSON.parse(await fs.readFile(abs, "utf8")));
|
|
512
|
+
for (const id of found)
|
|
513
|
+
ids.add(id);
|
|
514
|
+
sources.push(`baseline ${rel} (${found.length} id(s))`);
|
|
515
|
+
}
|
|
516
|
+
catch {
|
|
517
|
+
// Unreadable / unparseable: contribute nothing. The union may still be
|
|
518
|
+
// non-empty from the manifest; if not, the gate fails closed.
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
try {
|
|
522
|
+
const abs = path.join(workdir, QUARANTINE_MANIFEST_REL);
|
|
523
|
+
const found = quarantineIdsFrom(JSON.parse(await fs.readFile(abs, "utf8")));
|
|
524
|
+
if (found.length > 0) {
|
|
525
|
+
for (const id of found)
|
|
526
|
+
ids.add(id);
|
|
527
|
+
sources.push(`quarantine manifest (${found.length} id(s))`);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
catch {
|
|
531
|
+
// No manifest in this worktree — the baseline artifact may still carry ids.
|
|
532
|
+
}
|
|
533
|
+
if (ids.size === 0)
|
|
534
|
+
return null;
|
|
535
|
+
return { ids: [...ids].sort(), source: sources.join(" + ") };
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* RF-14: decide what a red `test` gate means. Returns `excused` only when the
|
|
539
|
+
* failing set is fully recoverable AND every member of it is already known red.
|
|
540
|
+
* Every other path returns `excused: false` with the reason the gate should log,
|
|
541
|
+
* so "block" stays the default outcome of anything unclear.
|
|
542
|
+
*/
|
|
543
|
+
export async function excuseKnownTestFailures(workdir, output, deps, env) {
|
|
544
|
+
const none = { excused: false, newFailures: [], preExisting: [], source: "" };
|
|
545
|
+
const scan = (deps.extractTestFailures ?? extractVitestFailures)(output);
|
|
546
|
+
if (!scan.complete) {
|
|
547
|
+
return {
|
|
548
|
+
...none,
|
|
549
|
+
reason: `could not account for every failing test (parsed ${scan.ids.length}, ` +
|
|
550
|
+
`reporter declared ${scan.declared ?? "unknown"}) — blocking`,
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
const loadKnown = deps.loadKnownTestFailures ?? ((wd) => defaultLoadKnownFailures(wd, env));
|
|
554
|
+
let known = null;
|
|
555
|
+
try {
|
|
556
|
+
known = await loadKnown(workdir);
|
|
557
|
+
}
|
|
558
|
+
catch {
|
|
559
|
+
known = null;
|
|
560
|
+
}
|
|
561
|
+
if (!known || known.ids.length === 0) {
|
|
562
|
+
return { ...none, reason: "no test baseline / quarantine record available — blocking" };
|
|
563
|
+
}
|
|
564
|
+
const { newFailures, preExisting } = splitKnownFailures(scan.ids, known.ids);
|
|
565
|
+
if (newFailures.length > 0) {
|
|
566
|
+
return {
|
|
567
|
+
excused: false,
|
|
568
|
+
reason: `${newFailures.length} NEW test failure(s) not in ${known.source}`,
|
|
569
|
+
newFailures,
|
|
570
|
+
preExisting,
|
|
571
|
+
source: known.source,
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
return {
|
|
575
|
+
excused: true,
|
|
576
|
+
reason: `all ${preExisting.length} failing test(s) already known red in ${known.source}`,
|
|
577
|
+
newFailures,
|
|
578
|
+
preExisting,
|
|
579
|
+
source: known.source,
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* The operator-facing body of a `test` gate failure that survived the baseline
|
|
584
|
+
* consult: the NEW failures named exactly first (that is the actionable part),
|
|
585
|
+
* then the pre-existing ones, then the suite's own tail.
|
|
586
|
+
*/
|
|
587
|
+
export function formatNewTestFailures(newFailures, preExisting, source, outputTail) {
|
|
588
|
+
const lines = [
|
|
589
|
+
`${newFailures.length} test failure(s) introduced by this task ` +
|
|
590
|
+
`(not present in ${source}):`,
|
|
591
|
+
...newFailures.map((id) => ` - ${id}`),
|
|
592
|
+
];
|
|
593
|
+
if (preExisting.length > 0) {
|
|
594
|
+
lines.push(`${preExisting.length} further failure(s) were already known red and are NOT ` +
|
|
595
|
+
`why this gate failed:`, ...preExisting.map((id) => ` - ${id}`));
|
|
596
|
+
}
|
|
597
|
+
lines.push("", outputTail);
|
|
598
|
+
return lines.join("\n");
|
|
599
|
+
}
|
|
310
600
|
async function defaultCommitRenumbered(workdir) {
|
|
311
601
|
await execa("git", ["add", "-A"], { cwd: workdir, env: buildEnv(), reject: false });
|
|
312
602
|
await execa("git", ["commit", "-m", "chore(acc): auto-renumber migration to next contiguous seq (MIGFIX-01)"], { cwd: workdir, env: buildEnv(), reject: false });
|
|
@@ -398,6 +688,7 @@ export async function runPreprGate(workdir, deps = {}) {
|
|
|
398
688
|
}
|
|
399
689
|
}
|
|
400
690
|
const scripts = await readScripts(workdir);
|
|
691
|
+
let testBaselineExcused;
|
|
401
692
|
for (const gate of PREPR_GATES) {
|
|
402
693
|
if (!scripts[gate]) {
|
|
403
694
|
absent.push(gate);
|
|
@@ -406,13 +697,47 @@ export async function runPreprGate(workdir, deps = {}) {
|
|
|
406
697
|
ran.push(gate);
|
|
407
698
|
const { exitCode, output } = await runGate(workdir, gate);
|
|
408
699
|
if (exitCode !== 0) {
|
|
700
|
+
const outputTail = output.slice(-OUTPUT_TAIL);
|
|
701
|
+
// RF-14: a red `test` gate is the one failure that is routinely NOT this
|
|
702
|
+
// task's fault, so it is classified before it blocks. Everything else
|
|
703
|
+
// (typecheck / lint / build) is deterministic on the worktree the task
|
|
704
|
+
// produced and keeps failing fast, unchanged.
|
|
705
|
+
if (gate === "test" && testBaselineConsultResolved(deps.testBaselineConsult, env)) {
|
|
706
|
+
const verdict = await excuseKnownTestFailures(workdir, output, deps, env);
|
|
707
|
+
if (verdict.excused) {
|
|
708
|
+
// Known-red only: do NOT block, but keep the debt on the record so it
|
|
709
|
+
// is paid rather than permanently amnestied.
|
|
710
|
+
testBaselineExcused = {
|
|
711
|
+
preExisting: verdict.preExisting,
|
|
712
|
+
source: verdict.source,
|
|
713
|
+
outputTail,
|
|
714
|
+
};
|
|
715
|
+
continue;
|
|
716
|
+
}
|
|
717
|
+
if (verdict.newFailures.length > 0) {
|
|
718
|
+
return {
|
|
719
|
+
ok: false,
|
|
720
|
+
skipped: false,
|
|
721
|
+
ran,
|
|
722
|
+
absent,
|
|
723
|
+
failure: {
|
|
724
|
+
gate,
|
|
725
|
+
exitCode,
|
|
726
|
+
outputTail: formatNewTestFailures(verdict.newFailures, verdict.preExisting, verdict.source, outputTail).slice(-OUTPUT_TAIL),
|
|
727
|
+
},
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
// Fell through: the consult could not establish that the failures are
|
|
731
|
+
// known (unreadable reporter, no baseline record). Block on the raw
|
|
732
|
+
// failure below — fail closed.
|
|
733
|
+
}
|
|
409
734
|
// Stop on the first failure — fail fast, exactly what the reviewer would.
|
|
410
735
|
return {
|
|
411
736
|
ok: false,
|
|
412
737
|
skipped: false,
|
|
413
738
|
ran,
|
|
414
739
|
absent,
|
|
415
|
-
failure: { gate, exitCode, outputTail
|
|
740
|
+
failure: { gate, exitCode, outputTail },
|
|
416
741
|
};
|
|
417
742
|
}
|
|
418
743
|
}
|
|
@@ -478,10 +803,19 @@ export async function runPreprGate(workdir, deps = {}) {
|
|
|
478
803
|
migrationLintShadow: { exitCode, outputTail: output.slice(-OUTPUT_TAIL) },
|
|
479
804
|
scopeShadow,
|
|
480
805
|
migrationRenumbered,
|
|
806
|
+
testBaselineExcused,
|
|
481
807
|
};
|
|
482
808
|
}
|
|
483
809
|
}
|
|
484
810
|
}
|
|
485
|
-
return {
|
|
811
|
+
return {
|
|
812
|
+
ok: true,
|
|
813
|
+
skipped: false,
|
|
814
|
+
ran,
|
|
815
|
+
absent,
|
|
816
|
+
scopeShadow,
|
|
817
|
+
migrationRenumbered,
|
|
818
|
+
testBaselineExcused,
|
|
819
|
+
};
|
|
486
820
|
}
|
|
487
821
|
//# sourceMappingURL=prepr-gate.js.map
|
package/dist/prepr-gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepr-gate.js","sourceRoot":"","sources":["../src/prepr-gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prepr-gate.js","sourceRoot":"","sources":["../src/prepr-gate.ts"],"names":[],"mappings":"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"}
|