Delete the installer host wiring neither installer runs (#691) - #713
Merged
Conversation
install.ps1 delegates to `installer-hosts` at :817 and exits on its status. The 351 lines after that exit have been unreachable since #624, and every has_/wire_ pair in install.sh is defined and never called. Both files kept describing host support they had stopped performing. That is not free. #689 was caused by reading install.sh as the list of supported hosts, its body records two more readers reaching the same wrong conclusion the same day, and today I read install.ps1:881 as live behaviour and filed #712 on it before checking control flow. Three readers in three days, once past the repository boundary. Deleting unreachable code cannot change what an install does, which removes the Windows machine from this step: the verification recorded on the issue assumed the blocks participate in wiring, and they cannot. Four guards were asserting against the deleted copies and now target the enumeration that runs. #689's coverage guard was the one that mattered: it compared install.sh's pairs to the CLI, and with the shell gone a list read out of the module under test would shrink with it. It now calls inspectAndApplyHosts with an empty PATH and home and requires every known host in notDetected -- a branch that returns without pushing is missing code, invisible to any text search. Limit: install.ps1 line coverage is unchanged -- what ran before still runs Ruled-out: keep the blocks until a Windows machine confirms wiring | they sit after an unconditional exit, so no run can distinguish their presence from their absence Blast: system Undo: easy Certainty: firm Record-Id: r-dead691 Provenance: authored Verified: dropping the windsurf row from the enumeration fails the rewritten guard with 'windsurf appears in neither hosts nor notDetected'; 142 cases pass across the seven installer suites; npx tsc --noEmit clean; sh -n install.sh; npm run build:canonical then artifact:verify -> de9222c7187eb818ab20cfea63fa3e918e56f7eca1dc9fff654cae4bf39c0daf (dist unchanged, no src in this change); test/init.test.ts fails 6 cases on clean main here and in this branch alike -- a local environment difference, not this change CommitLore-Version: 2.0.0
CommitLore — record lintTrailers: clean — 1 commit in Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR. |
This was referenced Aug 17, 2026
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 free
to 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.
Closes #691.
Why this is not the risky deletion the issue described
install.ps1:817-820delegates and exits:Unindented, unconditional, since
0d60c75(#624). Everything after it is unreachable.install.sh:1035delegates the same way and itswire_*functions are never called.This issue's step 2 was gated on a Windows machine because the verification was framed as an install with those blocks removed must leave a machine wired the same way — which assumed the blocks take part in wiring. They cannot. No run can distinguish their presence from their absence, so the gate does not apply to deleting them. What still needs Windows is whether the enumeration wires a real machine correctly, and that ships either way.
What it was costing
#689 happened because
install.shread as the list of supported hosts. This issue's body records two more readers reaching the same conclusion the same day. Today I readinstall.ps1:881as live behaviour and filed #712 on it, in response to an outside report, before checking control flow — three readers in three days, once past the repository boundary.Guards that were asserting against the dead copies
Four moved to the code that runs:
install.shpairs to the CLIinspectAndApplyHostsand requires every known host innotDetectedawk-extractedwire_claude_codefrominstall.shclaudeon PATHThe #689 rewrite is the one that mattered. With the shell gone, a host list read out of the module under test would shrink with it and report nothing — so the list is written down in the test and the check is behavioural. A branch that returns early without pushing is missing code: no text search can see it.
Negative control: removing the
windsurfrow from the enumeration fails the guard withwindsurf appears in neither hosts nor notDetected — it was dropped, not skipped.Verified
npx tsc --noEmitclean;sh -n install.shcleannpm run build:canonicalthenartifact:verify→de9222c7…, dist unchanged — nosrcin this changetest/init.test.tsfails 6 cases on cleanmainhere and on this branch alike; a local environment difference, not this change. CI is the authority and is green onmainScope of this closing. #691 held two claims: that deleting these blocks cannot change an install (static — this PR), and that
installer-hostswires a real Windows machine (never verified). Only the first is closed here. The second moved to #714 and remains open, and is sharper after this change: with the shell copy gone, the unverified path is the only path.