G9: the capture format, and a guard that was right

The packet vocabulary now has a place to be checked. crates/orbistoun-gpu/tests/captures/ takes a pair per capture - what a library call asked for, and the bytes it appended - and tests/vocabulary.rs checks one against a decode of the other. There are no captures yet; the suite says so loudly and orbistoun.sh check reports it beside the device-test skip.

The pairing is the whole design. A recorded command buffer on its own would have to be read through the table under test, so agreement would prove nothing. The call states the answer and the bytes are the question, which is what makes this an oracle rather than a mirror - the same shape as the shader decoder's differential test one layer down.

The comparator returns errors instead of panicking, so both directions are tested with an empty corpus: one synthetic capture that agrees, one that does not. A comparator only ever exercised by data that makes it pass cannot be told apart from one that returns success unconditionally, and this file exists entirely to fail when the table is wrong. The synthetic fixtures are marked emphatically as harness-validation and not evidence - they are generated from the table they would be checking.

Surprises.

Still red outside this side. The gate fails on formatting in orbistoun-libc, which belongs to the loader work. Every crate here is clean.

Next. G13, subgroup fidelity - the last item on the roadmap with a real oracle and no dependency on a capture.