wai: neural-conformance's trained vector is trained and coded on generated pictures, and every vector has a licence record #639
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/neural-corpus-licence"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What this is
neural-conformance's trained vector,
photo, coded a third-party picture with no recorded licence for redistribution, and its decoder was trained on pictures the corpus did not record. Now its decoder is trained on pictures a tool of this repository generates from a seed, and it codes one of them. Every vector of the corpus now has a licence record, and a repository check requires one.Merge order. This branch sits on #632's commit,
946f3beda, which moves changelog entries intowai/changes/and the conformance workflow's lists into step files. Merge #632 first; until it merges, this pull request's diff also shows #632's change.What it carries. One commit,
ae94f935e: the change ofwai/neural-corpus-licence(44d5f2264..6bddde42d) in #632's layout. Its message lists the source commits. The branch's changelog entry is a file ofwai/changes/. Its edits towai-conformance.ymlare not lists that #632 derives, so they stay in the workflow: thewai/tools/wai_int_synth_real.pytrigger path, and two steps of the cargo-classes job. Those two steps now follow the audio provenance step, instead of the pin step, whichwai/conform-outputremoves. Its edits torepo-checks.ymlandwai/CONTRIBUTING.mdsit beside #632's own edits to those files, as the source branch has them. Every other file is as the source branch has it.What it changes
photois generated content. Its decoder is trained on dead-leaves pictures, and its latent codes one, all generated bytools/wai_int_synth_real.pyfrom a seed. The vector keeps its name, its shape, its payload format and its capability. Its weights, latent and digests are new.The tool reads no image file.
picture()writes each picture from a seed in integer arithmetic only, with a SplitMix64 stream per picture, so a seed gives the same pictures on every machine and every Python.--picture-onlywrites one picture.--checkregenerates the picture a vector codes from the seed in itsmeta.json. It requires the vector's reference decode, whose SHA-256 must be the corpus's digest for the vector, to reconstruct that picture at the PSNRmeta.jsonrecords. It also requires the vector's licence record to state the seed, the coded picture's stream and the training streams thatmeta.jsonrecords, and requires those training streams to leave out the coded picture's.--picture-onlyand--checkneed only the Python standard library.Regenerated through their generators.
vectors/photo/is regenerated by the tool.expected_hashes.jsonandsha256.jsonare regenerated bywai_int_synth_vectors gen, which checks the Rust decode against the tool's integer forward pass and leaves the other vectors unchanged.ops-conformance/certificates/, andindex.json, are regenerated bywai-verify vectors gen.wai-web/demo/int_synth/are updated, and the demo page and its README give the vector's PSNR and say its picture is generated.The set still meets
acc64and failsacc32at node 6,convT.acc.wai-ops.ymlnames the new certificate and the new accumulator of the node's witness.Licence records.
neural-conformance/licences.json(wai-corpus-licences/1) records, for each vector:Every vector is Apache-2.0.
wai/CONTRIBUTING.md(Corpus content) states the record.Records kept. The sink-energy tables measured on the earlier
photoname its latent by its SHA-256 in theirprocedure.txt; they are records of those runs and are unchanged.int_video'svideo_realis in another corpus and is unchanged.What the checks hold
scripts/check-wai-corpus-licences.pyis a new step of the repository checks, run on every change. It fails on each of these:vectors/, or a name in either hash manifest);scripts/check-wai-corpus-licences-selftest.sh, the step before it, builds a scratch corpus and shows that the check fails each of those ways.wai_int_synth_real.py --checkonphoto; the generator is integer arithmetic, so one leg is enough. The step after it runs the same check on a copy whose licence record gives the training pictures as streams 1 to 64, and requires the check to fail and say why.wai_int_synth_vectorsoverneural-conformance/, andwai-ops.yml's bounds checks hold the photo set to its new certificate and witness.How it was verified
This commit,
ae94f935e.scripts/wai-conformance-lists.py selftestandcheck,scripts/wai-conformance-lists-selftest.sh,scripts/check-changelog-fragment.pyagainst main,scripts/changelog-assemble.py --check,scripts/changelog-fragments-selftest.sh,scripts/check-wai-corpus-licences.pyand its self-test all pass. Rebasing from the conversion's first base, #632's earlier tip 14f1abb7c, onto946f3bedaleft every file's change the same.wai/wai-rs,cargo check --locked --no-default-features --features neural_int --tests; and inwai/wai-ops,cargo check --locked --tests. Both pass.git merge-tree). Merging all of them in forward, reverse and a mixed order gives one tree. On the build host, that tree passes these runs:cargo check --testsunder the derivedWAI_FEATURESand underWAI_PQ_FEATURES;cargo check --testsofquickstart,app; the catalogue's library tests; and thewaibinary's unit tests.The picture check,
wai_int_synth_vectors' verification andwai-ops.yml's bounds checks did not run on this commit here; their results come from this pull request's CI.On the CI hosts. Results on the CI runners come from this pull request's own CI run. None of the runs above is a CI result.
🤖 Generated with Claude Code
tests/cli_studio.rs failed on every run on one macOS runner and passed on every other runner, 3 of 3 against 19 of 19 on 5 November, with "the room service's clock on the relay: not within 30 s". The stand-in room service starts an HTTPServer, whose server_bind calls socket.getfqdn before the server listens. On that host, under the runner's Python 3.15.2, getfqdn("127.0.0.1") takes 35 s, past the 30 s wai dev waits, and a stack dump of the stalled stand-in shows it there. The stand-in relay opens a plain socket and answers in 0.1 s. Nothing here reads the name, so the fixture no longer asks for it. On that host and Python the room stand-in took 35.5 s and now takes 0.12 s. A socket.getfqdn planted to stall for 40 s fails the test without this change, with the same message, and passes with it. Changelog: none Co-Authored-By: Claude Opus 5.5 <[email protected]>