vdelta 0.1.0 → 0.2.0
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/README.md +43 -7
- package/dist/adapters/vitest/recorder.js +11 -3
- package/dist/adapters/vitest/recorder.js.map +1 -1
- package/dist/adapters/vitest/reporter.js +13 -7
- package/dist/adapters/vitest/reporter.js.map +1 -1
- package/dist/canonical.js.map +1 -1
- package/dist/cli-io.d.ts +10 -0
- package/dist/cli-io.js +48 -0
- package/dist/cli-io.js.map +1 -0
- package/dist/cli.js +122 -31
- package/dist/cli.js.map +1 -1
- package/dist/compare.d.ts +21 -3
- package/dist/compare.js +128 -25
- package/dist/compare.js.map +1 -1
- package/dist/gate.d.ts +7 -1
- package/dist/gate.js +11 -6
- package/dist/gate.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/redact.js +4 -1
- package/dist/redact.js.map +1 -1
- package/dist/render.js +12 -2
- package/dist/render.js.map +1 -1
- package/dist/run.d.ts +6 -1
- package/dist/run.js +129 -15
- package/dist/run.js.map +1 -1
- package/dist/schema.d.ts +12 -0
- package/dist/schema.js +127 -19
- package/dist/schema.js.map +1 -1
- package/dist/store.d.ts +159 -5
- package/dist/store.js +353 -10
- package/dist/store.js.map +1 -1
- package/dist/tree-digest.js +51 -14
- package/dist/tree-digest.js.map +1 -1
- package/package.json +6 -3
- package/spec/veridelta-1.md +58 -4
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ another" — a verification delta can, and when two runs are not comparable it
|
|
|
18
18
|
- Runner support (MVP): **vitest v4** (native reporter, structured channel only)
|
|
19
19
|
- Zero runtime dependencies; Node ≥ 20
|
|
20
20
|
- Machine-verified against the [conformance suite](conformance/) —
|
|
21
|
-
|
|
21
|
+
41 fixtures covering the spec's invariants, adversarial inputs, and a
|
|
22
22
|
10-mutation cheating corpus with 100% detection recall
|
|
23
23
|
|
|
24
24
|
## Quickstart (5 minutes)
|
|
@@ -95,9 +95,18 @@ judges anything.
|
|
|
95
95
|
| `vdelta compare [<baseline> <current>] [--ref <git-ref>]` | Compare recorded runs (explicit ids, a git ref, or the previous comparable run) | 0 when the comparison ran (an `inconclusive` result is a successful comparison); 1 on operation failure |
|
|
96
96
|
| `vdelta show <run-id> [--test <id>\|--raw]` | Drill down into a run record | Retrieval success |
|
|
97
97
|
| `vdelta gate --ref <git-ref> [--policy report-only]` | Policy verdict for CI/agent loops | report-only: 0 when a report was produced; 2 otherwise |
|
|
98
|
+
| `vdelta gc [--max-count <n>] [--max-bytes <n>]` | Reclaim run records beyond the retention policy | 0 = reclaimed or no-op; 1 = failed |
|
|
98
99
|
|
|
99
100
|
Run ids may be abbreviated to any unambiguous prefix.
|
|
100
101
|
|
|
102
|
+
`vdelta run` also runs this retention policy automatically after recording
|
|
103
|
+
each run (a failure there only downgrades to a stderr diagnostic — it never
|
|
104
|
+
fails the run). The policy is bounded by count and/or total bytes, whichever
|
|
105
|
+
is hit first; the record `last` points to is always kept. Defaults are 100
|
|
106
|
+
runs / 64MiB, overridable via `VDELTA_GC_MAX_COUNT` / `VDELTA_GC_MAX_BYTES`
|
|
107
|
+
(positive integers; unset/invalid falls back to the default, `0` or
|
|
108
|
+
non-numeric disables that limit).
|
|
109
|
+
|
|
101
110
|
## What the report separates (and why)
|
|
102
111
|
|
|
103
112
|
Three axes, never collapsed into one:
|
|
@@ -126,9 +135,18 @@ consumers must treat unknown values as hard errors.
|
|
|
126
135
|
settings you *do* set (like `chaiConfig.truncateThreshold`) become part of
|
|
127
136
|
the measuring-instrument identity.
|
|
128
137
|
- Positional arguments after the vitest token are recorded as the run's
|
|
129
|
-
selector.
|
|
130
|
-
`--
|
|
131
|
-
|
|
138
|
+
selector. Known value-taking vitest flags (`--project`, `--config`/`-c`,
|
|
139
|
+
`--root`/`-r`, `--dir`, `--reporter`, `--outputFile`, `--pool`,
|
|
140
|
+
`--maxWorkers`, `--minWorkers`, `--environment`,
|
|
141
|
+
`--testNamePattern`/`-t`, `--testTimeout`, `--hookTimeout`,
|
|
142
|
+
`--teardownTimeout`, `--retry`, `--bail`, `--maxConcurrency`, `--shard`,
|
|
143
|
+
`--exclude`, `--mode`, `--workspace`) keep their space-separated value on
|
|
144
|
+
the canonical command side instead of leaking it into the selector; the
|
|
145
|
+
`--flag=value` and `--flag value` forms normalize to the same stream
|
|
146
|
+
key. Value-taking flags outside this list still have their
|
|
147
|
+
space-separated value read as a selector filter (the historical
|
|
148
|
+
behavior), which splits the stream and makes comparisons abstain rather
|
|
149
|
+
than false-green — for those, prefer the `--flag=value` form.
|
|
132
150
|
- Evidence digests are built from vitest's structured channel only
|
|
133
151
|
(exception type, message, structured expected/actual, operator, and
|
|
134
152
|
line-shift-stable relative positions). Durations, absolute paths/lines,
|
|
@@ -142,6 +160,22 @@ consumers must treat unknown values as hard errors.
|
|
|
142
160
|
or digested.
|
|
143
161
|
- The run store lives in `.veridelta/` (repo-local, self-gitignored,
|
|
144
162
|
content-addressed, immutable).
|
|
163
|
+
- veridelta is read-only with respect to the observed repository: the only
|
|
164
|
+
things it writes are its own `.veridelta/` store and throwaway files under
|
|
165
|
+
the OS temp directory. Tree digesting uses a private index
|
|
166
|
+
(`GIT_INDEX_FILE`) and a private object directory
|
|
167
|
+
(`GIT_OBJECT_DIRECTORY`, with the repo's real objects supplied read-only
|
|
168
|
+
via `GIT_ALTERNATE_OBJECT_DIRECTORIES`), so no loose objects are ever
|
|
169
|
+
added to your `.git` — recording works even when the object database is
|
|
170
|
+
not writable (e.g. sandboxed environments).
|
|
171
|
+
- **Breaking change**: recognizing known value-taking flags changes the
|
|
172
|
+
canonical command (and therefore the stream key) for invocations that
|
|
173
|
+
used the space-separated form. Runs recorded by a prior version with
|
|
174
|
+
such invocations no longer match the same stream as newly recorded
|
|
175
|
+
runs; the first comparison after upgrading abstains with
|
|
176
|
+
`baseline-missing` for those streams. This is expected — no record
|
|
177
|
+
rewrite or migration is performed — and comparisons recover on the next
|
|
178
|
+
run once two new-format records exist in the stream.
|
|
145
179
|
|
|
146
180
|
## Protocol
|
|
147
181
|
|
|
@@ -154,7 +188,7 @@ intended success mode.
|
|
|
154
188
|
|
|
155
189
|
```bash
|
|
156
190
|
npm test # unit + full conformance suite
|
|
157
|
-
npm run test:conformance # the
|
|
191
|
+
npm run test:conformance # the 41-fixture suite only
|
|
158
192
|
```
|
|
159
193
|
|
|
160
194
|
The suite is authored independently of this implementation (the fixture
|
|
@@ -163,8 +197,10 @@ author reads only the spec and the harness contract in
|
|
|
163
197
|
and mechanically verifies, among the spec's §13.2 classes: byte-identical
|
|
164
198
|
determinism of re-executed comparisons, 100% detection recall on the
|
|
165
199
|
cheating corpus, zero false green, fail-open degradation (INV-5),
|
|
166
|
-
record-integrity tampering detection (INV-10),
|
|
167
|
-
staleness (INV-11)
|
|
200
|
+
record-integrity tampering detection (INV-10), exact tree-digest
|
|
201
|
+
staleness (INV-11), and read-only object-database recording (tree
|
|
202
|
+
digesting never writes loose objects into the observed repository's
|
|
203
|
+
`.git`, even when it is not writable).
|
|
168
204
|
|
|
169
205
|
## License
|
|
170
206
|
|
|
@@ -160,7 +160,10 @@ function mapVerdict(t) {
|
|
|
160
160
|
return { verdict: 'skip', suppression: { marker: 'todo' } };
|
|
161
161
|
return {
|
|
162
162
|
verdict: 'skip',
|
|
163
|
-
suppression: {
|
|
163
|
+
suppression: {
|
|
164
|
+
marker: 'runtime',
|
|
165
|
+
...(t.note !== undefined ? { note: t.note } : {}),
|
|
166
|
+
},
|
|
164
167
|
};
|
|
165
168
|
case 'pending':
|
|
166
169
|
return { verdict: 'not_run' };
|
|
@@ -175,7 +178,10 @@ function buildFinding(t) {
|
|
|
175
178
|
...(e.operator !== undefined ? { operator: e.operator } : {}),
|
|
176
179
|
rel_offsets: relOffsets(t, e.frames),
|
|
177
180
|
}));
|
|
178
|
-
const consoleEntries = t.console.map((c) => ({
|
|
181
|
+
const consoleEntries = t.console.map((c) => ({
|
|
182
|
+
type: c.type,
|
|
183
|
+
content: redactText(c.content),
|
|
184
|
+
}));
|
|
179
185
|
return {
|
|
180
186
|
evidence_digest: canonicalDigest({ errors }),
|
|
181
187
|
structural_fingerprint: canonicalDigest({
|
|
@@ -201,7 +207,9 @@ function buildFinding(t) {
|
|
|
201
207
|
function relOffsets(t, frames) {
|
|
202
208
|
if (t.location_line === null)
|
|
203
209
|
return [];
|
|
204
|
-
return frames
|
|
210
|
+
return frames
|
|
211
|
+
.filter((f) => f.file === t.module_id)
|
|
212
|
+
.map((f) => f.line - t.location_line);
|
|
205
213
|
}
|
|
206
214
|
function fileDigest(path) {
|
|
207
215
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../../src/adapters/vitest/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../../src/adapters/vitest/recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* a project's vitest config (ambient recording, §4.2).
|
|
8
8
|
*/
|
|
9
9
|
import { writeFileSync } from 'node:fs';
|
|
10
|
-
import { CAPTURE_VERSION } from './capture.js';
|
|
10
|
+
import { CAPTURE_VERSION, } from './capture.js';
|
|
11
11
|
export default class VdeltaReporter {
|
|
12
12
|
ctx;
|
|
13
13
|
consoleByTask = new Map();
|
|
@@ -43,8 +43,7 @@ export default class VdeltaReporter {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
const config = this.ctx?.config;
|
|
46
|
-
const chaiConfig = config
|
|
47
|
-
?.chaiConfig;
|
|
46
|
+
const chaiConfig = config?.chaiConfig;
|
|
48
47
|
const capture = {
|
|
49
48
|
capture_version: CAPTURE_VERSION,
|
|
50
49
|
runner: 'vitest',
|
|
@@ -52,7 +51,8 @@ export default class VdeltaReporter {
|
|
|
52
51
|
reason,
|
|
53
52
|
unhandled_errors: unhandledErrors.length,
|
|
54
53
|
config: {
|
|
55
|
-
include_task_location: config
|
|
54
|
+
include_task_location: config
|
|
55
|
+
?.includeTaskLocation === true,
|
|
56
56
|
truncate_threshold: chaiConfig?.truncateThreshold ?? null,
|
|
57
57
|
},
|
|
58
58
|
tests,
|
|
@@ -67,12 +67,16 @@ export default class VdeltaReporter {
|
|
|
67
67
|
const err = e;
|
|
68
68
|
return {
|
|
69
69
|
name: typeof err.name === 'string' ? err.name : 'Error',
|
|
70
|
-
message: typeof err.message === 'string'
|
|
70
|
+
message: typeof err.message === 'string'
|
|
71
|
+
? err.message
|
|
72
|
+
: String(err.message ?? ''),
|
|
71
73
|
...(typeof err.expected === 'string' ? { expected: err.expected } : {}),
|
|
72
74
|
...(typeof err.actual === 'string' ? { actual: err.actual } : {}),
|
|
73
75
|
...(typeof err.operator === 'string' ? { operator: err.operator } : {}),
|
|
74
76
|
frames: (err.stacks ?? [])
|
|
75
|
-
.filter((f) => typeof f.file === 'string' &&
|
|
77
|
+
.filter((f) => typeof f.file === 'string' &&
|
|
78
|
+
typeof f.line === 'number' &&
|
|
79
|
+
typeof f.column === 'number')
|
|
76
80
|
.map((f) => ({ file: f.file, line: f.line, column: f.column })),
|
|
77
81
|
};
|
|
78
82
|
});
|
|
@@ -83,7 +87,9 @@ export default class VdeltaReporter {
|
|
|
83
87
|
state: result.state,
|
|
84
88
|
mode: tc.options.mode,
|
|
85
89
|
fails: tc.options.fails === true,
|
|
86
|
-
...(result.state === 'skipped' && result.note !== undefined
|
|
90
|
+
...(result.state === 'skipped' && result.note !== undefined
|
|
91
|
+
? { note: result.note }
|
|
92
|
+
: {}),
|
|
87
93
|
location_line: tc.location?.line ?? null,
|
|
88
94
|
errors,
|
|
89
95
|
console: this.consoleByTask.get(tc.id) ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/adapters/vitest/reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/adapters/vitest/reporter.ts"],"names":[],"mappings":"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"}
|
package/dist/canonical.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAY;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IACjC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QACjC,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,sBAAsB,
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAY;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IACjC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QACjC,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,sBAAsB,CAC9B,yBAAyB,IAAI,KAAK,KAAK,EAAE,CAC1C,CAAA;YACH,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,sBAAsB,CAAC,qBAAqB,IAAI,KAAK,KAAK,EAAE,CAAC,CAAA;YACzE,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9B,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;YACrG,CAAC;YACD,MAAM,MAAM,GAAG,KAAgC,CAAA;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iBAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;iBACtC,IAAI,EAAE,CAAA;YACT,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;QACzG,CAAC;QACD;YACE,MAAM,IAAI,sBAAsB,CAC9B,kBAAkB,OAAO,KAAK,OAAO,IAAI,EAAE,CAC5C,CAAA;IACL,CAAC;AACH,CAAC"}
|
package/dist/cli-io.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* flush-safe stream write helper (issue #12).
|
|
3
|
+
*
|
|
4
|
+
* When stdout is a pipe, Node buffers writes asynchronously; `process.exit`
|
|
5
|
+
* does not wait for libuv to flush that queue, so a large write can be
|
|
6
|
+
* truncated if the process exits right after calling `stream.write`. Every
|
|
7
|
+
* CLI exit path must `await writeAll(...)` before exiting so the callback
|
|
8
|
+
* (which fires only once the chunk has actually been written) has run.
|
|
9
|
+
*/
|
|
10
|
+
export declare function writeAll(stream: NodeJS.WritableStream, chunk: string | Uint8Array): Promise<void>;
|
package/dist/cli-io.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* flush-safe stream write helper (issue #12).
|
|
3
|
+
*
|
|
4
|
+
* When stdout is a pipe, Node buffers writes asynchronously; `process.exit`
|
|
5
|
+
* does not wait for libuv to flush that queue, so a large write can be
|
|
6
|
+
* truncated if the process exits right after calling `stream.write`. Every
|
|
7
|
+
* CLI exit path must `await writeAll(...)` before exiting so the callback
|
|
8
|
+
* (which fires only once the chunk has actually been written) has run.
|
|
9
|
+
*/
|
|
10
|
+
// Streams for which the persistent no-op 'error' listener below has already
|
|
11
|
+
// been registered. Without this guard, every writeAll() call would add
|
|
12
|
+
// another listener and never remove it, leaking listeners on long-lived
|
|
13
|
+
// streams such as process.stdout/process.stderr (MaxListenersExceededWarning
|
|
14
|
+
// on stderr would itself violate the "diagnostics are stderr-only" CLI
|
|
15
|
+
// contract).
|
|
16
|
+
const streamsWithErrorGuard = new WeakSet();
|
|
17
|
+
function ensureErrorGuard(stream) {
|
|
18
|
+
if (streamsWithErrorGuard.has(stream)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
streamsWithErrorGuard.add(stream);
|
|
22
|
+
// Prevent an unhandled 'error' event (e.g. EPIPE when the downstream
|
|
23
|
+
// reader closes the pipe) from crashing the process. Per INV-5, veridelta
|
|
24
|
+
// must never be worse than its absence, so a downstream pipe closing early
|
|
25
|
+
// must not itself crash the CLI. This listener only silences the event;
|
|
26
|
+
// the write callback below is what actually reports write failures.
|
|
27
|
+
stream.on('error', () => { });
|
|
28
|
+
}
|
|
29
|
+
export function writeAll(stream, chunk) {
|
|
30
|
+
if (chunk.length === 0) {
|
|
31
|
+
return Promise.resolve();
|
|
32
|
+
}
|
|
33
|
+
ensureErrorGuard(stream);
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
stream.write(chunk, (err) => {
|
|
36
|
+
// EPIPE (downstream reader closed the pipe) degrades to a silent
|
|
37
|
+
// no-op per INV-5. Any other write failure (e.g. ENOSPC on a
|
|
38
|
+
// redirected file) is a genuine failure to deliver the report/output
|
|
39
|
+
// and must propagate so the caller's exit code reflects it.
|
|
40
|
+
if (err && err.code !== 'EPIPE') {
|
|
41
|
+
reject(err);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
resolve();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=cli-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-io.js","sourceRoot":"","sources":["../src/cli-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,6EAA6E;AAC7E,uEAAuE;AACvE,aAAa;AACb,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAyB,CAAA;AAElE,SAAS,gBAAgB,CAAC,MAA6B;IACrD,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAM;IACR,CAAC;IACD,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,qEAAqE;IACrE,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,MAA6B,EAC7B,KAA0B;IAE1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IACD,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,iEAAiE;YACjE,6DAA6D;YAC7D,qEAAqE;YACrE,4DAA4D;YAC5D,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3D,MAAM,CAAC,GAAG,CAAC,CAAA;gBACX,OAAM;YACR,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { writeAll } from './cli-io.js';
|
|
2
5
|
/**
|
|
3
6
|
* vdelta CLI (spec §10). Exit-code contract:
|
|
4
7
|
* run — transparent child exit; INV-5 degrades to raw passthrough
|
|
@@ -8,18 +11,25 @@
|
|
|
8
11
|
* gate — report-only: 0 whenever a report is produced, 2 otherwise
|
|
9
12
|
* The report goes to stdout; vdelta diagnostics go to stderr only.
|
|
10
13
|
*/
|
|
11
|
-
import { buildComparisonReport, CompareOperationError } from './compare.js';
|
|
14
|
+
import { buildComparisonReport, CompareOperationError, } from './compare.js';
|
|
12
15
|
import { buildGateReport, GateOperationError } from './gate.js';
|
|
13
16
|
import { renderReport } from './render.js';
|
|
14
17
|
import { runAndRecord, VDELTA_VERSION } from './run.js';
|
|
15
|
-
import { RunStore, StoreCorruptError } from './store.js';
|
|
18
|
+
import { defaultGcPolicy, LockHeldError, RunStore, StoreCorruptError, } from './store.js';
|
|
16
19
|
import { gitRepoRoot, resolveRef } from './tree-digest.js';
|
|
17
|
-
|
|
20
|
+
class CliError extends Error {
|
|
21
|
+
code;
|
|
22
|
+
constructor(message, code) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.code = code;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function emit(report, format) {
|
|
18
28
|
if (format === 'json') {
|
|
19
|
-
process.stdout
|
|
29
|
+
await writeAll(process.stdout, `${JSON.stringify(report, null, 1)}\n`);
|
|
20
30
|
}
|
|
21
31
|
else {
|
|
22
|
-
process.stdout
|
|
32
|
+
await writeAll(process.stdout, renderReport(report));
|
|
23
33
|
}
|
|
24
34
|
}
|
|
25
35
|
function parseReportFlag(args) {
|
|
@@ -46,8 +56,7 @@ function parseReportFlag(args) {
|
|
|
46
56
|
return { format, rest };
|
|
47
57
|
}
|
|
48
58
|
function die(message, code = 1) {
|
|
49
|
-
|
|
50
|
-
process.exit(code);
|
|
59
|
+
throw new CliError(message, code);
|
|
51
60
|
}
|
|
52
61
|
async function requireStore() {
|
|
53
62
|
const worktree = await gitRepoRoot(process.cwd());
|
|
@@ -65,16 +74,16 @@ async function cmdRun(argv) {
|
|
|
65
74
|
die('no child command given');
|
|
66
75
|
const result = await runAndRecord(child, process.cwd());
|
|
67
76
|
for (const d of result.diagnostics)
|
|
68
|
-
process.stderr
|
|
77
|
+
await writeAll(process.stderr, `${d}\n`);
|
|
69
78
|
if (result.degraded || result.report === null) {
|
|
70
79
|
// INV-5 degraded path: verbatim raw passthrough, no report.
|
|
71
|
-
process.stdout
|
|
72
|
-
process.stderr
|
|
80
|
+
await writeAll(process.stdout, result.rawStdout);
|
|
81
|
+
await writeAll(process.stderr, result.rawStderr);
|
|
73
82
|
}
|
|
74
83
|
else {
|
|
75
|
-
emit(result.report, format);
|
|
84
|
+
await emit(result.report, format);
|
|
76
85
|
}
|
|
77
|
-
|
|
86
|
+
return result.exitCode;
|
|
78
87
|
}
|
|
79
88
|
async function cmdCompare(argv) {
|
|
80
89
|
const { format, rest } = parseReportFlag(argv);
|
|
@@ -105,8 +114,16 @@ async function cmdCompare(argv) {
|
|
|
105
114
|
const resolved = await resolveRef(worktree, ref);
|
|
106
115
|
if (resolved === null)
|
|
107
116
|
die(`cannot resolve ref: ${ref}`);
|
|
108
|
-
spec = {
|
|
109
|
-
|
|
117
|
+
spec = {
|
|
118
|
+
mode: 'git-ref',
|
|
119
|
+
ref,
|
|
120
|
+
commit: resolved.commit,
|
|
121
|
+
tree: resolved.tree,
|
|
122
|
+
};
|
|
123
|
+
currentId =
|
|
124
|
+
positional[0] !== undefined
|
|
125
|
+
? store.resolveRunId(positional[0])
|
|
126
|
+
: store.lastRunId();
|
|
110
127
|
}
|
|
111
128
|
else if (positional.length === 2) {
|
|
112
129
|
spec = { mode: 'explicit-run-id', runId: positional[0] };
|
|
@@ -121,8 +138,8 @@ async function cmdCompare(argv) {
|
|
|
121
138
|
}
|
|
122
139
|
if (currentId === null)
|
|
123
140
|
die('cannot resolve the current run');
|
|
124
|
-
emit(buildComparisonReport(store, currentId, spec), format);
|
|
125
|
-
|
|
141
|
+
await emit(buildComparisonReport(store, currentId, spec), format);
|
|
142
|
+
return 0;
|
|
126
143
|
}
|
|
127
144
|
catch (err) {
|
|
128
145
|
if (err instanceof CompareOperationError)
|
|
@@ -172,19 +189,19 @@ async function cmdShow(argv) {
|
|
|
172
189
|
throw err;
|
|
173
190
|
}
|
|
174
191
|
if (raw) {
|
|
175
|
-
process.stdout
|
|
176
|
-
process.stderr
|
|
177
|
-
|
|
192
|
+
await writeAll(process.stdout, record.recording.raw_stdout);
|
|
193
|
+
await writeAll(process.stderr, record.recording.raw_stderr);
|
|
194
|
+
return 0;
|
|
178
195
|
}
|
|
179
196
|
if (testId !== undefined) {
|
|
180
197
|
const obs = record.observations.find((o) => o.test_id === testId);
|
|
181
198
|
if (obs === undefined)
|
|
182
199
|
die(`no observation for test id: ${testId}`);
|
|
183
|
-
process.stdout
|
|
184
|
-
|
|
200
|
+
await writeAll(process.stdout, `${JSON.stringify(obs, null, 1)}\n`);
|
|
201
|
+
return 0;
|
|
185
202
|
}
|
|
186
|
-
process.stdout
|
|
187
|
-
|
|
203
|
+
await writeAll(process.stdout, `${JSON.stringify(record, null, 1)}\n`);
|
|
204
|
+
return 0;
|
|
188
205
|
}
|
|
189
206
|
async function cmdGate(argv) {
|
|
190
207
|
const { format, rest } = parseReportFlag(argv);
|
|
@@ -223,8 +240,8 @@ async function cmdGate(argv) {
|
|
|
223
240
|
ref,
|
|
224
241
|
...(runId !== undefined ? { runId } : {}),
|
|
225
242
|
});
|
|
226
|
-
emit(report, format);
|
|
227
|
-
|
|
243
|
+
await emit(report, format);
|
|
244
|
+
return 0;
|
|
228
245
|
}
|
|
229
246
|
catch (err) {
|
|
230
247
|
if (err instanceof GateOperationError)
|
|
@@ -234,6 +251,72 @@ async function cmdGate(argv) {
|
|
|
234
251
|
throw err;
|
|
235
252
|
}
|
|
236
253
|
}
|
|
254
|
+
function parsePositiveIntFlag(value, flag) {
|
|
255
|
+
if (!/^[0-9]+$/.test(value))
|
|
256
|
+
die(`${flag} expects a positive integer, got ${value}`);
|
|
257
|
+
const n = Number(value);
|
|
258
|
+
if (!Number.isInteger(n) || n <= 0)
|
|
259
|
+
die(`${flag} expects a positive integer, got ${value}`);
|
|
260
|
+
return n;
|
|
261
|
+
}
|
|
262
|
+
async function cmdGc(argv) {
|
|
263
|
+
const policy = defaultGcPolicy();
|
|
264
|
+
for (let i = 0; i < argv.length; i++) {
|
|
265
|
+
const a = argv[i];
|
|
266
|
+
if (a === '--max-count') {
|
|
267
|
+
const v = argv[++i];
|
|
268
|
+
if (v === undefined)
|
|
269
|
+
die('--max-count expects a value');
|
|
270
|
+
policy.maxCount = parsePositiveIntFlag(v, '--max-count');
|
|
271
|
+
}
|
|
272
|
+
else if (a.startsWith('--max-count=')) {
|
|
273
|
+
policy.maxCount = parsePositiveIntFlag(a.slice('--max-count='.length), '--max-count');
|
|
274
|
+
}
|
|
275
|
+
else if (a === '--max-bytes') {
|
|
276
|
+
const v = argv[++i];
|
|
277
|
+
if (v === undefined)
|
|
278
|
+
die('--max-bytes expects a value');
|
|
279
|
+
policy.maxBytes = parsePositiveIntFlag(v, '--max-bytes');
|
|
280
|
+
}
|
|
281
|
+
else if (a.startsWith('--max-bytes=')) {
|
|
282
|
+
policy.maxBytes = parsePositiveIntFlag(a.slice('--max-bytes='.length), '--max-bytes');
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
die(`unknown option: ${a}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const { store, worktree } = await requireStore();
|
|
289
|
+
// Cheap existence check up front: gc must not take the advisory lock (nor
|
|
290
|
+
// create the store) when there is nothing to collect (feedback
|
|
291
|
+
// gc-missing-store-dir).
|
|
292
|
+
const runsDir = join(worktree, '.veridelta', 'runs');
|
|
293
|
+
const indexPath = join(worktree, '.veridelta', 'index');
|
|
294
|
+
if (!existsSync(runsDir) || !existsSync(indexPath)) {
|
|
295
|
+
await writeAll(process.stdout, 'gc: nothing to collect\n');
|
|
296
|
+
return 0;
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
store.acquireLock();
|
|
300
|
+
}
|
|
301
|
+
catch (err) {
|
|
302
|
+
if (err instanceof LockHeldError)
|
|
303
|
+
die('advisory lock is held; another vdelta process may be running — retry later');
|
|
304
|
+
throw err;
|
|
305
|
+
}
|
|
306
|
+
try {
|
|
307
|
+
const r = store.gc(policy);
|
|
308
|
+
await writeAll(process.stdout, `gc: removed ${r.removed.length} run(s), kept ${r.keptCount} run(s) (${r.keptBytes} bytes)\n`);
|
|
309
|
+
return 0;
|
|
310
|
+
}
|
|
311
|
+
catch (err) {
|
|
312
|
+
if (err instanceof StoreCorruptError)
|
|
313
|
+
die(`store corrupt: ${err.message}`);
|
|
314
|
+
throw err;
|
|
315
|
+
}
|
|
316
|
+
finally {
|
|
317
|
+
store.releaseLock();
|
|
318
|
+
}
|
|
319
|
+
}
|
|
237
320
|
async function main() {
|
|
238
321
|
const [, , command, ...argv] = process.argv;
|
|
239
322
|
switch (command) {
|
|
@@ -245,20 +328,28 @@ async function main() {
|
|
|
245
328
|
return cmdShow(argv);
|
|
246
329
|
case 'gate':
|
|
247
330
|
return cmdGate(argv);
|
|
331
|
+
case 'gc':
|
|
332
|
+
return cmdGc(argv);
|
|
248
333
|
case '--version':
|
|
249
334
|
case 'version':
|
|
250
|
-
process.stdout
|
|
251
|
-
return
|
|
335
|
+
await writeAll(process.stdout, `vdelta ${VDELTA_VERSION} (veridelta/1)\n`);
|
|
336
|
+
return 0;
|
|
252
337
|
default:
|
|
253
|
-
die(`usage: vdelta <run|compare|show|gate> ...\n` +
|
|
338
|
+
die(`usage: vdelta <run|compare|show|gate|gc> ...\n` +
|
|
254
339
|
` run [--report json|text] -- <command...>\n` +
|
|
255
340
|
` compare [<baseline-run> <current-run>] [--ref <git-ref>] [--report json|text]\n` +
|
|
256
341
|
` show <run-id> [--test <test-id> | --raw]\n` +
|
|
257
|
-
` gate --ref <git-ref> [--run <run-id>] [--policy report-only] [--report json|text]`
|
|
342
|
+
` gate --ref <git-ref> [--run <run-id>] [--policy report-only] [--report json|text]\n` +
|
|
343
|
+
` gc [--max-count <n>] [--max-bytes <n>]`);
|
|
258
344
|
}
|
|
259
345
|
}
|
|
260
|
-
main().
|
|
261
|
-
|
|
346
|
+
main().then((code) => process.exit(code), async (err) => {
|
|
347
|
+
if (err instanceof CliError) {
|
|
348
|
+
await writeAll(process.stderr, `vdelta: ${err.message}\n`);
|
|
349
|
+
process.exit(err.code);
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
await writeAll(process.stderr, `vdelta: internal error: ${err instanceof Error ? (err.stack ?? err.message) : String(err)}\n`);
|
|
262
353
|
process.exit(1);
|
|
263
354
|
});
|
|
264
355
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|