release-train: develop -> staging - #1037
Conversation
…plied marker (#1033) On recorded==latest with the workload on :tag, the image-refresh loop could not tell a fresh install from a helm-revert of an applied pin, so every fresh install paid the shared #563 flap path (resource-monitor DaemonSet rollout under tolerations: Exists) plus a Recreate downtime on jobs-manager for byte-identical content. Gate the roll on two durable per-image markers: first-observed-<image> (stamped by first-observation) and digest-applied-<image> (stamped only after a successful re-image). Skip the roll only on positive fresh-install evidence (first_observed present AND applied absent); an established edge (applied present) rolls the client-runtime#199 repair, and a pre-marker/legacy edge (neither marker) also rolls so the existing fleet is not stranded on :tag on the upgrade hop. Both marker reads and the digest-record read are fail-closed. Split from #1008 (item 2). Bumps chart to 1.9.112.
|
bugbot run |
… same 1.9.112 that #1032 already shipped (#1040) The image-refresh CronJob fix (#1033) bumped Chart.yaml 1.9.111 -> 1.9.112 on its own branch, and so did the control-plane trim (#1032). Both merged; the second bump was a no-op, so develop's chart version now equals staging's while the templates differ, and the chart-version guard rightly refuses the staging promotion. This bump carries #1033 to 1.9.113. No template change.
|
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 186c494. Configure here.
Functional review — staging batch of 2026-09-10/11 (hops 18:00, 19:07, 20:40 UTC + overnight mirrors) — PASS (FR reviewer: LukasWodka; self-signoff per RFC-BACKEND-1405 D6)Decision: PASS. All 39 cards at Journey on the staging chart (governs). Two tier-a baselines with
Customer-path control. Fleet on the published chart 1.9.112, 16 tasks, https://github.com/tracebloc/e2e-test-agent/actions/runs/34566675826: 13 green through Train; Channels. fr-assist run 34532009992 (21:24 UTC): all OK, 1 SKIPPED (credentials). Per-repo staging deploys. Green on every tip: backend Tests / docker-build / Migrations check / Lint; client CodeQL / E2E mysql / Release Helm Chart (rc.2 published); client-runtime Publish images / Tests; tracebloc-engine Run Tests / Promote task images by digest; e2e-test-agent Unit tests / CLI surface; docs CodeQL. Staging API answers (401 unauthenticated on Per-ticket read. All 39 PR bodies scanned for holds, interactive/TTY behaviour and migrations: none of the batch changes guided prompts; no body declares a hold on shipping. The one Medium Bugbot finding that shipped with the e2e mirror is recorded by the train on its own ticket. What this evidence cannot tell you (README → Functional review): per-ticket behaviour beyond the journey's path, anything after a failing step, and steps a run skipped. The docs pages (docs#174) have no staging preview and were reviewed as content only. |
Automated promotion by the release train (RFC-0008 D14). Head is the train-managed
release-train/to-stagingbranch (a mirror ofdevelop), so it never collides with a human PR. Merged only when the fr-gate is green.Note
Medium Risk
Changes when the image-refresh CronJob triggers control-plane rollouts (jobs-manager Recreate, resource-monitor DaemonSet flap path); logic is heavily gated and tested, but upgrades still force a one-time repair roll on unmarked legacy edges.
Overview
Bumps the client Helm chart to 1.9.113 and changes the image-refresh CronJob so fresh installs no longer pay an automatic digest re-pin rollout when the registry digest is unchanged but workloads still run the floating
:tag.The script now stamps
tracebloc.io/first-observed-<image>on first observation andtracebloc.io/digest-applied-<image>after a successful re-image. Whenrecorded == latestand the live workload is off-digest, it skips rolling only if both markers show a fresh install (first_observedset,appliedabsent). Established edges (digest was applied before) still re-pin after helm re-renders revert pins; legacy edges with neither marker still take a one-time repair roll on upgrade so the fleet is not left on a possibly stale tag. Digest annotation reads are fail-closed (no|| true) so API errors cannot mis-stampfirst_observed.Helm unittest and bats coverage lock the marker keys, skip condition, and the three behaviors (fresh / established / legacy).
Reviewed by Cursor Bugbot for commit 186c494. Bugbot is set up for automated code reviews on this repo. Configure here.