supercov 0.0.17 → 0.0.19

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.
@@ -1,10 +1,8 @@
1
1
  # Agent loop
2
2
 
3
- Supercov exists because coverage reports are built for people and coding agents
4
- need something different: small answers, a stable format, and a way to prove
5
- that the test just written actually changed the result. This page describes the
6
- loop, the prompt, and the failure modes worth guarding against when nobody is
7
- watching.
3
+ Use Supercov in a repeatable agent loop: run the suite, query uncovered
4
+ obligations, add a focused test, rerun, and compare results. This page covers
5
+ the loop, the recommended prompt, and failure handling.
8
6
 
9
7
  ## The shape of the loop
10
8
 
@@ -1,10 +1,8 @@
1
1
  # Coverage model
2
2
 
3
- Line coverage answers a question nobody actually has. "This line executed" says
4
- nothing about whether the interesting thing on that line was ever true, ever
5
- false, or ever mattered. Supercov measures **completeness**: of everything the
6
- structure of the code obliges a suite to exercise, how much has been exercised,
7
- and with what quality of evidence.
3
+ Supercov derives coverage obligations from code structure. It reports which
4
+ obligations ran and the quality of the available evidence, including line,
5
+ branch, value-path, control-flow, and MC/DC coverage.
8
6
 
9
7
  ## Obligations
10
8
 
package/docs/evidence.md CHANGED
@@ -1,9 +1,7 @@
1
1
  # Evidence and runs
2
2
 
3
- A coverage number is only as trustworthy as the thing it was computed from.
4
- Supercov keeps exactly one artifact per run and derives every view from it on
5
- demand, so a report can never quietly disagree with the evidence it claims to
6
- summarise.
3
+ Each run stores one evidence artifact and its metadata. Reports, queries, and
4
+ comparisons are derived from those files on demand.
7
5
 
8
6
  ## What a run is
9
7
 
@@ -13,22 +11,27 @@ summarise.
13
11
  run.json fingerprints, phase timings, schema version, integrity state
14
12
  ```
15
13
 
16
- Two files. No HTML, no derived report, no query cache. Loose evidence written
17
- during the run is removed only after the whole run directory is atomically
18
- 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.
19
18
 
20
19
  Run ids are UTC timestamps, which makes them sort chronologically and makes
21
20
  retention deterministic.
22
21
 
23
- ## Derived, never stored
22
+ ## Derived views and their disposable cache
24
23
 
25
24
  Every coverage view — the summary, per-file rankings, gap lists, decision
26
25
  detail, per-test contribution, the minimizer, and the passed and failed filters
27
- — 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.
28
30
 
29
31
  This is why `--filter passed` and `--filter all` can never contradict each
30
32
  other, and why a query added in a future version can answer questions about a
31
- 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.
32
35
 
33
36
  Fresh-process summary, files and gaps queries take roughly two tenths of a
34
37
  second on the reference run described in [Performance](/docs/performance).
@@ -1,8 +1,8 @@
1
1
  # Getting started
2
2
 
3
- Supercov measures coverage completeness for a JavaScript or TypeScript test
4
- suite without changing the suite. There is no config file to add, no import to
5
- insert, and no reporter to register: you prefix the command you already run.
3
+ Supercov measures coverage for JavaScript, TypeScript, and Rust test suites.
4
+ Prefix the command you already run; no config file, import, or reporter is
5
+ required.
6
6
 
7
7
  ```sh
8
8
  npx supercov -- npm test
@@ -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
 
@@ -1,9 +1,8 @@
1
1
  # Supported suites
2
2
 
3
- Supercov works by wrapping a command and following the processes it launches,
4
- so the interesting question is not "does my runner work" but "how precisely can
5
- coverage be attributed to individual tests". Both answers are visible in every
6
- query.
3
+ Supercov wraps a test command and instruments the processes it launches.
4
+ Runner support differs by attribution level: exact per-test attribution or
5
+ aggregate coverage.
7
6
 
8
7
  ## Attribution by runner
9
8
 
@@ -1,13 +1,8 @@
1
1
  # Verification
2
2
 
3
- Supercov rewrites your source before running it. That is a strong claim to make
4
- about someone else's production code, so the burden of proof sits with the
5
- instrumenter: it has to demonstrate, on every release, that the rewritten
6
- program behaves exactly like the original and that the coverage it reports is
7
- arithmetically correct.
8
-
9
- Seven independent gates block publication. A failure in any one of them stops
10
- the trusted-publishing workflow.
3
+ Supercov instruments source before the test command runs. Seven release gates
4
+ check that the instrumented program matches the original program and that
5
+ coverage calculations are correct. Any failed gate blocks publication.
11
6
 
12
7
  ## 1. Semantic differential execution
13
8
 
@@ -1,9 +1,8 @@
1
1
  # Workspace isolation
2
2
 
3
- Supercov's primary filesystem guarantee is stronger than “we clean up when the
4
- command exits”: the user's source and ordinary build artifacts are never
5
- Supercov's write targets. Cleanup is useful for space, but correctness cannot
6
- depend on a signal handler running.
3
+ Supercov writes generated and temporary files only under the project's
4
+ `.supercov/` directory. Application source and ordinary build artifacts are
5
+ not write targets, and cleanup does not depend on a signal handler.
7
6
 
8
7
  ## Owned paths
9
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "supercov",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "description": "Zero-edit, runner-aware coverage completeness for JavaScript test suites",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -36,7 +36,9 @@
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",
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",
40
42
  "test:rust-cargo-runner": "cargo build -p supercov && node scripts/rust-cargo-runner-integration.mjs",
41
43
  "test:rust-nextest-runner": "cargo build -p supercov && node scripts/rust-nextest-runner-integration.mjs",
42
44
  "test": "cargo test --workspace",
@@ -66,12 +68,12 @@
66
68
  "prepublishOnly": "npm run release:check"
67
69
  },
68
70
  "optionalDependencies": {
69
- "@supercov/cli-darwin-arm64": "0.0.17",
70
- "@supercov/cli-darwin-x64": "0.0.17",
71
- "@supercov/cli-linux-arm64-gnu": "0.0.17",
72
- "@supercov/cli-linux-arm64-musl": "0.0.17",
73
- "@supercov/cli-linux-x64-gnu": "0.0.17",
74
- "@supercov/cli-linux-x64-musl": "0.0.17"
71
+ "@supercov/cli-darwin-arm64": "0.0.19",
72
+ "@supercov/cli-darwin-x64": "0.0.19",
73
+ "@supercov/cli-linux-arm64-gnu": "0.0.19",
74
+ "@supercov/cli-linux-arm64-musl": "0.0.19",
75
+ "@supercov/cli-linux-x64-gnu": "0.0.19",
76
+ "@supercov/cli-linux-x64-musl": "0.0.19"
75
77
  },
76
78
  "peerDependencies": {
77
79
  "@playwright/test": ">=1.55.0",