Repository navigation
feat(comparison): pin the fourteen approved alpha holdout2 images - #114
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Pins the alpha half of the sealed
holdout2split: 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: fourteensealed-cutout-*entries withsplit: "holdout2". Each has its upload URL, stored size, SHA-256,nonOpaqueFractionandsoftAlphaFraction(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_UNPINNEDis 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 bymise 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:tune,tune2) returns a holdout2 pin, andsplitForseals each label.spec/EXPERIMENTS.md§11.12: the alphaholdout2bullet 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 gitignoredtools/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-aflacis 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:compareandpnpm --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
spec/V0.8-DECISIONS.mdrecords C2 (or D6) as frozen and the gate opens.corpusPins()anddeclaredSplit()now include the fourteen labels. Both key by label, andsealed-labels were already routed toholdout2by prefix, so no tune or tune2 image set changes.Decisions taken
LICENSE-APACHE#2 and Release Rust implementation #14 … pin the remaining 14". Taken: pin fourteen and draw no replacements, so the opaque/hard/simple and transparent/soft/simple cells hold one image each. Rejected: drawing replacements, which would pin images the user never saw or approved. To reverse, draw the next admissible candidate for each of the two cells with the comparison: pin the approved alpha holdout2 image list #107 protocol, get it approved, and add its entry toALPHA_IMAGESand to theapprovedlist inmetric-selftest.ts.notesstrings and re-runmise run corpus:licenses.metric-selftest.tsandspec/EXPERIMENTS.md, which are outside the planned manifest. The self-test asserted that the table was empty, so pinning without changing it fails CI. The spec bullet stated a fact this change makes false. Both edits are confined to those two passages.Issue
Closes #107