Each *-conformance/README.md now has a line that begins **Provenance.**: the generator that writes the corpus and its input, and for an input not generated here its source and licence. OER/2's corpus is settled and left as it is. byte-exact-conformance and quantum-ops-conformance get a README. wai-rs/tests/vectors/README.md gives a row per vector directory. Where the staged-delivery, staged-measurement and telemetry READMEs called their content "synthetic", that sentence is now their provenance line. Two vectors are recorded as not generated, from the provenance audit: int_video's video_real (a pan over a third-party picture) and neural-conformance's photo (a third-party picture, with a decoder trained on unrecorded images). Their lines say so and that they are to be replaced; the photo bullet no longer names the picture's source product. tests/corpus_provenance.rs requires the line in every corpus and a row for every vector directory; CI runs it with the carriage tests. CONTRIBUTING states the rule: corpus content is generated here, or recorded with a licence that permits redistribution, and a word like "synthetic" is not a provenance line. Co-Authored-By: Claude Opus 5.5 <[email protected]>
3.2 KiB
3.2 KiB
telemetry-conformance — delivery telemetry
The corpus of extensions/delivery-telemetry.md
§9: observations, their CMCD version 2 reports and CMSD fields, and session logs with
their metrics. Every value here is a string or an integer, the same on every machine.
observations/— one observation (§2) each, every event kind among them: requests with the object's members, a response, the play states, the first presentation and a later one (which CMCD does not report), stalls with their metrics, a switch, a layer change, a dropped frame, dispatch outcomes, an abandon, an end with its claim pointer, a low-latency live session, and strings RFC 9651 escapes (a quote and a backslash in a capability in a custom key, a quote in a URL in an Event-mode report).expected/cmcd.json— for each observation: its mode (request,eventornone), its report (§3, §4), and for Request mode its header shards (§4.2).invalid/— observations every reader refuses (§2.4): a member unknown or missing, the wrong version, a session id that is not hexadecimal, an Event-mode observation with no time, an integer past 2⁵³ − 1, a time past an RFC 9651 Integer, a claim before the end, an unknown event, a response key on a request and a request key on a response, a switch to its own path or for an unknown reason, a pin refusal with no reason, an unknown object type, a content id past 64 characters or holding an address or a URL, an object URL with a query, a fragment, user information (behind//, behind backslashes, behind no slash, or behind a mixed separator), a backslash, or a@in its path (§8.2), a presentation at no layer, an unknown cohort.expected/refused.jsonlists them.cmsd/— CMSD-Static descriptions of a base and of a derived layer, and a CMSD-Dynamic field from two nodes (§6);expected/cmsd.json, their fields.logs/— session logs (§7.1), one observation per line: a session with stalls, one open at its end; an exit before start; a start failure.expected/qoe.json, their metrics (§7.2).cml/— the differential (§9.3).
Verifiers.
wai_telemetry verify .(from../wai-rs, featuretelemetry): reads every input from disk, requires each observation to write back as given, recomputes every expected file and requires it byte for byte, reads every report back, and requires everyinvalid/observation refused.wai_telemetry gen .writes the corpus.cml/differential.mjs(npm ci && node differential.mjs ..incml/): builds each report from the extension's tables in JavaScript, not fromwai-rs's output; encodes it with an independent open-source CMCD and CMSD library at the versionspackage-lock.jsonlocks, in the mode the event fixes, with the header shards for Request mode; requires the bytes ofexpected/cmcd.jsonandexpected/cmsd.json; reads the expected strings back with the library's dictionary, query and header readers and requires the members; and validates every report, and the Event-mode reports together, requiring no error.
Provenance. Generated here: session ids, content hashes and timestamps are fixed values chosen for the corpus. No recorded traffic.