wai: a ladder of timeliness fallbacks, and the reference sink scheduler #655

Merged
dcharlot merged 4 commits from wai/timeliness-ladder-scheduler into main 2026-11-05 18:13:50 -05:00

2026-11-05

Transaction Science
wai: a timeliness rung writes itself by value
All checks were successful
wai-ledger service / service · macos (pull_request) Successful in 1m24s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 15m59s
wai-pack / wai-pack · macos (pull_request) Successful in 4m32s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 11m25s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 6m0s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 10m18s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 20m45s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 23m21s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 13m25s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 19m51s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m10s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 2m16s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 3m45s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 17s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 21m21s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 24s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 48s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 11m50s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m51s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 28m42s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m12s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m55s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m51s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 25s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 14s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m3s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m9s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 10m43s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m41s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h17m5s
Fallback is Copy, so its to_value takes self, as clippy's wrong_self_convention asks.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-05 11:25:13 -05:00
Transaction Science
wai: cache_authority_verify.py reads every rung of a ladder for §9's lines
timeliness §6.3's lines now read each rung, and cache_authority.rs asks for each. The second
implementation read one fallback object, which raises on a fallback written as an array. For one
rung the statements it gives are the same, so the cache-authority corpus reads as it did.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-05 11:05:46 -05:00
Transaction Science
2026-11-05 11:05:46 -05:00
Transaction Science
wai: timeliness fallback ladder, and the reference sink scheduler that runs §7 plans
An entry's fallback is an ordered ladder: null, one rung as an object, or two to eight rungs as an
array in strictly falling value, no object named twice (§4.2 rule 3.4, timeliness_ladder_invalid).
One rung has one form, the object, so an entry with one fallback object is a ladder of one rung and
reads, judges and plans as it did; the cache-authority corpus regenerates unchanged.

§5.3 states which rung applies: at by_ms the primary held, else the first rung held; holding
neither, the sink has passed every rung, states `passed`, presents the primary late at its value at
arrival, and at the end, having presented nothing, abandons and states `ended`. §6.3 and §7.3 take
the ladder, and a plan's choice names its rung.

§7.5 and timeliness::scheduler run a sink's plans against the instants it first held each object:
fetch, abandon, present, passed and ended by exact steps, a function of those inputs alone. A later
plan replaces the one in force wholly. plans_invalid and arrivals_invalid refuse a run's inputs.

The corpus gains the group E, ladder claims, verdicts and plans, and runs, each outcome declared in
the generator. timeliness_verify.py writes the ladder and the run from the text, with mutations and
weakenings for both, and claim_verify.py holds rule 3.4.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-05 11:05:46 -05:00