@flighthq/tool-capture 0.3.1-next.975.01aea94 → 0.4.0-edge.1908.751021c
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/baselineStore.d.ts +9 -4
- package/dist/baselineStore.d.ts.map +1 -1
- package/dist/baselineStore.js +19 -2
- package/dist/baselineStore.js.map +1 -1
- package/dist/bin.js +70 -91
- package/dist/bin.js.map +1 -1
- package/dist/captureBaselineCoverageManifest.d.ts +21 -4
- package/dist/captureBaselineCoverageManifest.d.ts.map +1 -1
- package/dist/captureBaselineCoverageManifest.js +44 -5
- package/dist/captureBaselineCoverageManifest.js.map +1 -1
- package/dist/captureBenchmark.js +1 -1
- package/dist/captureBenchmark.js.map +1 -1
- package/dist/captureBrowser.d.ts +1 -0
- package/dist/captureBrowser.d.ts.map +1 -1
- package/dist/captureBrowser.js +37 -0
- package/dist/captureBrowser.js.map +1 -1
- package/dist/captureBuildIdentity.d.ts +41 -0
- package/dist/captureBuildIdentity.d.ts.map +1 -0
- package/dist/captureBuildIdentity.js +111 -0
- package/dist/captureBuildIdentity.js.map +1 -0
- package/dist/captureCliOptions.d.ts +16 -0
- package/dist/captureCliOptions.d.ts.map +1 -0
- package/dist/captureCliOptions.js +145 -0
- package/dist/captureCliOptions.js.map +1 -0
- package/dist/captureContrast.d.ts +2 -0
- package/dist/captureContrast.d.ts.map +1 -0
- package/dist/captureContrast.js +14 -0
- package/dist/captureContrast.js.map +1 -0
- package/dist/captureDomReadback.d.ts +5 -1
- package/dist/captureDomReadback.d.ts.map +1 -1
- package/dist/captureDomReadback.js +3 -2
- package/dist/captureDomReadback.js.map +1 -1
- package/dist/captureEntries.d.ts +1 -1
- package/dist/captureEntries.d.ts.map +1 -1
- package/dist/captureEntries.js +0 -6
- package/dist/captureEntries.js.map +1 -1
- package/dist/captureEntry.d.ts +31 -2
- package/dist/captureEntry.d.ts.map +1 -1
- package/dist/captureEntry.js +150 -32
- package/dist/captureEntry.js.map +1 -1
- package/dist/captureEntryFilter.d.ts +9 -0
- package/dist/captureEntryFilter.d.ts.map +1 -0
- package/dist/captureEntryFilter.js +38 -0
- package/dist/captureEntryFilter.js.map +1 -0
- package/dist/captureFixtureBackground.d.ts +16 -0
- package/dist/captureFixtureBackground.d.ts.map +1 -0
- package/dist/captureFixtureBackground.js +38 -0
- package/dist/captureFixtureBackground.js.map +1 -0
- package/dist/captureFlightPreset.js +22 -15
- package/dist/captureFlightPreset.js.map +1 -1
- package/dist/captureHostProvenance.d.ts +11 -0
- package/dist/captureHostProvenance.d.ts.map +1 -0
- package/dist/captureHostProvenance.js +25 -0
- package/dist/captureHostProvenance.js.map +1 -0
- package/dist/captureProtocol.d.ts +3 -0
- package/dist/captureProtocol.d.ts.map +1 -1
- package/dist/captureProtocol.js.map +1 -1
- package/dist/captureServer.d.ts +3 -0
- package/dist/captureServer.d.ts.map +1 -1
- package/dist/captureServer.js +8 -7
- package/dist/captureServer.js.map +1 -1
- package/dist/captureSuite.d.ts +2 -0
- package/dist/captureSuite.d.ts.map +1 -1
- package/dist/captureSuite.js +6 -6
- package/dist/captureSuite.js.map +1 -1
- package/dist/captureTimeout.js +6 -3
- package/dist/captureTimeout.js.map +1 -1
- package/dist/captureValidation.d.ts +23 -1
- package/dist/captureValidation.d.ts.map +1 -1
- package/dist/captureValidation.js +233 -79
- package/dist/captureValidation.js.map +1 -1
- package/dist/captureWorkflow.d.ts +1 -1
- package/dist/captureWorkflow.d.ts.map +1 -1
- package/dist/captureWorkflow.js +11 -0
- package/dist/captureWorkflow.js.map +1 -1
- package/dist/contract.d.ts +1 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/functionalParityConfounds.d.ts +27 -0
- package/dist/functionalParityConfounds.d.ts.map +1 -0
- package/dist/functionalParityConfounds.js +102 -0
- package/dist/functionalParityConfounds.js.map +1 -0
- package/dist/functionalScene3Ds.d.ts +10 -0
- package/dist/functionalScene3Ds.d.ts.map +1 -1
- package/dist/functionalScene3Ds.js +9 -0
- package/dist/functionalScene3Ds.js.map +1 -1
- package/dist/functionalVerify.d.ts.map +1 -1
- package/dist/functionalVerify.js +17 -2
- package/dist/functionalVerify.js.map +1 -1
- package/package.json +6 -5
- package/src/baselineStore.test.ts +53 -10
- package/src/bin.test.ts +77 -2
- package/src/captureBaselineCoverageManifest.test.ts +192 -21
- package/src/captureBuildIdentity.test.ts +150 -0
- package/src/captureCliOptions.test.ts +116 -0
- package/src/captureContrast.test.ts +13 -0
- package/src/captureDomReadback.test.ts +41 -2
- package/src/captureEntries.test.ts +1 -2
- package/src/captureEntry.e2e.test.ts +413 -0
- package/src/captureEntry.test.ts +2 -3
- package/src/captureEntryFilter.test.ts +95 -0
- package/src/captureEyes.e2e.test.ts +9 -0
- package/src/captureFixtureBackground.test.ts +50 -0
- package/src/captureFlightPreset.test.ts +10 -5
- package/src/captureHostProvenance.test.ts +65 -0
- package/src/captureServer.test.ts +8 -0
- package/src/captureTimeout.test.ts +11 -11
- package/src/captureValidation.test.ts +379 -27
- package/src/captureWorkflow.test.ts +31 -1
- package/src/functionalParityConfounds.test.ts +114 -0
- package/src/functionalScene3Ds.test.ts +26 -1
- package/src/functionalVerify.test.ts +10 -4
- package/dist/referenceCapture.d.ts +0 -31
- package/dist/referenceCapture.d.ts.map +0 -1
- package/dist/referenceCapture.js +0 -141
- package/dist/referenceCapture.js.map +0 -1
- package/src/referenceCapture.test.ts +0 -81
package/dist/baselineStore.d.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import type { CaptureBaselineProvenance, CaptureBaselineProvenanceField, CaptureColumnBaseline } from '@flighthq/types/contract';
|
|
2
|
-
export type BaselineField = 'fingerprint' | '
|
|
3
|
-
export type CaptureBaselineEvidence = Readonly<CaptureColumnBaseline
|
|
2
|
+
export type BaselineField = 'fingerprint' | 'sha256';
|
|
3
|
+
export type CaptureBaselineEvidence = Readonly<Omit<CaptureColumnBaseline, 'sourceHash'>> & Required<Pick<CaptureColumnBaseline, 'fingerprint' | 'sha256'>>;
|
|
4
4
|
export declare function baselinePath(root: string, subject: string, name: string): string;
|
|
5
5
|
export declare function getBaselineField(root: string, subject: string, name: string, column: string, field: BaselineField): string | null;
|
|
6
|
+
/**
|
|
7
|
+
* The deprecated source-only fingerprint record, or null. This is deliberately read-only and separate
|
|
8
|
+
* from BaselineField so no generic accessor can turn the legacy field back into a writable API.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getBaselineLegacyFingerprintSourceHash(root: string, subject: string, name: string, column: string): string | null;
|
|
6
11
|
export declare function getBaselineProvenance(root: string, subject: string, name: string, column: string, field: CaptureBaselineProvenanceField): CaptureBaselineProvenance | null;
|
|
7
12
|
/**
|
|
8
13
|
* Replaces one column's captured evidence in a single read/write transaction. Fingerprint and exact
|
|
9
14
|
* screenshot hash are required together so the store cannot attribute two independent capture passes to
|
|
10
|
-
* one record. Optional
|
|
11
|
-
*
|
|
15
|
+
* one record. Optional provenance is copied from the same value rather than preserved from an older
|
|
16
|
+
* column; the deprecated source-only field has no writer here.
|
|
12
17
|
*/
|
|
13
18
|
export declare function setBaselineCaptureEvidence(root: string, subject: string, name: string, column: string, evidence: CaptureBaselineEvidence): void;
|
|
14
19
|
export declare function setBaselineField(root: string, subject: string, name: string, column: string, field: BaselineField, value: string, provenance?: Readonly<CaptureBaselineProvenance>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baselineStore.d.ts","sourceRoot":"","sources":["../src/baselineStore.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAEV,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAIlC,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"baselineStore.d.ts","sourceRoot":"","sources":["../src/baselineStore.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAEV,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAIlC,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC,GACvF,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC;AASlE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhF;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,MAAM,GAAG,IAAI,CAEf;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAEf;AAID,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,8BAA8B,GACpC,yBAAyB,GAAG,IAAI,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,uBAAuB,GAChC,IAAI,CAgBN;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC/C,IAAI,CA0BN;AAID,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,8BAA8B,EACrC,UAAU,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC9C,IAAI,CAaN"}
|
package/dist/baselineStore.js
CHANGED
|
@@ -24,6 +24,13 @@ export function baselinePath(root, subject, name) {
|
|
|
24
24
|
export function getBaselineField(root, subject, name, column, field) {
|
|
25
25
|
return getCaptureBaselineField(readBaseline(baselinePath(root, subject, name)), column, field);
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* The deprecated source-only fingerprint record, or null. This is deliberately read-only and separate
|
|
29
|
+
* from BaselineField so no generic accessor can turn the legacy field back into a writable API.
|
|
30
|
+
*/
|
|
31
|
+
export function getBaselineLegacyFingerprintSourceHash(root, subject, name, column) {
|
|
32
|
+
return readBaseline(baselinePath(root, subject, name))[column]?.sourceHash ?? null;
|
|
33
|
+
}
|
|
27
34
|
// What produced ONE of a column's committed values — `field` names which — or null when that value
|
|
28
35
|
// predates provenance recording. Reads as UNKNOWN, never as agreement.
|
|
29
36
|
export function getBaselineProvenance(root, subject, name, column, field) {
|
|
@@ -32,8 +39,8 @@ export function getBaselineProvenance(root, subject, name, column, field) {
|
|
|
32
39
|
/**
|
|
33
40
|
* Replaces one column's captured evidence in a single read/write transaction. Fingerprint and exact
|
|
34
41
|
* screenshot hash are required together so the store cannot attribute two independent capture passes to
|
|
35
|
-
* one record. Optional
|
|
36
|
-
*
|
|
42
|
+
* one record. Optional provenance is copied from the same value rather than preserved from an older
|
|
43
|
+
* column; the deprecated source-only field has no writer here.
|
|
37
44
|
*/
|
|
38
45
|
export function setBaselineCaptureEvidence(root, subject, name, column, evidence) {
|
|
39
46
|
if (typeof evidence.fingerprint !== 'string' || typeof evidence.sha256 !== 'string') {
|
|
@@ -45,6 +52,9 @@ export function setBaselineCaptureEvidence(root, subject, name, column, evidence
|
|
|
45
52
|
const path = baselinePath(root, subject, name);
|
|
46
53
|
const data = readBaseline(path);
|
|
47
54
|
data[column] = { ...evidence };
|
|
55
|
+
// This operation replaces the fingerprint, so the legacy source-only record can no longer describe
|
|
56
|
+
// it. It is never deleted corpus-wide: cold columns retain their true partial evidence until recaptured.
|
|
57
|
+
delete data[column].sourceHash;
|
|
48
58
|
writeBaseline(path, data);
|
|
49
59
|
}
|
|
50
60
|
export function setBaselineField(root, subject, name, column, field, value, provenance) {
|
|
@@ -55,6 +65,11 @@ export function setBaselineField(root, subject, name, column, field, value, prov
|
|
|
55
65
|
assertMatchingProvenance(subject, name, column, field === 'fingerprint' ? provenance : getCaptureBaselineProvenance(data, column, 'fingerprint'), field === 'sha256' ? provenance : getCaptureBaselineProvenance(data, column, 'sha256'));
|
|
56
66
|
}
|
|
57
67
|
setCaptureBaselineField(data, column, field, value);
|
|
68
|
+
// A new fingerprint can never inherit a source hash recorded for the value it replaces. Normal
|
|
69
|
+
// baseline-writing callers always provide full provenance; this also keeps a lower-level unstamped
|
|
70
|
+
// write honest instead of leaving a now-false partial record behind.
|
|
71
|
+
if (field === 'fingerprint')
|
|
72
|
+
delete data[column]?.sourceHash;
|
|
58
73
|
if (field === 'fingerprint' || field === 'sha256') {
|
|
59
74
|
if (provenance === undefined) {
|
|
60
75
|
clearCaptureBaselineProvenance(data, column, field);
|
|
@@ -72,6 +87,8 @@ export function setBaselineProvenance(root, subject, name, column, field, proven
|
|
|
72
87
|
const data = readBaseline(path);
|
|
73
88
|
assertMatchingProvenance(subject, name, column, field === 'fingerprint' ? provenance : getCaptureBaselineProvenance(data, column, 'fingerprint'), field === 'sha256' ? provenance : getCaptureBaselineProvenance(data, column, 'sha256'));
|
|
74
89
|
setCaptureBaselineProvenance(data, column, field, provenance);
|
|
90
|
+
if (field === 'fingerprint')
|
|
91
|
+
delete data[column]?.sourceHash;
|
|
75
92
|
writeBaseline(path, data);
|
|
76
93
|
}
|
|
77
94
|
function assertEvidenceFieldSanity(subject, name, column, field, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baselineStore.js","sourceRoot":"","sources":["../src/baselineStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"baselineStore.js","sourceRoot":"","sources":["../src/baselineStore.ts"],"names":[],"mappings":"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"}
|
package/dist/bin.js
CHANGED
|
@@ -8,6 +8,7 @@ import { existsSync } from 'node:fs';
|
|
|
8
8
|
import { resolve } from 'node:path';
|
|
9
9
|
import { readCaptureBatchManifest } from './captureBatchManifest.js';
|
|
10
10
|
import { runCaptureBenchmark } from './captureBenchmark.js';
|
|
11
|
+
import { CAPTURE_CLI_COMMANDS, resolveCaptureCliReportPath, validateCaptureCliOptions } from './captureCliOptions.js';
|
|
11
12
|
import { discoverEntries } from './captureEntries.js';
|
|
12
13
|
import { captureUrl } from './captureEntry.js';
|
|
13
14
|
import { getFlightCaptureValidationPreset } from './captureFlightPreset.js';
|
|
@@ -18,7 +19,7 @@ import { runCaptureSuite } from './captureSuite.js';
|
|
|
18
19
|
import { resolveCaptureTimeoutMs, setCaptureTimeoutMs } from './captureTimeout.js';
|
|
19
20
|
import { runCaptureValidation } from './captureValidation.js';
|
|
20
21
|
import { resolveCaptureWorkerCount } from './captureWorkerCount.js';
|
|
21
|
-
import { runCaptureBatch } from './captureWorkflow.js';
|
|
22
|
+
import { runCaptureBatch, runCaptureWorkflow } from './captureWorkflow.js';
|
|
22
23
|
const USAGE = `usage:
|
|
23
24
|
tool-capture observe <url> [--out <dir>] [--wait <ms>] [--frames <n>] [--retries <n>]
|
|
24
25
|
tool-capture capture [--manifest <file>] (--url <url> | --dir <built-dir>) [options]
|
|
@@ -30,7 +31,7 @@ const USAGE = `usage:
|
|
|
30
31
|
tool-capture batch [--config <file>] [--only <subject>] [--subjects-parallel <n>] [options]
|
|
31
32
|
|
|
32
33
|
capture options:
|
|
33
|
-
--filter <name> --renderer <ids> --out <dir> --wait <ms> --frames <n>
|
|
34
|
+
--filter <substring> --filter-exact <name> --renderer <ids> --out <dir> --wait <ms> --frames <n>
|
|
34
35
|
--parallel <n> --sequential --dev --build --update-baseline --fail-on-changed
|
|
35
36
|
--fail-on-error --verify --no-verify --observe --retries <n> --capture-timeout <ms>
|
|
36
37
|
|
|
@@ -42,7 +43,12 @@ validation options:
|
|
|
42
43
|
|
|
43
44
|
FLIGHT_CAPTURE_WORKER_COUNT pins worker concurrency when --parallel is omitted.
|
|
44
45
|
FLIGHT_CAPTURE_TIMEOUT_MS pins the per-wait budget (page load, frame poll, verification) when
|
|
45
|
-
--capture-timeout is omitted; default
|
|
46
|
+
--capture-timeout is omitted; default 45000. Evidence is one contended SwiftShader host: 15000
|
|
47
|
+
timed out in two full-suite runs and 45000 cleared the same suite. The intermediate cliff and other
|
|
48
|
+
hosts are unmeasured; override this budget when host evidence requires it.
|
|
49
|
+
The measured direct-timeout tail is four cells: env-ibl/webgpu (both 15000ms runs),
|
|
50
|
+
env-skybox/webgpu and material-blend-modes/webgl (first run), effect-chain/webgpu (second run).
|
|
51
|
+
Three same-scene siblings were healthy and merely withheld; do not count them as timeouts.
|
|
46
52
|
|
|
47
53
|
benchmark options:
|
|
48
54
|
--warmup <n> --iterations <n> --samples <n> --sample-duration <ms> --benchmark-reference <renderer>
|
|
@@ -53,51 +59,6 @@ batch options:
|
|
|
53
59
|
|
|
54
60
|
Manifest: { "subject": "app", "entries": [{ "name": "home", "renderers": ["webgl"],
|
|
55
61
|
"routes": { "webgl": "pages/home/" } }] }`;
|
|
56
|
-
const CAPTURE_CLI_COMMANDS = new Set(['batch', 'benchmark', 'capture', 'observe', 'validate']);
|
|
57
|
-
const CAPTURE_CLI_OPTIONS = new Set([
|
|
58
|
-
'benchmark-reference',
|
|
59
|
-
'build',
|
|
60
|
-
'capture-timeout',
|
|
61
|
-
'config',
|
|
62
|
-
'dev',
|
|
63
|
-
'dir',
|
|
64
|
-
'fail-on-changed',
|
|
65
|
-
'fail-on-error',
|
|
66
|
-
'filter',
|
|
67
|
-
'frames',
|
|
68
|
-
'iterations',
|
|
69
|
-
'manifest',
|
|
70
|
-
'no-parity',
|
|
71
|
-
'no-regression',
|
|
72
|
-
'no-verify',
|
|
73
|
-
'observe',
|
|
74
|
-
'only',
|
|
75
|
-
'out',
|
|
76
|
-
'parallel',
|
|
77
|
-
'parity-tolerance',
|
|
78
|
-
'performance-tolerance',
|
|
79
|
-
'regression-tolerance',
|
|
80
|
-
'renderer',
|
|
81
|
-
'report',
|
|
82
|
-
'retries',
|
|
83
|
-
'root',
|
|
84
|
-
'sample-duration',
|
|
85
|
-
'samples',
|
|
86
|
-
'sequential',
|
|
87
|
-
'stability-epsilon',
|
|
88
|
-
'stability-tolerance',
|
|
89
|
-
'subject',
|
|
90
|
-
'subjects-parallel',
|
|
91
|
-
'tool',
|
|
92
|
-
'update-baseline',
|
|
93
|
-
'update-benchmarks',
|
|
94
|
-
'update-coverage',
|
|
95
|
-
'update-fingerprints',
|
|
96
|
-
'url',
|
|
97
|
-
'verify',
|
|
98
|
-
'wait',
|
|
99
|
-
'warmup',
|
|
100
|
-
]);
|
|
101
62
|
function flag(argv, key) {
|
|
102
63
|
const equals = argv.find((arg) => arg.startsWith(`--${key}=`));
|
|
103
64
|
if (equals !== undefined)
|
|
@@ -176,13 +137,23 @@ async function capture(argv) {
|
|
|
176
137
|
}
|
|
177
138
|
async function validate(argv) {
|
|
178
139
|
const { subject, entries, server, root, manifest } = await resolveCaptureCliSuite(argv);
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
140
|
+
const validation = validationOptions(argv, subject, manifest, root);
|
|
141
|
+
if (validation.updateFingerprints) {
|
|
142
|
+
const result = await runCaptureWorkflow({
|
|
143
|
+
subject,
|
|
144
|
+
entries,
|
|
145
|
+
server,
|
|
146
|
+
root,
|
|
147
|
+
capture: captureOptions(argv),
|
|
148
|
+
validation,
|
|
149
|
+
benchmark: false,
|
|
150
|
+
reportPath: resolveCaptureCliReportPath(root, flag(argv, 'out'), subject, 'workflow-report.json'),
|
|
151
|
+
});
|
|
152
|
+
if (result.aborted)
|
|
153
|
+
return 130;
|
|
154
|
+
return result.shouldFail ? 1 : 0;
|
|
155
|
+
}
|
|
156
|
+
const result = await runCaptureValidation({ ...validation, subject, entries, server, root });
|
|
186
157
|
if (result.aborted)
|
|
187
158
|
return 130;
|
|
188
159
|
return result.shouldFail ? 1 : 0;
|
|
@@ -190,7 +161,7 @@ async function validate(argv) {
|
|
|
190
161
|
async function benchmark(argv) {
|
|
191
162
|
const { subject, entries, server, root, manifest } = await resolveCaptureCliSuite(argv);
|
|
192
163
|
const result = await runCaptureBenchmark({
|
|
193
|
-
...benchmarkOptions(argv, manifest),
|
|
164
|
+
...benchmarkOptions(argv, manifest, root, subject),
|
|
194
165
|
subject,
|
|
195
166
|
entries,
|
|
196
167
|
server,
|
|
@@ -204,6 +175,7 @@ function captureOptions(argv) {
|
|
|
204
175
|
return {
|
|
205
176
|
outBase: flag(argv, 'out') ?? '.artifacts',
|
|
206
177
|
filter: flag(argv, 'filter'),
|
|
178
|
+
filterExact: flag(argv, 'filter-exact'),
|
|
207
179
|
rendererFilter: (flag(argv, 'renderer') ?? '').split(',').filter(Boolean),
|
|
208
180
|
extraWait: parseNonNegativeInteger(flag(argv, 'wait'), 0),
|
|
209
181
|
captureFrames: parseNonNegativeInteger(frames?.split(',')[0], 0),
|
|
@@ -217,21 +189,23 @@ function captureOptions(argv) {
|
|
|
217
189
|
maxRetries: parseNonNegativeInteger(flag(argv, 'retries'), observe ? 2 : 1),
|
|
218
190
|
};
|
|
219
191
|
}
|
|
220
|
-
function validationOptions(argv, subject, manifest) {
|
|
192
|
+
function validationOptions(argv, subject, manifest, root) {
|
|
221
193
|
const preset = getFlightCaptureValidationPreset(subject);
|
|
222
194
|
const updateCoverage = hasFlag(argv, 'update-coverage');
|
|
223
195
|
const filter = flag(argv, 'filter');
|
|
196
|
+
const filterExact = flag(argv, 'filter-exact');
|
|
224
197
|
const rendererFilter = (flag(argv, 'renderer') ?? '').split(',').filter(Boolean);
|
|
225
198
|
// ★ The same guard scripts/reachability.ts puts on its baseline: an entry-filtered run has seen only
|
|
226
199
|
// part of the subject, so accepting its coverage as the pin would silently retire every entry outside
|
|
227
200
|
// the filter — the erosion this manifest exists to catch, performed by the tool itself.
|
|
228
201
|
// `--renderer` needs no such refusal: the regression tier is renderer-scoped by definition, and a
|
|
229
202
|
// renderer-scoped update carries the pins it did not run forward instead of dropping them.
|
|
230
|
-
if (updateCoverage && filter !== undefined) {
|
|
203
|
+
if (updateCoverage && (filter !== undefined || filterExact !== undefined)) {
|
|
231
204
|
throw new Error('Capture baseline coverage manifest updates must be whole-subject — drop --filter');
|
|
232
205
|
}
|
|
233
206
|
return {
|
|
234
207
|
filter,
|
|
208
|
+
filterExact,
|
|
235
209
|
rendererFilter,
|
|
236
210
|
captureFrames: Math.max(1, parseNonNegativeInteger(flag(argv, 'frames'), 1)),
|
|
237
211
|
report: hasFlag(argv, 'report'),
|
|
@@ -242,14 +216,16 @@ function validationOptions(argv, subject, manifest) {
|
|
|
242
216
|
stabilityEpsilon: parseNumber(flag(argv, 'stability-epsilon')),
|
|
243
217
|
regressionTolerance: parseNumber(flag(argv, 'regression-tolerance')),
|
|
244
218
|
parityTolerance: parseNumber(flag(argv, 'parity-tolerance')),
|
|
219
|
+
maxRetries: parseNonNegativeInteger(flag(argv, 'retries'), 1),
|
|
245
220
|
sequential: hasFlag(argv, 'sequential'),
|
|
246
221
|
workerCount: captureWorkerCount(argv),
|
|
247
222
|
fingerprintSkip: manifest?.validation?.fingerprintSkip ?? (manifest === null ? preset.fingerprintSkip : []),
|
|
248
223
|
paritySkip: manifest?.validation?.paritySkip ?? (manifest === null ? preset.paritySkip : {}),
|
|
249
224
|
parityGroups: manifest?.validation?.parityGroups ?? (manifest === null ? preset.parityGroups : undefined),
|
|
225
|
+
reportPath: resolveCaptureCliReportPath(root, flag(argv, 'out'), subject, 'validation-report.json'),
|
|
250
226
|
};
|
|
251
227
|
}
|
|
252
|
-
function benchmarkOptions(argv, manifest) {
|
|
228
|
+
function benchmarkOptions(argv, manifest, root, subject) {
|
|
253
229
|
const configured = manifest?.benchmark;
|
|
254
230
|
return {
|
|
255
231
|
filter: flag(argv, 'filter'),
|
|
@@ -263,6 +239,7 @@ function benchmarkOptions(argv, manifest) {
|
|
|
263
239
|
regressionTolerance: parseNumber(flag(argv, 'performance-tolerance')) ?? configured?.regressionTolerance,
|
|
264
240
|
stabilityTolerance: parseNumber(flag(argv, 'stability-tolerance')) ?? configured?.stabilityTolerance,
|
|
265
241
|
updateBaselines: hasFlag(argv, 'update-benchmarks'),
|
|
242
|
+
reportPath: resolveCaptureCliReportPath(root, flag(argv, 'out'), subject, 'benchmark-report.json'),
|
|
266
243
|
};
|
|
267
244
|
}
|
|
268
245
|
async function batch(argv) {
|
|
@@ -281,16 +258,25 @@ async function batch(argv) {
|
|
|
281
258
|
const subjectArgv = [...globalArgs, ...subject.args];
|
|
282
259
|
const suite = await resolveCaptureCliSuite(subjectArgv);
|
|
283
260
|
const operations = new Set(subject.operations ?? ['capture', 'validate']);
|
|
261
|
+
const validation = operations.has('validate')
|
|
262
|
+
? validationOptions(subjectArgv, suite.subject, suite.manifest, suite.root)
|
|
263
|
+
: false;
|
|
284
264
|
return {
|
|
285
265
|
subject: suite.subject,
|
|
286
266
|
entries: suite.entries,
|
|
287
267
|
server: suite.server,
|
|
288
268
|
root: suite.root,
|
|
289
|
-
|
|
290
|
-
validation:
|
|
291
|
-
|
|
269
|
+
// A fingerprint update is a capture operation even when a batch manifest used to call it
|
|
270
|
+
// validation-only: the verified capture is the only producer of the matching five-field
|
|
271
|
+
// provenance record. Read-only validation remains legitimately detached.
|
|
272
|
+
capture: operations.has('capture') || (validation !== false && validation.updateFingerprints)
|
|
273
|
+
? captureOptions(subjectArgv)
|
|
292
274
|
: false,
|
|
293
|
-
|
|
275
|
+
validation,
|
|
276
|
+
benchmark: operations.has('benchmark')
|
|
277
|
+
? benchmarkOptions(subjectArgv, suite.manifest, suite.root, suite.subject)
|
|
278
|
+
: false,
|
|
279
|
+
reportPath: resolveCaptureCliReportPath(suite.root, flag(subjectArgv, 'out'), suite.subject, 'workflow-report.json'),
|
|
294
280
|
};
|
|
295
281
|
},
|
|
296
282
|
}));
|
|
@@ -299,7 +285,7 @@ async function batch(argv) {
|
|
|
299
285
|
const result = await runCaptureBatch({
|
|
300
286
|
subjects,
|
|
301
287
|
subjectWorkerCount: Math.max(1, parseNonNegativeInteger(flag(argv, 'subjects-parallel'), 1)),
|
|
302
|
-
reportPath: resolve(root, '.artifacts', 'capture-batch-report.json'),
|
|
288
|
+
reportPath: resolve(root, flag(argv, 'out') ?? '.artifacts', 'capture-batch-report.json'),
|
|
303
289
|
});
|
|
304
290
|
if (result.aborted)
|
|
305
291
|
return 130;
|
|
@@ -307,31 +293,19 @@ async function batch(argv) {
|
|
|
307
293
|
}
|
|
308
294
|
async function main() {
|
|
309
295
|
const [command, ...argv] = process.argv.slice(2);
|
|
310
|
-
if (command === undefined || !CAPTURE_CLI_COMMANDS.
|
|
296
|
+
if (command === undefined || !CAPTURE_CLI_COMMANDS.includes(command)) {
|
|
311
297
|
console.error(USAGE);
|
|
312
298
|
process.exit(2);
|
|
313
299
|
}
|
|
314
|
-
|
|
300
|
+
const captureCommand = command;
|
|
301
|
+
validateCaptureCliOptions(captureCommand, argv);
|
|
315
302
|
// Pinned once for the process rather than threaded through every option bag: the budget governs
|
|
316
303
|
// waits in the capture core, the validation loader and the stall reason alike, and those are reached
|
|
317
304
|
// from three different call shapes. One resolution point is also what keeps `--capture-timeout` and
|
|
318
305
|
// FLIGHT_CAPTURE_TIMEOUT_MS from being able to mean different things in different waits.
|
|
319
306
|
setCaptureTimeoutMs(resolveCaptureTimeoutMs(flag(argv, 'capture-timeout'), process.env['FLIGHT_CAPTURE_TIMEOUT_MS']));
|
|
320
|
-
if (command === 'observe')
|
|
321
|
-
|
|
322
|
-
if (url === undefined || url.startsWith('--'))
|
|
323
|
-
throw new Error(`observe requires a <url>\n${USAGE}`);
|
|
324
|
-
const outDir = resolve(flag(argv, 'out') ?? './capture');
|
|
325
|
-
const diagnostics = await captureUrl(url, {
|
|
326
|
-
outDir,
|
|
327
|
-
wait: parseNonNegativeInteger(flag(argv, 'wait'), 0),
|
|
328
|
-
captureFrames: parseNonNegativeInteger(flag(argv, 'frames'), 1) || 1,
|
|
329
|
-
maxRetries: parseNonNegativeInteger(flag(argv, 'retries'), 2),
|
|
330
|
-
});
|
|
331
|
-
console.log(`captured → ${resolve(outDir, 'screenshot.png')}`);
|
|
332
|
-
console.log(`observe ${JSON.stringify(diagnostics)}`);
|
|
333
|
-
process.exit(diagnostics.blank || !diagnostics.usable ? 1 : 0);
|
|
334
|
-
}
|
|
307
|
+
if (command === 'observe')
|
|
308
|
+
process.exit(await observe(argv));
|
|
335
309
|
if (command === 'capture')
|
|
336
310
|
process.exit(await capture(argv));
|
|
337
311
|
if (command === 'validate')
|
|
@@ -341,6 +315,21 @@ async function main() {
|
|
|
341
315
|
if (command === 'batch')
|
|
342
316
|
process.exit(await batch(argv));
|
|
343
317
|
}
|
|
318
|
+
async function observe(argv) {
|
|
319
|
+
const url = argv[0];
|
|
320
|
+
if (url === undefined || url.startsWith('--'))
|
|
321
|
+
throw new Error(`observe requires a <url>\n${USAGE}`);
|
|
322
|
+
const outDir = resolve(flag(argv, 'out') ?? './capture');
|
|
323
|
+
const diagnostics = await captureUrl(url, {
|
|
324
|
+
outDir,
|
|
325
|
+
wait: parseNonNegativeInteger(flag(argv, 'wait'), 0),
|
|
326
|
+
captureFrames: parseNonNegativeInteger(flag(argv, 'frames'), 1) || 1,
|
|
327
|
+
maxRetries: parseNonNegativeInteger(flag(argv, 'retries'), 2),
|
|
328
|
+
});
|
|
329
|
+
console.log(`captured → ${resolve(outDir, 'screenshot.png')}`);
|
|
330
|
+
console.log(`observe ${JSON.stringify(diagnostics)}`);
|
|
331
|
+
return diagnostics.blank || !diagnostics.usable ? 1 : 0;
|
|
332
|
+
}
|
|
344
333
|
function captureWorkerCount(argv) {
|
|
345
334
|
// The resolver's four-worker EXPEDIENT keeps today's capture legs usable under both CPU starvation
|
|
346
335
|
// and workspace-mount descriptor bursts; available parallelism, not four itself, is the sizing rule.
|
|
@@ -370,16 +359,6 @@ function removeBatchOptions(argv) {
|
|
|
370
359
|
}
|
|
371
360
|
return result;
|
|
372
361
|
}
|
|
373
|
-
function validateCaptureCliOptions(argv) {
|
|
374
|
-
for (const argument of argv) {
|
|
375
|
-
if (!argument.startsWith('--'))
|
|
376
|
-
continue;
|
|
377
|
-
const equalsIndex = argument.indexOf('=');
|
|
378
|
-
const name = argument.slice(2, equalsIndex < 0 ? undefined : equalsIndex);
|
|
379
|
-
if (!CAPTURE_CLI_OPTIONS.has(name))
|
|
380
|
-
throw new Error(`unknown option --${name}`);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
362
|
main().catch((err) => {
|
|
384
363
|
if (isBrowserClosedError(err))
|
|
385
364
|
process.exit(130);
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The kinds of evidence a capture target can carry. Each is independently losable.
|
|
3
|
+
*
|
|
4
|
+
* ★ `referenceImage` IS NOT LOCALLY OBSERVABLE, AND THAT ASYMMETRY IS DELIBERATE. The other three are
|
|
5
|
+
* produced by a capture run and can be seen on disk after it. A `referenceImage` is a blessed full-
|
|
6
|
+
* resolution PNG living in a `flight-reference-images` release, joined in through `scripts/reference-image-lock.json`
|
|
7
|
+
* (agents/render-reference-image-repository.md §5) — no local run can confirm or deny one. So `scripts/capture-
|
|
8
|
+
* evidence.ts` deliberately does NOT pass it in `observedKinds`, which makes `writeCaptureBaselineCoverage-
|
|
9
|
+
* Manifest` carry every `referenceImage` pin forward untouched on every `--update`.
|
|
10
|
+
* That looks like an omission and is the opposite: without it, the routine acceptance command would
|
|
11
|
+
* retire the entire tier's requirements simply because it could not see them, which is precisely the
|
|
12
|
+
* "make CI green by deleting the thing CI was meant to require" failure §5 exists to prevent.
|
|
13
|
+
*
|
|
14
|
+
* ★ NOT NAMED `sceneAssertion`. `sceneAssertion` already means the scene's in-page `assertRender`
|
|
15
|
+
* mechanism in this very union. Reusing it would let a static scan finding an `assertRender` export be
|
|
16
|
+
* mistaken for proof that a blessed reference image exists — two different claims about two different
|
|
17
|
+
* artifacts.
|
|
18
|
+
*/
|
|
19
|
+
export type CaptureBaselineEvidenceKind = 'fingerprint' | 'referenceImage' | 'sceneAssertion' | 'screenshot';
|
|
3
20
|
export interface CaptureBaselineCoverageManifest {
|
|
4
|
-
schemaVersion:
|
|
21
|
+
schemaVersion: 3;
|
|
5
22
|
/**
|
|
6
23
|
* Per subject (`functional`, `examples`): each `entry/renderer` identity mapped to the sorted evidence
|
|
7
24
|
* kinds it carries. A target with no evidence at all is absent rather than mapped to an empty list.
|
|
@@ -16,7 +33,7 @@ export interface CaptureBaselineCoverageDiff {
|
|
|
16
33
|
/** Identities the manifest records that this run never visited. Only meaningful whole-repo. */
|
|
17
34
|
absent: string[];
|
|
18
35
|
}
|
|
19
|
-
export declare const CAPTURE_BASELINE_COVERAGE_MANIFEST_VERSION =
|
|
36
|
+
export declare const CAPTURE_BASELINE_COVERAGE_MANIFEST_VERSION = 3;
|
|
20
37
|
export declare const CAPTURE_BASELINE_EVIDENCE_KINDS: readonly CaptureBaselineEvidenceKind[];
|
|
21
38
|
/** Where the committed pin lives — one file, keyed by subject, beside the reachability baseline. */
|
|
22
39
|
export declare function captureBaselineCoverageManifestPath(root: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captureBaselineCoverageManifest.d.ts","sourceRoot":"","sources":["../src/captureBaselineCoverageManifest.ts"],"names":[],"mappings":"AAqCA
|
|
1
|
+
{"version":3,"file":"captureBaselineCoverageManifest.d.ts","sourceRoot":"","sources":["../src/captureBaselineCoverageManifest.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,2BAA2B,GAAG,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAE7G,MAAM,WAAW,+BAA+B;IAC9C,aAAa,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,2BAA2B;IAC1C,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qFAAqF;IACrF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+FAA+F;IAC/F,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,eAAO,MAAM,0CAA0C,IAAI,CAAC;AAE5D,eAAO,MAAM,+BAA+B,EAAE,SAAS,2BAA2B,EAKjF,CAAC;AAEF,oGAAoG;AACpG,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,2BAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,GACnG,+BAA+B,CAcjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,QAAQ,CAAC,+BAA+B,CAAC,EACnD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,2BAA2B,EAAE,CAAC,CAAC,EACzE,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,QAAQ,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;CAChD,CAAC,GACD,2BAA2B,CAiC7B;AAED,sDAAsD;AACtD,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7F;AAED,sGAAsG;AACtG,wBAAgB,qCAAqC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,GAAG,MAAM,CAEjH;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,QAAQ,CAAC,2BAA2B,CAAC,GAAG,OAAO,CAErG;AAED,mEAAmE;AACnE,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,QAAQ,CAAC,+BAA+B,CAAC,EACnD,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAKV;AAED,oGAAoG;AACpG,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,+BAA+B,CAoBjG;AAqCD;;;;;;;;;;GAUG;AACH,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,2BAA2B,EAAE,CAAC,CAAC,EACzE,eAAe,GAAE,SAAS,MAAM,EAAE,GAAG,IAAW,EAChD,UAAU,GAAE,SAAS,MAAM,EAAE,GAAG,IAAW,EAC3C,aAAa,GAAE,SAAS,2BAA2B,EAAE,GAAG,IAAW,GAClE,+BAA+B,CAuBjC"}
|
|
@@ -28,15 +28,16 @@
|
|
|
28
28
|
// satisfaction. That surfaced independently in three tiers over the SAME target set — a missing
|
|
29
29
|
// fingerprint skips the regression comparison, a missing `sha256` leaves `changed` null so
|
|
30
30
|
// `--fail-on-changed` cannot fire, and a missing (or misspelled) `assertRender` export silently runs no
|
|
31
|
-
//
|
|
31
|
+
// scene assertion. They are not three defects: they are three kinds of evidence about one row, and a target's
|
|
32
32
|
// evidence profile is ONE fact. Three parallel manifests would be three places for that fact to drift
|
|
33
33
|
// apart, so the kinds are COLUMNS on one row here, and a loss is named as `target#kind`.
|
|
34
34
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
35
35
|
import { join } from 'node:path';
|
|
36
|
-
export const CAPTURE_BASELINE_COVERAGE_MANIFEST_VERSION =
|
|
36
|
+
export const CAPTURE_BASELINE_COVERAGE_MANIFEST_VERSION = 3;
|
|
37
37
|
export const CAPTURE_BASELINE_EVIDENCE_KINDS = [
|
|
38
38
|
'fingerprint',
|
|
39
|
-
'
|
|
39
|
+
'referenceImage',
|
|
40
|
+
'sceneAssertion',
|
|
40
41
|
'screenshot',
|
|
41
42
|
];
|
|
42
43
|
/** Where the committed pin lives — one file, keyed by subject, beside the reachability baseline. */
|
|
@@ -135,12 +136,50 @@ export function readCaptureBaselineCoverageManifest(root) {
|
|
|
135
136
|
// Schema 1 pinned a bare identity list, and every identity in it meant "has a comparable fingerprint"
|
|
136
137
|
// because that was the only evidence kind the manifest knew about. Read it as exactly that claim
|
|
137
138
|
// rather than as a target with all three, which would manufacture pins nobody ever accepted.
|
|
138
|
-
|
|
139
|
+
const asRecord = Array.isArray(value)
|
|
139
140
|
? Object.fromEntries(value.map((identity) => [identity, ['fingerprint']]))
|
|
140
141
|
: value;
|
|
142
|
+
// Schema 2 used 'oracle' for the scene-assertion evidence kind; schema 3 renamed it.
|
|
143
|
+
for (const [identity, kinds] of Object.entries(asRecord)) {
|
|
144
|
+
asRecord[identity] = kinds.map((k) => (k === 'oracle' ? 'sceneAssertion' : k));
|
|
145
|
+
}
|
|
146
|
+
migrated[subject] = asRecord;
|
|
141
147
|
}
|
|
142
148
|
return createCaptureBaselineCoverageManifest(migrated);
|
|
143
149
|
}
|
|
150
|
+
// Matches the committed manifest's formatter-owned shape: structural objects are indented, while each
|
|
151
|
+
// target's short evidence-kind array stays on the same line as its identity. Raw pretty JSON expands every
|
|
152
|
+
// array and turns one exact-target acceptance into a whole-file formatting diff, obscuring the decision the
|
|
153
|
+
// acceptance command was designed to make reviewable.
|
|
154
|
+
function formatCaptureBaselineCoverageManifest(manifest) {
|
|
155
|
+
const subjects = Object.entries(manifest.subjects);
|
|
156
|
+
if (subjects.length === 0)
|
|
157
|
+
return `{
|
|
158
|
+
"schemaVersion": ${manifest.schemaVersion},
|
|
159
|
+
"subjects": {}
|
|
160
|
+
}
|
|
161
|
+
`;
|
|
162
|
+
const lines = ['{', ` "schemaVersion": ${manifest.schemaVersion},`, ' "subjects": {'];
|
|
163
|
+
for (let subjectIndex = 0; subjectIndex < subjects.length; subjectIndex++) {
|
|
164
|
+
const [subject, targets] = subjects[subjectIndex];
|
|
165
|
+
const identities = Object.entries(targets);
|
|
166
|
+
const subjectSuffix = subjectIndex + 1 === subjects.length ? '' : ',';
|
|
167
|
+
if (identities.length === 0) {
|
|
168
|
+
lines.push(` ${JSON.stringify(subject)}: {}${subjectSuffix}`);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
lines.push(` ${JSON.stringify(subject)}: {`);
|
|
172
|
+
for (let identityIndex = 0; identityIndex < identities.length; identityIndex++) {
|
|
173
|
+
const [identity, kinds] = identities[identityIndex];
|
|
174
|
+
const identitySuffix = identityIndex + 1 === identities.length ? '' : ',';
|
|
175
|
+
const serializedKinds = kinds.map((kind) => JSON.stringify(kind)).join(', ');
|
|
176
|
+
lines.push(` ${JSON.stringify(identity)}: [${serializedKinds}]${identitySuffix}`);
|
|
177
|
+
}
|
|
178
|
+
lines.push(` }${subjectSuffix}`);
|
|
179
|
+
}
|
|
180
|
+
lines.push(' }', '}', '');
|
|
181
|
+
return lines.join('\n');
|
|
182
|
+
}
|
|
144
183
|
/**
|
|
145
184
|
* Rewrites ONE subject's pin, preserving every other subject — an update run covers the subject it ran and
|
|
146
185
|
* knows nothing about the other, so it must not speak for it.
|
|
@@ -172,7 +211,7 @@ export function writeCaptureBaselineCoverageManifest(root, subject, covered, act
|
|
|
172
211
|
merged[identity] = [...new Set([...(merged[identity] ?? []), ...kinds])];
|
|
173
212
|
}
|
|
174
213
|
const manifest = createCaptureBaselineCoverageManifest({ ...existing.subjects, [subject]: merged });
|
|
175
|
-
writeFileSync(captureBaselineCoverageManifestPath(root),
|
|
214
|
+
writeFileSync(captureBaselineCoverageManifestPath(root), formatCaptureBaselineCoverageManifest(manifest));
|
|
176
215
|
return manifest;
|
|
177
216
|
}
|
|
178
217
|
//# sourceMappingURL=captureBaselineCoverageManifest.js.map
|