InvarLock 0.15.0: Replayable Deployment Evidence and Bounded Decisions
InvarLock 0.15 adds replayable deployment evidence, an absolute accuracy floor, four retained evaluator journeys, and a protected consumer example.
A candidate can stay close to a weak baseline and still perform poorly. InvarLock 0.15 lets an exact-match comparison require a minimum accuracy on both sides, alongside its rule about allowed regression.
The release also adds saved deployment comparisons to inspect and a five-minute CPU example that checks evidence without running a model. Three new cases compare full-precision checkpoints with five-bit Q5_K_M deployments in the GGUF local-inference format. Four signed evaluator transactions exercise two evaluator paths; a separate deployment example checks that the supplied candidate matches the receipt.
At a glance — v0.15 release snapshot
- New evaluations emit comparison-report v3.
- Exact match can require a minimum accuracy on both sides.
- Three BF16-to-Q5_K_M GGUF journeys expand the public inventory to seven packs.
- LM Evaluation Harness and Inspect AI retain four signed transactions.
- A five-minute CPU path verifies, receipts, and renders evidence without rerunning a model.
Three separate release demonstrations
- 7 public evidence packs
- Retained model comparisons across text, vision-text, TensorRT-LLM, and three GGUF deployment paths.
- 4 evaluator transactions
- Model-running journeys through LM Evaluation Harness and Inspect AI: one policy pass and three integrity-valid rejections.
- 1 protected consumer
- A recipient reauthenticates the receipt, binds the exact subject, and applies its own protected approval inputs.
The inventories demonstrate different capabilities and are counted separately.
Replay retained evidence in five minutes
From an empty directory, the tagged quickstart installs the core wheel and obtains the separate example files. Use Python 3.12 or newer:
python -m venv .venv
. .venv/bin/activate
python -m pip install "invarlock==0.15.0"
curl -fsSLO \
https://github.com/invarlock/invarlock/archive/refs/tags/v0.15.0.tar.gz
tar -xzf v0.15.0.tar.gz --strip-components=3 \
invarlock-0.15.0/examples/quickstart \
invarlock-0.15.0/examples/acceptance-handoff/golden
python run.py --fixture golden
The example prints Decision: pass and writes verification.result.json, verification.receipt.json, and evidence.html inside invarlock-quickstart-output/. It verifies the retained pack against independently supplied anchors before issuing the receipt and rendering HTML. It needs no model execution, container engine, network service, or source-tree import.
Model execution produces the evidence. Verification authenticates those retained records and recomputes the decision. The example files come from the tagged source archive rather than the installed wheel, so the package does not carry its own expected test evidence.
Report v3 can reject a pair below the accuracy floor
A relative non-regression policy has an edge case. A baseline at 18% accuracy and a subject at 19% may satisfy a relative threshold even though both miss a 20% minimum.
Comparison-report v3 adds a bounded response for exact match: minimum_side_accuracy. Policy may set a finite floor from 0 through 1, and both baseline and subject means must meet it. The boundary is inclusive.
The accuracy floor is a separate check from the allowed regression, number of records, and uncertainty limit. Every enabled requirement must pass.
| Control | Question it answers | Failure means |
|---|---|---|
| Regression threshold | Does the paired interval rule out a loss beyond the allowed bound? | The evidence does not establish that the loss stays within the allowed bound. |
| Minimum record count | Is enough paired material retained for this policy? | The evidence set is too small. |
| Maximum interval width | Is the paired estimate sufficiently precise? | The result is too uncertain. |
| Minimum side accuracy | Did both baseline and subject clear the declared absolute floor? | At least one side is too weak even if their relative difference is acceptable. |
Scroll horizontally to see every column.
The control is intentionally metric-specific. It applies to exact match, not normalized NLL or arbitrary observation content.
Historical evidence keeps its original identity and arithmetic. Version 2 reports remain verifiable without side-accuracy qualification. Version 1 reports continue to use their original exact-match interval method. Verification does not silently reinterpret either format as v3.
Three GGUF journeys join the public inventory
The public evidence index now contains seven strictly verified packs. Three new rows compare an authenticated BF16 checkpoint with its source-derived Q5_K_M GGUF deployment over a balanced 400-record MMLU-Pro exact-match schedule:
- Deployment comparison
- Qwen3.8 27B
- BF16
- 63.00%
- Q5_K_M
- 64.50%
- Paired 95% interval
- [−0.74, 3.75] pp
- Policy
- Pass
- Deployment comparison
- Qwen3.5 9B
- BF16
- 53.00%
- Q5_K_M
- 54.75%
- Paired 95% interval
- [−0.83, 4.32] pp
- Policy
- Pass
- Deployment comparison
- Ministral 3 8B
- BF16
- 44.75%
- Q5_K_M
- 45.25%
- Paired 95% interval
- [−1.12, 2.12] pp
- Policy
- Pass
Three paired 95% intervals
- Qwen3.8 27B · +1.50 pp
- Interval: −0.74 to +3.75 pp.
- Qwen3.5 9B · +1.75 pp
- Interval: −0.83 to +4.32 pp.
- Ministral 3 8B · +0.50 pp
- Interval: −1.12 to +2.12 pp.
All three lower endpoints exceed the −2 pp minimum. Crossing zero is allowed by this non-regression policy.
Each journey binds separate runtime identities, conversion provenance, an independently signed receipt, and the declared record-count, interval-width, side-accuracy, and regression controls.
For each named pair, the Q5_K_M version meets the signed policy on the recorded cases relative to its BF16 baseline. That does not establish bit-for-bit equivalence or preserved quality on every task. Planned comparisons remain labelled Evidence not yet created until a qualified pack exists.
Four evaluator journeys show both pass and rejection
The v0.15 evaluator matrix records three independent properties: adapter support, replay authority, and signed-journey maturity.
It contains 19 maintained profiles. Seventeen retain deterministic per-record exact-match replay. MLflow's aggregate cannot reconstruct the records; Garak's retained replay semantics are outside the v0.15 contract. Both remain observation-only.
The shared qualification corpus now uses pinned Qwen3.5 0.8B output with 102 records: 61 matches and 41 mismatches. That corpus demonstrates the adapter and replay boundary for one exact-match surface. It is not a general evaluator benchmark.
LM Evaluation Harness and Inspect AI retain four larger model-running transactions:
- Transaction
- Qwen3.5 9B · LM Evaluation Harness
- Baseline
- 55.50%
- Subject
- 53.00%
- Paired 95% interval
- [−6.42, 1.43] pp
- Signed outcome
- Integrity valid; policy rejected
- Transaction
- Qwen3.5 9B · Inspect AI
- Baseline
- 55.50%
- Subject
- 53.00%
- Paired 95% interval
- [−6.42, 1.43] pp
- Signed outcome
- Integrity valid; policy rejected
- Transaction
- Gemma 4 12B instruction-to-QAT · LM Evaluation Harness
- Baseline
- 44.00%
- Subject
- 42.50%
- Paired 95% interval
- [−3.84, 0.84] pp
- Signed outcome
- Integrity valid; policy rejected
- Transaction
- Qwen3.5 0.8B deployment · Inspect AI
- Baseline
- 49.25%
- Subject
- 43.50%
- Paired 95% interval
- [−8.99, −2.47] pp
- Signed outcome
- Policy passed
The three MMLU-Pro transactions authenticate correctly and then miss their −2 pp lower-bound requirement. Their receipts record valid evidence and valid policy rejection.
The deployment transaction uses a separate pinned 400-record LAMBADA corpus and passes its declared −20 pp lower-bound policy. The subject remained inside that named deployment-regression tolerance; improvement was not required.
For the Qwen3.5 comparison, LM Evaluation Harness and Inspect AI agree across all 400 baseline and all 400 subject record digests and scores. That is cross-evaluator replay-consistency evidence. It does not create an extra verdict.
The protected consumer binds the exact subject
A valid receipt can still be consumed badly. A deployment workflow might check that “some comparison passed” while fetching a different artifact, using a different trust profile, or skipping the recipient's current approval controls.
The standalone CI consumer models a separate repository with release-review and production environments. Release review replays the evidence against independently supplied anchors and requires an explicit policy pass. Production then:
- reauthenticates the receipt;
- binds the fetched candidate to the exact approved subject identity; and
- checks the trust-profile digest or its explicit absence from protected approval inputs.
The example demonstrates how a recipient can consume a technical result without letting that result act as a deployment command. Environment protection, artifact fetching, recipient policy, and organizational approval remain consumer-owned.
Software-supply-chain metadata remains context
The signed package declaration must name the same artifact as the comparison. The CPU-only example checks that binding with an SPDX 3.0.1 declaration, a standard format for software-supply-chain metadata.
The declaration remains authenticated context rather than policy input. The example checks a documented subset, not full SPDX conformance or deployment suitability. The retained integration record carries the JSON-LD, digest, schema status, and internal envelope details.
This is the observation boundary in practice: authenticate the context, preserve it, render it, and keep it outside the verdict unless a future versioned contract explicitly grants it authority.
Release assurance expands around the same claim
Candidate-wheel preflight verifies and renders all seven public packs and all four evaluator transactions without rerunning inference, evaluators, or conversion.
- Runtime hardening: bounds commands and evidence loading, rejects symlinked worker inputs, and gives temporary engines immutable identities.
- Release hardening: tests a core-only installation and protected consumer, then checks request binding, trust profiles, approvals, and 95% coverage.
- Scoped compatibility: adds text-only checkpoint loading and one TensorRT-LLM 1.2.1 Qwen3 fixture without claiming broader image-input or runtime support.
Put the new controls to work
Try the CPU replay first, then set the accuracy, regression and precision requirements that fit your comparison before collecting its results. Use the exact-candidate consumer example when handing the result to a deployment workflow. The retained examples demonstrate their named versions and inputs; your organization still owns the requirements and release decision. Tagged sources below preserve the release-specific setup.
Sources
Website documentation explains the maintained workflow. The changes described here belong to InvarLock v0.15.0; the tagged release record preserves that historical scope.
- Reports and receipts
- Evaluator qualification
- Public evidence guide
- CI integration
- InvarLock v0.15.0 release record
- Tagged v0.15.0 changelog
- Tagged v0.15.0 evaluator transactions
- Tagged v0.15.0 public evidence index
- Five-minute signed-evidence check
- Standalone protected consumer
- SPDX 3.0.1 AI observation
More in Release
Explore nearby related posts.
Release note
InvarLock 0.16.0: Native, Captured and Judge Evidence
Compare saved evaluator answers through the main commands, collect judge ratings under a declared rubric, and read the result beside the checks that explain it.
Release note
InvarLock 0.14.0: Evaluator Evidence In, Recipient Policy Out
v0.14 normalizes external evaluator records, then hands a signed technical receipt to recipient-owned trust and acceptance rules.
Release note
InvarLock 0.17.0: Plan the Comparison, Explain the Result
Check judge-evaluation precision before collection, explore exact-match sensitivity, and rehearse reassessment while preserving earlier evidence.