supercov 0.0.18 → 0.0.20

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/docs/evidence.md CHANGED
@@ -11,22 +11,27 @@ comparisons are derived from those files on demand.
11
11
  run.json fingerprints, phase timings, schema version, integrity state
12
12
  ```
13
13
 
14
- Two files. No HTML, no derived report, no query cache. Loose evidence written
15
- during the run is removed only after the whole run directory is atomically
16
- visible, so a run is either complete or absent.
14
+ Two durable source-of-truth files. No HTML or derived report is stored in the
15
+ published run. Loose evidence written during the run is removed only after the
16
+ whole run directory is atomically visible, so a run is either complete or
17
+ absent.
17
18
 
18
19
  Run ids are UTC timestamps, which makes them sort chronologically and makes
19
20
  retention deterministic.
20
21
 
21
- ## Derived, never stored
22
+ ## Derived views and their disposable cache
22
23
 
23
24
  Every coverage view — the summary, per-file rankings, gap lists, decision
24
25
  detail, per-test contribution, the minimizer, and the passed and failed filters
25
- — is reconstructed from the archive when you ask for it. Nothing is written back.
26
+ — is derived from the archive. The first query may write a disposable,
27
+ integrity-bound query index beside the two durable files; later queries reuse
28
+ it while the run identity remains valid. Delete that index at any time and
29
+ Supercov reconstructs it from `evidence.raw.gz` without losing coverage data.
26
30
 
27
31
  This is why `--filter passed` and `--filter all` can never contradict each
28
32
  other, and why a query added in a future version can answer questions about a
29
- run recorded today: the stored schema is the raw evidence, not a rendering of it.
33
+ run recorded today: raw evidence remains the source of truth, while the query
34
+ index is only a rebuildable acceleration structure.
30
35
 
31
36
  Fresh-process summary, files and gaps queries take roughly two tenths of a
32
37
  second on the reference run described in [Performance](/docs/performance).
@@ -18,8 +18,10 @@ Everything after `--` is your command, executed exactly as written.
18
18
  | Project | JavaScript or TypeScript, with a runnable test command |
19
19
  | Disk | A `.supercov/` directory in the project root, which Supercov creates |
20
20
 
21
- Nothing else is required. Supercov never contacts a network service, and no
22
- part of your source or evidence leaves the machine.
21
+ No Supercov account or hosted service is required. During a coverage run, the
22
+ Supercov CLI does not contact a Supercov service and no part of your source or
23
+ evidence leaves the machine. Package tools such as `npx` may still contact the
24
+ npm registry to resolve or download Supercov when it is not already cached.
23
25
 
24
26
  ## Your first run
25
27
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "supercov",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "Zero-edit, runner-aware coverage completeness for JavaScript test suites",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -36,6 +36,7 @@
36
36
  "build": "cargo build -p supercov",
37
37
  "sync:rust-assets": "node scripts/sync-rust-package-assets.mjs",
38
38
  "test:rust-assets": "node scripts/sync-rust-package-assets.mjs --check",
39
+ "check:rustc-backend-spike": "(cd spikes/rustc-backend && RUSTC_BOOTSTRAP=1 RUSTUP_TOOLCHAIN=1.95.0 cargo fmt --check && RUSTC_BOOTSTRAP=1 RUSTUP_TOOLCHAIN=1.95.0 cargo clippy --all-targets -- -D warnings)",
39
40
  "test:rustc-backend-spike": "node scripts/rustc-backend-spike.mjs",
40
41
  "test:rust-compiler-spikes": "cargo build -p supercov && node scripts/rust-libtest-companion-spike.mjs && node scripts/rust-async-attribution-spike.mjs && node scripts/rust-subprocess-attribution-spike.mjs && node scripts/rust-custom-harness-spike.mjs && node scripts/rust-libtest-builder-lifecycle-spike.mjs",
41
42
  "test:rust-cargo-runner": "cargo build -p supercov && node scripts/rust-cargo-runner-integration.mjs",
@@ -67,12 +68,12 @@
67
68
  "prepublishOnly": "npm run release:check"
68
69
  },
69
70
  "optionalDependencies": {
70
- "@supercov/cli-darwin-arm64": "0.0.18",
71
- "@supercov/cli-darwin-x64": "0.0.18",
72
- "@supercov/cli-linux-arm64-gnu": "0.0.18",
73
- "@supercov/cli-linux-arm64-musl": "0.0.18",
74
- "@supercov/cli-linux-x64-gnu": "0.0.18",
75
- "@supercov/cli-linux-x64-musl": "0.0.18"
71
+ "@supercov/cli-darwin-arm64": "0.0.20",
72
+ "@supercov/cli-darwin-x64": "0.0.20",
73
+ "@supercov/cli-linux-arm64-gnu": "0.0.20",
74
+ "@supercov/cli-linux-arm64-musl": "0.0.20",
75
+ "@supercov/cli-linux-x64-gnu": "0.0.20",
76
+ "@supercov/cli-linux-x64-musl": "0.0.20"
76
77
  },
77
78
  "peerDependencies": {
78
79
  "@playwright/test": ">=1.55.0",
@@ -546,7 +546,14 @@ function injectChildEnvironment(method, args) {
546
546
  const environment = existingEnvironment
547
547
  ? { ...existingEnvironment, ...inherited }
548
548
  : { ...process.env, ...inherited };
549
- environment.NODE_OPTIONS = appendNodeImport(existingEnvironment?.NODE_OPTIONS ?? process.env.NODE_OPTIONS, pathToFileURL(resolve(process.env["SUPERCOV_PROJECT_ROOT"] ?? process.cwd(), ".supercov/register.mjs")).href);
549
+ // The register path must come from THIS module's own location, never from
550
+ // the environment or the working directory. Monorepo runners both defeat
551
+ // the old derivation at once: turbo's strict env strips SUPERCOV_PROJECT_ROOT
552
+ // from task children, and it runs each task with cwd inside the package --
553
+ // so the fallback fabricated packages/<name>/.supercov/register.mjs and
554
+ // every task aborted with ERR_MODULE_NOT_FOUND. launchSupervisor.js is
555
+ // generated into the same .supercov directory as register.mjs.
556
+ environment.NODE_OPTIONS = appendNodeImport(existingEnvironment?.NODE_OPTIONS ?? process.env.NODE_OPTIONS, new URL("./register.mjs", import.meta.url).href);
550
557
  next[index] = { ...options, env: environment };
551
558
  if (typeof original === "function")
552
559
  next.splice(index + 1, 0, original);