open-standards/aac/aac-rs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science edcaa2a081
All checks were successful
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m39s
standards workspaces build + test / aac-rs (pull_request) Successful in 33s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 34s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 34s
standards workspaces build + test / map-rs (pull_request) Successful in 29s
standards workspaces build + test / mesh-rs (pull_request) Successful in 23s
standards workspaces build + test / openpay (pull_request) Successful in 2m48s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m49s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m17s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m15s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m7s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m33s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m10s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 2m11s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m21s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m20s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m16s
aac: read the conformance pack it publishes
`aac` ships vectors under `aac/conformance/v1/` that a third-party
implementation is told to certify against, and the only code naming those files
was `gen_vectors.rs` — the generator that writes them. Nothing read them back,
so the published bytes could drift from the implementation with no test to
notice. That is the drift that left joulehook and jouledesk with stale JCR-1
envelopes after the receipt payload gained a field.

The published routing table drives `AacCascade::level_for_operation` rather than
being re-read, so changing a routing rule fails here instead of being silently
republished. The pack's own declared invariants are also checked against its own
rows.

Falsified before committing: breaking a real routing rule in `aac-core`
(`AacOperation::CellSelect => AacCascadeLevel::SymbolLookup`) and making the
pack internally inconsistent each fail it. Pack restored and verified pristine.
Workspace green.

Two limits worth stating. Breaking that routing rule **also** fails the in-crate
suite, so this is not that rule's only coverage. And `aac-core` exports no
ordered level list, so the suite and the generator each keep a private
`const LEVELS` that can still drift apart — left for a maintainer, since fixing
it means adding public API.

This PR began as four packs and is now one. `map` was closed on main in
a800ebe3, `proof` in a4caa2e, and `sense` in a8fda66 — all three while this sat
open, and all three stronger than mine, so mine were dropped rather than merged
alongside. The sense one is the clearest case: it identifies that
`c1_replay_is_deterministic` was `assert_eq!(f(), f())`, a tautology comparing
the published digest to nothing, which is a better diagnosis than my
value-comparison.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-21 14:06:49 -04:00
..
crates aac: read the conformance pack it publishes 2026-09-21 14:06:49 -04:00
Cargo.lock chore(deps): cargo update across the workspace; eoc toolchain → 1.98.0 2026-08-26 07:39:26 -04:00
Cargo.toml msrv: raise the rust-version floor to 1.97 across the workspaces 2026-07-23 00:17:08 -04:00
prerender-static.sh Add aac, map, sandbox standards; catalog the standards family 2026-06-07 17:04:36 -04:00