codeloop-mcp-server 0.1.46 → 0.1.48
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/auth/critical_floors.d.ts.map +1 -1
- package/dist/auth/critical_floors.js +8 -0
- package/dist/auth/critical_floors.js.map +1 -1
- package/dist/evidence/interaction_coverage.d.ts +15 -0
- package/dist/evidence/interaction_coverage.d.ts.map +1 -1
- package/dist/evidence/interaction_coverage.js +59 -1
- package/dist/evidence/interaction_coverage.js.map +1 -1
- package/dist/index.js +345 -31
- package/dist/index.js.map +1 -1
- package/dist/runners/window_manager.d.ts +34 -0
- package/dist/runners/window_manager.d.ts.map +1 -1
- package/dist/runners/window_manager.js +226 -0
- package/dist/runners/window_manager.js.map +1 -1
- package/dist/tools/design_compare.d.ts +43 -0
- package/dist/tools/design_compare.d.ts.map +1 -1
- package/dist/tools/design_compare.js +185 -66
- package/dist/tools/design_compare.js.map +1 -1
- package/dist/tools/gate_check.js +29 -7
- package/dist/tools/gate_check.js.map +1 -1
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +20 -0
- package/dist/tools/verify.js.map +1 -1
- package/package.json +1 -1
|
@@ -205,22 +205,6 @@ function findActualScreenshot(screenshotsDir, screenName, viewport) {
|
|
|
205
205
|
return null;
|
|
206
206
|
return matchScreenshotFile(readable, screenshotsDir, screenName, viewport);
|
|
207
207
|
}
|
|
208
|
-
/**
|
|
209
|
-
* Filename-matching helper extracted so the cross-run resolver can
|
|
210
|
-
* reuse it. The matching is intentionally permissive — every Photometry
|
|
211
|
-
* DB-style "the reference is named `led-photometric-summary.png` but
|
|
212
|
-
* the agent captured `10-led-photometric-data-page_1778895588226.png`"
|
|
213
|
-
* combination should succeed.
|
|
214
|
-
*
|
|
215
|
-
* Match precedence (highest to lowest):
|
|
216
|
-
* 1. Exact (case-insensitive) `<screen>.png`
|
|
217
|
-
* 2. Viewport-tagged `<screen>_<viewport>.png` / `<viewport>_<screen>.png`
|
|
218
|
-
* 3. Prefix `<screen>_*.png` / `<screen>-*.png` (covers timestamped captures)
|
|
219
|
-
* 4. Suffix `*_<screen>.png` / `*-<screen>.png` (covers `01-dashboard.png`)
|
|
220
|
-
* 5. Contains `<screen>` token anywhere in the stem (lenient last resort)
|
|
221
|
-
* 6. Token-overlap fallback: split both sides on `-`/`_`/digits, pick
|
|
222
|
-
* the file with the most token overlap (≥2 shared tokens).
|
|
223
|
-
*/
|
|
224
208
|
function matchScreenshotFile(files, screenshotsDir, screenName, viewport) {
|
|
225
209
|
const target = screenName.toLowerCase();
|
|
226
210
|
const targetTokens = tokens(target);
|
|
@@ -236,24 +220,24 @@ function matchScreenshotFile(files, screenshotsDir, screenName, viewport) {
|
|
|
236
220
|
for (const candidate of candidates) {
|
|
237
221
|
const match = files.find((f) => f.toLowerCase() === candidate.toLowerCase());
|
|
238
222
|
if (match)
|
|
239
|
-
return join(screenshotsDir, match);
|
|
223
|
+
return { path: join(screenshotsDir, match), quality: "strong" };
|
|
240
224
|
}
|
|
241
225
|
// (3) prefix.
|
|
242
226
|
let m = files.find((f) => f.toLowerCase().startsWith(target + "_") || f.toLowerCase().startsWith(target + "-"));
|
|
243
227
|
if (m)
|
|
244
|
-
return join(screenshotsDir, m);
|
|
228
|
+
return { path: join(screenshotsDir, m), quality: "strong" };
|
|
245
229
|
// (4) suffix.
|
|
246
230
|
m = files.find((f) => {
|
|
247
231
|
const stem = f.toLowerCase().replace(/\.png$/, "");
|
|
248
232
|
return stem.endsWith("_" + target) || stem.endsWith("-" + target);
|
|
249
233
|
});
|
|
250
234
|
if (m)
|
|
251
|
-
return join(screenshotsDir, m);
|
|
235
|
+
return { path: join(screenshotsDir, m), quality: "strong" };
|
|
252
236
|
// (5) "contains the target token anywhere" — handles
|
|
253
237
|
// `10-led-photometric-data-page_<ts>.png` matching screen `photometric-data`.
|
|
254
238
|
m = files.find((f) => f.toLowerCase().includes(target));
|
|
255
239
|
if (m)
|
|
256
|
-
return join(screenshotsDir, m);
|
|
240
|
+
return { path: join(screenshotsDir, m), quality: "weak" };
|
|
257
241
|
// (6) Token overlap. Pick the file whose stem shares the most tokens
|
|
258
242
|
// with the reference name (alphabetic tokens ≥ 3 chars). Require at
|
|
259
243
|
// least 2 shared tokens to avoid false positives.
|
|
@@ -271,7 +255,7 @@ function matchScreenshotFile(files, screenshotsDir, screenName, viewport) {
|
|
|
271
255
|
}
|
|
272
256
|
}
|
|
273
257
|
if (bestFile && bestOverlap >= 2)
|
|
274
|
-
return join(screenshotsDir, bestFile);
|
|
258
|
+
return { path: join(screenshotsDir, bestFile), quality: "weak" };
|
|
275
259
|
return null;
|
|
276
260
|
}
|
|
277
261
|
/** Tokeniser used by the lenient matcher. Splits on non-alphanumerics
|
|
@@ -340,6 +324,40 @@ function isReadablePng(filePath) {
|
|
|
340
324
|
return false;
|
|
341
325
|
}
|
|
342
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Recognise the error-message family thrown by pngjs when it can't
|
|
329
|
+
* decode a file that passed the magic-byte sniff. We treat these as
|
|
330
|
+
* "skip — bad PNG" (warning, excluded from gate scoring) rather than
|
|
331
|
+
* "comparison failed = 0% match" (critical, drags the gate down).
|
|
332
|
+
*
|
|
333
|
+
* The Photometry-DB E2E session 8 hit this hard: 13 of 16 design
|
|
334
|
+
* compare failures were `unrecognised content at end of stream` from
|
|
335
|
+
* pngjs on legacy run PNGs. With this classifier those are now
|
|
336
|
+
* downgraded to warnings and the gate sees a 2/3 pass instead of
|
|
337
|
+
* 2/18 (≈11%) — matching the reality that only 3 references were
|
|
338
|
+
* genuine empty-state-vs-populated-state mismatches.
|
|
339
|
+
*/
|
|
340
|
+
export function isPngDecodeError(msg) {
|
|
341
|
+
if (!msg)
|
|
342
|
+
return false;
|
|
343
|
+
const m = msg.toLowerCase();
|
|
344
|
+
return (m.includes("unrecognised content at end of stream") ||
|
|
345
|
+
m.includes("unrecognized content at end of stream") ||
|
|
346
|
+
m.includes("invalid file signature") ||
|
|
347
|
+
m.includes("crc mismatch") ||
|
|
348
|
+
m.includes("crc error") ||
|
|
349
|
+
m.includes("unsupported color type") ||
|
|
350
|
+
m.includes("not enough data") ||
|
|
351
|
+
m.includes("unexpected end of input") ||
|
|
352
|
+
m.includes("unexpected end of file") ||
|
|
353
|
+
m.includes("invalid chunk length") ||
|
|
354
|
+
m.includes("eof while reading chunk") ||
|
|
355
|
+
// pngjs's "End of stream" variants
|
|
356
|
+
m.includes("end of stream") ||
|
|
357
|
+
// node fs / sharp variants
|
|
358
|
+
m.includes("unsupported image format") ||
|
|
359
|
+
m.includes("input buffer contains unsupported image format"));
|
|
360
|
+
}
|
|
343
361
|
function openSyncSafe(p) {
|
|
344
362
|
try {
|
|
345
363
|
return openSync(p, "r");
|
|
@@ -370,33 +388,49 @@ function findActualScreenshotAcrossRuns(cwd, screenName, viewport, preferRunId)
|
|
|
370
388
|
const ordered = preferRunId
|
|
371
389
|
? [preferRunId, ...runs.filter((r) => r !== preferRunId)]
|
|
372
390
|
: runs;
|
|
373
|
-
for
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
391
|
+
// Two-pass: first look for STRONG matches across all runs (exact /
|
|
392
|
+
// prefix / suffix). Only fall back to WEAK matches (substring /
|
|
393
|
+
// token-overlap) if no strong match exists anywhere. This prevents
|
|
394
|
+
// the Photometry-DB E2E 8 failure mode where a weak token-overlap
|
|
395
|
+
// match in an older run (e.g. `10-led-bom_*` matching
|
|
396
|
+
// `led-design-bom-add-component`) shadowed the gate's own fresh
|
|
397
|
+
// capture or — when no fresh capture existed — drove a meaningless
|
|
398
|
+
// pixel-diff against an unrelated screen.
|
|
399
|
+
let weakHit = null;
|
|
400
|
+
for (const pass of ["strong", "weak"]) {
|
|
401
|
+
for (const runId of ordered) {
|
|
402
|
+
const dir = join(getRunDir(runId, base), "screenshots");
|
|
403
|
+
if (!existsSync(dir))
|
|
404
|
+
continue;
|
|
405
|
+
let files;
|
|
406
|
+
try {
|
|
407
|
+
files = readdirSync(dir).filter((f) => f.toLowerCase().endsWith(".png"));
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
if (files.length === 0)
|
|
413
|
+
continue;
|
|
414
|
+
const readableFiles = files.filter((f) => isReadablePng(join(dir, f)));
|
|
415
|
+
if (readableFiles.length === 0)
|
|
416
|
+
continue;
|
|
417
|
+
const m = matchScreenshotFile(readableFiles, dir, screenName, viewport);
|
|
418
|
+
if (!m)
|
|
419
|
+
continue;
|
|
420
|
+
if (pass === "strong" && m.quality === "strong") {
|
|
421
|
+
return { path: m.path, runId, quality: "strong" };
|
|
422
|
+
}
|
|
423
|
+
if (pass === "weak" && m.quality === "weak" && !weakHit) {
|
|
424
|
+
weakHit = { path: m.path, runId, quality: "weak" };
|
|
425
|
+
}
|
|
380
426
|
}
|
|
381
|
-
|
|
382
|
-
|
|
427
|
+
if (pass === "strong" && weakHit) {
|
|
428
|
+
// strong-pass was exhausted with no hit; keep the first weak
|
|
429
|
+
// hit we saw (newest-first ordering preserved by `ordered`).
|
|
430
|
+
return weakHit;
|
|
383
431
|
}
|
|
384
|
-
if (files.length === 0)
|
|
385
|
-
continue;
|
|
386
|
-
// Drop unreadable PNGs (zero-byte, truncated, wrong magic). If a
|
|
387
|
-
// run only has corrupt copies of this screen, fall through to the
|
|
388
|
-
// next run instead of locking a dud in. Without this filter, a
|
|
389
|
-
// single half-written file in an older run was poisoning the
|
|
390
|
-
// entire design-compare pass for every reference that resolved to
|
|
391
|
-
// that run dir.
|
|
392
|
-
const readableFiles = files.filter((f) => isReadablePng(join(dir, f)));
|
|
393
|
-
if (readableFiles.length === 0)
|
|
394
|
-
continue;
|
|
395
|
-
const m = matchScreenshotFile(readableFiles, dir, screenName, viewport);
|
|
396
|
-
if (m)
|
|
397
|
-
return { path: m, runId };
|
|
398
432
|
}
|
|
399
|
-
return
|
|
433
|
+
return weakHit;
|
|
400
434
|
}
|
|
401
435
|
/**
|
|
402
436
|
* Resolve which run directory to source actual screenshots from.
|
|
@@ -417,24 +451,38 @@ function bestRunDir(cwd, explicitRunId) {
|
|
|
417
451
|
return null;
|
|
418
452
|
}
|
|
419
453
|
const runs = listRuns(base);
|
|
420
|
-
|
|
454
|
+
// Photometry-DB E2E 8: if the newest run (the "gate run" the agent
|
|
455
|
+
// just created via codeloop_verify) is empty, bestRunDir used to
|
|
456
|
+
// silently fall back to an older sibling run with PNGs — and then
|
|
457
|
+
// every cross-run match looked legitimately in-run, defeating the
|
|
458
|
+
// weak-match downgrade. Now we tag the fallback so the main loop
|
|
459
|
+
// can apply stricter rules.
|
|
460
|
+
if (runs.length === 0)
|
|
461
|
+
return null;
|
|
462
|
+
const newestRunId = runs[0];
|
|
463
|
+
const newestDir = getRunDir(newestRunId, base);
|
|
464
|
+
const newestScreens = join(newestDir, "screenshots");
|
|
465
|
+
if (existsSync(newestScreens)) {
|
|
466
|
+
try {
|
|
467
|
+
const files = readdirSync(newestScreens).filter((f) => f.toLowerCase().endsWith(".png"));
|
|
468
|
+
if (files.length > 0)
|
|
469
|
+
return { runId: newestRunId, dir: newestDir };
|
|
470
|
+
}
|
|
471
|
+
catch { /* skip */ }
|
|
472
|
+
}
|
|
473
|
+
for (const runId of runs.slice(1)) {
|
|
421
474
|
const dir = getRunDir(runId, base);
|
|
422
475
|
const screenshotsDir = join(dir, "screenshots");
|
|
423
476
|
if (existsSync(screenshotsDir)) {
|
|
424
477
|
try {
|
|
425
478
|
const files = readdirSync(screenshotsDir).filter((f) => f.toLowerCase().endsWith(".png"));
|
|
426
479
|
if (files.length > 0)
|
|
427
|
-
return { runId, dir };
|
|
428
|
-
}
|
|
429
|
-
catch {
|
|
430
|
-
/* skip */
|
|
480
|
+
return { runId, dir, isFallback: true };
|
|
431
481
|
}
|
|
482
|
+
catch { /* skip */ }
|
|
432
483
|
}
|
|
433
484
|
}
|
|
434
|
-
|
|
435
|
-
return { runId: runs[0], dir: getRunDir(runs[0], base) };
|
|
436
|
-
}
|
|
437
|
-
return null;
|
|
485
|
+
return { runId: newestRunId, dir: newestDir, isFallback: true };
|
|
438
486
|
}
|
|
439
487
|
/**
|
|
440
488
|
* Single-screen comparison (legacy entry point preserved for the existing
|
|
@@ -458,12 +506,18 @@ export async function runDesignCompare(input, config, cwd = process.cwd()) {
|
|
|
458
506
|
: "No verification runs found; cannot locate an actual screenshot.", "Run codeloop_verify (or codeloop_capture_screenshot) for this run first.", refPath);
|
|
459
507
|
}
|
|
460
508
|
const screenshotsDir = join(run.dir, "screenshots");
|
|
461
|
-
|
|
509
|
+
const own = findActualScreenshot(screenshotsDir, input.screen_name);
|
|
510
|
+
let actualPath = own?.path ?? null;
|
|
462
511
|
let sourceRunIdSingle;
|
|
463
512
|
if (!actualPath) {
|
|
464
513
|
// Cross-run fallback (mirrors the multi-screen `all` mode path).
|
|
465
514
|
const cross = findActualScreenshotAcrossRuns(cwd, input.screen_name, undefined, run.runId);
|
|
466
515
|
if (cross) {
|
|
516
|
+
// In single-mode the caller asked for a specific screen name —
|
|
517
|
+
// we trust the cross-run match even when it's `weak`, because
|
|
518
|
+
// the user is explicitly directing the comparison. The `all`
|
|
519
|
+
// mode is stricter (auto-discovered references shouldn't be
|
|
520
|
+
// compared against unrelated screens from old runs).
|
|
467
521
|
actualPath = cross.path;
|
|
468
522
|
if (cross.runId !== run.runId)
|
|
469
523
|
sourceRunIdSingle = cross.runId;
|
|
@@ -607,7 +661,9 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
607
661
|
mkdirSync(diffsDir, { recursive: true });
|
|
608
662
|
const perScreen = [];
|
|
609
663
|
for (const ref of refs) {
|
|
610
|
-
|
|
664
|
+
const own = findActualScreenshot(screenshotsDir, ref.screenName, ref.viewport);
|
|
665
|
+
let actualPath = own?.path ?? null;
|
|
666
|
+
let matchQuality = own?.quality ?? null;
|
|
611
667
|
let sourceRunId;
|
|
612
668
|
if (!actualPath) {
|
|
613
669
|
// Cross-run fallback. The Photometry DB E2E recorded screenshots
|
|
@@ -617,10 +673,31 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
617
673
|
const cross = findActualScreenshotAcrossRuns(cwd, ref.screenName, ref.viewport, run.runId);
|
|
618
674
|
if (cross) {
|
|
619
675
|
actualPath = cross.path;
|
|
676
|
+
matchQuality = cross.quality;
|
|
620
677
|
if (cross.runId !== run.runId)
|
|
621
678
|
sourceRunId = cross.runId;
|
|
622
679
|
}
|
|
623
680
|
}
|
|
681
|
+
// Downgrade weak matches to "no screenshot found yet" when the
|
|
682
|
+
// match doesn't live in the agent's actual gate run.
|
|
683
|
+
// Photometry-DB E2E 8 regression: lenient substring /
|
|
684
|
+
// token-overlap matches like `10-led-bom_*` resolving for
|
|
685
|
+
// `led-design-bom-add-component` from an unrelated old run
|
|
686
|
+
// drove a 0% pixel-diff and a critical-severity gate failure on
|
|
687
|
+
// what's actually a "you haven't captured this screen yet"
|
|
688
|
+
// situation. Two distinct sub-cases:
|
|
689
|
+
// (a) sourceRunId set → match came from a cross-run fallback
|
|
690
|
+
// inside a sibling run. Refuse.
|
|
691
|
+
// (b) bestRunDir itself fell back to a sibling run because the
|
|
692
|
+
// gate's own run was empty (run.isFallback=true). Same
|
|
693
|
+
// refusal — the agent expects design_compare to ground
|
|
694
|
+
// against the run it just created, not a stale sibling.
|
|
695
|
+
const weakInForeignRun = actualPath && matchQuality === "weak" && (sourceRunId || run.isFallback);
|
|
696
|
+
if (weakInForeignRun) {
|
|
697
|
+
actualPath = null;
|
|
698
|
+
sourceRunId = undefined;
|
|
699
|
+
matchQuality = null;
|
|
700
|
+
}
|
|
624
701
|
if (!actualPath) {
|
|
625
702
|
perScreen.push({
|
|
626
703
|
screen_name: ref.screenName,
|
|
@@ -641,6 +718,7 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
641
718
|
let matchScore = 0;
|
|
642
719
|
let diffOk;
|
|
643
720
|
let reason;
|
|
721
|
+
let skipped = false;
|
|
644
722
|
try {
|
|
645
723
|
const diffResult = compareScreenshot(actualPath, ref.path, diffPath, undefined, cwd);
|
|
646
724
|
matchScore = 1 - diffResult.diffScore;
|
|
@@ -650,9 +728,27 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
650
728
|
catch (err) {
|
|
651
729
|
matchScore = 0;
|
|
652
730
|
diffOk = undefined;
|
|
653
|
-
|
|
731
|
+
const errMsg = err.message || String(err);
|
|
732
|
+
// Photometry-DB regression (E2E 8): 13 of 16 design_compare
|
|
733
|
+
// failures were `unrecognised content at end of stream` thrown
|
|
734
|
+
// by pngjs on legacy run PNGs that had passed the magic-byte
|
|
735
|
+
// sniff but were missing/corrupt at the IEND chunk. Treating
|
|
736
|
+
// those as match_score=0 dragged the gate from a realistic 94%+
|
|
737
|
+
// down to 78% even though no real visual regression existed.
|
|
738
|
+
// Detect the family of pngjs decode errors and mark the screen
|
|
739
|
+
// as SKIPPED (not failed) — excluded from min_score / avg_score
|
|
740
|
+
// / failed_screens, severity downgraded to "low", and the
|
|
741
|
+
// agent's next action is "re-capture or clean up legacy
|
|
742
|
+
// artifacts" rather than "fix the visual diff".
|
|
743
|
+
if (isPngDecodeError(errMsg)) {
|
|
744
|
+
skipped = true;
|
|
745
|
+
reason = `Skipped — corrupt or truncated PNG (${errMsg}). Re-capture with codeloop_capture_screenshot screen_name="${ref.screenName}"${ref.viewport ? ` and copy/rename to match the reference filename` : ""}, or delete the bad legacy file under artifacts/runs/ to remove it from the cross-run fallback search.`;
|
|
746
|
+
}
|
|
747
|
+
else {
|
|
748
|
+
reason = `Comparison error: ${errMsg}`;
|
|
749
|
+
}
|
|
654
750
|
}
|
|
655
|
-
const passed = matchScore >= threshold;
|
|
751
|
+
const passed = skipped ? true : matchScore >= threshold;
|
|
656
752
|
perScreen.push({
|
|
657
753
|
screen_name: ref.screenName,
|
|
658
754
|
viewport: ref.viewport,
|
|
@@ -661,18 +757,29 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
661
757
|
diff_path: diffOk,
|
|
662
758
|
match_score: matchScore,
|
|
663
759
|
passed,
|
|
664
|
-
|
|
760
|
+
skipped: skipped || undefined,
|
|
761
|
+
// Skipped screens are always severity="low" — they're a
|
|
762
|
+
// hygiene problem (corrupt cached PNG), not a visual
|
|
763
|
+
// regression, so the gate shouldn't surface them as critical.
|
|
764
|
+
severity: skipped ? "low" : severityFromScore(matchScore, threshold),
|
|
665
765
|
reason: sourceRunId
|
|
666
766
|
? `${reason} (actual loaded from run ${sourceRunId} — different from gate run ${run.runId}; copy the screenshot forward if you want it scoped to the gate run.)`
|
|
667
767
|
: reason,
|
|
668
768
|
});
|
|
669
769
|
}
|
|
670
|
-
// 4. Aggregate.
|
|
671
|
-
|
|
770
|
+
// 4. Aggregate. Skipped screens (corrupt-PNG decode failures) are
|
|
771
|
+
// excluded from min_score / avg_score / failed_screens — they're
|
|
772
|
+
// not real regressions, they're hygiene problems with legacy run
|
|
773
|
+
// artifacts. They still appear in per_screen[] with skipped:true
|
|
774
|
+
// and a "Skipped — corrupt PNG" reason so the agent knows to
|
|
775
|
+
// re-capture or clean them up, but they don't poison the gate.
|
|
776
|
+
const scored = perScreen.filter((p) => !p.skipped);
|
|
777
|
+
const scores = scored.map((p) => p.match_score);
|
|
672
778
|
const minScore = scores.length ? Math.min(...scores) : 0;
|
|
673
779
|
const avgScore = scores.length ? scores.reduce((s, v) => s + v, 0) / scores.length : 0;
|
|
674
|
-
const failedScreens =
|
|
675
|
-
const
|
|
780
|
+
const failedScreens = scored.filter((p) => !p.passed).map((p) => p.screen_name);
|
|
781
|
+
const skippedScreens = perScreen.filter((p) => p.skipped).map((p) => p.screen_name);
|
|
782
|
+
const allPassed = failedScreens.length === 0 && scored.length > 0;
|
|
676
783
|
// 5. Persist summary for gate_check.
|
|
677
784
|
const summaryPath = join(run.dir, "design_compare_summary.json");
|
|
678
785
|
writeFileSync(summaryPath, JSON.stringify({
|
|
@@ -681,16 +788,28 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
681
788
|
min_score: minScore,
|
|
682
789
|
avg_score: avgScore,
|
|
683
790
|
failed_screens: failedScreens,
|
|
791
|
+
skipped_screens: skippedScreens.length ? skippedScreens : undefined,
|
|
684
792
|
source,
|
|
685
793
|
generated_at: new Date().toISOString(),
|
|
686
794
|
figma_errors: figmaErrors.length ? figmaErrors : undefined,
|
|
687
795
|
}, null, 2));
|
|
688
796
|
// 6. Pick representative images for the MCP response (prefer worst failure).
|
|
689
|
-
|
|
797
|
+
// Skipped screens are pushed to the bottom so the lead image is a
|
|
798
|
+
// real visual diff, not a corrupt-PNG placeholder.
|
|
799
|
+
const sorted = [...perScreen].sort((a, b) => {
|
|
800
|
+
if (a.skipped && !b.skipped)
|
|
801
|
+
return 1;
|
|
802
|
+
if (!a.skipped && b.skipped)
|
|
803
|
+
return -1;
|
|
804
|
+
return a.match_score - b.match_score;
|
|
805
|
+
});
|
|
690
806
|
const lead = sorted[0] || perScreen[0];
|
|
807
|
+
const skipNote = skippedScreens.length > 0
|
|
808
|
+
? ` (${skippedScreens.length} screen(s) skipped due to corrupt/truncated PNG — re-capture or delete the bad files under artifacts/runs/: ${skippedScreens.slice(0, 3).join(", ")}${skippedScreens.length > 3 ? "…" : ""})`
|
|
809
|
+
: "";
|
|
691
810
|
const recommendation = allPassed
|
|
692
|
-
? `All ${
|
|
693
|
-
: `${failedScreens.length}/${
|
|
811
|
+
? `All ${scored.length} scored screen(s) match designs at or above ${(threshold * 100).toFixed(0)}% threshold (min: ${(minScore * 100).toFixed(1)}%).${skipNote}`
|
|
812
|
+
: `${failedScreens.length}/${scored.length} screen(s) below threshold ${(threshold * 100).toFixed(0)}%. Worst: "${lead.screen_name}" at ${(lead.match_score * 100).toFixed(1)}%. Fix and re-run codeloop_verify before gate_check.${skipNote}`;
|
|
694
813
|
const uxChecklist = readUxChecklist(input.ux_checklist_path, cwd);
|
|
695
814
|
return {
|
|
696
815
|
output: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design_compare.js","sourceRoot":"","sources":["../../src/tools/design_compare.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"design_compare.js","sourceRoot":"","sources":["../../src/tools/design_compare.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/gate_check.js
CHANGED
|
@@ -348,11 +348,31 @@ async function evaluateEvidenceGates(runId, cwd, config) {
|
|
|
348
348
|
else {
|
|
349
349
|
const failed = summary.failed_screens || [];
|
|
350
350
|
const min = summary.min_score ?? 0;
|
|
351
|
-
|
|
351
|
+
// Skipped screens (corrupt PNG decode) are tracked separately
|
|
352
|
+
// so the gate can stay green when the only "failures" were
|
|
353
|
+
// hygiene problems on legacy artifacts. Counts come from the
|
|
354
|
+
// `skipped: true` flag on per_screen entries (0.1.48+).
|
|
355
|
+
const skippedScreens = summary.per_screen.filter((p) => p.skipped);
|
|
356
|
+
const scoredScreens = summary.per_screen.filter((p) => !p.skipped);
|
|
357
|
+
const skipNote = skippedScreens.length > 0
|
|
358
|
+
? ` (${skippedScreens.length} corrupt-PNG screen(s) skipped — re-capture or delete from artifacts/runs/: ${skippedScreens.slice(0, 3).map((p) => p.screen_name).join(", ")}${skippedScreens.length > 3 ? "…" : ""})`
|
|
359
|
+
: "";
|
|
360
|
+
if (failed.length === 0 && min >= threshold && scoredScreens.length > 0) {
|
|
352
361
|
results.push({
|
|
353
362
|
gate: designGate,
|
|
354
363
|
passed: true,
|
|
355
|
-
reason: `${
|
|
364
|
+
reason: `${scoredScreens.length} screen(s) match designs (min ${(min * 100).toFixed(1)}% >= ${(threshold * 100).toFixed(0)}% threshold).${skipNote}`,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
else if (scoredScreens.length === 0 && skippedScreens.length > 0) {
|
|
368
|
+
// EVERY screen was skipped due to corrupt PNGs — that's a
|
|
369
|
+
// hygiene problem, not a visual regression. Surface it as a
|
|
370
|
+
// gate-fail with a hygiene next_step rather than letting the
|
|
371
|
+
// empty-score situation default to "no per-screen results".
|
|
372
|
+
results.push({
|
|
373
|
+
gate: designGate,
|
|
374
|
+
passed: false,
|
|
375
|
+
reason: `All ${skippedScreens.length} design comparison(s) were skipped due to corrupt/truncated PNGs (sample: ${skippedScreens.slice(0, 3).map((p) => p.screen_name).join(", ")}${skippedScreens.length > 3 ? "…" : ""}). Re-capture the screens with codeloop_capture_screenshot, or delete the bad legacy files under artifacts/runs/, then re-run codeloop_design_compare.`,
|
|
356
376
|
});
|
|
357
377
|
}
|
|
358
378
|
else {
|
|
@@ -373,11 +393,11 @@ async function evaluateEvidenceGates(runId, cwd, config) {
|
|
|
373
393
|
// whether to (a) call codeloop_capture_screenshot for the
|
|
374
394
|
// missing screens or (b) actually inspect a real visual
|
|
375
395
|
// regression.
|
|
376
|
-
const missingCaptures =
|
|
396
|
+
const missingCaptures = scoredScreens.filter((p) => !p.passed &&
|
|
377
397
|
(!p.actual_path ||
|
|
378
398
|
(typeof p.reason === "string" &&
|
|
379
399
|
p.reason.toLowerCase().startsWith("no screenshot found"))));
|
|
380
|
-
const lowMatches =
|
|
400
|
+
const lowMatches = scoredScreens
|
|
381
401
|
.filter((p) => !p.passed && !missingCaptures.includes(p))
|
|
382
402
|
.sort((a, b) => a.match_score - b.match_score);
|
|
383
403
|
const fmtScreen = (p) => `${p.screen_name}${p.viewport ? `[${p.viewport}]` : ""}`;
|
|
@@ -394,19 +414,21 @@ async function evaluateEvidenceGates(runId, cwd, config) {
|
|
|
394
414
|
.slice(0, 3)
|
|
395
415
|
.map((p) => `${fmtScreen(p)}=${(p.match_score * 100).toFixed(1)}%`)
|
|
396
416
|
.join(", ");
|
|
397
|
-
reasonParts.push(`${lowMatches.length}/${
|
|
417
|
+
reasonParts.push(`${lowMatches.length}/${scoredScreens.length} captured screen(s) below ${(threshold * 100).toFixed(0)}% threshold (worst: ${worst}). Fix the visual regression and re-run codeloop_verify.`);
|
|
398
418
|
}
|
|
399
419
|
if (reasonParts.length === 0) {
|
|
400
420
|
// Safety net: failed_screens was non-empty but neither
|
|
401
421
|
// bucket caught anything. Fall back to the legacy
|
|
402
422
|
// summary so we never emit an empty reason.
|
|
403
|
-
const worst = [...
|
|
423
|
+
const worst = [...scoredScreens]
|
|
404
424
|
.sort((a, b) => a.match_score - b.match_score)
|
|
405
425
|
.slice(0, 3)
|
|
406
426
|
.map((p) => `${fmtScreen(p)}=${(p.match_score * 100).toFixed(1)}%`)
|
|
407
427
|
.join(", ");
|
|
408
|
-
reasonParts.push(`${failed.length}/${
|
|
428
|
+
reasonParts.push(`${failed.length}/${scoredScreens.length} screens below ${(threshold * 100).toFixed(0)}% threshold. Worst: ${worst}. Fix and re-run codeloop_verify.`);
|
|
409
429
|
}
|
|
430
|
+
if (skipNote)
|
|
431
|
+
reasonParts.push(skipNote.trim());
|
|
410
432
|
results.push({
|
|
411
433
|
gate: designGate,
|
|
412
434
|
passed: false,
|