ModelBased means a calibrated model: an unattested reading falls to what its evidence supports #223

Merged
dcharlot merged 2 commits from fix/model-based-means-calibrated into main 2026-10-12 08:42:35 -04:00

2026-10-11

Transaction Science
wai: ModelBased means a model calibrated on the host it describes
Some checks failed
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Has been skipped
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Has been skipped
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 4s
WAI section references / cited sections exist (pull_request) Successful in 10s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 4s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 2m53s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 16m43s
wai-pack / wai-pack · linux (pull_request) Successful in 1m25s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 22s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m25s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m4s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m44s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m11s
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 5m48s
standards workspaces build + test / aac-rs (pull_request) Successful in 5m10s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 1m39s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 57s
standards workspaces build + test / map-rs (pull_request) Successful in 56s
standards workspaces build + test / mesh-rs (pull_request) Successful in 1m1s
standards workspaces build + test / openpay (pull_request) Successful in 4m44s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 19m4s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 54s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 4m44s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 4m15s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 7m47s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m32s
WAI conformance / cargo-class corpora · macos (pull_request) Failing after 1h4m46s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 8m11s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 25m8s
wai-pack / wai-pack · macos (pull_request) Successful in 2m27s
The ModelBased class was defined as "a calibrated per-operation model
(e.g. wall time × a power constant)", and the example licensed any
constant. The family's metering ladder grades only a host-calibrated
model ModelBased; a nominal TDP or typical draw is an estimate however it
is multiplied. The definition in energy_class.rs and the energy
extension's class table now say so. No conformance vector carries the
definition, and none changes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 22:57:23 -04:00
Transaction Science
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