ld-stopnow: chore(sbx-gits): pin sandbox image to fc933fb (S2) + README pin prose #903
No reviewers
Labels
No labels
operator-review
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Homelab/infra-core!903
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "plane/ld-stopnow-gits-pin"
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?
sbx-gits pin bump: platform/sbx-fleet
6fa150a→fc933fb(S2, stop-now)Cut from live at the post-#900 merge
ce80bdda. Three files:1.
core/manifests/apps/sbx-gits/statefulset.yaml— the 4 sandbox image linesLines 232, 330, 748, 1120 — the four containers on the sbx-fleet image
(prepare-work, seed-pi-agent, sandbox, emu-health). The emulator image line
(
android-emulator:230756a@sha256:66430940…) is NOT touched — it is adifferent image and stays.
fc933fbis the image the live push build of #897 published (mergefc933fb3,pushed 2026-11-09T02:34Z), built on the new ld-fleet base
go-234dfd0fromlab-director merge
234dfd0b. sbx-lab already carries it (#898).2. README §5, §8, §9 pin prose (this directory's README.md)
extensions.pinnedparenthetical([])is stale — the image nowpins exactly one entry, the vendored
pi-session-tag(pi-extensionsa79a77a3, the S1 session-tag fail-safe). Prose names it. The §5 bootstrapexample's image line moves to
fc933fbtoo.statefulset.yamlisupdated to the new tag@digest (otherwise the README's own check fails after
the bump), and "a
settings.jsonwith packages was seeded" becomes "whosepackages disagree with
extensions.pinned" (the init's actual 78 reason).6fa150amention →fc933fb, and "the first Harbor push"→ "the current Harbor push" of that derived build.
3.
scripts/gits-sbx-epic-test.sh— the harness re-pin the bump requires (ruled IN scope)A pin bump wave must re-pin the harness in the same change (precedent: #860,
HOMELAB-2682). Three edits, all in this one script (which lives OUTSIDE the
sbx-gits directory, so none enters the T7[diff] set):
sandbox: imagenmutation row: sed-matched the literal6fa150a;after the bump the mutation would not apply and the row would go RED. The
match is made tag-agnostic (
sbx-fleet:[0-9a-f]*@sha256:[0-9a-f]*); thereplacement value is unchanged (only the change matters, the reason stays
spine-distinto). The row is verified still biting on this head (ROJO porspine-distinto).
SBX_GITS_DIFF_SETre-measured against the current live tip(
ce80bdda):M statefulset.yaml->M README.md+M statefulset.yaml,because this wave also moves the README pin prose. The set is re-measured
against the tip, never dragged along (the #860 set is already absorbed by
live). T7[diff] and 17R159 read this one literal; both their pass
messages now describe the S2 set.
d_img): the live-side template comparison(
p1_lab_sts_bad) requires spine/census equality with live except what thewave declares. The wave declares the new pin
(
fc933fb@sha256:be81ce63119fdb6c2da08356a8cfe63f7d976dcb72b5f3a2c0eaaa2766562066,the 64-hex Harbor digest — copied programmatically from the Harbor API, not
retyped): the live render's sbx-fleet image lines are normalized to it, so a
head carrying exactly the declared pin is GREEN and any other value —
including the mutation row's
deadbeef— stays RED. Same division of workas #860's
d_extra_rp: the value is pinned by this script, not by the diff.The
android-emulatorline never matches the pattern and is untouched.Local verification (this head,
c55cf5b1): full suite fails with theidentical 19 pre-existing environmental failures as live (
origin/livebaseline on this runner) — zero new.
manifest[3]'s detail string names thenew pin instead of the old one: that check reads the LIVE POD's current image
against the manifest, so it stays red until the pod is recreated — expected
for any pin bump under
OnDelete, not a regression. H8[8] render, the imagemutation, T7[diff] and 17R159 all pass.
What the new image ships (lab-director 89b900d1..234dfd0b, 13 commits)
Same payload as #898 (already reviewed and landed there): the S1 session-tag
work (HOMELAB-2700, 8 commits), HOMELAB-88's kmca/k3.1-pro model entry (2), and
HOMELAB-2338 turning the herdr resume-on-restore ON for the build pool (3).
Authorship note as in #898: commits authored as 'Aaron Reynoza' were pushed by
the mgmt session-tag orchestrator using Aaron's git login, not by Aaron
himself; 'pi-landing'/'pi-worker' are the landing/worker identities.
#860's follow-up note applies to this bump too: sbx-gits's four sbx-fleet
containers inherit the image
ENV TMPDIR=/home/ld/work/tmp+JAVA_TOOL_OPTIONSat this digest, and this manifest'sprepare-workcreates/home/ld/work/tmp(#860 added theinstall -dfor exactly this) — so theENV layer always names a real path here.
Mechanics
OnDelete: merging this changes nothing until the pod isrecreated, and that recreate is the hypervisor's, agreed separately. State
after merge: pinned, not yet running.
tag@sha256; the digest is what the kubelet pulls, so aretag cannot move the pin.
CI, then the landing tool. No pod recreate is done or triggered by this PR.
identical 19 pre-existing environmental failures as live (zero new).
Author: pi-landing (orchestrator; non-Aaron per El Director ruling).
fc933fb(S2) + README pin prose fcc5463244fc933fb(S2) + README pin prose 69d7680830fc933fb(S2) + README pin proseVerdict of record — ld-reviewer — head
c55cf5b14a: APPROVEmodel: omniroute/deepseek-flash
session: rev-s2-c55cf5b-seatA
Verified at the exact head, fresh worktree of
origin/plane/ld-stopnow-gits-pin(HEAD ==c55cf5b14a):git diff origin/live ..= exactly 3 files (README.md 15±, statefulset.yaml 8±, scripts/gits-sbx-epic-test.sh 31±); the statefulset diff is exactly 4image:lines 6fa150a@0ee5e97e -> fc933fb@be81ce63, no6fa150aleft, and the android-emulator:230756a line is untouched.projects/platform/repositories/sbx-fleet/artifacts): tagfc933fb-> sha256:be81ce63119fdb6c2da08356a8cfe63f7d976dcb72b5f3a2c0eaaa2766562066 (64 hex). All 7fc933fbdigests in the changed files (statefulset 4x, README 2x, harness d_img 1x) are byte-identical to it — no truncated/extra chars.bash scripts/gits-sbx-epic-test.sh, tee'd): H8[8][sbx-gits] render PASS; H8[8][sbx-gits][mut]sandbox: imagenPASS -> ROJO por 'spine-distinto' (tag-agnostic row bites); T7[diff] PASS (+ both red mutations of the new M README.md / M statefulset.yaml set); 17[R159] (d) PASS (+ both red mutations). RESULT: FAIL (19 of 718 checks failed, 2 skipped, 0 pending).manifest[3]naming sbx-fleet:fc933fb@be81ce63 (it reads the live pod's still-old image; resolves at recreate), exactly as declared. No other divergence attributable to this bump.Verdict of record — ld-reviewer — head
c55cf5b14a: APPROVEmodel: omniroute/deepseek-flash
session: rev-s2-c55cf5b-seatB
Verified on a fresh worktree at the exact head:
git diff origin/live origin/plane/... --stat= exactly 3 files (README.md, statefulset.yaml, scripts/gits-sbx-epic-test.sh). Statefulset: 4image:lines 6fa150a@0ee5e97e -> fc933fb@be81ce63; android-emulator:230756a untouched. README: only §5 (extensions.pinnednow names the vendored pi-session-tag a79a77a3 instead of([])), §8 (digest grep + "packages disagree with extensions.pinned") and §9 (fc933fb+ "current Harbor push") — nothing else.s#sbx-fleet:[0-9a-f]*@sha256:[0-9a-f]*#sbx-fleet:6fa150a@sha256:deadbeef00#with the deadbeef replacement preserved; SBX_GITS_DIFF_SET has exactlyM README.md+M statefulset.yaml;d_img= fc933fb@sha256:be81ce63119fdb6c2da08356a8cfe63f7d976dcb72b5f3a2c0eaaa2766562066 (64 hex, byte-identical to the manifest pin).H8[8][sbx-gits] render vs origin/liveFAIL (spine-distinto, contenedores-distintos) — the guard still bites on any OTHER image value, and the deadbeef row stays RED.RESULT: FAIL (19 of 718 checks failed, 2 skipped, 0 pending); zero FAILs among T7[diff], 17[R159] (d) and H8[8][sbx-gits] render (all PASS, including the two red-mutation self-checks of the diff set).Judged minimal and honest: the harness re-pin is the same three edits the bump requires, the declared pin lives in the script (not the diff), and the guard's bite is demonstrated rather than asserted.