promote: the packet population belongs in the packet's own case arm - #1662
Open
DmitriyG228 wants to merge 1 commit into
Open
promote: the packet population belongs in the packet's own case arm#1662DmitriyG228 wants to merge 1 commit into
DmitriyG228 wants to merge 1 commit into
Conversation
The promote job carries its own per-version stable-promotion table, and the map sha256 sits inside it — but --expected-top-descriptors and --expected-platform-identities were literals outside the case, so they described whichever release was current when they were written. 0.12.27 adds an eleventh image (vexaai/v012-flows). Promote aliased all eleven tags to :v012 correctly, read every one of them back and confirmed each digest, then failed exit 4 auditing the work it had just done: registry-candidate-validate [identity]: candidate population mismatch (expected 10 top descriptors, actual 11) The counts now live in the same arm as the sha they describe: 10/19 for v0.12.18 and v0.12.23, 11/21 for v0.12.27, read off releases/v0.12.27/candidate-images.json. The resolve job's table already carried the correct pair; only promote's copy was stale. Nothing about the alias itself changes, and the assertion keeps its force — it still fails a truncated map, because the expected pair comes from the reviewed table and not from the file being checked. Signed-off-by: DmitriyG228 <2280905@gmail.com>
🃏 Merge card — #1662
Not mergeable yet — every row above must be accepted before merge (choke point 1). Fill in what's ❌ above, then this clears automatically. How a PR reaches merge: the merge bar. |
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.
What broke
promoteon run 34125041776 did its whole job and then failed::v012moved to all eleven witnessed digests and every one was read back correct. The failure is the audit after the move.Cause
The promote job keeps its own per-version stable-promotion table, and
EXPECTED_MAP_SHA256lives inside itscasearms.--expected-top-descriptorsand--expected-platform-identitieswere literals outside that case — so they described whichever release was current when they were written.v0.12.27 adds an eleventh image (
vexaai/v012-flows).releases/v0.12.27/candidate-images.jsonholds 11 top descriptors and 21 platform identities; the literals still said 10 and 19. Theresolvejob's table already carried the correct pair — only promote's copy was stale, which is whyimage-identitypassed and promote did not.The change
The counts move into the same arm as the sha they describe: 10/19 for v0.12.18 and v0.12.23, 11/21 for v0.12.27. Values read off the packet, not guessed.
The assertion keeps its force. The expected pair still comes from the reviewed table rather than from the file under test, so a truncated map still fails — deriving the counts from the candidate map would have made the check assert nothing.
Why it went unnoticed
Nothing had taken the promote path since 0.12.23. This is the fourth defect on it found today; the previous three were the candidate-version rule (#1651), the stable-promotion map arm (#1654) and the absent negative control (#1656). All four are the same shape: a per-release fact held somewhere that does not move per release.
Verification
releases/v0.12.27/candidate-images.jsonparsed: 11 top descriptors, 21 platform identities.:latestguard, or the Environment gate.v0.12.27is already released and:v012is already on the witnessed digests — this run's alias succeeded. This fix is so the next release's promote does not red on a correct promotion.