The conformance corpus
The wire-format-fixtures corpus is the F# reference encoder's canonical
output: the canonical encoding written straight into each fixture's expected file,
and the reference decoder's error code + JSON path written straight into the
manifest. So the corpus is a serialised conformance report – every other codec
host is held byte-identical to it.
Download the bundle · JSON Schema · manifest.json
Fixture groups
Each fixture declares a kind that names how a conformant host must treat it:
| Group | What a host must do |
|---|---|
| node-round-trip | decode the input, re-encode, assert byte-equal to the expected canonical form |
| op-round-trip | the same, for TreeOps |
| reject | decode, assert the decode fails with the expected error code at the expected JSON path |
| lenient-accept (§16) | decode a shorthand input, re-encode, assert byte-equal to the verbose canonical form – a host MUST accept and normalise shorthand |
| envelope-round-trip / -reject (§15) | negotiate the authored $profile against the host's own core@1.0; preserve unknown kinds verbatim, or refuse a foreign profile |
| elicitation-* (§18) | the elicitation envelope, outcome, and answer-conformance codecs |
Reject fixtures carry their expected error
A reject fixture asserts the decoder fails with a specific, stable error – the same code at the same JSON path on every host. Representative examples:
| Expected error | At path | Meaning |
|---|---|---|
EMPTY_NODE_ID | $.id | a node id must be non-empty |
MISSING_FIELD | $.kind.text | a required field is absent |
WRONG_TYPE | $.kind.… | a field has the wrong JSON type |
UNKNOWN_DU_CASE | $.kind.$type | an unrecognised node / op discriminator |
INVALID_JSON | $ | the input is not well-formed JSON |
FOREIGN_PROFILE | $.$profile | a wire profile the host cannot negotiate |
The full error taxonomy and every fixture's exact code + path are in the bundled
manifest.json.