Skip to content

Clean room: name the in-box C# toolchain in ENVIRONMENT.md - #421

Merged
allens merged 2 commits into
mainfrom
cleanroom/name-toolchain
Oct 16, 2026
Merged

allens merged 2 commits into
mainfrom
cleanroom/name-toolchain

Conversation

@allens

@allens allens commented Oct 16, 2026

Copy link
Copy Markdown
Owner

The Windows restore brief told the session to use "the most modern version of the language installed on this machine". ADR-0096 says the opposite: C# on the .NET Framework that ships with Windows, nothing installed. The first Windows restore experiment (2026-10-16, Sonnet 5.5, medium) followed the brief: it searched the machine for a compiler, settled on Visual Studio's Roslyn csc and the .NET 10 runtime, and one of its searches, Get-ChildItem $env:USERPROFILE\.dotnet, was a look into the home folder that voided the run.

Three changes, all on the Windows restore build:

  • The brief's sentence now names the in-box framework (cleanroom.mjs).
  • The build finds the framework's csc.exe and Windows PowerShell at build time and names them in a Toolchain section of ENVIRONMENT.md (csharpToolchain), telling the session to use those and not to look for another. Found at build time rather than named in prose, where a version would rot; a Windows with no .NET Framework 4 fails the build. On this machine it names C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\csc.exe (C# 5) and powershell.exe for Add-Type.
  • The README's Windows paragraph, which said "install it before the run", and ADR-0096's Windows bullet are rewritten in place to match.

Checked by writing a restore clean room with fake credentials and reading its ENVIRONMENT.md and brief; no build or run.

🤖 Generated with Claude Code

The Windows restore brief said "the most modern version of the language
installed on this machine". ADR-0096 says the opposite: C# on the .NET
Framework that ships with Windows, nothing installed. The first Windows
restore experiment (2026-10-16) followed the brief, searched the machine
for a compiler, and settled on Visual Studio's Roslyn and the .NET 10
runtime; one look into the home folder for a per-user .NET voided the
run.

The brief now says the in-box framework, and the build finds its csc.exe
and Windows PowerShell at build time and names them in a Toolchain
section of ENVIRONMENT.md, telling the session to use those and not to
look for another. Found at build time rather than named in prose, where
a version would rot. README and ADR-0096 say the same, in place.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@allens-claude-reviewer allens-claude-reviewer Bot 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.

Code review (Opus, high): 7 findings. The first three compare.py findings were confirmed by running it on Windows (Python 3.14.5): each prints IDENTICAL and exits 0.

scripts/cleanroom/build-restore-cleanroom.mjs:179 — The build's handover still says to install a toolchain: "install the toolchain: nothing comes as standard on Windows", the claim this PR reverses in the brief, README and ADR. An operator following it installs the .NET SDK or Visual Studio while the brief the same build just wrote tells the session to use the in-box framework and nothing newer. The README's twin of this sentence was removed; this one was not.

scripts/cleanroom/README.md:162 — This section still says the brief "names no version and no toolchain", leaving the session to find "the most modern version that comes as standard". On Windows the brief now names the .NET Framework and ENVIRONMENT.md names a csc.exe path, so line 162 and the Windows paragraph at line 239 contradict each other within one file. The module comment at cleanroom.mjs:28-31 says the same thing.

scripts/cleanroom/cleanroom.mjs:424 — The ground rule still says ENVIRONMENT.md says only "where the bucket is", while the brief three paragraphs earlier sends the session there for the compiler path. The two instructions about the same file disagree.

Comment thread scripts/cleanroom/cleanroom.mjs Outdated
Comment thread scripts/cleanroom/cleanroom.mjs
Comment thread scripts/cleanroom/cleanroom.mjs Outdated
Comment thread scripts/cleanroom/cleanroom.mjs Outdated
… otherwise

Review of #421: the compiler is one existsSync on
Framework64\v4.0.30319\csc.exe, a folder unchanged since 2010 in a
product line that has ended, so nothing to discover; a missing one
prints and exits 2 like the module's other refusals. The restore
build's handover no longer tells the operator to install a toolchain,
and the README and module comment no longer say the brief names none.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@allens

allens commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner Author

On the three findings in the review body, all fixed in 820ac66:

  • build-restore-cleanroom.mjs:179 (the handover still says to install a toolchain): the item is gone; handover now prints its "Still to do" list only when there is one (cleanroom.mjs). The build itself refuses when the compiler is missing, so there is nothing left to tell the operator.
  • README.md:162 (the brief "names no version and no toolchain"): now "names no version … Windows is the exception, below", in the README and the module comment both.
  • cleanroom.mjs:424 (the ground rule says ENVIRONMENT.md says only where the bucket is): on Windows it now says "where the bucket and the compiler are".

@allens
allens merged commit f89bdf8 into main Oct 16, 2026
12 checks passed
@allens
allens deleted the cleanroom/name-toolchain branch October 16, 2026 19:13
Sign up for free to 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.

1 participant