Uh oh!
There was an error while loading. Please reload this page.
docs(rfc): RFC-CLIENT-0003 — one installer core: Linux-first, thin OS adapters - #434
Conversation
… adapters Records the strategy decision from the 2026-07 multi-environment installer sweep: single Linux bash core, thin macOS/Windows adapters (Windows adapter gated on the rootless-in-WSL validation, backend#1179), facts single-sourcing + CI parity gate + a real Windows e2e leg regardless of the gate outcome. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
LukasWodka
commented
Jul 27, 2026
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 dfa7fa1. Configure here.
shujaatTracebloc
left a comment
There was a problem hiding this comment.
Reviewed — approving.
Docs-only RFC (single new file docs/rfcs/0003-one-installer-core.md), CI fully green including Cursor Bugbot (0 findings), no open review threads.
Verified the content, not just the format:
- All 8 client-side references are accurate — #382 (closed, k3d pin in bash), #410 (pin missing in PS install-k8s.ps1), #429 (macOS bare-brew bypass), #411 (execute-gate), #426 (k3d/helm timeouts), #423 (Windows error-surface), #412 (Windows infinite spinner), #420 (resume/state engine, correctly flagged as gated by the interim rule). Each title matches the claim it supports.
- Backend epic refs check out — #1285 (installer sweep epic), #1179 (Windows/WSL2 least-privilege child), #1168 (least-privilege epic).
- Numbering is correct — 0003 is the next free slot; 0002 is legitimately in-flight on #369, which adds the file at
0002-least-privilege-install.md— exactly the path this RFC's relative link targets, so that link resolves once #369 merges. - No customer names or internal hostnames (public repo). Renders correctly.
Non-blocking: the ./0002-least-privilege-install.md link is a soft-dangling reference on develop until #369 merges, but the filename matches and the in-flight status is noted inline — it self-heals on merge order. Nothing to change here.
Uh oh!
There was an error while loading. Please reload this page.
develop moved again while this branch sat waiting for review: #517 (drop the dead Get-WslConfigContent + its test) and #434 (RFC-CLIENT-0003 docs). Both touch the same install-k8s.ps1 hash line in scripts/manifest.sha256, which is the only textual conflict; the PowerShell and test files auto-merged. Verified the merge rather than trusting it: - #517's removal came through cleanly -- Get-WslConfigContent is gone from both the installer and the test file (0 references in each). - This branch's + #516's accessor work is intact (15 accessor references). - Pester 391 passed / 0 failed. One fewer than the 392 before this merge, which is exactly the Get-WslConfigContent test #517 deleted -- not a lost assertion. Gates: Invoke-ScriptAnalyzer as CI scopes it -> 0 errors; check-style.sh clean; check-drift.sh no drift; manifest.sha256 regenerated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
develop moved a long way while this sat open (#513 macOS memory floor, #518 storage remedy, #516/#444/#517/#520 on the Windows side, #434 RFC docs). Only scripts/manifest.sha256 conflicted textually — the same single install-k8s.ps1 hash line that has now collided four times today. preflight.sh and preflight.bats auto-merged. Resolution: regenerate the manifest (it is a DERIVED artifact — 18 digests, no secrets; authenticity comes from the release workflow's cosign signature, not from git), so regenerating is the only correct resolution. Taking either side would leave a wrong digest, which the R8 gate then rejects. Verified the auto-merge rather than trusting it. The real hazard here was not the conflict but the clean-looking merge: this branch DELETES _pf_total_mem_kb (the "prefer the runtime" memory selector whose conflation of host RAM and VM budget is the bug it fixes), so any caller that landed on develop meanwhile would have merged into a call to a function that no longer exists — a silent break git reports as success. - _pf_total_mem_kb: undefined and unreferenced after the merge; the only mentions are this branch's own guard test asserting its absence, and a comment. - #518's _pf_storage_type network-FS remedy survived intact. - This branch's _pf_runtime_mem_status is present and still wired into both _pf_memory and _pf_recheck_runtime_mem. Gates: bats scripts/tests/*.bats -> 683 ok / 0 not ok (full TAP plan reported, not a truncated read); shellcheck --severity=error over the CI file set -> rc=0; bash -n clean; Pester -> 403 passed / 0 failed (install-k8s.ps1 arrived via this merge); check-style clean; check-drift no drift; gen-manifest.sh --check current. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
LukasWodka
commented
Aug 2, 2026
/fr-pass |
Summary
Adds
RFC-CLIENT-0003— One installer core: Linux-first, thin OS adapters (docs/rfcs/0003-one-installer-core.md), the strategy decision from the 2026-07 multi-environment installer sweep (epic tracebloc/backend#1285, 25 children).Core proposal:
RFC-CLIENT-0001rootless validation passing inside WSL2 on managed hardware (direction already stated in tracebloc/backend#1179; also removes the Docker Desktop licensing burden for large orgs).windows-latestcan't nest virtualization, so the PS installer only ever gets mocked Pester.Type
Docs (RFC — decision record)
Test plan
Docs-only; no installer script, chart, or workflow touched. Verified the document renders, the qualified-ID header matches the RFC-CLIENT-0001/0002 convention, next free number in this repo is 0003 (0002 is in-flight on #369), and no customer names or internal hostnames appear (public repo).
🤖 Generated with Claude Code
Note
Low Risk
Documentation-only RFC; no installer scripts, CI workflows, or runtime behavior change in this PR.
Overview
Adds
RFC-CLIENT-0003(docs/rfcs/0003-one-installer-core.md), a draft decision record for installer architecture after the tracebloc/backend#1285 multi-OS sweep.It proposes making the Linux bash core the single behavioral implementation (D1), with thin macOS/Windows adapters (D2)—including a gated plan to replace the PowerShell monolith with a WSL2 bootstrap that runs the bash core inside WSL, pending
RFC-CLIENT-0001validation on managed hardware. D3–D5 call for immediate work: a shared machine-readable facts spec with CI drift checks, a behavior-parity matrix gate, and a real Windows e2e leg. An interim rule allows Wave-1/2 PowerShell fixes but blocks new large PS-only subsystems (e.g. #420) until the D2 gate resolves.Reviewed by Cursor Bugbot for commit 1529035. Bugbot is set up for automated code reviews on this repo. Configure here.