| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 14s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 13s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 2m3s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 2m32s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 4m40s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 5m15s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 6m25s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 7m57s
wai-audit collector and player integration / does this change touch it (push) Successful in 6m40s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 6m44s
WAI operation catalogue / does this change touch it (push) Successful in 6m42s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 6m45s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 6m45s
wai-app and Create / wai-app · does this change touch it (push) Successful in 6m45s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-audit collector and player integration / collector · linux (push) Has been cancelled
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
wai-fleet service / service · linux (push) Has been cancelled
wai-fleet service / service · macos (push) Has been cancelled
wai-key-proxy / proxy · linux (push) Has been cancelled
wai-fleet service / does this change touch it (push) Has been cancelled
wai-ledger service / service · linux (push) Has been cancelled
wai-ledger service / service · macos (push) Has been cancelled
wai-key-proxy / does this change touch it (push) Has been cancelled
wai-quantum for JavaScript / javascript · linux (push) Has been cancelled
wai-quantum for JavaScript / does this change touch it (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (push) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
wai-ledger service / does this change touch it (push) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
WAI Studio / does this change touch it (push) Has been cancelled
wai-sink-swift native sink package / does this change touch it (push) Has been cancelled
wai-quantum studio and desktop / does this change touch it (push) Has been cancelled
wai-sink-android native sink library / does this change touch it (push) Has been cancelled
wai-ops integer operators / does this change touch it (push) Successful in 6m21s
wai-ops integer operators / macos-arm64 (push) Successful in 1m3s
wai-ops integer operators / linux-x86_64 (push) Successful in 59s
wai-ops integer operators / independent checker (Python) (push) Successful in 18s
wai-ops integer operators / wasm32 under Node (push) Successful in 1m50s
wai-ops integer operators / wasm32-wasip2 (wasmtime) (push) Successful in 1m54s
wai-ops integer operators / linux-aarch64 (push) Successful in 1m59s
- sink browser: each call of live-conformance/browser given with its answer withheld, the
answer held byte for byte; wai_browser_sink_vectors answers is the reference sink.
- decoder neural: each vector of neural-conformance, its parameter set as {model} and its
payload as {in}, the RGB8 held to sha256.json; wai_int_synth_vectors decode is the reference.
- cache cache: the cache corpus's driver against a cache the command starts in front of the
reference origin; mutators.py --mode relay is the positive control through a proxy.
- conform-result/1 cases may carry "level": "informative"; the verdict is over the required
cases (conformance-results §2.3), in wai-rs and conform_result_verify.py, with eight vectors.
--level all counts every case, for a suite whose corpus marks some informative.
- Admission rule 4 refuses a record that marks a required case informative, and
wai verify --conformant gives each area its verdict.
- wai-breaking.yml signs and admits the three records and refuses a planted browser sink.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
||
| .. | ||
| driver.py | ||
| mutators.py | ||
| README.md | ||
| run.sh | ||
| tests.json | ||
cache-conformance — HTTP caches under http-delivery §9
Checks the cache rules of http-delivery §9 against
an HTTP cache that fronts an origin serving the objects of
http-conformance/, and reports, per cache label and version,
whether the configuration meets each rule.
Provenance. Written here: the tests, the driver and the controls are the code in this directory, and the objects a run fetches are http-conformance's (see its provenance). No media of its own.
| file | what |
|---|---|
tests.json |
the tests: id, rule, level (MUST or informative) and what each checks |
driver.py |
stages the origin's files and runs the tests against a cache; standard library only, with ../claim-conformance/_blake3.py to check each object against its content hash |
mutators.py |
seven proxies that each break §9 in one way, the negative controls, and a relay that changes nothing (--mode relay), the positive control through a proxy |
run.sh |
stages, starts wai http origin, and runs the driver against the origin, each control and each labelled cache |
What runs
- The origin, directly (
origin-direct): the reference origin (wai http origin) must pass every MUST test. It answers byte ranges andIf-Range, serves a live-edge alias with a shortermax-age, sends §8.4'sCache-Controlfor the key log, and counts the requests it receives (--count-hits) so the informative tests can tell whether a cache answered from its store. - The negative controls (
control-flip,control-gzip,control-truncate,control-vary,control-stored,control-ranged,control-reflip): the driver must fail, and must name the tests each defect reaches —flipC1, C3, C11 and C14;gzipC7;truncateC1, C2 and C14;varyC13;stored, which keeps a first answer whole and changes the headers of every later one, C14;ranged, which changes the headers of every206, C3, C5 and C8;reflip, which keeps a first answer whole and changes a byte of every later one, C1 and C14. A control the driver passes is a defect in the driver. - Labelled caches. An environment that provides them lists their labels in
<dir>/labels, where<dir>is/opt/wai-cache, orWAI_CACHE_DIRwhere that is set; each<dir>/<label>/holdsstart.sh <port> <origin URL>, which starts the cache in front of the origin, aversionfile and theconfigit runs with. This repository holds no cache configuration: the labels are opaque, and a report names a cache only by its label, its package version and the SHA-256 of its configuration. Where/opt/wai-cachenames no label, only 1 and 2 run, and the summary says so. AWAI_CACHE_DIRwhoselabelsfile is absent or empty fails the run, and a cache that does not start has a row saying so.
A first GET passes through a cache however it treats its store, so C14 asks again once the cache has had a second to store what it fetched, and holds that answer to the origin's bytes and headers. S3 says how many of those repeats the cache answered itself and S4 how many of the run's requests reached the origin. §9 rule 7 lets a cache relay what it cannot store, so the MUST tests pass for a cache that stores nothing; the summary marks a cache whose store answered no repeat as a relay, since such a run says nothing about a store.
Through wai conform
wai conform cache --suite cache --impl '<command>' runs the same tests and writes a signed
record of them (conform-result/1, extensions/conformance-results.md). The command starts the
cache in the foreground, listening on {port} of 127.0.0.1 in front of {origin}, as a
labelled cache's start.sh <port> <origin URL> does; the run stages the origin's files with
driver.py stage, starts the reference origin (wai http origin --count-hits), starts the
cache, runs driver.py run against it, and stops both. Each test is a case named
<id> <name>; a MUST test is required, and an informative one is marked so in the record,
reported and not counted in its verdict (§2.3 there; --level all counts it). The relay:
wai conform cache --suite cache --root wai \
--impl 'python3 -I wai/cache-conformance/mutators.py --mode relay --listen {port} --upstream {origin}'
wai verify --conformant admits a record against this corpus: its digest covers tests.json,
the driver, the BLAKE3 the driver checks with, and every file it stages (each object and head
proof of http-conformance, and the parameter set wai-rs/tests/vectors/int_mlicpp/model.wmb).
Reports
run.sh <out-dir> writes, under <out-dir>/reports/, report-<label>.json
({cache_label, package_version, config_sha256, results}), requirements-<label>.md
(the same as a table, with whether the configuration meets §9), the driver's log per run,
and summary.md, which CI also writes to the job summary. The CI job uploads the
reports as an artifact.
Running it
cd wai/wai-rs && cargo build --release --no-default-features --features http --bin wai
cd ../.. && WAI=wai/wai-rs/target/release/wai bash wai/cache-conformance/run.sh /tmp/cache-run
With labelled caches in a directory of your own:
WAI=wai/wai-rs/target/release/wai WAI_CACHE_DIR=/path/to/caches bash wai/cache-conformance/run.sh /tmp/cache-run
Python 3 with the standard library is all the driver and the controls need.