ci: run the conformance suites that cargo test never executed #93

Merged
dcharlot merged 1 commit from ci/run-conformance-verifiers into main 2026-09-17 06:58:33 -04:00
Owner

Five standards ship a conformance runner whose suite lives in a binary's main(), not in #[test]. cargo test never executes them, and --all-targets compiles the binary without running it — so the suites reported nothing and the matrix looked green.

Verified, not inferred

cargo test -p aac-conformance   ->   0 tests
cargo run  -p aac-conformance   ->  40 checks
cargo test -p map-conformance   ->   1 test
cargo run  -p map-conformance   ->  15 checks

Same shape for jcp, proof, sandbox. Every one of these suites includes negative vectors (C-neg, Cneg) — the checks that catch a verifier accepting what it must reject, which no amount of positive-path testing finds.

This is the main() instance of the feature-gated-test bug already recorded for this repo: code that compiles, reports nothing, and reads as covered. Compiling a suite is not running it.

aac-conformance's own doc comment says "Exit code is the number of failed checks (capped), so CI can gate on a clean 0" — it was written to be gated on, and nothing ever gated on it. All five exit non-zero on failure (aac by failure count, the rest via exit(1)), so the step has teeth.

Two things this step deliberately does NOT claim

  • No path argument. These binaries take none — they check the implementation against in-code expectations. An earlier draft passed -- ../conformance/v1, which they silently ignore; a tampered copy of map/conformance/v1 still passed 15/15, which is how the mistake surfaced.
  • It does not validate the published conformance/v1 files on disk. Nothing in CI does that yet. Standards whose packs are read by a #[test] (jcp action-receipt, joule-ui, jouleclaw, joulecontract, sandbox, sense) are already covered by the Test step, and joule-code has its own workflow. The remaining on-disk-pack gap is real and stays open rather than being papered over by a step that looks like it closes it.

🤖 Generated with Claude Code

Five standards ship a conformance runner whose suite lives in a binary's `main()`, not in `#[test]`. **`cargo test` never executes them**, and `--all-targets` compiles the binary without running it — so the suites reported nothing and the matrix looked green. ### Verified, not inferred ``` cargo test -p aac-conformance -> 0 tests cargo run -p aac-conformance -> 40 checks cargo test -p map-conformance -> 1 test cargo run -p map-conformance -> 15 checks ``` Same shape for `jcp`, `proof`, `sandbox`. Every one of these suites includes **negative vectors** (`C-neg`, `Cneg`) — the checks that catch a verifier *accepting* what it must reject, which no amount of positive-path testing finds. This is the `main()` instance of the feature-gated-test bug already recorded for this repo: code that compiles, reports nothing, and reads as covered. **Compiling a suite is not running it.** `aac-conformance`'s own doc comment says *"Exit code is the number of failed checks (capped), so CI can gate on a clean `0`"* — it was written to be gated on, and nothing ever gated on it. All five exit non-zero on failure (aac by failure count, the rest via `exit(1)`), so the step has teeth. ### Two things this step deliberately does NOT claim - **No path argument.** These binaries take none — they check the implementation against in-code expectations. An earlier draft passed `-- ../conformance/v1`, which they silently ignore; a **tampered copy of `map/conformance/v1` still passed 15/15**, which is how the mistake surfaced. - **It does not validate the published `conformance/v1` files on disk.** Nothing in CI does that yet. Standards whose packs *are* read by a `#[test]` (jcp action-receipt, joule-ui, jouleclaw, joulecontract, sandbox, sense) are already covered by the Test step, and joule-code has its own workflow. The remaining on-disk-pack gap is real and **stays open** rather than being papered over by a step that looks like it closes it. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ci: run the conformance suites that cargo test never executed
Some checks failed
standards workspaces build + test / aac-rs (pull_request) Successful in 44s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 45s
standards workspaces build + test / jouleclaw-rs (pull_request) Failing after 2m49s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 38s
standards workspaces build + test / map-rs (pull_request) Successful in 41s
standards workspaces build + test / mesh-rs (pull_request) Successful in 27s
standards workspaces build + test / openpay (pull_request) Successful in 1m59s
standards workspaces build + test / eoc-rs (pull_request) Successful in 2m30s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m22s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m16s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m23s
standards workspaces build + test / arl-rs (pull_request) Successful in 10m3s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m49s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 4m23s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 3m41s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 3m35s
standards workspaces build + test / sense-rs (pull_request) Successful in 3m6s
2951ed150b
Five standards ship a conformance runner whose suite lives in a binary's
`main()`, not in `#[test]`. `cargo test` therefore never executes them, and
`--all-targets` compiles the binary without running it — so the suites reported
nothing and the matrix looked green.

Verified rather than inferred:

    cargo test -p aac-conformance   ->  0 tests
    cargo run  -p aac-conformance   -> 40 checks
    cargo test -p map-conformance   ->  1 test
    cargo run  -p map-conformance   -> 15 checks

Same shape for jcp, proof and sandbox. Every one of these suites includes
negative vectors (`C-neg`, `Cneg`) — the checks that catch a verifier ACCEPTING
what it must reject, which no amount of positive-path testing finds.

This is the `main()` instance of the feature-gated-test bug already recorded for
this repo: code that compiles, reports nothing, and reads as covered. Compiling
a suite is not running it.

aac-conformance's own doc comment says "Exit code is the number of failed checks
(capped), so CI can gate on a clean 0" — it was written to be gated on, and
nothing ever gated on it. All five exit non-zero on failure (aac by failure
count, the rest by `exit(1)`), so the step has teeth.

Two things this step deliberately does NOT claim:

  * No path argument. These binaries take none — they check the implementation
    against in-code expectations. An earlier draft of this step passed
    `-- ../conformance/v1`, which they silently ignore; a tampered copy of
    map/conformance/v1 still passed 15/15, which is how the mistake surfaced.
  * It does not validate the published `conformance/v1` files on disk. Nothing
    in CI does that yet. Standards whose packs ARE read by a `#[test]` (jcp
    action-receipt, joule-ui, jouleclaw, joulecontract, sandbox, sense) are
    already covered by the Test step; joule-code has its own workflow. The
    remaining on-disk-pack gap is real and stays open rather than being papered
    over by a step that looks like it closes it.

Co-Authored-By: Claude Opus 5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!93
No description provided.