You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
install.sh and install.ps1 install lore, star and writ, and take the base, team and personal layers without requiring them #798
Epic:#453 — release, distribution, and self-install.
Setting up the Windows test machine on 2026-09-04 took a hand-copied binary, self install, three writ repo
lines and a trip back for the clone names. The installers should make a new machine one command.
What install.sh and install.ps1 do today
Download a release archive from GitHub (GH_TOKEN, DEVLORE_VERSION, --prefix), copy writ and lore
into <prefix>/bin, and print what to run next. DEVLORE_TOOLS knows all, writ and lore; star is not
installed at all, though it is one of the four programs and now ships the base layer's extensions. Nothing
configures a layer. install.ps1 declares no PowerShell version and runs under whatever launched it.
Ruled 2026-09-04
Both installers install lore, star and writ, by fetching the archive and running each program's own self install, which is the one installer the suite has: binary, man pages, completions for the shells
present, default config, star's extensions. The scripts fetch and delegate; they do not re-implement.
The three layers are accepted or prompted, never required.--base, --team, --personal (each a
working-tree path or a repository URL, the writ repo grammar) register the layer when given. With a
terminal and a layer not given, the installer asks once, with an empty answer meaning skip; without a
terminal it skips silently and says what it skipped. This is §10 of the CLI design applied to the
installer: interactive only when a TTY is present, one question at a time, unattended runs on what was
given.
PowerShell: Core. The body is #Requires -Version 7, one code path, cross-platform. The one thing
Windows PowerShell 5.1 must be able to run is a preamble that installs pwsh (winget install Microsoft.PowerShell) and re-launches the script under it, because 5.1 is what a fresh Windows machine
has and pwsh is not. Nothing else targets 5.1.
Acceptance
one command on a fresh macOS, Linux or Windows machine installs lore, star and writ through their self install
--base/--team/--personal register layers; a TTY prompts once each for the ones not given, empty skips; no TTY skips and says so
install.ps1 runs under pwsh; launched from 5.1 it installs pwsh and re-launches itself
the release archive carries star alongside lore and writ, if it does not already
the README's install section shows the one command and the three flags
Found setting up DANOBLE-WD11-3. Its own worktree.
Ruling 3 reversed, 2026-09-24. The installer does not install PowerShell 7 and does not require it. In the owner's words: "I'm not sure we want to install powershell, if it's absent. … I think we install and wait for the shell provider rewrite. That rewrite will make powershell much more of an optional thing. If you want to pick a shell you can, including powershell. I think we use what we know is present on the box: Windows PowerShell 5.1."
So install.ps1 runs on Windows PowerShell 5.1 and PowerShell 7 alike, one code path, and installs nothing but lore, star and writ. Rulings 1 and 2 stand. Executed as lane 1 of #949, plan in #948.
Ruling 2's prompting half is reversed (2026-09-26). The installers never ask. In the owner's words: "let's go with docker and claude's approach. verbatim. the shell script never prompts. anything interactives belongs to the downloaded binary."
Ruling 2 had the installer ask, on a terminal, for each layer not given. That is replaced:
--base, --team and --personal (-Base, -Team and -Personal in install.ps1), or DEVLORE_BASE, DEVLORE_TEAM and DEVLORE_PERSONAL, register a layer with <prefix>/bin/writ repo set <layer> <loc>, base first.
A layer not given is skipped. The summary's last lines name each skipped layer with the writ repo set command that registers it. The run is the same with or without a terminal.
Precedent read that day: Docker's get.docker.com, Tailscale's install.sh and Claude Code's install.sh ask nothing; interaction is left to the binary they install.
The same day's companion rulings on failure: a failed self install or writ repo set ends the script with that command's own error ("the errors are the errors. period. if they fail they fail"). There is no rollback, because every operation is idempotent: running the same command again is the recovery.
Carried out by #950, lane 11 of #949. Its plan is docs/plans/feature/950-installers-take-base-team-and.md.
Activity
David-Noble-at-work commentedon Sep 24, 2026
Ruling 3 reversed, 2026-09-24. The installer does not install PowerShell 7 and does not require it. In the owner's words: "I'm not sure we want to install powershell, if it's absent. … I think we install and wait for the shell provider rewrite. That rewrite will make powershell much more of an optional thing. If you want to pick a shell you can, including powershell. I think we use what we know is present on the box: Windows PowerShell 5.1."
So
install.ps1runs on Windows PowerShell 5.1 and PowerShell 7 alike, one code path, and installs nothing but lore, star and writ. Rulings 1 and 2 stand. Executed as lane 1 of #949, plan in #948.feat(install): install.ps1 is published beside install.sh, and runs o…
David-Noble-at-work commentedon Sep 27, 2026
Ruling 2's prompting half is reversed (2026-09-26). The installers never ask. In the owner's words: "let's go with docker and claude's approach. verbatim. the shell script never prompts. anything interactives belongs to the downloaded binary."
Ruling 2 had the installer ask, on a terminal, for each layer not given. That is replaced:
--base,--teamand--personal(-Base,-Teamand-Personalininstall.ps1), orDEVLORE_BASE,DEVLORE_TEAMandDEVLORE_PERSONAL, register a layer with<prefix>/bin/writ repo set <layer> <loc>, base first.writ repo setcommand that registers it. The run is the same with or without a terminal.get.docker.com, Tailscale'sinstall.shand Claude Code'sinstall.shask nothing; interaction is left to the binary they install.The same day's companion rulings on failure: a failed
self installorwrit repo setends the script with that command's own error ("the errors are the errors. period. if they fail they fail"). There is no rollback, because every operation is idempotent: running the same command again is the recovery.Carried out by #950, lane 11 of #949. Its plan is
docs/plans/feature/950-installers-take-base-team-and.md.