jsonvetdocsDecision records

playgroundthis page on GitHub

Decision records

Each record is a choice where we measured or argued an alternative and turned it down, with the numbers, so nobody argues it again without new evidence. A new decision lands in the same pull request as its code.

A record has Context, Options (with their numbers, date and setting, or "argued, not measured"), Decision, Consequences, Confirmation (the test or CI job that keeps it true) and Revisit if, as in MADR 4.

We don't rewrite an accepted record. To change a decision, bring what its "Revisit if" asks for and add a new record; the old one gets Status: superseded by NNNN (YYYY-MM-DD). Fixing a typo, a link or a renamed test is fine.

# Decision Date
0001 One hand-written parser for six dialects, under a contract with check-json5 1.4 2026-10-13
0002 No unsafe code 2026-10-19
0003 SipHash with OS keys for the duplicate-key index 2026-10-20
0004 Measure a speed-up first, and weigh it against what it costs 2026-10-19
0005 The nearest config file applies, and replaces the ones above it 2026-10-20
0006 --schema on the jsonschema crate, offline, in every build 2026-10-18
0007 SARIF written by hand, with one escaping rule for every output 2026-10-14
0008 A Rust binary in PyPI wheels, installed through a setup.py placeholder 2026-10-13
0009 Where the config search stops, and what a bad config may show 2026-10-20
0010 --schema limits are deterministic caps, not a timeout 2026-10-20
0011 cargo-release bumps the version, the tag starts the rest 2026-10-21
0012 Schema paths from a project stay in it, and their errors quote nothing 2026-10-23
0013 Messages in a plain catalog, picked from the locale, with machine output in English 2026-10-28
0014 --schema checks the document's own nodes, through jsonschema's Json trait 2026-11-01
0015 A language server in the CLI, on lsp-server, with messages in serde_json 2026-11-06
0016 An opt-in SchemaStore catalog over HTTPS 2026-11-10
0017 The docs pages are built from the Markdown with marked 2026-11-11