### Privacy Pass admission end to end: one scope per room, admission by the room's service over HTTP, ratings over MOQT, and the serving rule at the relay

- **One scope per room** ([live-rooms](extensions/live-rooms.md) §10.4). The subscribing scopes
  §10.4 named did not fit the 255 bytes `draft-ietf-moq-privacy-pass-auth-03` gives the scopes of
  one MoQAuthorizationInfo: each scope restates its namespace match, 69 bytes for the room id, so
  three fit and §10.2 step 5's four at the least (320 bytes) do not. A room's scope is now one
  MoQAuthScope, the actions SUBSCRIBE_NAMESPACE, SUBSCRIBE, FETCH and TRACK_STATUS on
  `MATCH_PREFIX` of the room id's tuple and on every track name, 78 bytes; what it does not carry
  is applied from the room's own records. A verifier reads a challenge's `origin_info` by the
  draft's grammar and refuses one that does not read `scope_malformed`, and one that reads and is
  not the room's scope `scope_mismatch`, the previous revision's encoding by these names
  ([age-assurance](extensions/age-assurance.md) §5.2 step 2, §11).
- **Redemption contexts per window** (age-assurance §5.1, §5.3). A challenger may fix a
  challenge's context for a room and a window of time, accepting the current window's and the
  one before, so a token may be obtained before it is presented; it keeps the nonces of the two
  windows it accepts and drops a window's when it stops accepting it, bounds them per window, and
  past the bound redeems no further token rather than forget one.
- **Admission by the room's service over HTTP** (age-assurance §5.6). A room's service is a
  Privacy Pass origin of RFC 9577: it answers a grant request without a token `401` with a
  `PrivateToken` challenge for each key of the room's policy, its `origin_info` RFC 9577's list
  of server names and its context the room's window; checks a token by §5.2 against the room's
  age; and states the threshold in the grant's `age` (§5.4). Over HTTP a challenge's
  `origin_info` must list the service's own name.
- **Ratings over MOQT** (age-assurance §5.7). A rating claim rides as the property `WAI_RATING`
  (`0x3A4D`), a Track Property of a PUBLISH or SUBSCRIBE_OK and an Object Property of any object;
  a relay holds what §3.6 lets it honour from the instant it reads it.
- **The corpus** (`live-conformance/age/`) gains the scope cases (the previous revision's three
  and four scopes, another room's, an empty one, an action outside the draft's table, a byte
  after the scope, a list of server names over MOQT) and the HTTP binding's (admitted under the
  service's name and under a list holding it; refused under another origin, an empty list and
  the MOQT scope), and RFC 9578 Appendix A.2's issuance (its nonce, blind, salt, TokenRequest
  and TokenResponse), which both verifiers check: the blinded message is (*s*·*r*)^e mod *n*
  and the response *s*·*r* mod *n*.
- **The reference stack.** `joule-moq` reads and writes rating claims as `wai-rs` does, and
  agrees with the corpus on every claim and serving request. `joule-moq-relay` holds the claims
  it is carried, bounded per room, per track and in all, and serves each session by the
  thresholds of the grants its SETUP proved: a live object of a group above it is not
  forwarded, the streams of groups a newly held claim raises are ended, and a SUBSCRIBE, a FETCH
  or a fill is refused `below_threshold` at its start or answered up to the first refused group.
  `joule-moq-room` (`[age]`) is the HTTP origin of §5.6 with `wai-rs`'s checks, keeps its nonces
  per window, counts admissions by window, issuer and threshold alone, and signs
  `wai-age-admissions` receipts with the room's clock (`GET /age/receipt`, and `receipts_out`
  as each window closes). The room page answers the challenges with a token it obtains by blind
  issuance (RFC 9578 §6, RFC 9474 §4.2 to §4.4) from the issuer's directory (RFC 9578 §4),
  carries the room's rating on every track it publishes and, with `rate`, its own rating of its
  video, and shows what the relay withholds. Its end-to-end scenario `age` runs it all against a
  test issuer over the corpus's published keys.

