Uh oh!
There was an error while loading. Please reload this page.
feat(installer): first-run UX — interim slice of the v2 spec (copy, naming, location fix, clearer errors) - #307
Merged
Merged
Conversation
…o-detect, real errors
Line-by-line pass over the one-command install experience, driven by a real
production run that failed opaquely on a mistyped location zone ("berlin").
- Bootstrap: reframe supply-chain verification as plain-language reassurance
(drop cosign/manifest/keyless jargon and the alarming "cosign not found"),
lowercase brand, drop the redundant "Running… environment setup" line.
- Welcome banner: drop the inaccurate "nothing modified outside ~/.tracebloc
and Docker" promise (the installer also brew-installs Docker + system deps);
fix brand casing on the sudo prompt.
- Step 1: de-duplicate the Apple-Silicon messaging and warn on the real
limitation (no GPU training on macOS) rather than on the chip itself.
- Step 3 (provision): auto-detect the carbon-reporting zone from the system
timezone via the OS's own zone.tab (no network call, no embedded zone list
to drift) and let the user Enter-to-accept / override / skip; surface the
ACTUAL client-create failure inline (e.g. an unrecognized zone) instead of a
generic "see the log".
- Step 4 + summary + PowerShell: advertise the shipped dataset commands
(dataset push/rm → data ingest/delete).
- Drop internal ticket refs (RFC-0001 R8) that leaked into user-facing errors.
Tests: provision, bootstrap, install-cli, summary bats suites green (50/50).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>LukasWodka
commented
Jul 6, 2026
ContributorAuthor
👋 Heads-up — Code review queue is at 34 / 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.) |
…-led next steps, location fixes Interim slice of the installer UX v2 spec (full restructure gated on the next CLI release): - Banner: drop the vendor value-prop lines (bash + ps1) — the trust claim lives in the verified connected summary. - vendors → other collaborators everywhere user-facing; training phrased as gated on the user's approval. - Next steps rewritten around the goal: ingest data → create your use case (real /my-use-cases URL) → invite other collaborators; dashboard + CLI help demoted to footnotes. - "Name this machine" → "Name this client" (entity noun rule). - Location prompt: fix the live skip-path bug — the released CLI (v0.5.1) hard-requires --location when it can't prompt, so a blank/skip answer doomed the create with a buried error. Now: Enter accepts the detected zone; no detection → re-ask (3 tries) instead of minting a doomed request; unattended runs fall back to the detected zone silently. Tests: 67/68 bats green (1 pre-existing environmental failure on validate_config, identical on develop). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Regenerate scripts/manifest.sha256 (7 script hashes changed by the copy pass) — the Static analysis drift check diffs it against the tree. - Update two bats assertions to the new user-facing strings: the no-name fatal now says 'name for this client' (noun rule) and the bootstrap happy path prints 'installer files verified'. Caught by Linux CI only: on macOS, bats silently passes failing [[ ]] assertions (bash 3.2 errexit quirk), so local green was misleading. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eview nits) Two small robustness fixes from PR review, both in provision_client: - Trim name/location BEFORE the silent auto-detect fallback. A whitespace-only location answer (spaces then Enter) was non-empty at the fallback check, so it slipped through untrimmed and only got emptied afterward — re-dooming the create with a buried error, the exact failure this PR fixes. Now it degrades to the detected zone. - When mktemp is unavailable, capture client-create output inside the install dir (HOST_DATA_DIR, which we own) instead of a predictable world-writable /tmp path that is a symlink-clobber target under sudo. Manifest regenerated for the provision.sh change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
saadqbal
commented
Jul 7, 2026
Contributor
Nice, careful PR 👍 The location auto-detect (no network, OS zone.tab) and the inline create-failure reason are exactly right, and the manifest is clean. Pushed two small robustness fixes on top (f6e2607) rather than leaving them inline:
Both are edge cases; nothing blocking. Good to merge once green. |
saadqbal
approved these changes
Jul 7, 2026
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Jul 7, 2026
Closed
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
Interim slice of the installer first-run UX v2 spec (tracebloc/backend#992): every improvement that is safe against the released CLI (v0.5.1) ships here; the full 4-section restructure is gated on tracebloc/cli#137 + tracebloc/cli#138 reaching a release.
Originally opened as a line-by-line UX pass off a real failed prod install (a typed city —
berlin— died with only "see the log"); extended with the spec's copy decisions.What's in
Bootstrap / banner
cosign/manifestjargon, no alarming "not found"); lowercase brand; redundant "Running… environment setup" line dropped.Step 1 (GPU) — Apple-Silicon messaging de-duplicated; ⚠ on the real limitation (no GPU training on macOS), not on the chip.
Step 3 (provision)
Name this machine→Name this client(noun rule: machine = hardware, client = tracebloc entity).zone.tab, no network) and offered as the Enter-default. Fixes a live prod bug: the shipped prompt says "optional", but v0.5.1'sclient createhard-requires--locationwhen it can't prompt — so skipping doomed the create with the error buried in the log. Now: Enter accepts the detected zone; no detection → re-ask (3 tries) instead of minting a doomed request; unattended runs fall back to the detected zone silently. (Prompt disappears entirely once cli#137 ships.)"berlin" isn't a recognized carbon zone) instead of "see the log".Summary — next steps rewritten around the goal chain: ingest data → create your use case (
https://ai.tracebloc.io/my-use-cases) → invite other collaborators; training explicitly gated on the user's approval; dashboard +tracebloc --helpdemoted to footnotes.Step 4 / Windows — stale
dataset push/rm→data ingest/delete; internal ticket refs (RFC-0001 R8) removed from user-facing errors.Testing
bats: 67/68 across provision, bootstrap, install-cli, summary, common (the 1 failure is the pre-existing environmentalvalidate_configcase — fails identically on untouched develop). Auto-detect verified on macOS (Europe/Berlin→DE). Syntax-checked; summary trust-claim assertions still pass.Follow-ups (filed)
<firstname>-NN,--locationoptionalauth status --check, backend connect confirmation🤖 Generated with Claude Code