fix(release): retain guest source ancestry after the audio squash #116
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "agent/atlas-release-ancestry-20260911"
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?
The recorded guest source
9253939694was integrated through squash PR #113, but lost its ancestry on main. That makes the unchanged Triform provenance guard reject the published image.This ordinary merge restores the already-integrated PR head
f15c6e60. Its tree is exactly mainafbf22ef:4f97e1f814. Independently reconstructing PR #113 fromd4725c70andf15c6e60yields1814285080, exactly its squash result22296115. No file, image, digest, release record or running workload changes. No known-gap exception is added.Validation: make verify passed (including 345 client tests, Go modules/integration and Python/shell checks); the guest source is an ancestor of this head and the tracked-file diff from main is empty. Chromium was not rebuilt; this changes Git ancestry only. Merge using a merge commit, preserving both parents; squashing this repair would recreate the defect. CI must pass before merge.
Found by testing the fix rather than trusting it. Four consecutive apply-patches rounds against a fixture with the real pinned M147 pulse source: round 1 applied, round 2 died with error: sha1 information is lacking or useless (...pulse_linux.cc) error: could not build fake ancestor — the SAME two lines as the wrong-repo bug the previous commit fixed, from a completely unrelated cause, and it left .git/rebase-apply behind to poison round 3. This is not a retry-only concern. apply-patches runs on EVERY lane fire and the chromium tree is a hostPath that outlives the Job, so the fire after the one that first lands 0006 hits it. Had I only watched the current build go green, the next person to fire the lane would have inherited an error message pointing at a bug that was already fixed. The upfront recovery resets ${CHROMIUM_SRC} to the LKGM base and does nothing to third_party/webrtc, whose HEAD keeps whatever the last run committed. Reset it by authorship: walk down to the first commit not authored by us, which is exactly the DEPS-pinned revision whatever gclient chose — no second sha to drift from DEPS. A tree with none of our commits resets to HEAD, a no-op. Failing loudly beats failing confusingly: if every commit looks like ours, apply-patches now dies with a message naming the cause instead of applying a patch onto itself and reaching "fake ancestor" ~30 min later. Two bugs the harness caught in my own code, neither visible from a green run: - The log said "reset v8" while resetting third_party/webrtc. ${sub} outside the for-loop holds the LAST iterated value, not the matched one. Three sites; all now use strip_prefix, set at the match. - My first harness sliced build.sh mid-`if`, so `git am` never ran and three "rounds" proved nothing about applying. The rounds now run the real block, sliced to its closing line and asserted to contain the am. Verified: 4/4 rounds rc=0, converging on one commit and one applied hunk; the loud-failure path fires when the base is authored by us. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>failureby the commit-status API 616890f20egrep -c audiocounts three