Repository navigation
ci(promotion): the bundle's base is the newest armed set, never the first parent (stacked on #5824) - #5848
Closed
rbuergi wants to merge 1 commit into
Closed
ci(promotion): the bundle's base is the newest armed set, never the first parent (stacked on #5824)#5848rbuergi wants to merge 1 commit into
rbuergi wants to merge 1 commit into
Conversation
…irst parent Gap 1 of 3 ported onto one-promotion-gate (maintainer decision 2026-09-27). promote wrote the record with base = the core commit's first parent, and the verdict is pinned to rec["base"] — so Plugins' scope diffed, and its control arm re-ran at, ONE merge of a set that usually carries several, and `arm` then armed every other merge unmeasured. - arm-promoted-set.py `armed-base`: names the newest armed set from memex-portal-ai's manifest metadata (the armed <version> tag shares its manifest with the 7-char sha tag — measured on 3.0.0-ci.9538 / b9fe5ed); pure, self-tested (6 rows incl. uninterpretable manifests = RED). - promote's record step: base = that commit when it resolves AND is an ancestor of the candidate (base_kind `armed`); `first-parent` when nothing was ever armed or the candidate IS the armed set; `unresolved` otherwise — CI still promotes, but select REFUSES to arm it and pending does not measure it (the next promoted set retries). Legacy records without base_kind judge as before. - OnePromotionGate.md: "The bundle's base is the newest ARMED set". Dry-run against live ACR + GitHub: main 003b70d → armed, base b9fe5ed; b9fe5ed itself → first-parent; the older 9357060 → unresolved (compare: behind), with the warning. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
Author
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
This is gap 1 of 3 being ported onto the kept
one-promotion-gatedesign, following the maintainer's decision on 2026-09-27. It is stacked on #5824 (baseci/never-block-core-merge) and stays a draft until #5824 merges. It will then be retargeted tomain.The defect.
promotewrote the promotion record withbaseset to the core commit's first parent, andjudge()pins the verdict torec["base"].pendingsupersedes older pairs instead of queueing them.armthen armed every other merge in the set, and none of them had been measured. fix(mesh): a subscriber's own release is not announced back; a same-silo grain call shares the immutable delivery envelope #5635, fix(#5135): an owned connection's release terminates attached subscribers; one upload ceiling #5647 and fix(bake): one partition that cannot answer costs the batched discovery its own types, not all of them #5655 would have reached the fleet this way had they landed in one set.The fix.
arm-promoted-set.py armed-basenames the newest ARMED set from memex-portal-ai's manifest metadata.<version>tag sits on the same manifest as the seven-character sha tag. I measured this on3.0.0-ci.9538/b9fe5edtogether with the pair tagb9fe5ed-pb7390a0.promote's record step setsbaseto that commit, provided it resolves and is an ancestor of the candidate. It records which rule produced the base inbase_kind:base_kindarmedfirst-parentunresolvedselectrefuses to arm it andpendingdoes not measure it; a warning names why, and the next promoted set retriesSo CI is never held, and the fleet never receives merges nobody measured. A record written before this change has no
base_kindand is judged as before, so no set promoted during the transition is stranded.OnePromotionGate.mdgains the section "The bundle's base is the newest ARMED set", and its step 2 now names that base.No change is needed on the Plugins side.
promotion-candidate.ymlalready passes the record'sbasethrough tocore-candidate.yml, and #2479's attribution then covers the whole bundle.Verified
arm-promoted-set.py --self-testpasses with 0 failures, including 10 new rows (armed-base,base_kind, and unresolved never armed or measured).The
armed-baseCLI, run on the live manifest listing, returns{"armed_version": "3.0.0-ci.9538", "armed_short": "b9fe5ed"}.I ran the record step itself end to end against live ACR and GitHub, writing only to a scratch
RUNNER_TEMP:maintip003b70ddarmed, baseb9fe5ed47a…(the armed set)b9fe5ed4itselffirst-parent9357060unresolved("compare: behind"), with the warningMeshWeaver.Documentation.Test: 650/650 in Release with-warnaserror.test-cd-steps.pypasses,check-workflow-timeoutsandcheck-workflow-yaml-keysreport 0 violations, andshellcheck -S warningon the record step is clean.actionlintfindings onmain-cd.ymlare byte-identical to ci: never block a core merge; one promotion gate arms the fleet #5824's.Pairs-with: none — no public
src/surface (a CI script, a workflow step and a doc page).🤖 Generated with Claude Code