jpegai-int/1 now writes six graphs (hs_y, hs_uv, rec_y, rec_uv, syn_y, syn_uv;
integer-operators §13.6.2). The independent checker (tools/wai_ops_check.py),
written by a separate session from §13.6.2's text without reading the Rust,
lowers the eight weight files and reproduces every lowered graph and certificate
byte for byte: the committed synthetic set (4e4ba5e4…) through `ops-conformance`
(19 sets, 34 graphs, 19 certificates), and jpegai/v1 (3e243dc1…) through
`certify --check`, with `--external jpegai/v1=DIR` recomputing it too.
- The verdict: Appendix C's prediction for these networks (acc64) holds; the set
meets acc64 and not acc32 (first failure rec_y node 1, conv.acc 42 bits), and
the scale graphs still meet acc32 on every node.
- §11's role_profiles in both certifiers: `--role-profile ROLE=PROFILE` (exit 1
when the named graph fails it), and the external-set check reads an entry's
role_profiles; external.json's jpegai/v1 entry declares acc64 with acc32 for
hs_y and hs_uv. wai-jpegai-e2e.yml certifies with both.
- The checker's readings of the member rules made two of them explicit: a file
with two members of one name at any depth is refused, and a conv member's `w`
holds the product of its dims of integers that fit i64. wai-ops' parse and the
parsed form's conversion (Weights::ptq) now refuse what the text refuses.
- wai-jpegai-e2e.yml gains a step for tests/jpegai_nets_ops.rs on the pinned
bundle (and its timeout 60 minutes); both fast-kernel steps of
wai-conformance.yml run it on the committed set.
- tests/jpegai_ops.rs: the scale-path certificate test reads the set's eleven
members and holds the scale graphs, not the set, to acc32.
Co-Authored-By: Claude Opus 5.5 <[email protected]>