JCR-1 ships ten conformance vectors with three independent verifier
implementations byte-equal. The triangle primitives (conservation,
cone, oracle, elicitor) had no equivalent — implementers in other
languages had to read the Rust source to know what "compliant" means.
This commit closes that gap. Each primitive gets:
conformance/vectors.json — the canonical fixture set
conformance/README.md — the conformance contract spec
tests/conformance.rs — Rust verifier wired into cargo test
Vectors:
conservation/1 — 5 vectors: conforming, below_spec, hallucination,
missing_delta, plus a multi-finding case
cone/1 — 6 vectors: every datum_default band entry,
jouleclaw_cascade_default L0, escalate-lut-to-
formulaic, escalate-from-apex (refused)
oracle/1 — 5 vectors: always_pass, always_fail, composite
all-pass with chain dedup, composite short-
circuit on first fail, empty-composite trivial-
pass
elicitor/1 — 5 vectors: empty-walker-done, single-required-
ask, two-required-fill-first-ask-second, fully-
filled-done, optional-slot-never-asked
Each verifier asserts byte-equality between the reference impl's
serde_json output and the vector's `expected_*`. Adding a vector
extends the conformance contract for every implementer.
The Python and Go reference verifiers (the JCR-1 multi-language
pattern) are roadmap, not part of this commit — the vectors are
language-neutral so other-language verifiers can be added without
changing the contract.
4 new tests, one per primitive — all green.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
1.1 KiB
1.1 KiB
oracle/1 — conformance
Test vectors for any implementation claiming to implement the
JouleClaw Oracle closure-gate. The reference AlwaysPassOracle,
AlwaysFailOracle, and CompositeOracle in this crate pass every
vector; any other implementation is conformant iff it produces the
same Verdict (byte-equal under serde_json's snake_case-tagged
enum serialization) for every input fixture.
Files
vectors.json— the canonical fixture set. 5 vectors covering always-pass, always-fail, composite all-pass with chain de- duplication, composite short-circuit on first fail, and the empty-composite trivial-pass edge case.
Verifier
cargo test -p jouleclaw-oracle --test conformance
The oracle_program field encodes a tree. A leaf is
{"kind": "always_pass"} or
{"kind": "always_fail", "reason": "..."}. A composite is
{"kind": "composite", "id": "..."} followed by its member nodes
in the same array. The verifier reads the array left-to-right and
constructs the oracle accordingly.
Adding a vector
Add an entry to vectors, bump vector_count, and re-run the
verifier.