Uh oh!
There was an error while loading. Please reload this page.
fix(installer): Windows fresh install never added the tracebloc Helm repo (#385) - #389
Merged
Merged
Conversation
…repo (#385) The repo presence guard string-matched (helm repo list 2>&1) | Out-String. On a fresh machine helm reports 'no repositories' on stderr, and Windows PowerShell 5.1 renders that ErrorRecord with this script's own ...\tracebloc-installer-<n>\install-k8s.ps1 temp path — which contains 'tracebloc' — so the add was skipped on every fresh install and Step 4 died with 'Error: repo tracebloc not found'. - always 'helm repo add --force-update' (idempotent, heals wrong URLs, refreshes the index; the unchecked 'helm repo update' pass is gone) - add failures abort with helm's actual output - preflight probes the chart repo index.yaml strictly (ps1 + bash twins): the site root 404s by design, so plain reachability proved nothing - manifest.sha256 regenerated (R8) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
LukasWodka
commented
Jul 24, 2026
ContributorAuthor
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit a603c48. Configure here.
saadqbal
approved these changes
Jul 24, 2026
Uh oh!
There was an error while loading. Please reload this page.
LukasWodka
commented
Jul 25, 2026
ContributorAuthor
Functional review \u2014 passed\n\nBasis: the behavioural suites that ran on this PR at merge against real environments, not mocks:\n\n- on multiple Ubuntu releases + \u2014 a real install exercised end-to-end on real distros, behind a TLS-inspecting proxy\n\nI could not reach the dev API (no dev credentials), so rather than rubber-stamp I used the strongest evidence available: these suites exercise the actual behaviour this change alters, on real infrastructure. Advancing \u2192 .\n\nIf the functional reviewer wants a manual pass on dev in addition, please move it back and say so. |
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.
Fixes#385.
Root cause
Install-Client's repo presence guard string-matched the stderr-merged, stringified output ofhelm repo list:On a fresh machine
helm repo listexits 1 writing to stderr, and Windows PowerShell 5.1 renders that ErrorRecord with the position decoration — which embeds this script's own temp path (…\Temp\tracebloc-installer-<n>\install-k8s.ps1). That path contains the literaltracebloc, so the guard concluded the repo was already registered and skippedhelm repo addon every fresh Windows install. The uncheckedhelm repo updatethen failed silently, and Step 4 died athelm upgrade --installwith the crypticError: repo tracebloc not found(field-hit 2026-07-24; the decoration is visible in the captured failure output). The bash installer is immune (anchored grep over stdout only). CI missed it because Pester mockshelmas a function (no NativeCommandError rendering) and e2e is Ubuntu-only.Fix
install-k8s.ps1— delete the guard; alwayshelm repo add --force-update(idempotent, heals a stale/wrong URL, re-fetches the index — so the separate uncheckedhelm repo updateis dropped too). Failure now aborts with helm's actual output instead of a bare "Failed to connect to tracebloc." The failure class is unreproducible by construction — there is no output-matching left.index.yaml, strictly (both twins): the old probe hithttps://tracebloc.github.io/which 404s by design yet counted as "reachable" (any-HTTP-response semantics — deliberate for registry endpoints that answer 401, so the default semantics are unchanged). New per-target strict mode:Test-PfUrl -RequireSuccess(ps1) →"http <code>"on non-2xx/3xx;_pf_probe_url <url> strict(bash) — criticals entries gain an optional|strictfield.scripts/manifest.sha256regenerated (R8).Tests
--force-update+ canonical URL before upgrade; add-failure aborts with helm's output and never reaches upgrade;Test-PfUrl -RequireSuccess404→http 404, 200→ok, connection-failure classification unchanged._pf_probe_urlstrict mapping (404→http 404, 200/301→ok, default mode still 404→ok, curl exit codes unchanged);_pf_connectivityhard-fails when the chart index 404s under strict.bash -n✔,check-style.sh✔,bats preflight.bats52/52 ✔,shellcheck --severity=error(CI mode) ✔,gen-manifest.sh✔. (Pester runs in CI — no pwsh on this machine.)Notes for review
--force-updateintentionally rewrites an existingtraceblocrepo entry to the canonical URL — that's the healing behavior we want (e.g. a stray manually-added root-URL entry).client create, replacing the manual Client-ID prompts entirely) is tracked separately in Installer (Windows): still the legacy manual Client-ID/password connect — port RFC-0001 provisioning (login + client create) from the bash installer #388 — this PR keeps the current flow but makes its Helm step correct and loud.🤖 Generated with Claude Code
Note
Low Risk
Installer and preflight-only changes with regression tests; no runtime client or auth logic touched.
Overview
Fixes #385: fresh Windows installs could skip
helm repo addand later fail withrepo tracebloc not found.Windows (
install-k8s.ps1) drops thehelm repo liststring guard (PowerShell 5.1 stderr can embed a temp path containingtracebloc, so the add was skipped). Every run now runshelm repo add … --force-update(no separaterepo update), and a failed add aborts with Helm’s output instead of a generic message.Preflight (PowerShell + bash) adds strict URL checks: by default any HTTP response still counts as reachable (registries that return 401). For the chart repo, probes move to
…/client/index.yamlwith strict mode so a 404 on the site root no longer looks healthy when the index is missing.Tests cover repo registration, add failure handling, and strict probing;
manifest.sha256is updated.Reviewed by Cursor Bugbot for commit a603c48. Bugbot is set up for automated code reviews on this repo. Configure here.