A review reproduced four ways to bill against the extension's own text, and each is closed here in
wai-rs and in receipt_ledger_verify.py:
- One node schedule in two cache sources billed twice. A group or cache source's heads are now its
claims, and an instance of a group that two sources of an invoice declare is refused.
- Overlapping batches billed across two invoices of a chain. An aggregated source is in a period
when its batch is, read through its task's time_precision, so a verifier given one invoice sees it.
- A node billing the publisher's own instance beside the publisher: bearer_contradicted.
- wai-ledger could not issue the corpus's second week, since a group's head was its group receipt.
It now issues the month and the week after it byte for byte, and a test holds it to that.
The leader's statement is read whole (statement_invalid, wrong_signer, batch_invalid), and the task
through its time_precision (task_invalid). Section 5.2 now says what is enforced, 5.3 holds a cache
source to the entries it bills, and 4.10 and 12 state what a period rule leaves unbilled and what a
declaration's bytes bound.
Two accepted vectors hold what no control did: two groups on one broadcast service, and a leader's
statement of version 1.
Co-Authored-By: Claude Opus 5.5 <[email protected]>