CONFORMANCE SUITE v1.3.3 · ANCHORED IN REKOR

UTA Conformance Suite

Verify the verifier — no trust in the publisher required

Canonical test vectors, a reference scorer that is itself under test, a byte-for-byte reproducible build, and digests countersigned by Sigstore's public transparency log. Every artifact is verifiable from live URLs alone.

14
VECTORS
24
BEHAVIOR CHECKS
10
MUTANTS CAUGHT
3
REKOR ENTRIES
8
DIGESTS ANCHORED
0
TRUST REQUIRED
Run the checksGitHub sourceRekor entry #3
node score-runner.mjs·node runner-tests/runner-tests.mjs
Stranger flow — four commands, zero trust

Run the checks yourself

Fetch the files from these URLs (or the GitHub source tree), then:

# 1. Score the reference runner against the 14 fixed vectors
node score-runner.mjs

# 2. Prove the runner itself is the tested thing (27 checks + 10 mutants)
node runner-tests/runner-tests.mjs

# 3. Verify the third-party Rekor anchors (9 checks, live log)
node anchors/verify-rekor.mjs --record anchors/anchor-record-v6.json \
                                   --statement anchors/anchor-statement-v6.json

# 4. Rollback resistance: the release chain vs previously-valid releases
node anchors/verify-artifact.mjs --release --artifact score-runner.mjs

# 5. Rebuild the published npm tarball, byte-for-byte
node repro/verify-rebuild.mjs --manifest repro/source-manifest.json

Nothing to install beyond Node. No accounts, no API keys, no trust in the publisher.

The suite

What is published here

/vectors/

Test vectors

14 complete card artifacts with known verdicts. JCS-canonical bytes as hex, base64 and UTF-8 + SHA-256 — verify signatures without guessing the preimage.

Browse the 14 vectors →
/runner-tests/

The runner is the tested thing

27 behavioral checks against a recorded answer key, 10 mutant runners that must all be caught, a generated single-site sweep (126 mutants) and a two-site coordinated sweep (157 pairs) — the scorer stops being a trusted component.

See the oracles →
/anchors/

Rekor anchors

7 immutable entries in Sigstore's public append-only log. Countersigned, timestamped, inclusion-checkable — the publisher cannot rewrite what the log holds. Entry #6 anchors the release chain; #7 is the r1→r2 advance.

Inspect the entries →
/releases/

The release chain

A persistent Ed25519 identity signs monotone release statements: the current authorized state. The verifier keeps local highest-accepted state and refuses rollbacks, forks and below-floor anchors.

Verify the chain →
/repro/

Reproducible build

The published npm tarball's inner tar layer rebuilds byte-for-byte from public source under a stated rule. Target downloads from registry.npmjs.org.

Run the rebuild →
/score-runner.mjs

Reference scorer

Two-sided validity window (issued_at ≤ NOW < expires_at), ground truth derived from card bytes, fail-closed sidecar policy.

Read the source →
/vectors/_index.json

Machine index

Every vector, verdict and digest in one JSON file — the artifact a verifier downloads first.

Fetch the JSON →
Why it matters

What a stranger can prove

  • Verification without the publisher. Each vector ships its exact canonical preimage, so signature verification is reproduced — not guessed.
  • A runner with teeth. The answer key pins the runner's bytes (SHA-256), its behavior row by row, and 10 known-bad mutants — every one of which is caught.
  • Immutability via a third party. Suite digests are countersigned and timestamped by Sigstore's Rekor log; inclusion is publicly checkable after the fact.
  • Rollback resistance. A monotone release chain under a persistent identity: the hub cannot serve a previously-valid release as current — lower counters, forks and below-floor anchors are refused.
  • Builds that don't drift. The npm artifact is pinned by digest in three places (registry, repo, Rekor) and the tar layer is fully determined by content + stated rule.