Skip to content

fix(dist): make dist packs every product, and star ships with its extensions - #914

Merged
David-Noble-at-work merged 4 commits into
developfrom
fix/903-dist-packs-every-product
Sep 22, 2026
Merged

David-Noble-at-work merged 4 commits into
developfrom
fix/903-dist-packs-every-product

Conversation

@David-Noble-at-work

@David-Noble-at-work David-Noble-at-work commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Lane 7 of NobleFactor/noblefactor-ops#217. Every release archive held writ and lore and nothing else, so star
could not be installed on a machine without a checkout.

  • make dist packs every product. dist-all builds each product in $(PRODUCTS), not a hand-written pair, and
    packs star/extensions at share/star/extensions, the layout .goreleaser.yaml describes. star needs those files:
    //go:embed doesn't cover the com.noblefactor.devlore.* commands. Only tracked files are packed.
  • The archive check. After each archive is written, its file list must equal the products plus the tracked
    extensions, or the build fails and names what's missing and what's extra.
  • The installers take the product list from the archive, and each product installs itself. Both installers ran
    <tool> self-install, a command no product has: it exits 64 with unknown command, and the failure was swallowed as
    a warning. They now run self install <prefix> from a staged pkg/bin, so star finds the archive's share/ and
    copies its extensions. A failed install is fatal.
  • XDG on Windows. install.ps1 defaults to ~/.local on every platform, where star's loader already looks.

make dist stays the release path. goreleaser adoption, and the owner's build-once-into-a-drop model, are recorded on
#453.

Test plan

  • make dist-all PLATFORM=linux/arm64: the archive holds exactly lore, star, writ and 23 extension files,
    and the check passes
  • With star dropped from the tar line, the check fails with missing: star
  • self install from a staged pkg/bin and pkg/share of the windows-arm64 builds installs all three products
    and star's 23 extension files into a scratch prefix
  • vet, lint, complexity, verify-ldflags and test pass locally; install.ps1 gains no PSScriptAnalyzer
    finding; install.sh passes bash -n
  • CI, including shell-lint, on this PR
  • After merge: the next release lists star in every archive, including the Windows zips, and install.ps1
    installs it on DANOBLE-WD11-3

Plan: docs/plans/fix/903-dist-packs-every-product.md

Resolves #903

Time

Marker UTC Elapsed
opened (first commit) 2026-09-22T11:08:09Z —
submitted (PR opened) 2026-09-22T12:09:49Z 1 h after opened
merged 2026-09-22T12:22:13Z 0.2 h after submitted; 1.2 h in all

Computed by the algorithm of noblefactor-ops#188 at merge.

…ensions (#903)

dist-all builds each product in $(PRODUCTS) instead of a hand-written writ and lore pair, and packs star/extensions at
share/star/extensions, the layout .goreleaser.yaml describes. Only tracked files are packed. After each archive is
written, its file list is checked against the products and the tracked extensions, and any difference fails the build.
#903)

Every file at the archive root is a product. Each one installs itself with `self install <prefix>`; the old
`self-install` never existed, and its failure was swallowed as a warning. star finds the archive's share/ at
<exeDir>/../share and copies its extensions. install.ps1 defaults to ~/.local on every platform, following XDG on
Windows too, and a failed self install is fatal in both installers.
@David-Noble-at-work
David-Noble-at-work merged commit 463f978 into develop Sep 22, 2026
13 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the fix/903-dist-packs-every-product branch September 22, 2026 12:22
David-Noble-at-work added a commit that referenced this pull request Sep 25, 2026
…n Windows PowerShell 5.1 (#951)

* feat(install): plan for #948, install.ps1 is published and runs on Windows PowerShell 5.1

Claude-Session: https://claude.ai/code/session_01DuNfZFyfxBoD9pdaiDEMrY

* feat(install): install.ps1 is published beside install.sh, and runs on Windows PowerShell 5.1

release.yaml's sync step copied install.sh to the site and nothing else, so install.ps1's own
usage line -- irm https://devlore.noblefactor.com/install.ps1 | iex -- was a 404. It syncs both
scripts now, and the release summary shows the Windows one-liner beside the Unix one.

install.ps1 was written for PowerShell 7, which a fresh Windows machine does not have. Ruled
2026-09-24 (#798, ruling 3 reversed): the installer uses what is on the box, Windows PowerShell
5.1, and installs nothing but lore, star and writ. So: #Requires -Version 5.1; Get-OSName reads
PSEdition before the $Is* automatic variables, which 5.1 lacks and strict mode would refuse;
-UseBasicParsing on every web call, since 5.1's default engages the Internet Explorer parser;
TLS 1.2 forced before the first request. The body is otherwise #914's.

Verified under pwsh 7 on linux/arm64 against a scratch prefix with a real pre-release. The run
under 5.1 on a Windows machine is the owner's, and the plan says so.

Resolves #948

Claude-Session: https://claude.ai/code/session_01DuNfZFyfxBoD9pdaiDEMrY
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.

make dist ships writ and lore and drops star

1 participant