Skip to content

chore(chart): roll ingestor tag 0.5 → 0.6, bump chart 1.9.0 → 1.9.1 - #323

Merged
saadqbal merged 3 commits into
developfrom
chore/ingestor-tag-0.6
Jul 9, 2026
Merged

chore(chart): roll ingestor tag 0.5 → 0.6, bump chart 1.9.0 → 1.9.1#323
saadqbal merged 3 commits into
developfrom
chore/ingestor-tag-0.6

Conversation

@saadqbal

@saadqbalsaadqbal commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Moves images.ingestor.tag"0.5""0.6" so prod ingestion picks up the data-ingestors 0.6.0 release. digest stays empty (floating mode), so jobs-manager auto-rolls on the next ingestion submit — no digest pin, no CronJob, revert-proof against helm upgrade.

The 0.6 image is published, multi-arch, and signed:

Related

Closes#322. Consumes data-ingestors 0.6.0 (#338 BOM, #340 label-column, #347 layout contract).

Type of change

  • Tech-debt / chore (image rollout)

Test plan

  • Verified :0.6 resolves to the v0.6.0 release digest and is a multi-arch index (amd64+arm64) before bumping.
  • Values-only default change; jobs-manager builds the ref from repository/tag/digest (empty digest → spawn by tag).

Deployment notes

Ships to prod via the next develop → main chart sync. A MINOR line move is intentional — future 0.6.x patches auto-track; a later 0.7 will again require moving this tag (or set 0 for minor auto-track).

Checklist

  • No secrets / credentials in the diff

🤖 Generated with Claude Code


Note

Low Risk
Chart version and default ingestor tag only; floating-tag spawn behavior is unchanged and there is no auth or data-path logic in the diff.

Overview
Bumps the Helm chart to 1.9.1 and moves the default spawned ingestor image from the 0.5 to the 0.6 floating tag (images.ingestor.tag and the INGESTOR_IMAGE_TAG fallback in jobs-manager). digest stays empty, so ingestion jobs still resolve the current published image at submit time with imagePullPolicy=Always—no digest pin or extra rollout step.

The values comments now call out why the line moved: 0.6 picks up ingestion fixes (label-column resolution, UTF-8 BOM headers) while keeping parity with the task catalogue jobs-manager validates at submit. The jobs-manager Helm test default tag expectation is updated to 0.6.

Reviewed by Cursor Bugbot for commit f0c2b40. Bugbot is set up for automated code reviews on this repo. Configure here.

saadqbaland others added 2 commits July 9, 2026 16:19
data-ingestors 0.6.0 is released (ghcr.io/tracebloc/ingestor:0.6 →
sha256:be42a384…055e8, multi-arch amd64+arm64, cosign-signed). The chart
pins the patch-only float `0.5`, so 0.6.0 isn't picked up until the tag
moves. jobs-manager spawns each ingestion Job by this tag with
imagePullPolicy=Always, so 0.6 auto-rolls on the next submit — no digest
pin, no CronJob.
Brings to prod ingestion: case/whitespace label-column resolution
(data-ingestors#340), UTF-8 BOM header handling (#338), and the
machine-readable layout contract (#347).
Refs #322
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…to 0.6
The jobs-manager golden pins INGESTOR_IMAGE_TAG default to "0.5"; move it
to "0.6" alongside the values bump. Also bump the template's own fallback
default "0.5" → "0.6" so a `helm upgrade --reuse-values` from a release
predating images.ingestor.tag doesn't silently revert prod to the 0.5 line.
Refs #322
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
saqlainsyed007
saqlainsyed007 previously approved these changes Jul 9, 2026
Patch bump for the ingestor floating-tag roll (0.5 → 0.6) in this PR — the
change alters rendered output (spawned ingestor tag), so the batch on
develop is release-ready ahead of the develop→main sync. version +
appVersion moved in lockstep, per #320.
Refs #322
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@saadqbalsaadqbal changed the title chore(chart): roll ingestor floating tag 0.5 → 0.6chore(chart): roll ingestor tag 0.5 → 0.6, bump chart 1.9.0 → 1.9.1Jul 9, 2026
@saadqbal
saadqbal merged commit 4423f2b into developJul 9, 2026
15 checks passed
@saadqbal
saadqbal deleted the chore/ingestor-tag-0.6 branch July 9, 2026 11:36
saadqbal added a commit that referenced this pull request Jul 9, 2026
chore(chart): roll ingestor tag 0.5 → 0.6, bump chart 1.9.0 → 1.9.1
saadqbal added a commit that referenced this pull request Jul 10, 2026
Publishes everything unreleased since v1.9.0:
- #323 ingestor default tag → 0.6 (landed as 1.9.1, never released)
- #325 stop leaking client password on curl's argv (CWE-214)
- #326 survive curl|bash: retry name prompt, read creds from terminal,
guard pkg-index refresh (customer-reported)
Refs #328
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
saadqbal added a commit that referenced this pull request Jul 10, 2026
… + curl|bash survival) (#327)
* Merge pull request #325 from tracebloc/fix/cred-leak-curl-argv
fix(installer): stop leaking the client password on curl's argv (CWE-214)
* fix(installer): survive curl|bash — retry name prompt (customer-reported), read creds from terminal, guard pkg-index refresh (#326)
* fix(installer): don't abort Linux install when the package-index refresh flakes
install_system_deps ran `spin_cmd "Updating package index…" $PM_UPDATE`
unguarded — under set -e a transient mirror/network failure there aborted
the whole install. Yet the per-package installs right below are already
guarded (|| log), so a flaky refresh was MORE fatal than a failed install,
which is backwards: a stale index usually still installs from cache. Guard
it with || warn so we continue to the (guarded) installs, which surface a
genuinely missing package with an actionable message.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(installer): read credential prompts from the terminal so curl|bash doesn't abort
The Step-5 credential prompt read from stdin. Under `curl … | bash` stdin
is the piped script, not the terminal, so each `read` hit EOF and (under
set -e) aborted the installer with an opaque failure the moment it reached
the prompt — the dual-mode env-var path (TRACEBLOC_CLIENT_ID/PASSWORD) was
the only way through, but nothing told the user that.
Read prompts from TB_TTY (the controlling terminal, /dev/tty) instead, the
same mechanism provision.sh already uses. When no terminal is available and
no env creds were supplied, fail with an actionable message pointing at
TRACEBLOC_CLIENT_ID/PASSWORD rather than the set -e abort. TB_TTY is
overridable so the bats suite can feed canned input on stdin.
Regenerated scripts/manifest.sha256 (R8 supply-chain: any scripts/ change
must re-pin, alongside the setup-linux.sh guard in the previous commit).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(installer): retry the client-name prompt so tty type-ahead can't abort provisioning
Customer-reported 2026-07-09 (external onboarding): the installer signed in,
printed the name + location prompts, captured NEITHER, and died with 'A name
for this client is required to provision it.'
provision_client read the name with `IFS= read -r client_name </dev/tty || true`
— a single shot whose status was swallowed by `|| true`, with no retry and no
fallback (location silently defaults to the detected zone, which is why only the
name failed hard). Any empty/failed read on the name → the fatal error. The most
likely trigger is tty type-ahead: during the ~minute browser-approval wait the
CLI reads nothing, so a stray newline queued in the terminal is consumed by the
read as an empty name. (An adversarial pass ruled out the background-process-group
and login-drains-the-tty theories; the reader is foreground and login never
touches the tty — the empty read is an environmental dead/queued-input condition.)
Fix: read the name in a bounded retry loop that RE-PROMPTS on an empty line
(so a queued blank is skipped, not accepted) and BREAKS on a failed read
(rc!=0 = EOF / no live input, which re-prompting can't fix) so the actionable
'set TRACEBLOC_CLIENT_NAME' error still fires. Reads route through TB_TTY
(defaults to /dev/tty; overridable so the bats suite can feed stdin), matching
the install-client-helm.sh credential reads in this branch; prompt WRITES stay
on /dev/tty but are guarded so a test without a real terminal doesn't abort.
The location reads adopt TB_TTY too (their empty->fallback behavior is unchanged).
2 new provision.bats tests: type-ahead blanks are re-prompted then the real name
is captured; a dead-input tty (EOF) fails fast with the guidance. Regenerated
scripts/manifest.sha256 (R8). NOTE: this is Failure 1 of the report; the existing
install-client-helm.sh fix on this branch does NOT cover these provision.sh reads.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(installer): guard credential reads against a dead-input tty (EOF), not just a missing one
Review feedback on #326 (Asad + Bugbot): the credential reads route through
$TB_TTY but had no EOF guard, unlike the provision.sh name read (which breaks on
rc!=0). _tty_available only checks `-r`, so on a readable-but-dead-input tty
(non-PTY ssh, an IDE terminal, a drained/queued tty — the same class this PR
documents for provision.sh) it returns true, the actionable no-creds error is
skipped, and the first `read <"$TB_TTY"` hits EOF and aborts under set -e —
the exact opaque failure this PR set out to remove, left in place for creds.
Factor the actionable env-var guidance into _no_interactive_creds_die and call
it from BOTH the `! _tty_available` check AND a per-read `|| _no_interactive_creds_die`
guard on all five prompts (the Use-previous read + the ID/password reads). A
dead-input tty now fails fast with the same guidance as no-tty instead of
aborting mid-read. Happy path (input present) is unchanged — the guard only
fires on EOF; all existing cred tests (re-prompt, reuse-defaults, max-attempts)
consume their fed input exactly and still pass.
+1 regression test (readable /dev/stdin backed by /dev/null → EOF → actionable
error, no helm). Regenerated scripts/manifest.sha256 (R8).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* chore(chart): bump client 1.9.1 → 1.9.2 (version + appVersion) (#329)
Publishes everything unreleased since v1.9.0:
- #323 ingestor default tag → 0.6 (landed as 1.9.1, never released)
- #325 stop leaking client password on curl's argv (CWE-214)
- #326 survive curl|bash: retry name prompt, read creds from terminal,
guard pkg-index refresh (customer-reported)
Refs #328
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: lukasWuttke <54042461+LukasWodka@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
saadqbal added a commit that referenced this pull request Jul 10, 2026
The ingestor 0.6 → 0.7 tag roll needs a new chart version to publish and
reach prod — the chart releases on a GitHub Release → gh-pages package
that fleet auto-upgrade consumes, so an unchanged version wouldn't ship.
Same bundling as the 0.5 → 0.6 rollout (#323, which bumped 1.9.0 → 1.9.1).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
saadqbal added a commit that referenced this pull request Jul 10, 2026
…331)
* chore(ingestor): roll floating tag 0.6 → 0.7 for prod (client#330)
data-ingestors 0.7.0 is released (multi-arch ghcr :0.7, PyPI, GitHub
Release v0.7.0). Move the ingestor pin so spawned ingestion Jobs pick up
0.7 — tabular schema-inference rules (data-ingestors#349), the semseg
mask_id contract (#358), and the minimum-image-size floor (#348). TSC
(#359) was deferred and is not in 0.7.0.
Standard 3-spot bump (digest stays "" = floating, auto-rolls on next
submit; :0.7 is multi-arch so ingestor-multiarch CI passes):
- client/values.yaml images.ingestor.tag 0.6 → 0.7 (+ rationale comment)
- jobs-manager-deployment.yaml INGESTOR_IMAGE_TAG default 0.6 → 0.7 so a
--reuse-values upgrade can't revert prod to the stale line
- jobs_manager_test.yaml default-tag golden 0.6 → 0.7 (the 0.4
override-test assertion is unchanged)
helm-unittest: 267/267 pass.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(chart): bump client 1.9.2 → 1.9.3 (version + appVersion)
The ingestor 0.6 → 0.7 tag roll needs a new chart version to publish and
reach prod — the chart releases on a GitHub Release → gh-pages package
that fleet auto-upgrade consumes, so an unchanged version wouldn't ship.
Same bundling as the 0.5 → 0.6 rollout (#323, which bumped 1.9.0 → 1.9.1).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@saadqbal@saqlainsyed007@LukasWodka