Overview
Machine-checkable test vectors for the VER record format and the conformance profile implemented by packages/ver-validator. Two artifact releases are covered side by side: 1.0.1, judged by vera-profile/1.0, and the unratified 1.1 draft, judged by vera-profile/1.1-draft. Every fixture declares which one it is a statement about — see 1.1-draft fixtures.
The corpus answers one question per file: given this record, what must a conformant validator say? manifest.json holds the expected answer for every fixture, so the corpus is executable rather than illustrative — a validator either reproduces the manifest exactly or it disagrees with the standard.
| count | of which 1.1-draft | |
|---|---|---|
conformant records (valid/) | 14 | 4 |
non-conformant / warning records (invalid/) | 81 | 29 |
| profile issue codes with a dedicated fixture | 81 of 83 (65 error, 16 warning) | 29 (25 error, 4 warning) |
| codes excused by a documented exemption | 2 (VER001, VER607) | 0 |
Every issue code in the ver_validator registry has exactly one fixture registered against it, or an explicit coverage_exemptions entry saying why it cannot have one. A code with neither, or two fixtures claiming the same code, is a corpus defect. That constraint is global and has no schema axis: one code, one fixture, whichever release the fixture targets. Three numbers carry no fixture:
| code | why | covered instead by |
|---|---|---|
VER1303 vector-ref-unverified | Allocated and deliberately never emitted: the profile validator performs no network I/O, and an unfetchable reference is not evidence of non-conformance. Not in the active registry at all, so it needs no exemption. | tests/test_profile_validator.py::test_stage14_unfetchable_vector_ref_is_not_a_finding |
VER607 non-finite-vector-component | Unreachable from a file. NaN, Infinity and -Infinity are JavaScript literals, not RFC 8259 JSON, so a document containing one is rejected at stage 1 as VER101 and never reaches stage 6 — a fixture carrying them would test VER101 under a VER607 filename. The rule exists for the API entry point, which takes an already-parsed object. | tests/test_profile_validator.py::test_stage6_non_finite_vector_components_are_ver607 |
VER001 validator-internal-error | Not file-reachable, and must not be. VER001 is the one code that reports on the validator rather than the record: it fires when a rule raises, which is a defect in ver_validator. A fixture provoking it would pin a specific validator bug — it would stop reproducing the moment the bug was fixed, and it would be the only file here whose expected result was not a statement about the standard. | tests/test_profile_validator.py::test_a_rule_that_raises_is_ver001_and_makes_the_run_indeterminate and its four siblings, which monkeypatch a deliberately-raising rule |
The manifest carries both exemptions and their reasons; stage 0 (VER001's stage) is consequently absent from the corpus's stage coverage, which tests/test_conformance_fixtures.py derives from the exemption list rather than from a second, drifting copy of the same judgement.
