Reading compliance failures
A compliance line is a claim about one input and one library, tied to one published section. It is not a score.
Anatomy
COMPLIANCE MUST NOT FAIL [json-8259-bare-nan] json
Standard : RFC 8259 8259
Section : 6 — Numbers
Spec : https://www.rfc-editor.org/rfc/rfc8259#section-6
Rule : Numeric values are produced from the number grammar; NaN is not a number token.
Expected : reject
Observed : accepted as nan
Case : NaN is not a JSON number
| Field | Meaning |
|---|---|
MUST / MUST NOT / SHOULD |
How strong the cited rule is |
FAIL |
This adapter did not match Expected |
[id] |
Stable case id (search the JSON file) |
last token (json) |
Serializer name |
Spec |
Click-through to the paragraph |
Expected |
accept or reject from the rule |
Observed |
What the library did |
PASS lines (only in --detailed) still carry the same URL.
Version mismatches are expected
The same bytes can be required under one version and forbidden under another.
| Input | RFC 4627 | RFC 7159 / 8259 |
|---|---|---|
"harbor" as the whole document |
reject (text must be object/array) | accept (any value) |
UTF-16LE BOM + {} |
not the 4627 story | 7159: allowed encodings; 8259: UTF-8 only |
| Input | YAML 1.1 | YAML 1.2 JSON/Core |
|---|---|---|
flag: yes |
boolean true |
string "yes" |
| Input | TOML 1.0 | TOML 1.1 |
|---|---|---|
{ harbor = "kelp", } |
reject | accept |
A library that implements today’s JSON (8259) will “fail” the 4627
top-level-scalar cases. That is the catalog working, not a bug in
orjson.
What to do with a FAIL
- Open
Spec. - Decide whether you care about that version. Most new services want RFC 8259 + I-JSON habits, not RFC 4627.
- If you need the stricter profile, configure the library (or pick another). The catalog does not change library defaults.
What never fails the command
Library FAILs are printed, written to
logs/compliance/<timestamp>.json, and shown on
Dashboard · Compliance (add /{lang}/{serializer} to land on one row).
The command stays exit 0 unless the catalog or runner is broken.
That is deliberate. Treating every historical MUST as a hard error
would fail this repo’s own Python stdlib (json.loads("NaN")) and
PyYAML’s YAML 1.1 bools on day one.