Skip to content

feat(comparison): pin the fourteen approved alpha holdout2 images - #114

Merged
justin13888 merged 3 commits into
masterfrom
feat/107-pin-alpha-holdout2-images
Sep 29, 2026
Merged

justin13888 merged 3 commits into
masterfrom
feat/107-pin-alpha-holdout2-images

Conversation

@justin13888

Copy link
Copy Markdown
Collaborator

Summary

Pins the alpha half of the sealed holdout2 split: the fourteen images approved from the #107 candidate list. The user approved the list minus candidate #2 (the LAPD patch tagged public domain) and candidate #14 (the AI-generated filing-cabinet icon), and kept the two edge shapes #15 (no fully transparent pixel) and #3 (12:1 aspect).

  • tools/comparison/src/alpha-images.ts: fourteen sealed-cutout-* entries with split: "holdout2". Each has its upload URL, stored size, SHA-256, nonOpaqueFraction and softAlphaFraction (four places), source page, author and licence as Commons records them. Its notes name the cell and the silhouette figure. The table's doc comment records the protocol's cuts and the two drops. ALPHA_HOLDOUT2_UNPINNED is reworded: the shipped table is no longer empty, so the message is reached only from a table with no holdout2 pin.
  • tools/comparison/fixtures/alpha/LICENSES.md: regenerated by mise run corpus:licenses (38 entries: 16 tune, 7 tune2, 1 holdout, 14 holdout2; 1 withdrawn). Not hand-edited.
  • tools/comparison/src/metric-selftest.ts: the check "the shipped alpha table has no holdout2 pin until its list is approved" would now fail by design. It is replaced by three checks:
    • the shipped holdout2 is exactly the fourteen approved labels;
    • an opened fetch returns all fourteen;
    • no unopened fetch (no split, tune, tune2) returns a holdout2 pin, and splitFor seals each label.
  • spec/EXPERIMENTS.md §11.12: the alpha holdout2 bullet said nothing was pinned yet. It now says fourteen of the sixteen are pinned, and that two cells hold one image each. The preamble's "Until then it holds no image" is about the photographic half (comparison: pin the approved holdout2 image list #103), so it is left alone.

Verification of the pinned facts

The fourteen titles were re-measured with node tools/comparison/dist/corpus-covariates.js --commons <titles>. That tool downloads each original, checks it against the SHA-1 Commons records, and measures covariates only. 14 were measured and 0 refused. Every SHA-256, stored size, non-opaque fraction, soft-alpha fraction, silhouette, author and licence matches the #107 table. No EXIF orientation is set on any of them. No encoder was built or run on any image. The downloaded copies were deleted afterwards from the gitignored tools/comparison/output/candidates/. A 240 px contact sheet was viewed only to write each note's one-line description.

Validation

  • mise run corpus:licenses: wrote 39 natural, 38 alpha and 24 graphic entries; only the alpha file changed.
  • node tools/comparison/dist/corpus-licenses.js --check: all three files up to date (exit 0).
  • node tools/comparison/dist/corpus-licenses.js --probe: "All 100 pinned Commons sources exist at their pinned URL, and all 100 recorded licences match Commons." (exit 0; cutout-wordmark-aflac is withdrawn and not probed).
  • mise run selftest:metrics: "All metric self-checks passed." (exit 0), including the new alpha holdout2 checks.
  • node tools/comparison/dist/verify-experiments.js: "Every bound table agrees with its committed result (1229 cells)" (exit 0).
  • node tools/comparison/dist/verify-claims.js: "Every registered claim agrees with the section it cites." (exit 0).
  • mise run lint:compare and pnpm --prefix tools/comparison run format:check: clean.

Coverage gap: the gated fetch itself (ensureAlphaImages("holdout2", opening) downloading and pin-checking the fourteen) is not exercised. Running it would fetch the sealed split before any register decision is frozen, which #107 step 4 forbids. The pin-checking path it uses (ensurePinnedFixture) is the same one every other alpha pin uses. The SHA-256s were checked independently above.

Risks and rollout

  • No format or library change. Nothing fetches these images until spec/V0.8-DECISIONS.md records C2 (or D6) as frozen and the gate opens.
  • corpusPins() and declaredSplit() now include the fourteen labels. Both key by label, and sealed- labels were already routed to holdout2 by prefix, so no tune or tune2 image set changes.

Decisions taken

Issue

Closes #107

Pins the alpha half of holdout2 from the #107 candidate list, minus the LAPD patch and the AI-generated filing-cabinet icon, which were not approved and are not replaced. Each pin's SHA-256, stored size and alpha fractions were re-measured with corpus-covariates.ts and match the list. No encoder was run on any of them; they are fetched only through the register gate. The attribution file is regenerated, and the self-test now asserts the shipped split is exactly the approved fourteen and that no unopened fetch reaches one.
@justin13888
justin13888 merged commit 3287392 into master Sep 29, 2026
4 checks passed
@justin13888
justin13888 deleted the feat/107-pin-alpha-holdout2-images branch September 29, 2026 01:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

comparison: pin the approved alpha holdout2 image list

1 participant