Review findings on the member, none of which changed a result:
- Ring rewrites and multi-piece readback were never exercised below the
wide sizes: every corpus circuit fit one submission and one readback
piece. Hidden knobs `with_ring_records` and `with_readback_chunk` (like
`with_max_x`) let G4 certify random-v1 through a ring of three records
with state planes read back twelve bytes at a time, and fabric-v1
through a ring of two with pieces of 12 KiB and four bytes; both give
the pinned digests. G6 adds long four-qubit circuits in each gateset,
more gates than one submission holds, at the default ring and a ring of
three, against native; and a run whose first out-of-range op sits in a
later submission than the first, with a later one after it, reported
at its op-log index.
- wgpu's native device poll reports a failed wait other than a timeout,
such as device loss, by panicking. The poll now runs under
catch_unwind: the panic becomes WebGpuError::Device and the device is
treated as lost from then on. Documented, including that a
panic = "abort" build still aborts. A unit test holds the mapping.
- POLL_TIMEOUT bounded the whole run's GPU time, since the first wait was
on the readback queued behind every gate submission. Natively each
submission, a chunk of gates sized by the work budget, the probe's
dispatch or a readback copy, is now waited on before the next, so the
timeout bounds one chunk. The documentation and changelog say so.
Still 12 device tests; the member script's checks are unchanged.
Co-Authored-By: Claude Opus 5.5 <[email protected]>