@batonai/conformance
v1.0.7
Published
Baton public conformance suite (synthetic fixtures only).
Readme
@batonai/conformance
Public conformance suite for Baton-compatible CLIs. Synthetic fixtures only — no real partner transcripts (see CLAUDE.md invariant 5 / tech spec §10.2).
Running against a local CLI build
pnpm --filter @batonai/conformance build
node packages/conformance/dist/bin/baton-conformance.js \
--against packages/cli/dist/bin.jsOr via the workspace command:
baton conformanceRunning against a third-party packaging
npx @batonai/conformance --against /path/to/their-baton-cli.jsWhat the runner does
For each case in cases/, the runner:
- Creates a clean temp dir.
- Spawns
<bin> ingest <kind> <path>for each artifact. - Spawns
<bin> compile --packet <id> --mode fast --json. - Reads the produced
packet.jsonand compares againstexpected.packetShape(partial match — only declared keys are checked). - Spawns
<bin> lint --packet <id> --strict --jsonand checks both the exit code and any expected finding codes.
Results aggregate into a ConformanceReport printable in human or
JSON mode.
Adding a case
mkdir packages/conformance/cases/<id>plusartifacts/.- Write hand-crafted synthetic artifact files (no real partner content, no real secrets, no competitor names).
- Add a
case.jsonwithid,description,input.artifacts, andexpected.{packetShape,lintResult}. - Append the case to
CASE_MANIFESTinsrc/cases/index.ts. The manifest is intentionally explicit (mirrors the lint rule registry) so we never silently load anything from disk.
Benchmark scaffold
The benchmark/scenarios/ directory is the placeholder for the
human-graded 10-scenario benchmark from tech spec §10.3. Real
scenarios are populated post-launch from the curated golden corpus.
