open-standards/joulecontract/joulecontract-rs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science cbf57f71a8 joulecontract: an unattested Metered tag falls to the class its evidence supports
A Metered tag whose meter attestation did not bind was always demoted to
ModelBased, but ModelBased is defined (SPEC §4.2) as a figure anchored to
a metered baseline, with that anchor sealed. A receipt with no meter and
no anchor was therefore certified ModelBased on evidence it did not
carry. An unbound reading is no reading: the class now falls to
ModelBased only where the metered-baseline anchor is sealed, else to
Unaccounted (with the `unaccounted` demotion), on the issue side and on
the sealed-evidence side alike; an unresolved anchor still demotes a
ModelBased figure to Unaccounted after that.

SPEC §4.2 and the §15 demotion table say so. The metered_unattested
negative vector, regenerated by gen_vectors, now composes to
⟨JR-3 · Unaccounted · certified⟩ with demotions metered_unattested and
unaccounted; the other 21 vectors are byte-identical. A unit test pins
both branches (no anchor → Unaccounted; anchor → ModelBased).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 22:47:45 -04:00
..
crates joulecontract: an unattested Metered tag falls to the class its evidence supports 2026-10-11 22:47:45 -04:00
.gitignore Add the JouleContract standard — a carrier for obligation 2026-06-10 03:30:59 -04:00
Cargo.lock proof-solvers: read each resident z3 decision off z3's own process tree 2026-10-10 18:11:21 -04:00
Cargo.toml msrv: raise the rust-version floor to 1.97 across the workspaces 2026-07-23 00:17:08 -04:00