Skip to content

Distribution

The conformance suite is published as a versioned, downloadable artifact so a porter can pin their runner to a specific suite version instead of tracking the repository directly.

Latest release

kbars-conformance-0.1.0.zip (sha256)

This link is updated by hand each time the suite version changes; see RELEASING.md for the checklist that keeps it current.

All versions

Version ZIP sha256
0.1.0 kbars-conformance-0.1.0.zip kbars-conformance-0.1.0.zip.sha256

Every released version's ZIP and sidecar stay published — none are pruned from the site as new versions ship.

What's in the ZIP

Each archive is self-contained: it bundles the fixtures, their JSON Schemas, manifest.json, ERROR-CODES.md/error-codes.json, and conformance/README.md, all at the same relative paths they occupy in the repository's conformance/ directory, plus the matching version of the Bars specification under spec/<version>/. A runner that validates against the ZIP's own bundled schemas — and reads the bundled specification for the normative rules — works fully offline. The archive is built reproducibly (./gradlew packageConformance) — fixed file order, no timestamps — so two builds from the same source tree produce byte-identical ZIPs, and checksumConformancePackage emits the .sha256 sidecar above.

Schema URLs: online is latest, the ZIP is pinned

Every schema declares a canonical $id under https://bars.commonsware.com/conformance/schema/, e.g.:

"$id": "https://bars.commonsware.com/conformance/schema/render-fixture.schema.json"

Those URLs — and the same-path fixture JSON alongside them — always resolve to the current suite version on the site. There is no per-version schema URL scheme (no /conformance/0.1.0/schema/...). If you need a specific version pinned in place, use that version's ZIP: its bundled schemas and fixtures never change underneath you.

Browsing fixtures online

The fixtures themselves are also served at their on-disk paths, e.g. conformance/render/each-block.json and conformance/manifest.json — the site mirrors conformance/ byte-for-byte (copyConformanceToSite, verified by checkConformanceSite), so what you see on the site is exactly what ships in the repository and the ZIP.

Reference grammar (not bundled)

The suite does not include the reference implementation's ANTLR grammar — neither in conformance/ nor in the ZIP. It is browsable directly in the repository:

Treat both as informative, not normative, and read them with three caveats in mind:

  • The Bars specification governs, not the grammar. Per its precedence rule, the specification is normative, the conformance suite is the executable test of conformance, and this grammar is informative — it is what the reference implementation happens to use. Where the grammar and the specification's prose would ever disagree, the prose governs; the specification also embeds this same grammar verbatim (see Lexical Structure).
  • They describe the post-pre-pass token stream. A hand-written pre-pass rewrites unterminated opener delimiters before ANTLR ever sees the source (see the prepass/ fixtures); the grammar has no rule for that step and silently assumes its output.
  • They're ANTLR-specific. KBarsParser.g4 declares options { tokenVocab = KBarsLexer; }, so the two files are a pair — neither regenerates anything alone. A porter not using ANTLR can read them for structure but cannot run them directly.

Changelog

See the Conformance Suite Changelog for what changed in each suite version.

Consuming this in your runner

See Writing a Workalike and the porting guide overview for how to build a runner against the fixtures, and Fixture Schemas / Error Codes for the per-shape field reference and error taxonomy referenced above.