open-standards/joule-ui/joule-ui-rs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science ecfae310c4
Some checks failed
standards workspaces build + test / aac-rs (push) Has been cancelled
standards workspaces build + test / arl-rs (push) Has been cancelled
standards workspaces build + test / eoc-rs (push) Has been cancelled
standards workspaces build + test / jcp-rs (push) Has been cancelled
standards workspaces build + test / joule-code-rs (push) Has been cancelled
standards workspaces build + test / joule-ui-rs (push) Has been cancelled
standards workspaces build + test / jouleclaw-rs (push) Has been cancelled
standards workspaces build + test / joulecontract-rs (push) Has been cancelled
standards workspaces build + test / jouledesk-rs (push) Has been cancelled
standards workspaces build + test / joulehook-rs (push) Has been cancelled
standards workspaces build + test / map-rs (push) Has been cancelled
standards workspaces build + test / mesh-rs (push) Has been cancelled
standards workspaces build + test / openpay (push) Has been cancelled
standards workspaces build + test / proof-rs (push) Has been cancelled
standards workspaces build + test / sandbox-rs (push) Has been cancelled
standards workspaces build + test / sense-rs (push) Has been cancelled
standards workspaces build + test / smart-byte-rs (push) Has been cancelled
joule-ui: verify the published conformance pack from disk
conformance/v1 was written by gen_vectors and read back by nothing. The in-crate
tests call the fixture functions, so they check the library against itself; a
third party told to reproduce these facts "from the published vectors alone" had
no evidence the reference implementation still did.

tests/pack.rs works from the files on disk. Where the pack carries an input the
input comes from the pack, and where it records an output the whole recorded
output is compared:

  - every file matches its MANIFEST content address;
  - C1: registry and both surfaces deserialized from the pack, validate()
    reproducing the exhaustive error list exactly and in order;
  - C2/C3: interactions rebuilt from the pack's surface, action, inputs, meter
    step and budget, compared whole; C2's surface_id checked against C1's valid
    surface so the two classes agree on one published surface;
  - C4: the sealed chain deserialized and verified, excision breaking at index 1,
    and tampering with content, a signature bit, or link order each caught at
    the right link.

The pack is current -- unlike joulehook's, nothing here was stale.

One sharp edge the test has to cover, because verify_chain does not:
verify_chain checks each link's signature against the key that link CARRIES, and
never compares that key to a trusted one. Re-sealing the same interactions under
an unrelated key produces a chain verify_chain accepts in full. The pack
publishes steward_verifying_key_hex for exactly this reason, so the test binds
every link's signer to it and includes the forged chain as a negative. That is
arguably correct for an integrity primitive -- binding to a trusted key is the
caller's job -- so verify_chain's semantics are left alone; but a verifier that
calls it alone is not checking authenticity, and nothing tested that before.

Falsified by disabling the DisallowedChild rule. The pack test fails on exactly
the C1 case and nowhere else. Stated plainly so coverage is not overclaimed: the
existing conformance lib test (which asserts only invalid.len() >= 3 against a
recorded list of 4) stays green, but joule-ui-core's own unit tests already catch
that rule. The pack test's unique contribution is binding the published bytes and
the steward check, not that rule.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-17 06:56:39 -04:00
..
crates joule-ui: verify the published conformance pack from disk 2026-09-17 06:56:39 -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