Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
200 commits
Select commit Hold shift + click to select a range
fb10a16
Forward-only develop + dual-target Dependabot/codegen + workflow clea…
ptr727 May 12, 2026
9059936
Auto-merge-disable safeguard, repo-wide SHA pins, AGENTS.md tighten, …
ptr727 May 12, 2026
d72c5fc
Fix pre-release badges and develop ruleset auto-merge stall (#85)
ptr727 May 13, 2026
0c1b8f0
Update codegen files
ptr727-codegen[bot] May 18, 2026
fab7702
Update codegen files (#87)
ptr727-codegen[bot] May 18, 2026
a85fe6c
Migrate App-token to client-id and drop inert codegen PR base filter …
ptr727 May 25, 2026
1ba1399
Update codegen files
ptr727-codegen[bot] May 25, 2026
0729212
Update codegen files (#94)
ptr727-codegen[bot] May 25, 2026
1d99e74
Update codegen files
ptr727-codegen[bot] Jun 1, 2026
2820829
Update codegen files (#96)
ptr727-codegen[bot] Jun 1, 2026
c086945
Update codegen files
ptr727-codegen[bot] Jun 3, 2026
359bfab
Update codegen files (#104)
ptr727 Jun 4, 2026
7671bea
Adopt two-phase CI/CD with PR smoke builds and opt-in publish (#99)
ptr727 Jun 4, 2026
810cd4b
Update codegen files
ptr727-codegen[bot] Jun 4, 2026
321c9f7
Update codegen files (#105)
ptr727-codegen[bot] Jun 4, 2026
572bed9
Decouple release assembly, back-port CI/CD fixes, refresh codegen (#110)
ptr727 Jun 5, 2026
10c83d1
Update codegen files
ptr727-codegen[bot] Jun 5, 2026
f8ab3a7
Update codegen files (#112)
ptr727-codegen[bot] Jun 5, 2026
e9d8d8a
Standardize ASCII and line endings repo-wide; refresh codegen (#115)
ptr727 Jun 5, 2026
55c2049
Update codegen files
ptr727-codegen[bot] Jun 6, 2026
134a665
Update codegen files (#118)
ptr727-codegen[bot] Jun 6, 2026
26971a5
Update codegen files
ptr727-codegen[bot] Jun 7, 2026
1783d72
Update codegen files (#121)
ptr727-codegen[bot] Jun 7, 2026
0c78066
Update codegen files
ptr727-codegen[bot] Jun 8, 2026
61281a9
Update codegen files (#122)
ptr727-codegen[bot] Jun 8, 2026
8e8a586
Propagate template contract to derived repos and roll up codegen (#125)
ptr727 Jun 8, 2026
0b43a61
Document ruleset full-payload PUT and markdownlint --fix adoption (#127)
ptr727 Jun 8, 2026
cf87030
Document the develop-leads versioning model (#132)
ptr727 Jun 8, 2026
f6b7672
Update codegen files
ptr727-codegen[bot] Jun 9, 2026
26a0550
Update codegen files (#134)
ptr727-codegen[bot] Jun 9, 2026
8f778ca
Update codegen files
ptr727-codegen[bot] Jun 10, 2026
868b9b2
Update codegen files (#135)
ptr727-codegen[bot] Jun 10, 2026
554ab91
Update codegen files
ptr727-codegen[bot] Jun 11, 2026
f453672
Update codegen files (#137)
ptr727-codegen[bot] Jun 11, 2026
4f440fc
Update codegen files
ptr727-codegen[bot] Jun 12, 2026
79a118e
Update codegen files (#139)
ptr727-codegen[bot] Jun 12, 2026
458f167
Update codegen files
ptr727-codegen[bot] Jun 14, 2026
0b1395c
Update codegen files (#141)
ptr727-codegen[bot] Jun 14, 2026
6aa3bb5
Update codegen files
ptr727-codegen[bot] Jun 15, 2026
7219cb1
Update codegen files (#144)
ptr727-codegen[bot] Jun 15, 2026
8dca8d3
Update codegen files
ptr727-codegen[bot] Jun 16, 2026
e2c317e
Update codegen files (#145)
ptr727-codegen[bot] Jun 16, 2026
c4b0d19
Update codegen files
ptr727-codegen[bot] Jun 17, 2026
9d044ce
Update codegen files (#148)
ptr727-codegen[bot] Jun 17, 2026
9bdd146
Update codegen files
ptr727-codegen[bot] Jun 18, 2026
1c10878
Update codegen files (#150)
ptr727-codegen[bot] Jun 18, 2026
6f07979
Update codegen files
ptr727-codegen[bot] Jun 19, 2026
3fdbe36
Update codegen files (#152)
ptr727-codegen[bot] Jun 19, 2026
a5b5819
Update codegen files
ptr727-codegen[bot] Jun 20, 2026
6e21bc1
Update codegen files (#153)
ptr727-codegen[bot] Jun 20, 2026
b18ede0
Update codegen files
ptr727-codegen[bot] Jun 21, 2026
fadfa97
Update codegen files (#165)
ptr727-codegen[bot] Jun 21, 2026
8363822
Update codegen files
ptr727-codegen[bot] Jun 22, 2026
a95efbb
Update codegen files (#177)
ptr727-codegen[bot] Jun 22, 2026
737b6ce
Promote develop to main: CODESTYLE consolidation, Copilot runbook, CI…
ptr727 Jun 22, 2026
023f96f
Guard release publish against non-default-ref dispatch mis-versioning…
ptr727 Jun 23, 2026
5c09edd
Update codegen files
ptr727-codegen[bot] Jun 23, 2026
6f540f5
Update codegen files (#187)
ptr727-codegen[bot] Jun 23, 2026
b49fd84
Release: promote develop to main (#191)
ptr727 Jun 23, 2026
8a701a9
Release: promote develop to main (#195)
ptr727 Jun 23, 2026
21e7c0a
Release: promote develop to main (#200)
ptr727 Jun 23, 2026
50144aa
Release: promote develop to main (#202)
ptr727 Jun 24, 2026
39e2484
Release: promote develop to main (#225)
ptr727 Jul 4, 2026
a0f44a4
Repurpose ProjectTemplate into a governance and workflow-audit catalo…
ptr727 Jul 5, 2026
8b9bd14
Promote develop to main (#252)
ptr727 Jul 7, 2026
fec2a8a
Promote develop to main (#260)
ptr727 Jul 8, 2026
5d3d73b
Promote develop to main: merge-bot every-tier policy + repo-settings/…
ptr727 Jul 9, 2026
a1b14a4
Promote develop to main: agent-comms + supported-platforms + C# test/…
ptr727 Jul 9, 2026
a6da575
Promote develop to main: per-surface lint architecture, mandatory REA…
ptr727 Jul 12, 2026
00f0664
Promote develop to main: --pull=always on local lint tasks + cspell o…
ptr727 Jul 12, 2026
8eb4588
Promote develop to main: publish-plan snippet, release-model docs, wo…
ptr727 Jul 12, 2026
5ec9a87
Promote develop to main: operational workflow model for live-config r…
ptr727 Jul 13, 2026
88c9550
Promote develop to main: repo-wide bot-node-id cold-start fallback (#…
ptr727 Jul 14, 2026
ba58f64
Promote: CODESTYLE cspell-externalization fix (#298)
ptr727 Jul 14, 2026
72bf201
Promote: AGENTS git-governance / author-identity rule (#300)
ptr727 Jul 14, 2026
8f8d65b
Promote: scope CI spell-check to README + HISTORY (#302, #303) (#304)
ptr727 Jul 15, 2026
cf752b7
Promote develop to main: source-only Python template adaptation (#306…
ptr727 Jul 16, 2026
10ff417
Promote develop to main: onboarding governance (STANDUP/self-test) + …
ptr727 Jul 16, 2026
1b88d2b
Promote develop to main: reusable validate-task gates the publisher (…
ptr727 Jul 16, 2026
787a682
Promote develop to main: post-sync fixes + the live fleet-audit runne…
ptr727 Jul 16, 2026
e9f7c96
Promote develop to main: fidelity verification system, agent write-sa…
ptr727 Jul 22, 2026
add00db
Promote develop to main: fidelity tooling, manifest hardening, diverg…
ptr727 Jul 22, 2026
59c8f81
Promote develop to main: configure.sh check mode + history-rewrite si…
ptr727 Jul 22, 2026
029f358
Promote develop to main: per-section fidelity, issue generator, edito…
ptr727 Jul 23, 2026
9421198
Promote develop to main: adoption-feedback batch, hygiene checks, can…
ptr727 Jul 23, 2026
ee77474
Promote develop to main: PhotoCleaner + finmod convergence fleet-law …
ptr727 Jul 23, 2026
b41354b
Promote develop to main: PhotoCleaner registry + #414 release-pipelin…
ptr727 Jul 23, 2026
bd2dcd6
Promote develop to main: comment layout + AGENTS section-fidelity mod…
ptr727 Jul 24, 2026
e83288e
Promote develop to main: genericize verbatim sections + canonical des…
ptr727 Jul 24, 2026
2a178f0
Promote governance doc updates to main (#425, #426, #427) (#428)
ptr727 Jul 25, 2026
4ae5717
Promote audit + release-task fixes and backlog items to main (#430-#4…
ptr727 Jul 25, 2026
6e8039b
Promote the lint-only language type work to main (#437-#440) (#441)
ptr727 Jul 25, 2026
137ab3e
Promote merge-gate, CODESTYLE, and backlog updates to main (#443-#445…
ptr727 Jul 25, 2026
ea2dd1f
Promote the config-repo convergence hub fixes to main (#447) (#448)
ptr727 Jul 25, 2026
059d749
Promote the agent git-bypass guard and Copilot poll-backoff to main (…
ptr727 Jul 26, 2026
8b7397f
Promote the safety-kit README update to main (#452) (#453)
ptr727 Jul 26, 2026
80a3c68
Promote the AGENTS.md router split and the scripts/ gate harness to m…
ptr727 Jul 30, 2026
ef9a816
Promote the tiered charset rule and the comment gate to main (#460)
ptr727 Jul 31, 2026
585f62a
Promote the promotion-loop mechanics to main (#469)
ptr727 Jul 31, 2026
0a498a6
Promote the multi-line string carry and the router-split items to mai…
ptr727 Jul 31, 2026
52bcd7a
Promote the prose sweeps and the suppressed-findings digest to main (…
ptr727 Jul 31, 2026
1d5b076
Promote the onboarding and host-setup fixes to main (#486)
ptr727 Aug 1, 2026
cea1804
Promote the agent-enablement framing and the write-guard owner scope …
ptr727 Aug 1, 2026
6501479
Promote the prose-gate fixes and the configure.sh sweep to main (#502)
ptr727 Aug 1, 2026
048a442
Refresh the PhotoCleaner audit report and driftNotes (#508)
ptr727 Aug 1, 2026
38d79e1
Promote the OPERATIONS.md requirement, the merge-bot declaration, and…
ptr727 Aug 1, 2026
275edbf
Promote the wait failure clause, the five review outcomes, and the pi…
ptr727 Aug 3, 2026
a9cd154
Promote develop to main: the representative-data rule (#533)
ptr727 Aug 3, 2026
3a7cc64
Promote develop to main: fleet bootstrap, gate honesty, and the re-ve…
ptr727 Aug 3, 2026
7194f91
Promote develop to main: the bypass list leaves the fleet config (#548)
ptr727 Aug 3, 2026
3b802b9
Promote develop to main: repair the fleet-wide false ruleset DEFECT (…
ptr727 Aug 3, 2026
1b4a80e
Promote develop to main: the suppressed-findings fix and audit gates …
ptr727 Aug 6, 2026
c37ec73
Promote develop to main: the review-digest repository argument and th…
ptr727 Aug 6, 2026
ba9f9cc
Promote develop to main: hub-hosted tooling, the Copilot refusal read…
ptr727 Aug 6, 2026
d4092dd
Promote develop to main: the prose backlog cleared, and a review loop…
ptr727 Aug 8, 2026
f353630
Bump the actions-deps group with 4 updates
dependabot[bot] Aug 8, 2026
d81e3dd
Bump the actions-deps group with 4 updates (#611)
ptr727-codegen[bot] Aug 8, 2026
9de93c9
Promote develop to main: the standup branch bootstrap and the partial…
ptr727 Aug 8, 2026
b00de37
Promote develop to main: the blocked-merge reading and the open pull …
ptr727 Aug 8, 2026
74e2193
Promote develop to main: the prose gate now blocks on every default r…
ptr727 Aug 8, 2026
2fb1411
Promote the File Table Reading to Main (#626)
ptr727 Aug 8, 2026
c40cd0a
Promote Three Rule and Runbook Corrections to Main (#630)
ptr727 Aug 8, 2026
b4b8f2e
Promote the README Rework, the Tool-Row Repair, and the Line-Ending G…
ptr727 Aug 9, 2026
0a86bca
Promote the Tagline Close, the Ledger Refresh, and the Pre-Commit Doc…
ptr727 Aug 9, 2026
69e638f
Promote the Sync Entrypoint, Deletion Detector, and Host Contract (#655)
ptr727 Aug 10, 2026
d9b5ffa
Promote the Carried Reference to the Hub-Hosted Script (#658)
ptr727 Aug 10, 2026
b624195
Promote the Sweep Correction and the Carried-Text Record (#661)
ptr727 Aug 11, 2026
1927e9a
Promote the Release History Correction (#663)
ptr727 Aug 11, 2026
01a6e9a
Promote the Scan-Scope Fixes, the Host Stamp, and the Bootstrap Tooli…
ptr727 Aug 11, 2026
0e84805
Promote the Fleet Skills, the Windows and Docker Host Setup, and the …
ptr727 Aug 15, 2026
b09078e
Promote the Fleet Resync Reports, the copilot-instructions Fixes, and…
ptr727 Aug 15, 2026
79f4f17
Promote the Workflow Manifest Declarations and the Carried-Wording Fi…
ptr727 Aug 15, 2026
20616e0
Promote develop to main After the Hub-Hosted Merge-Bot and the PhotoC…
ptr727 Aug 15, 2026
82fecef
Promote develop to main With the Hub-Hosted Workflow Tasks and the LF…
ptr727 Aug 16, 2026
9849fba
Bump astral-sh/setup-uv from 8.1.0 to 10.0.0 in the actions-deps group
dependabot[bot] Aug 16, 2026
5b8e39b
Bump astral-sh/setup-uv from 8.1.0 to 10.0.0 in the actions-deps grou…
ptr727-codegen[bot] Aug 16, 2026
0b07a59
Promote develop to main With the Release Task Scope Fix (#774)
ptr727 Aug 16, 2026
5d0fa7f
Promote develop to main With the Pilot Follow-Ups and the Get-Version…
ptr727 Aug 17, 2026
7d50118
Promote Develop to Main With the Token Efficiency Plan (#787)
ptr727 Aug 17, 2026
df79b09
Bump astral-sh/setup-uv from 10.0.0 to 10.0.1 in the actions-deps group
dependabot[bot] Aug 17, 2026
6516416
Bump astral-sh/setup-uv from 10.0.0 to 10.0.1 in the actions-deps gro…
ptr727-codegen[bot] Aug 17, 2026
b5f3c28
Promote Develop to Main (#794)
ptr727 Aug 17, 2026
f97ee8f
Promote Develop to Main (#796)
ptr727 Aug 17, 2026
2d360ef
Bump streetsidesoftware/cspell-action in the actions-deps group
dependabot[bot] Aug 18, 2026
a2a2740
Bump streetsidesoftware/cspell-action from 8.4.0 to 9.0.1 in the acti…
ptr727-codegen[bot] Aug 18, 2026
ce9b9a5
Promote Develop to Main (#811)
ptr727 Aug 18, 2026
b74811b
Promote Develop to Main (#816)
ptr727 Aug 18, 2026
3377f51
Promote Develop to Main (#818)
ptr727 Aug 18, 2026
4596659
Promote Develop to Main (#820)
ptr727 Aug 18, 2026
537b183
Promote .NET Publish Naming Contract (#822)
ptr727 Aug 18, 2026
a17bfb8
Promote the Validation Bootstrap Pin (#828)
ptr727 Aug 19, 2026
e2c4ec4
Promote Carried Documentation Link Validation (#831)
ptr727 Aug 19, 2026
74ef727
Promote Source-Only Release Contract (#835)
ptr727 Aug 19, 2026
2ab4e2a
Promote Develop to Main (#841)
ptr727 Aug 19, 2026
241bfd0
Promote Develop to Main (#846)
ptr727 Aug 19, 2026
eca5b1f
Promote Copilot Skill Link Fix (#854)
ptr727 Aug 19, 2026
dd520cc
Promote develop to main (#857)
ptr727 Aug 19, 2026
389f5b9
Promote Develop to Main (#860)
ptr727 Aug 20, 2026
563ce83
Promote Develop to Main (#864)
ptr727 Aug 20, 2026
105fe34
Bump docker/setup-buildx-action in the actions-deps group
dependabot[bot] Aug 20, 2026
6c00bbd
Bump docker/setup-buildx-action from 4.2.0 to 4.3.0 in the actions-de…
ptr727-codegen[bot] Aug 20, 2026
c62eb09
Promote Develop to Main (#867)
ptr727 Aug 20, 2026
6e79398
Promote Develop to Main (#874)
ptr727 Aug 20, 2026
1bbc004
Handle Copilot Review Effort Levels (#877)
ptr727 Aug 20, 2026
964128a
Promote Docker Lint Authorization to main (#880)
ptr727 Aug 20, 2026
41073d2
Promote Develop to Main (#882)
ptr727 Aug 20, 2026
b05decc
Promote Develop to Main (#884)
ptr727 Aug 21, 2026
0d0e511
Promote Develop to Main (#891)
ptr727 Aug 21, 2026
5e1aef5
Promote Develop to Main (#897)
ptr727 Aug 21, 2026
e0c5562
Promote Develop to Main (#899)
ptr727 Aug 21, 2026
f3bfdb4
Promote Develop to Main (#901)
ptr727 Aug 22, 2026
f066c4f
Promote Develop to Main (#907)
ptr727 Aug 22, 2026
2e0b130
Promote Develop to Main (#910)
ptr727 Aug 22, 2026
d5605f5
Promote Develop to Main (#914)
ptr727 Aug 22, 2026
37aa042
Promote Develop to Main (#921)
ptr727 Aug 22, 2026
7383114
Promote Develop to Main (#936)
ptr727 Aug 23, 2026
30b9322
Promote Develop to Main (#945)
ptr727 Aug 23, 2026
3927fec
Promote Develop to Main (#952)
ptr727 Aug 23, 2026
cd7bae9
Promote Develop to Main (#959)
ptr727 Aug 23, 2026
be4d3bf
Promote Develop to Main (#963)
ptr727 Aug 24, 2026
e193ac6
Promote Develop to Main (#970)
ptr727 Aug 24, 2026
b675aec
Promote Develop to Main (#975)
ptr727 Aug 24, 2026
a49767e
Promote Develop to Main (#978)
ptr727 Aug 25, 2026
fa63163
Promote Develop to Main (#982)
ptr727 Aug 25, 2026
7b21025
Promote Develop to Main (#991)
ptr727 Aug 25, 2026
df489f3
Promote Develop to Main (#996)
ptr727 Aug 25, 2026
eec53ea
Promote Develop to Main (#1002)
ptr727 Aug 25, 2026
495d69e
Promote Develop to Main (#1004)
ptr727 Aug 25, 2026
702bb7e
Promote Develop to Main (#1008)
ptr727 Aug 25, 2026
5ab8d22
Promote develop to main (#1013)
ptr727 Aug 25, 2026
a33d7d7
Promote develop to main (#1016)
ptr727 Aug 26, 2026
b8d4b27
Promote Develop to Main (#1027)
ptr727 Aug 26, 2026
50552df
Promote Develop to Main (#1031)
ptr727 Aug 26, 2026
4bcd61b
Promote develop to main (#1034)
ptr727 Aug 27, 2026
0590228
Promote develop to main (#1037)
ptr727 Aug 27, 2026
bef314e
Promote develop to main (#1039)
ptr727 Aug 27, 2026
f9e97c0
Add a Human-Facing Menu Script Fronting Host and Repo Tooling
ptr727 Aug 27, 2026
d6c5902
Fix Review Findings: Menu Loop, Dry-Run, Ownership, and Ref Handling
ptr727 Aug 27, 2026
ef7a296
Fix Dry-Run Cache Mutation and Hub-Freshness Findings from CodeRabbit
ptr727 Aug 27, 2026
2804c15
Keep the Hub-Freshness Check Itself Out of Dry-Run
ptr727 Aug 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion host-setup/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ What a machine needs before it can be worked in, and the tooling that puts it th

- [`bootstrap.sh`][bootstrap] stands a Debian or Ubuntu host up from nothing. It is the one file fetched on its own, because a host with no git and no checkout is what it exists to fix. It fetches this repository and runs the tooling from that tree.
- [`bootstrap.ps1`][bootstrap-ps1] does the same for native Windows. It runs under Windows PowerShell 5.1, the version every fresh Windows host guarantees, and hands off to PowerShell 7 once it has found or installed it, since every script it drives requires that version.
- [`menu.sh`][menu] is a human-facing front end over this repository's tooling: the host actions above, plus the repo-level tools ([`spec/audit.py`][audit-runner], [`scripts/carry.py`][carry], [`scripts/build_dist.py`][build-dist]) most of this repository authors for an agent following instructions rather than for a person choosing from a menu. It has no Windows counterpart yet.
- [`linux/`][linux] holds the tooling itself, for Debian and Ubuntu based hosts, Proxmox and WSL included. `install-tools.sh` installs and upgrades the host tools, `upgrade-host.sh` upgrades the packages of the current release or moves to the next one, `setup-github.sh` configures the SSH key, git, and commit signing, and `install-skills.sh` drives the hub's skills installer from the same tree.
- [`windows/`][windows] holds the tooling for native Windows, through `winget` and PowerShell 7. `install-tools.ps1` installs and upgrades the host tools, `upgrade-host.ps1` upgrades the winget packages and updates the WSL platform, `setup-github.ps1` configures the SSH key, git, and commit signing, `setup-wsl.ps1` installs a WSL distribution and reports the Docker Desktop integration, and `install-skills.ps1` drives the hub's skills installer from the same tree.
- [`agent-safety/`][agent-safety] holds the write-safety guards, deployed per machine and per account.
Expand Down Expand Up @@ -67,6 +68,20 @@ host-setup\windows\setup-github.ps1 -Status
host-setup\windows\setup-wsl.ps1 -Status
```

## The Human Menu

`menu.sh` is fetchable on its own too, the same three-line shape as `bootstrap.sh`, and it also runs directly from a checkout that already has one:

```shell
curl -fsSLo menu.sh https://raw.githubusercontent.com/ptr727/ProjectTemplate/main/host-setup/menu.sh
bash menu.sh
host-setup/menu.sh # from a checkout of this repository, or of any other repo in the fleet
```

It answers a different question than `bootstrap.sh` does. `bootstrap.sh` stands a host up and stops. `menu.sh` loops, because a person sitting down with it usually wants more than one thing done in a sitting, and it tells the hub apart from whichever repo it happens to be run from: a checkout of `ptr727/ProjectTemplate` gets the hub tasks (audit a cataloged repo, check the generated Skills distributions), a checkout of any other repo gets the downstream tasks (check or pull the hub's verbatim-owned files into that repo's own worktree, per [`scripts/carry.py`][carry]), and both get the host tasks this directory's `linux/` tooling already provides. Run from neither, only the host tasks show, since there is no repository to audit or pull files into.

Reaching `spec/audit.py` and `scripts/carry.py` from outside a hub checkout means fetching one, the same "hosted and reached, never carried" model [`scripts/README.md`][scripts-readme] states for those tools generally. `menu.sh` clones fresh rather than reusing `bootstrap.sh`'s tarball, since `scripts/carry.py` itself checks that its hub argument is a real git checkout on a freshly fetched `origin/main` with no local changes, and a full clone rather than a shallow one, since `spec/audit.py` walks the hub's own commit history to judge whether a carried copy is trailing the file it was copied from. Run from inside the hub itself, that same freshness is confirmed against the local checkout before a hub task uses it, falling back to a fresh clone when the local checkout has moved on, so an audit or a Skills-distribution check never silently reads a stale or feature-branch tree.

## Which Revision a Run Used

`bootstrap.sh` resolves the ref it was given to the commit it names, prints that commit, and downloads that exact revision. A run therefore says which revision of the tooling it used, and a second run of the same ref cannot silently be a different tree. Where the resolve fails, which an unauthenticated rate limit can cause, the run says it cannot attribute itself and continues, since the download itself is unaffected.
Expand All @@ -77,18 +92,23 @@ host-setup\windows\setup-wsl.ps1 -Status

**Group by whichever axis has one member.** `agent-safety/` is one concern across three platforms, so it is a concern directory holding `install.sh`, `install.ps1` and `install.py`. `linux/` is three concerns on one platform, so it is a platform directory. Windows host tooling therefore sits at `windows/` rather than beside the Linux scripts, because the `winget` equivalent of `install-tools.sh` is a different program rather than a translation of one. It carries one registry record per tool where the Linux script carries four functions, since every Windows source is `winget` and the per-tool variation those functions exist for does not arise. `windows/` also carries a fourth script with no Linux peer, because WSL is a Windows-side concern. The loader is the same shape as `agent-safety/`, not as `linux/`/`windows/`: one concern, two platforms, so `bootstrap.ps1` sits beside `bootstrap.sh` at the top level rather than inside `windows/`.

**Nothing here needs Python to stand a host up, and neither loader needs an interpreter to fetch what it drives.** [`docs/host-setup.md`][host-setup] carries that as part of the contract, with the reasoning. `bootstrap.sh` needs only `curl` and `tar`. `bootstrap.ps1` needs only `tar.exe`, which has shipped with Windows since 1803, and installs its one further dependency, `pwsh`, itself through `winget`. The one exception is the `install-skills` pair, which drives the Python installer at `scripts/skills_install.py` and runs last in a stand-up for exactly that reason: `install-tools` has provided the interpreter by then, and run alone on a host without one it stops and names the tools step as its prerequisite. Neither loader runs a gate as a closing step: [`scripts/host_gate.py`][host-gate] measures a host against the floors and is not called from here, and nothing here is called from it. A host set up by hand years ago is an ordinary host, so the gate reports what it is missing and running this tooling is a remedy a person chooses. The two are joined at code time instead, by [`scripts/tests/test_bootstrap.py`][test-bootstrap] asserting that every tool the spec requires is one this tooling can provide.
**Nothing here needs Python to stand a host up, and neither loader needs an interpreter to fetch what it drives.** [`docs/host-setup.md`][host-setup] carries that as part of the contract, with the reasoning. `bootstrap.sh` needs only `curl` and `tar`. `bootstrap.ps1` needs only `tar.exe`, which has shipped with Windows since 1803, and installs its one further dependency, `pwsh`, itself through `winget`. The one exception is the `install-skills` pair, which drives the Python installer at `scripts/skills_install.py` and runs last in a stand-up for exactly that reason: `install-tools` has provided the interpreter by then, and run alone on a host without one it stops and names the tools step as its prerequisite. `menu.sh` needs `git` to fetch the hub, and it checks for `python3` the same lazy way: only the tasks that call a Python tool ask for it, and every host task still works without one. Neither loader runs a gate as a closing step: [`scripts/host_gate.py`][host-gate] measures a host against the floors and is not called from here, and nothing here is called from it. A host set up by hand years ago is an ordinary host, so the gate reports what it is missing and running this tooling is a remedy a person chooses. The two are joined at code time instead, by [`scripts/tests/test_bootstrap.py`][test-bootstrap] asserting that every tool the spec requires is one this tooling can provide.

**The scripts under `linux/` and `windows/` share no file, and the duplication is deliberate.** Each is independently fetchable and runnable on its own, which is the property that lets a host with no checkout use one without the others. A shared helper file would take that away: the moment one script sources a sibling, fetching it alone yields a script that dies on a missing file. What is duplicated is about thirty lines each of logging, the dry-run wrapper, the confirmation prompt, and a temporary directory, and those copies are identical rather than merely similar. Do not factor them out. `bootstrap.ps1` now exercises the same fetchability argument `bootstrap.sh` always has, rather than merely being written to allow for it. The `install-skills` pair is the one recorded exception to independent fetchability: it drives `scripts/skills_install.py` at the tree root, because the skills content lives in the tree, so a copy fetched alone has nothing to install and the property cannot apply to it.

<!-- Repo -->

[agent-safety]: ./agent-safety/
[audit]: ../AUDIT.md
[audit-runner]: ../spec/audit.py
[bootstrap]: ./bootstrap.sh
[bootstrap-ps1]: ./bootstrap.ps1
[build-dist]: ../scripts/build_dist.py
[carry]: ../scripts/carry.py
[host-gate]: ../scripts/host_gate.py
[host-setup]: ../docs/host-setup.md
[linux]: ./linux/
[menu]: ./menu.sh
[scripts-readme]: ../scripts/README.md
[test-bootstrap]: ../scripts/tests/test_bootstrap.py
[windows]: ./windows/
Loading