Uh oh!
There was an error while loading. Please reload this page.
fix(e2e): era-aware --reuse-values pin assertion — baseline release now carries the prod pin - #455
Conversation
…ase now carries the prod pin The path-1 assertion hardcoded the pre-#398 era: it expected NO ingestor pin after a --reuse-values upgrade because the published release's computed values predated images.ingestor.prodDigest. The #383 promotion (2026-07-27) published a release that includes the pin, so replayed computed values now carry it and the assertion fails on every chart-touching PR (first hit: #454). The expectation is now read from the baseline release itself (helm get values --all): pin absent => must not arrive (old behavior); pin present => the SAME digest must be replayed verbatim. Both eras keep asserting the actual limitation: --reuse-values never injects new chart defaults. Path-2's era-stale comment corrected, with a note on the replay-contamination signal a future pin bump will surface. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
LukasWodka
commented
Jul 28, 2026
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 8879713. Configure here.
saqlainsyed007
commented
Jul 28, 2026
A minor Suggestion: jq as a hard dependency for local runs. The claim "jq is preinstalled on the stock runners" is true for GitHub-hosted Ubuntu, but the script advertises local use (Usage: bash scripts/tests/e2e-auto-upgrade.sh) and already gates docker via the has helper. A one-line has jq || error "jq is required" in the preflight section would fail with a clear message instead of a mid-run pipeline abort. |
…CI runners) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
LukasWodka
commented
Jul 28, 2026
Good catch — done in 3d13b3d: bugbot run |
…the path-2 tripwire in #459 (review) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
LukasWodka
commented
Jul 28, 2026
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 5e582dc. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
Summary
Unblocks #454 and every other chart-touching PR: the "Fleet auto-upgrade E2E (k3d)" check has failed since yesterday's develop → main promotion (#383), because the path-1 assertion hardcoded an era that promotion ended.
Cause.
--reuse-valuesreplays the baseline release's computed values and ignores new chart defaults. The assertion expectedjm_ingestor_digestto be empty after that upgrade, which was only true while the last published release predatedimages.ingestor.prodDigest(#398). The #383 promotion published a release that carries the pin in its computed values, so the replay now (correctly) delivers it, and the hardcoded expectation fails — exactly the era boundary the test's own comment described. Diagnosis first posted on #454.Fix. The expectation is now derived from the baseline release itself, right after it is installed:
BASELINE_PROD_DIGEST="$(helm get values --all -o json | jq -r '.images.ingestor.prodDigest // ""')"Era-stale comments updated (header contract, path 1, path 2). Other assertions untouched.
Flagged, not fixed here (path-2 era note added in code). Path 1's
--reuse-valuesrewrites the release's recorded values to the baseline's full computed set, so path 2's--reset-then-reuse-valuesreplays the baseline pin as if user-supplied. Today baseline pin == working-tree pin, so path 2'sGOT == WANTholds — but the first PR that bumpsprodDigestwill fail path 2. That failure is a genuine signal, not noise: any real edge that was ever hand-upgraded with--reuse-valuesstops receiving chart pin updates the same way. Worth a follow-up decision (isolate path 2 from path 1, or treat as the intended tripwire for the replay-contamination issue).Type
Test plan
bash -n+shellcheckclean.jqis preinstalled on the stock runners.🤖 Generated with Claude Code
Note
Low Risk
CI-only changes to e2e-auto-upgrade.sh assertions and comments; no production Helm chart or runtime behavior is modified.
Overview
Fixes the Fleet auto-upgrade E2E (k3d) gate after published charts started carrying
images.ingestor.prodDigestin computed values.The path-1
--reuse-valuescheck no longer assumes the prod ingestor pin is always absent. After installing the last published release, the script readsBASELINE_PROD_DIGESTfromhelm get values --all(viajq, with a new preflight) and branches: no baseline pin ⇒ digest must stay empty; baseline pin present ⇒ digest must match the baseline verbatim (proving new chart defaults are not injected on this path).Header and inline comments are updated to describe both eras. Path 2 behavior is unchanged; a new ERA NOTE documents that path 1 can contaminate stored values so a future
prodDigestbump may fail path 2 on purpose (client#459).Reviewed by Cursor Bugbot for commit 5e582dc. Bugbot is set up for automated code reviews on this repo. Configure here.