chore(chart): point spawned ingestor at the 0.8 line (D16 write path) — HOLD until v0.8.0 image - #490
chore(chart): point spawned ingestor at the 0.8 line (D16 write path) — HOLD until v0.8.0 image#490LukasWodka wants to merge 1 commit into
Conversation
|
👋 Heads-up — Code review queue is at 37 / 30 Above the WIP limit. The team convention is to review existing PRs before opening new work. Open PRs currently in Code review (oldest first):
Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.) |
83f0095 to
c9c8b67
Compare
Rebuilt against develop — the original change had become wrong, not just conflicting. Still a draft.Why it needed a rework, not a rebase. #494 (backend#1360) landed the per-environment channel scheme while this sat on HOLD. Also: develop had already published chart 1.9.9 via #494, so the original bump to 1.9.9 would have collided. What this now does
The red X is fully explained, and the HOLD is satisfied.
All four refs the gate now inspects verify multi-arch ( Verification: Left as a draft on purpose — I have not flipped it ready. Two things are your call, @LukasWodka:
|
⛔ Hold — do not mark ready or merge until Divya's D16 validation passesThis is the prod deployment of the ingestor 0.8 line, not a config tidy-up. The diff moves:
Gate: Divya's D16 sign-off. Then un-draft, review, merge, and let the chart release carry it. Also worth recording why this PR changed shape: the original one-liner had become wrong, not merely conflicting. #494 repurposed Current state: 17 checks SUCCESS (including the previously-red gate — that was purely timing: it ran at 10:55Z, v0.8.0 published at 11:45Z), |
|
@divyasinghds — status update, and a correction to something I nearly told you. This PR is ready except for your D16 sign-offEverything else has landed. Chart 1.9.9 is on Which image to validate — the digest, not
|
c9c8b67 to
674fbb7
Compare
|
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 674fbb7. Configure here.
D16 E2E validation runbook (the un-draft gate) — dev or staging edgeValidates the exact artifact prod will pin: Substrate note: staging is the cleaner substrate — on dev, Preconditions (all live on dev/staging today)
1 · Flip the edge (survives auto-upgrades — these become user-supplied values)helm -n <ns> get values <release> > values-backup-$(date +%F).yaml
helm -n <ns> upgrade <release> <chart-ref> --reuse-values \
--set images.ingestor.digest="sha256:05e124945a2ef61868661a9137abb5e75dac96a090cb41a7b4e8be520c4b5873" \
--set perIngestionTables=true( 2 · IngestNormal flow: 3 · Verify the write path (on the edge)# a) the ingestion Job runs the pinned digest and carries the flag
kubectl -n <ns> get jobs --sort-by=.metadata.creationTimestamp \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.template.spec.containers[0].image}{"\n"}{end}' | tail -3
kubectl -n <ns> get job <ingest-job> -o yaml | grep -A1 "PER_INGESTION_TABLES"-- b) one fresh immutable table + bookkeeping (mysql service: mysql-client)
SHOW TABLES LIKE 'ds\_%'; -- new ds_<32 hex>
SELECT table_name, registered FROM tracebloc_ingest_runs
ORDER BY 1 DESC LIMIT 3; -- its row: registered = 1
SELECT table_name FROM tracebloc_ingest_meta; -- its salt row existsExpected: exactly one new 4 · Backend row + read path
5 · Delete means gonetb data delete <dataset>SHOW TABLES LIKE 'ds\_<hex>%'; -- gone
SELECT * FROM tracebloc_ingest_runs WHERE table_name = 'ds_<hex>'; -- 0 rows (journal)
SELECT * FROM tracebloc_ingest_meta WHERE table_name = 'ds_<hex>'; -- 0 rows (salt)6 · Record → un-draftPaste the evidence here (job image line, Not satisfied by this run: backend#1360's close trigger — that wants the next ingestor change validated with no digest override; this run overrides on purpose to hit the release artifact. Claude prepared this; the flip + run need edge kube access (Lukas). |
|
Runbook precondition correction: the engine-promotion caveat is void — |
…path (#417 unblocked) Rebuilt against develop: #494 (backend#1360) landed the per-environment channel scheme while this PR sat on HOLD, which made the original one-line change WRONG, not merely conflicting. `images.ingestor.tag` is now an explicit force-override that is EMPTY by default; the effective tag comes from `channelTags[CLIENT_ENV]`. Setting `tag: "0.8"` as this PR originally did would have pinned 0.8 on EVERY edge and silently defeated the new :dev / :stg channel routing. The correct change on today's develop: - `channelTags.prod` 0.7 -> 0.8. dev/stg already track the internal :dev / :stg channels, so prod is the only entry that was still on a pre-D16 line. - `prodDigest` refreshed to the 0.8 multi-arch index, resolved with `scripts/resolve-ingestor-digest.sh --write` (never hand-typed, per the chart's own instruction) and independently cross-checked against registry-1/ghcr's `docker-content-digest`: sha256:d4af33420520d0fb01df3af4cf5259f664c89e95c7dff0681e8aa335a0c6e614 - `_helpers.tpl`'s last-resort literal 0.7 -> 0.8. It only fires for a release predating these keys under `--reuse-values`, but leaving it on 0.7 would spawn a pre-D16 ingestor on exactly those replays. - Chart.yaml 1.9.9 -> 1.9.10, version AND appVersion. develop had already published 1.9.9 (via #494), so the original bump to 1.9.9 would have collided. HOLD condition is now satisfied — this was the only thing blocking the PR: data-ingestors#419 merged 2026-07-30 10:52Z; v0.8.0 released 11:45Z. The CI multi-arch gate failed on this PR at 10:55Z, 50 minutes BEFORE the image was published, which is the whole of that red X. All four refs the gate now inspects verify multi-arch (linux/amd64 + linux/arm64) against ghcr.io today: :dev, :stg, :0.8, and the prodDigest index. Verification: helm unittest 320/320 across 27 suites; helm lint --strict clean for all four platform value files (aks/bm/eks/oc); gen-manifest --check and check-drift clean. Left as a DRAFT deliberately — flipping it ready is Lukas's call, and moving the prod pin reaches every prod edge on the next fleet auto-upgrade. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
674fbb7 to
148f363
Compare
DRAFT — image exists now; held on validation + release go.
ghcr.io/tracebloc/ingestor:0.8is published and signed (v0.8.0 2026-07-30; the 0.8 line is at v0.8.2 since the 2026-08-04 promotion, data-ingestors#433). The remaining hold is functional, not artifact existence — see checklist.What (reworked 2026-08-04 onto the #494 channelTags structure)
images.ingestor.channelTags.prod0.7→0.8— the ds_ per-ingestion write path (data-ingestors#408) ships in the 0.8 ingestor line; a prod edge left on 0.7 spawns a pre-D16 ingestor and silently falls back to legacy shared tables even withperIngestionTableson (found on staging by Divya). dev/stg are untouched — they track the:dev/:stginternal channels (backend#1360).images.ingestor.prodDigest→sha256:05e12494…— the v0.8.2 multi-arch index (== the current:0.8float; == the v0.8.2 GitHub Release digest). Verified against ghcr.io 2026-08-04: OCI image index, linux/amd64 + linux/arm64. This is the actual spawn target on prod edges (prodPin: true)._helpers.tpllast-resort literal0.7→0.8(the--reuse-valuesfallback for releases predatingchannelTags) + comment.helm lintfailure is the pre-existingclientId/clientPasswordschema minLength (identical ondevelop).Chart.yaml1.9.12 → 1.9.13 — the chart only publishes on a version change.Why the write path is still inert after this merges
perIngestionTablesstays defaultfalse(client#472 knob →PER_INGESTION_TABLESon the spawned ingestor). This PR only makes the prod fleet capable of D16; the knob flip stays a per-fleet operational decision.Still TODO before un-drafting (checklist)
:0.8image published + signed (v0.8.0, 2026-07-30; line now v0.8.2)prodDigeston the 0.8-line multi-arch index (v0.8.2, verified 2026-08-04)developpost-feat(ingestor): resolve the spawned tag per environment (:dev / :stg) #494 (channelTags) / post-feat(chart): provision per-experiment DB credentials (RFC-0003 D10, backend#1181) #503; chart 1.9.13:dev/:stgare different builds than the release artifact): ingest → backend row carriesphysical_table→ training readsds_<hex>→tb data deletedrops table + salt + journalEpic: tracebloc/backend#1151 (critical path #3) · RFC-CLI-0003 D16 · ingestor image channel: backend#1360
🤖 Generated with Claude Code
Note
Medium Risk
Changes the default ingestor image prod edges spawn after chart auto-upgrade; a mis-pinned digest or tag could break ingestion pulls or leave edges on legacy table behavior until
perIngestionTablesis enabled, but scope is chart defaults with CI unittest and documented verification.Overview
Bumps the Helm chart to 1.9.13 and retargets the spawned ingestor on prod edges from the 0.7 release line to 0.8, which carries the D16
ds_<hex>per-ingestion write path (data-ingestors#408).images.ingestor.channelTags.prodmoves from0.7to0.8, andprodDigestis updated to the v0.8.2 multi-arch OCI index (sha256:05e12494…). Prod jobs-manager still spawns ingestion Jobs viaINGESTOR_IMAGE_DIGESTwhenprodPinis true; dev/stg keep floating on:dev/:stgchannels.The
tracebloc.ingestorTaghelper’s--reuse-valuesfallback literal changes from0.7to0.8so older releases withoutchannelTagsdo not spawn a pre-D16 ingestor. Helm unittest expectations for tag and digest are aligned with the new defaults.perIngestionTablesremains default false in this PR—only the ingestor image capability changes; enabling the write path is still a separate fleet knob flip.Reviewed by Cursor Bugbot for commit 674fbb7. Bugbot is set up for automated code reviews on this repo. Configure here.