wai.media.exploration: archives that replay, default-distance, a homogenization meter, and taste as a declared, owned objective (CO2, CO3) #406
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/exploration"
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 is in it
wai.media.exploration(CO2 + CO3): exploration by construction, and taste as a declared, owned objective, built on the exactness ofwai.generate.spectral.wai/extensions/exploration.md(recordwai.media.exploration): records and encodings (§2), six integer descriptors (§3), the generator path with modifiers and genomes (§4), archives and the pinned schedulewai-exploration:map-elites/1(§5), the default set and default-distance (§6), collection statements (§7), taste priors (§8), rankings (§9), disclosure of objectives and the pick record (§10), the slot the contribution record fills (§11), verification (§12), a reasons table of 27 codes (§13), conformance (§14), security considerations (§15), and Appendix A, a restatement of the spectral generator for a second implementation.wai-rsmoduleexplorationbehind the featureexploration = ["generate", "ai_usage"](no new dependency), with unit tests; the corpus generatorsrc/exploration/corpus.rs; the binwai_exploration_vectors gen|verify|measure;tests/exploration.rs.wai/live-conformance/exploration/vectors.json(+ README with a**Provenance.**line): 13 generations (check Appendix A), 9 descriptor vectors, 70 cases (24 accepted, 46 refused; every §13 code refuses at least one).wai/live-conformance/exploration_verify.py(python3 -I, standard library only), written from the spec: it implements the generator from Appendix A, the descriptors, the schedule, and reads usage statements withai_usage_verify.py; Ed25519 and BLAKE3 fromclaim-conformance.wai-conformance.yml(independent-verifiers job) running the module's unit tests,--test explorationand the Python verifier;wai/extensions/exploration.mdadded to the workflowpaths:.wai.media.explorationas a record incodecs/registry.rs(ROWS, RECORDS), its six document kinds as wire identifiers; the export regenerated (registry/capabilities.json,vocab/v2.ttl,REGISTRY.md); SPEC §5 (the record list and a paragraph), REGISTRY.md prose, CHANGELOG (top of v0.4.0),live-conformance/README.md;int_kernels_vectors.rs'slive-conformanceexclusion reason now says the exploration pictures are named by SHA-256 of their RGB8 samples.Design decisions and why
wai-exploration:image6):luma,chroma(mean max−min),detail(mean neighbour luma step, 16 levels = full),palette(Gini–Simpson over a 64-colour quantisation),centroid_x,centroid_y(luma+1 weighted). Each in 0..=1024 so an unweighted L1 distance favours no axis; no learned model inside any of them. Integer only, every intermediate within u64 for every admitted size. Spread was checked on the generator before choosing (detail with a threshold was flat at small sizes; the mean-step form was not).archive_replay_mismatch).measured(only and always for the exact generator),estimate(any other generator; stated default vectors),unknown(every figurenull; writing 0 isrecord_malformed).rise/fall/near/farwith unsigned weights, so the arithmetic is unsigned throughout (the record encoding admits no negative integers) and an anti-aesthetic (far) is as expressible as an aesthetic. A one-file parameter set pinned by SPEC §3.1's members (id,sha256,determinism); the file is the JCS of a signed record; the signer must beowner(taste_not_owner). Itsusagemember is awai.ai.usagestatement; a ranking states its use in ai-usage §6.1's form, and a disallowed use is refused. The score is stated in full and not expressed as a wai-ops graph (a few integer operations over six numbers).objectiveis OPTIONAL, a missing one is reportedundisclosed(nevernone), a policy can require it (objective_undisclosed), and a pick from an archive a prior steered must name that prior, absent or not (objective_mismatch).candidatesstep MAY name an archive by link hash; the set is then the elites in niche order, each with its genome (seed, steps, derived prompt); aselectfrom it inherits the genome, as a pick does here. Theobjectivemember is the one a steered contribution step carries. The text nameswai.media.contributionwithout a link, since that extension is not on main yet; nothing here depends on its code.lawful-basisclaim class (jwp-receipts §2.4.6); the owner-signature rule is framed as attribution.Measurement (honest)
wai_exploration_vectors measure N(committed, reproducible): six prompts, 64×64, grid luma × chroma × detail at 8×8×8 = 512 cells, eight declared modifiers (bright dark calm busy warm cool spiral mirror), the same number of generations for each method. Cells reached, summed over the six prompts and three search seeds (plain seed sampling is the same each run, so its column is three times one run):Checks (exact commands, results)
All cargo commands through
~/kani-logs/remote/rbon the build host, after merging origin/main (ID1 #383, #400):cargo test --locked --no-default-features --features exploration --lib exploration::cargo test --locked --no-default-features --features exploration --test explorationReason::ALL, §3.2 =DESCRIPTORS)cargo test --locked --no-default-features --lib codecs::cargo test --locked --no-default-features --test corpus_provenance --test cli_registry --test carriage --test manifest_builders --test cli_wrap_intentcargo test --locked --no-default-features --features neural_int,video_int,audio_int,world_int,splat_int,generate --test int_kernels_vectors every_decoded_outputcargo test --locked --no-default-features --features generate --test generatecargo run -q --locked --no-default-features --bin wai -- registry export --checkwai_exploration_vectors verify ../live-conformance/explorationcargo clippy --locked --no-default-features --features exploration --all-targetscargo metadata --locked --offline --format-version 1(wai-rs)python3 -I live-conformance/exploration_verify.py live-conformance/explorationpython3 -I live-conformance/ai_usage_verify.py live-conformance/usage,synthesis_verify.py synthesis,http_verify.py,pin_verify.py,staged_verify.py,pack_verify.py,claim_verify.pypython3 -I scripts/check-tests-in-ci.py,./scripts/check-workflow-concurrency.sh,python3 scripts/check-spec-refs.py,python3 scripts/check-wai-section-refs.py,bash scripts/check-no-vanity-metrics.sh,bash scripts/test-public-text-checks.sh,bash scripts/check-comparative-prose.sh,python3 scripts/check-orphan-sources.pyscripts/check-public-names.shWAI_NAME_DENYLISTis not set locally (it runs on the push to main)Dependents: the feature is new and no crate enables it;
generateandai_usageare unchanged.Falsifications (committed first, each restored after)
--test explorationexit 101 (regeneration panics: a vector misses its outcome; every case fails)the_extension_names_the_descriptors)--lib exploration::exit 101% 8→% 7Not done
wai.media.contributionis named in text, not linked.RGB8) only; no audio or video descriptor set.wai.generate.spectralis recomputed; any other generator's distance is an estimate by rule.🤖 Generated with Claude Code