Uh oh!
There was an error while loading. Please reload this page.
chore(chart): roll ingestor tag 0.5 → 0.6, bump chart 1.9.0 → 1.9.1 - #323
Merged
Conversation
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
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>
saqlainsyed007
approved these changes
Jul 9, 2026
Uh oh!
There was an error while loading. Please reload this page.
1 task
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
This was referenced Jul 10, 2026
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Moves
images.ingestor.tag"0.5"→"0.6"so prod ingestion picks up the data-ingestors 0.6.0 release.digeststays empty (floating mode), so jobs-manager auto-rolls on the next ingestion submit — no digest pin, no CronJob, revert-proof againsthelm upgrade.The 0.6 image is published, multi-arch, and signed:
ghcr.io/tracebloc/ingestor:0.6→sha256:be42a384904ec3372d24f66894acf91562bc65d2960bb96d56756e69bdf055e8ingestor-multiarchguard / Ingestor pinned to an amd64-only digest — arm64 data ingestion fails (ImagePullBackOff) #186)Related
Closes#322. Consumes data-ingestors 0.6.0 (#338 BOM, #340 label-column, #347 layout contract).
Type of change
Test plan
:0.6resolves to the v0.6.0 release digest and is a multi-arch index (amd64+arm64) before bumping.repository/tag/digest(empty digest → spawn by tag).Deployment notes
Ships to prod via the next
develop → mainchart 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 set0for minor auto-track).Checklist
🤖 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.5to the0.6floating tag (images.ingestor.tagand theINGESTOR_IMAGE_TAGfallback in jobs-manager).digeststays empty, so ingestion jobs still resolve the current published image at submit time withimagePullPolicy=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.