Skip to content

feat(data ingest): plain-language copy + hide k8s ceremony + progress on every wait (#179) - #196

Merged
saadqbal merged 3 commits into
developfrom
feat/179-plain-language-ceremony
Jul 9, 2026
Merged

feat(data ingest): plain-language copy + hide k8s ceremony + progress on every wait (#179)#196
saadqbal merged 3 commits into
developfrom
feat/179-plain-language-ceremony

Conversation

@LukasWodka

@LukasWodkaLukasWodka commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Phase 1 of RFC-0002 (#174). Makes the tracebloc data ingest run 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)

  • Intro paragraph rewritten: data never leaves the user's own infrastructure; tracebloc copies the files into the workspace, checks them, loads them into a table collaborators train against without seeing the raw files. No "upload" / "Kubernetes" / "cluster". One deployment noun: workspace.
  • The file move is now "copy into your workspace's storage" / "Copying" / "Copied" (was "upload channel" / "Uploading" / "Uploaded") — in stage.go and the step-2 hint.
  • Remaining happy-path cluster mention in the step-1 hint reworded to "workspace".

Reduced ceremony (§6)

  • The "Step 2/4 Connect to your workspace" screen is collapsed: the connection happens quietly on the happy path (all discovery logic + the exit-6 destination guard intact) and is narrated only under --verbose.
  • Visible steps renumbered to three: 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

  • Spinners now wrap: the submit-connect port-forward (a ~30s POST, was a plain Infof), the local file walk before step 1, the --overwrite teardown, and the post-success staging reclaim. No silent blocking call remains on the happy path.

Test plan

  • make ci green locally (vet, go test -race -cover ./..., errcheck, ineffassign, misspell, gofmt -s, schema-check).
  • Updated stage_test.go (copy phrases) and coverage_test.go (cluster facts now assert under --verbose).
  • Added TestPrintClusterSummary_VerboseOnly — cluster fields hidden without --verbose, shown with it.
  • Added TestRunIngestionRun_SubmitConnectUsesSpinner — the connect wait renders as a spinner (nil-safe on the static path).

Decisions to ratify

  • Submit --detach copy (item 4) needed no change.submit.go already carries honest, plain wording ("Submitted — tracebloc is validating your data…", a detach note, plus a labelledkubectl logs -f fallback), so nothing promises live streaming. Left as-is.
  • Command Short/Long help text still says "Stage a local dataset" / "jobs-manager" / keeps the push alias. 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.
  • One namespace-fallback edge-case line in 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 --namespace mechanics and outside the enumerated line refs, so deferred.
  • Verbose cluster detail keeps the accurate term "stage Pod" (verbose is explicitly the technical surface).

🤖 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.go and step labels follow the same wording.

Ceremony hiding drops the old “connect” numbered step: the happy path shows 3 steps (Check your dataCopy into your workspaceValidate and load) plus a single “Connecting to your workspace…” line during discovery. Release, jobs-manager, and PVC details in printClusterSummary render only with --verbose via Detailf.

Progress on every wait adds spinners for the local file walk, --overwrite teardown, jobs-manager port-forward connect, the synchronous submit POST in submit.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.

… 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>
Comment threadinternal/cli/data.go
… 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

Copy link
Copy Markdown
Collaborator

Bugbot's right on this one — worth fixing. Collapsing step 2 routed its only status line through Detailf (verbose-only), so the default path sits silent through the discovery round-trips (kubeconfig load, release + PVC discovery, the destination check) until 2/3 shows. That's exactly the "silent wait on the happy path" the rest of this PR set out to kill.

Fixed in 6ec82cd: restored a visible Connecting to your workspace… line on the default path. Kept it a plain line rather than a spinner on purpose — discoverRelease prints its own namespace-fallback note mid-call, and a spinner's \r redraw would clobber it. Discovery + the exit-6 guard are untouched.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadinternal/cli/data.go
Comment threadinternal/cli/ingestion_run_test.go
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>
@saadqbal
saadqbal merged commit 0a573fb into developJul 9, 2026
16 checks passed
@saadqbal
saadqbal deleted the feat/179-plain-language-ceremony branch July 9, 2026 13:12
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.

2 participants

@LukasWodka@saadqbal