Uh oh!
There was an error while loading. Please reload this page.
feat(data ingest): plain-language copy + hide k8s ceremony + progress on every wait (#179) - #196
Conversation
… on every wait (#179) RFC-0002 phase 1. Make the `tracebloc data ingest` run speak the user's language, stop showing Kubernetes on the happy path, and never block silently. Copy / presentation / progress only — behavior, exit codes, guards, and the destination-exists (exit 6) check are unchanged. - Rewrite the intro paragraph on-prem and jargon-free: data never leaves the user's own infrastructure; drop "upload"/"Kubernetes"/"cluster"; use "workspace" as the single deployment noun. - Reword the file move to "copy into your workspace's storage" / "Copying" / "Copied" (was upload channel / Uploading / Uploaded). - Collapse the "Step 2/4 Connect to your workspace" screen: connect quietly on the happy path (all logic + the exit-6 guard intact), narrate under --verbose. Renumber the visible steps to three: 1/3 Check your data, 2/3 Copy into your workspace, 3/3 Validate and load. - Move the cluster summary (release / jobs-manager / shared PVC) and the RWO-PVC note to --verbose-only (Detailf); they no longer print on the happy path. - Progress on every wait: spinners now wrap the submit-connect port-forward, the local file walk, the --overwrite teardown, and the staging reclaim. No silent blocking call remains on the happy path. Tests: update the stage-copy + cluster-summary assertions to the new copy; add TestPrintClusterSummary_VerboseOnly (fields hidden without --verbose, shown with it) and TestRunIngestionRun_SubmitConnectUsesSpinner (nil-safe spinner on the connect wait). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
… path Bugbot #196: collapsing the "Connect to your workspace" step routed its only status line through Detailf (verbose-only), so the default happy path sat silent through several blocking apiserver round-trips — kubeconfig load, release + shared-PVC discovery (incl. the cluster-wide fallback scan), and the destination-exists check — until "2/3 Copy into your workspace" appeared. That contradicts the PR's own "progress on every wait" goal. Restore a visible status line ("Connecting to your workspace…") on the default path. Deliberately a plain line, not a spinner: discoverRelease can emit its own namespace-fallback note mid-call, which a spinner's \r redraw would clobber. Discovery + the exit-6 destination guard are unchanged; presentation only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
saadqbal
commented
Jul 9, 2026
Bugbot's right on this one — worth fixing. Collapsing step 2 routed its only status line through Fixed in 6ec82cd: restored a visible |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 6ec82cd. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Bugbot #196 (2 findings on 6ec82cd): 1. Submit POST ran silent. The submit-connect spinner wrapped only the port-forward and was stopped before the blocking jobs-manager POST — which is the real wait (submit.SubmitTimeout caps it at 30s of synchronous server-side validation). Moved a spinner to submit.Run, next to the POST it covers, so the longest wait on the submit path no longer sits on a blank line. Corrected the stale data.go comment that attributed the ~30s cost to the port-forward. 2. Spinner test was Windows-broken. TestRunIngestionRun_SubmitConnectUsesSpinner asserted a \r redraw unconditionally, but Printer.Spinner uses a static one-liner (no \r) on Windows by design. Guard the assertion on runtime.GOOS != "windows". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Summary
Phase 1 of RFC-0002 (#174). Makes the
tracebloc data ingestrun speak the user's language, stops showing Kubernetes on the happy path, and puts a progress indicator on every blocking wait.Copy / presentation / progress only. Behavior, exit codes, guards, and the destination-exists (exit 6) check are unchanged. Overwrite is not made promptable here (that's cli#180b). The RFC text under
docs/rfcs/is untouched.Closes#179.
What changed
Plain language + on-prem framing (§2)
stage.goand the step-2 hint.clustermention in the step-1 hint reworded to "workspace".Reduced ceremony (§6)
--verbose.1/3 Check your data,2/3 Copy into your workspace,3/3 Validate and load. Dry-run hint renumbered to match.printClusterSummary(release / jobs-manager / shared PVC) and the RWO-PVC note moved to--verbose-only (Detailf). Hidden, not deleted.Progress on every wait
Infof), the local file walk before step 1, the--overwriteteardown, and the post-success staging reclaim. No silent blocking call remains on the happy path.Test plan
make cigreen locally (vet,go test -race -cover ./..., errcheck, ineffassign, misspell,gofmt -s, schema-check).stage_test.go(copy phrases) andcoverage_test.go(cluster facts now assert under--verbose).TestPrintClusterSummary_VerboseOnly— cluster fields hidden without--verbose, shown with it.TestRunIngestionRun_SubmitConnectUsesSpinner— the connect wait renders as a spinner (nil-safe on the static path).Decisions to ratify
--detachcopy (item 4) needed no change.submit.goalready carries honest, plain wording ("Submitted — tracebloc is validating your data…", a detach note, plus a labelledkubectl logs -ffallback), so nothing promises live streaming. Left as-is.Short/Longhelp text still says "Stage a local dataset" / "jobs-manager" / keeps thepushalias. Left out of scope to keep this PR to the run-flow copy and avoid clobbering the parallel ingest-UX sweep. Flag if you'd rather fold it in here.clustertarget.go("No client in namespace X — using the one in Y") still uses "client"/"namespace" on a non-verbose path. It's inherently about--namespacemechanics and outside the enumerated line refs, so deferred.🤖 Generated with Claude Code
Note
Low Risk
Presentation and messaging only; ingest logic, exit codes, and safety checks are untouched.
Overview
Phase 1 of RFC-0002 for
tracebloc data ingest: user-facing copy and progress only—exit codes, guards, and discovery logic are unchanged.Plain language reframes the intro around on-prem workspace storage (data stays in your infrastructure; copy not upload/Kubernetes). Staging messages in
stage.goand step labels follow the same wording.Ceremony hiding drops the old “connect” numbered step: the happy path shows 3 steps (
Check your data→Copy into your workspace→Validate and load) plus a single “Connecting to your workspace…” line during discovery. Release, jobs-manager, and PVC details inprintClusterSummaryrender only with--verboseviaDetailf.Progress on every wait adds spinners for the local file walk,
--overwriteteardown, jobs-manager port-forward connect, the synchronous submit POST insubmit.Run, and post-success staging reclaim.Reviewed by Cursor Bugbot for commit 24d2f68. Bugbot is set up for automated code reviews on this repo. Configure here.