Skip to content

Releases: smprather/engineering-loadout

2026.10.6

Choose a tag to compare

@smprather smprather released this 08 Oct 20:35
2026.10.6

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @shared-all      # bundled tools
./loadout install @envs-all        # per-user shell configs

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest 80e929d5f0ef3f7377b041f881a511fcdbed77b078ac40b13fd9fa73acafa2fc
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 69b963cd888b5baa486f73ecab306d08b4fa6056e6b0b0f1e9e206b4e0891a4c
payload/packages.json e93bf77517484c05c386f136dfa874c1d0be77688d5bb4f5aee93b73824b6677
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30
sbom.cdx.json 399b79262d760de24057a4bee6ffd95a90e6e80b4c2b4e6ef053e10d73b375b1

SBOM

sbom.cdx.json (CycloneDX) inventories the shipped closure: every Python wheel
(syft) and every registry package. Its SHA-256 is
in the checksums table above, so the signed tag binds it like any other asset.

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v 2026.10.6                # verify the SSH-signed tag

2026.10.5

Choose a tag to compare

@smprather smprather released this 08 Oct 08:53
2026.10.5

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @shared-all      # bundled tools
./loadout install @envs-all        # per-user shell configs

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest e9283b3b088998f30b13b125c1801ec313ed9364bfbc2ed66799a2834d23ed7e
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 5a9c0f072bf28e32e8e8d0faef6358c42375f8a73ba3283bb60c71f2e9488cc1
payload/packages.json a0e8b24c82b2756bcf4a470450b56f80bbe4242c00aaa60dabe8153bdcc13e56
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30
sbom.cdx.json b55746952f49ed97aab73bd3b94f13bfa471d130d024e2c05faa74074c1f9a19

SBOM

sbom.cdx.json (CycloneDX) inventories the shipped closure: every Python wheel
(syft) and every registry package. Its SHA-256 is
in the checksums table above, so the signed tag binds it like any other asset.

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v 2026.10.5                # verify the SSH-signed tag

2026.10.4

Choose a tag to compare

@smprather smprather released this 08 Oct 04:31
2026.10.4

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @shared-all      # bundled tools
./loadout install @envs-all        # per-user shell configs

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest a5601d5d32a7e25b8a1b0719d9fe134e09b6afc10a4908bd788792aba65b4bcc
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 21de4a7b5facc36ad50bb55669e96eb1c78fc5d7abecdb76b652f4b21a5b7522
payload/packages.json 25cceb18bb4322e5f0450337a65268ce0bdcc711038d9964358be5e20f6ad134
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30
sbom.cdx.json e0d4ef7882f5d54cd24d5e2894a61d8524a676935feb8207e3456ef8e74ba152

SBOM

sbom.cdx.json (CycloneDX) inventories the shipped closure: every Python wheel
(syft) and every registry package. Its SHA-256 is
in the checksums table above, so the signed tag binds it like any other asset.

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v 2026.10.4                # verify the SSH-signed tag

2026.10.3

Choose a tag to compare

@smprather smprather released this 07 Oct 19:36
2026.10.3

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @shared-all      # bundled tools
./loadout install @envs-all        # per-user shell configs

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest fe8e55aeef66a381c15fc8abef605492170831bdce1edd91822b8f94d06f2cee
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 1b4a3c527f8f6a179ce20b8faec4b055014b9581ca10ca1feb61c265f63763b3
payload/packages.json 828a7aab124b686ddfc8a5569dcc7de7994415bdd9b5266e126cc10f608bbf98
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30
sbom.cdx.json e44011f718e781410326c89f8c7e85d520f0c3e4bcc99a61a3cd2d4c1c6b68d1

SBOM

sbom.cdx.json (CycloneDX) inventories the shipped closure: every Python wheel
(syft), the offline Rust crate store, and every registry package. Its SHA-256 is
in the checksums table above, so the signed tag binds it like any other asset.

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v 2026.10.3                # verify the SSH-signed tag

2026.10.2

Choose a tag to compare

@smprather smprather released this 07 Oct 06:19
2026.10.2

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @shared-all      # bundled tools
./loadout install @envs-all        # per-user shell configs

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest c07b752a1f2f6bf9cd73f3cfc7546be6bbf3fefabc91f0a08dacf0853859ede6
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 1b4a3c527f8f6a179ce20b8faec4b055014b9581ca10ca1feb61c265f63763b3
payload/packages.json 828a7aab124b686ddfc8a5569dcc7de7994415bdd9b5266e126cc10f608bbf98
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30
sbom.cdx.json cbdc7a6e131acb466e63b9fe44556b1e6de8f9c8fe23c01e7a392bc61b822d5e

SBOM

sbom.cdx.json (CycloneDX) inventories the shipped closure: every Python wheel
(syft), the offline Rust crate store, and every registry package. Its SHA-256 is
in the checksums table above, so the signed tag binds it like any other asset.

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v 2026.10.2                # verify the SSH-signed tag

2026.10.1

Choose a tag to compare

@smprather smprather released this 06 Oct 22:56
2026.10.1

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @shared-all      # bundled tools
./loadout install @envs-all        # per-user shell configs

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest 327316b51eb309a989648684d7b1f2a28ad5a6651dfb674f769a707f7f835582
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 1b4a3c527f8f6a179ce20b8faec4b055014b9581ca10ca1feb61c265f63763b3
payload/packages.json 96dd54e17c846f6fbe5696e55ca09a5659233adeb56f5623c12599e41380968a
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30
sbom.cdx.json 300bb12015f75ee649c2f8250e86c12fb32ba44790000e2b8e71ada1d07f2ee4

SBOM

sbom.cdx.json (CycloneDX) inventories the shipped closure: every Python wheel
(syft), the offline Rust crate store, and every registry package. Its SHA-256 is
in the checksums table above, so the signed tag binds it like any other asset.

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v 2026.10.1                # verify the SSH-signed tag

Pre-built binary versions

Tool Binary Version
surfer surfer 0.7.0

v2026.09.23

Choose a tag to compare

@smprather smprather released this 24 Sep 05:49
v2026.09.23

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @engineering-loadout

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest b62d2acc249bc6f187d63a4f4f6eb22c31a246e841770f5349b84724072cb0b8
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py d0cf3258d25ecb22e3a04d556aded71ee40845752a9e86aa4f2eea46e427b97a
payload/packages.json 94318d18adb5f6e907bbde9b2e8cf98eb188494afbb563518e0053652923ba8e
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v v2026.09.23                # verify the SSH-signed tag

Pre-built binary versions

Tool Binary Version
agent-deck agent-deck 1.11.0
amux amux 0.0.20
bash bash 5.3.15
bat bat 0.26.1
broot broot 1.58.0
yazi yazi 26.5.6
numr numr 0.8.0
bottom btm 0.14.7
btop btop 1.4.7
choose choose 1.3.7
cloc cloc 2.10
scc scc 3.7.0
tokei tokei 14.0.0
delta delta 0.19.2
duf duf 0.9.1
dasel dasel 3.11.2
dust dust 1.2.4
expect expect 5.45.4
eza eza 0.23.5
fd fd 10.4.2
fio fio 3.42
fzf fzf 0.74.2
gping gping 1.20.4
glow glow 2.1.2
keyb keyb 0.8.0
models models 0.14.0
htop htop 3.5.2
helix hx 25.07.1 (079a789e)
hyperfine hyperfine 1.20.0
jq jq 1.8.2
just just 1.58.0
lazygit lazygit 0.64.0
less less 704
gopls gopls 0.23.0
micro micro 2.0.15
lua-language-server lua-language-server 3.19.0
typescript-language-server typescript-language-server 6.0.0
yosys yosys 0.69
openroad openroad 26Q3
openvaf openvaf 23.5.0
markdown-oxide markdown-oxide 0.25.12
miller mlr 6.21.0
neovim nvim 0.12.5
patchelf patchelf 0.12
parity-plot parity-plot 0.7.0
spice-netlist-ls spicefmt 0.3.0
ripgrep rg 15.2.0
rsync rsync 3.4.4
ruff ruff 0.16.2
procs procs 0.14.12
pv pv 1.6.6
sd sd 1.0.0
shfmt shfmt 3.13.1
shellcheck shellcheck 0.11.0
sqlite sqlite3 3.53.4
starship starship 1.26.0
stylua stylua 2.5.2
taplo taplo 0.10.0
tclint tclint 0.9.0
tkdiff tkdiff 6.0
tealdeer tldr 1.8.1
tmux tmux 3.7b
tree-sitter tree-sitter 0.26.12
ty ty 0.0.72
valgrind valgrind 3.27.1
vim vim.bin 9.2.0901
gvim gvim.bin 9.2.0901
surfer surfer 0.7.0
xterm xterm 410
resize resize 410
gnuplot gnuplot 6.0.5
xsel xsel 1.2.1
yank yank 1.4.0
yq yq 4.53.3
zoxide zoxide 0.10.0
zsh zsh 5.9
fish fish 4.8.1
tclsh tclsh 9.0.3
tmux-path-store tmux-path-store 1.1.0
ncdu ncdu 2.9.2
verilator verilator 5.050
klayout klayout 0.30.10
jupyterlab jupyter-lab 4.6.1
ipython ipython 9.16.1
uv uv 0.12.3
Python python3.14 3.14.7
liberty-filter liberty-filter 1.0.1
liberty-tools liberty-format 1.0.1.dev0
liberty-tools liberty-view 1.0.1.dev0
pdftotext (poppler) pdftotext 26.04.0
p7zip 7za 16.02
bzip2 bzip2 1.0.8
pigz pigz 2.8
ngspice ngspice 46
gnu-coreutils ls 9.7
biome biome 2.5.7
fresh fresh 0.3.8
ninja ninja 1.13.2
nodejs node 26.7.0
yara yara 4.5.8
zellij zellij 0.44.3

v2026.09.18

Choose a tag to compare

@smprather smprather released this 19 Sep 03:04
v2026.09.18

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @engineering-loadout

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest 14c458f6d743414317e942de5696f0a3456e541cc5cdc93d71cd4149c91ad909
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 0bfd0dfa3c05e33c09ff028c69dfe308441af5c4a3988fd732a71dfbafb49ddb
payload/packages.json ece1312ae1427c3e863654f7515a63f60c102b0e14cc206ecfd4fe4372f9c726
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v v2026.09.18                # verify the SSH-signed tag

Pre-built binary versions

Tool Binary Version
agent-deck agent-deck 1.11.0
amux amux 0.0.20
bash bash 5.3.15
bat bat 0.26.1
broot broot 1.58.0
yazi yazi 26.5.6
numr numr 0.8.0
bottom btm 0.14.7
btop btop 1.4.7
choose choose 1.3.7
cloc cloc 2.10
scc scc 3.7.0
tokei tokei 14.0.0
delta delta 0.19.2
duf duf 0.9.1
dasel dasel 3.11.2
dust dust 1.2.4
expect expect 5.45.4
eza eza 0.23.5
fd fd 10.4.2
fio fio 3.42
fzf fzf 0.74.2
gping gping 1.20.4
glow glow 2.1.2
keyb keyb 0.8.0
models models 0.14.0
htop htop 3.5.2
helix hx 25.07.1 (079a789e)
hyperfine hyperfine 1.20.0
jq jq 1.8.2
just just 1.58.0
lazygit lazygit 0.64.0
less less 704
gopls gopls 0.23.0
micro micro 2.0.15
lua-language-server lua-language-server 3.19.0
typescript-language-server typescript-language-server 6.0.0
yosys yosys 0.68
openroad openroad 26Q3
openvaf openvaf 23.5.0
markdown-oxide markdown-oxide 0.25.12
miller mlr 6.21.0
neovim nvim 0.12.5
patchelf patchelf 0.12
parity-plot parity-plot 0.7.0
spice-netlist-ls spicefmt 0.3.0
ripgrep rg 15.2.0
rsync rsync 3.4.4
ruff ruff 0.16.2
procs procs 0.14.12
pv pv 1.6.6
sd sd 1.0.0
shfmt shfmt 3.13.1
shellcheck shellcheck 0.11.0
sqlite sqlite3 3.53.4
starship starship 1.26.0
stylua stylua 2.5.2
taplo taplo 0.10.0
tclint tclint 0.9.0
tkdiff tkdiff 6.0
tealdeer tldr 1.8.1
tmux tmux 3.7b
tree-sitter tree-sitter 0.26.12
ty ty 0.0.72
valgrind valgrind 3.27.1
vim vim.bin 9.2.0901
gvim gvim.bin 9.2.0901
surfer surfer 0.7.0
xterm xterm 410
resize resize 410
gnuplot gnuplot 6.0.5
xsel xsel 1.2.1
yank yank 1.4.0
yq yq 4.53.3
zoxide zoxide 0.10.0
zsh zsh 5.9
fish fish 4.8.1
tclsh tclsh 9.0.3
tmux-path-store tmux-path-store 1.1.0
ncdu ncdu 2.9.2
verilator verilator 5.050
klayout klayout 0.30.10
jupyterlab jupyter-lab 4.6.1
ipython ipython 9.16.1
uv uv 0.12.3
Python python3.14 3.14.7
liberty-filter liberty-filter 1.0.1
liberty-tools liberty-format 1.0.1.dev0
liberty-tools liberty-view 1.0.1.dev0
pdftotext (poppler) pdftotext 26.04.0
p7zip 7za 16.02
bzip2 bzip2 1.0.8
pigz pigz 2.8
ngspice ngspice 46
gnu-coreutils ls 9.7
biome biome 2.5.7
fresh fresh 0.3.8
ninja ninja 1.13.2
nodejs node 26.7.0
yara yara 4.5.8
zellij zellij 0.44.3

v2026.09.14

Choose a tag to compare

@smprather smprather released this 14 Sep 21:18
v2026.09.14

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @engineering-loadout

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest 9733a52001448b0aa68d3a794cc3f37e281610884b368f008fedf91cc2fc4e8a
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py 0bfd0dfa3c05e33c09ff028c69dfe308441af5c4a3988fd732a71dfbafb49ddb
payload/packages.json 27c8f98d687f0cdc95177130813bf32d2194cf21a47befdd86176e991469ac7b
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v v2026.09.14                # verify the SSH-signed tag

Pre-built binary versions

Tool Binary Version
agent-deck agent-deck 1.11.0
amux amux 0.0.20
bash bash 5.3.15
bat bat 0.26.1
broot broot 1.58.0
yazi yazi 26.5.6
numr numr 0.8.0
bottom btm 0.14.7
btop btop 1.4.7
choose choose 1.3.7
cloc cloc 2.10
scc scc 3.7.0
tokei tokei 14.0.0
delta delta 0.19.2
duf duf 0.9.1
dasel dasel 3.11.2
dust dust 1.2.4
expect expect 5.45.4
eza eza 0.23.5
fd fd 10.4.2
fio fio 3.42
fzf fzf 0.74.2
gping gping 1.20.4
glow glow 2.1.2
keyb keyb 0.8.0
models models 0.14.0
htop htop 3.5.2
helix hx 25.07.1 (079a789e)
hyperfine hyperfine 1.20.0
jq jq 1.8.2
just just 1.58.0
lazygit lazygit 0.64.0
less less 704
gopls gopls 0.23.0
micro micro 2.0.15
lua-language-server lua-language-server 3.19.0
typescript-language-server typescript-language-server 6.0.0
iverilog iverilog 13.0
yosys yosys 0.68
openroad openroad 26Q3
openvaf openvaf 23.5.0
markdown-oxide markdown-oxide 0.25.12
miller mlr 6.21.0
neovim nvim 0.12.5
patchelf patchelf 0.12
parity-plot parity-plot 0.7.0
spice-netlist-ls spicefmt 0.3.0
ripgrep rg 15.2.0
rsync rsync 3.4.4
ruff ruff 0.16.2
procs procs 0.14.12
pv pv 1.6.6
sd sd 1.0.0
shfmt shfmt 3.13.1
shellcheck shellcheck 0.11.0
sqlite sqlite3 3.53.4
starship starship 1.26.0
stylua stylua 2.5.2
taplo taplo 0.10.0
tclint tclint 0.9.0
tkdiff tkdiff 6.0
tealdeer tldr 1.8.1
tmux tmux 3.7b
tree-sitter tree-sitter 0.26.12
ty ty 0.0.72
valgrind valgrind 3.27.1
vim vim.bin 9.2.0901
gvim gvim.bin 9.2.0901
surfer surfer 0.7.0
xterm xterm 410
resize resize 410
gnuplot gnuplot 6.0.5
xsel xsel 1.2.1
yank yank 1.4.0
yq yq 4.53.3
zoxide zoxide 0.10.0
zsh zsh 5.9
fish fish 4.8.1
tclsh tclsh 9.0.3
tmux-path-store tmux-path-store 1.1.0
ncdu ncdu 2.9.2
verilator verilator 5.050
klayout klayout 0.30.10
jupyterlab jupyter-lab 4.6.1
ipython ipython 9.16.1
uv uv 0.12.3
Python python3.14 3.14.7
liberty-filter liberty-filter 1.0.1
liberty-tools liberty-format 1.0.1.dev0
liberty-tools liberty-view 1.0.1.dev0
pdftotext (poppler) pdftotext 26.04.0
p7zip 7za 16.02
bzip2 bzip2 1.0.8
pigz pigz 2.8
ngspice ngspice 46
gnu-coreutils ls 9.7
biome biome 2.5.7
fresh fresh 0.3.8
ninja ninja 1.13.2
nodejs node 26.7.0
yara yara 4.5.8
zellij zellij 0.44.3

v2026.09.09.1

Choose a tag to compare

@smprather smprather released this 10 Sep 00:52
v2026.09.09.1

All pre-built binaries passed smoke test.

Installing (and the nvim-plugin-stash.tar.bz2 asset)

The Neovim plugin stash ships as a separate release asset, not inside the
source tarball -- it is ~328 MB of bz2'd git packfiles, so committing it would
grow every clone permanently. Download it alongside the tarball and pair them:

tar xzf engineering-loadout-*.tar.gz
cd engineering-loadout-*/

# online: fetches + verifies the stash from this release
./tools/fetch-stash

# air-gapped: stash + sha256sums.txt downloaded elsewhere and copied over
./tools/fetch-stash --from-file /path/to/nvim-plugin-stash.tar.bz2 \
              --sums     /path/to/sha256sums.txt

./loadout install @engineering-loadout

Run fetch-stash from inside the extracted directory; it places the stash at
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 and records it in .content-manifest.fetched.

--sums is required with --from-file: without the sha256sums.txt from this
same release there is nothing to verify against, and a stash that fails its hash is
deleted rather than left on disk. Do not copy the asset into place by hand --
.content-manifest is a strict allowlist and the installer refuses any payload file
with no manifest entry, so a hand-placed stash is rejected, not silently trusted.

Without the stash, Neovim still installs and starts; the plugin step is skipped with
a warning naming fetch-stash.

Asset checksums (SHA-256)

Integrity-critical files pinned by this release. .content-manifest in turn pins every payload file, so verifying it (or running ./loadout doctor --verify) covers the whole tree.

File SHA-256
.content-manifest d35f50f60f29a529b0355430621bc4845aa3228cd9cbe82eca2edb541c6a5bc6
loadout c72bdcc7863d7e73da499d4bcdb61c4f4fa6f8e4edbaab6472e48c6fde9c15f4
loadout_main.py e639ec037599d8515831ea910111173dff6f49a5be588a1ffecc430606b50786
payload/packages.json 37a41dcdd40066c48eb996ed40057a32c62f164ac1a302d1bca5348bcc1c3d3e
envs/nvim/vendor/plugins/nvim-plugin-stash.tar.bz2 28a5ad38ccd430d09e15e47ff2de09945f6f1b68111f93f706e8b9e4e4bc0e30

Verifying this release

# from a checkout of the tag (or an extracted source archive):
sha256sum -c sha256sums.txt     # pins the integrity-critical files above
./loadout doctor --verify       # re-hashes every payload file vs .content-manifest
git tag -v v2026.09.09.1                # verify the SSH-signed tag

Pre-built binary versions

Tool Binary Version
agent-deck agent-deck 1.11.0
amux amux 0.0.20
bash bash 5.3.15
bat bat 0.26.1
broot broot 1.58.0
yazi yazi 26.5.6
numr numr 0.8.0
bottom btm 0.14.7
btop btop 1.4.7
choose choose 1.3.7
cloc cloc 2.10
scc scc 3.7.0
tokei tokei 14.0.0
delta delta 0.19.2
duf duf 0.9.1
dasel dasel 3.11.2
dust dust 1.2.4
expect expect 5.45.4
eza eza 0.23.5
fd fd 10.4.2
fio fio 3.42
fzf fzf 0.74.2
gping gping 1.20.4
glow glow 2.1.2
keyb keyb 0.8.0
models models 0.14.0
htop htop 3.5.2
helix hx 25.07.1 (079a789e)
hyperfine hyperfine 1.20.0
jq jq 1.8.2
just just 1.58.0
lazygit lazygit 0.64.0
less less 704
gopls gopls 0.23.0
micro micro 2.0.15
lua-language-server lua-language-server 3.19.0
typescript-language-server typescript-language-server 6.0.0
iverilog iverilog 13.0
yosys yosys 0.68
openroad openroad 26Q3
openvaf openvaf 23.5.0
markdown-oxide markdown-oxide 0.25.12
miller mlr 6.21.0
neovim nvim 0.12.5
patchelf patchelf 0.12
parity-plot parity-plot 0.7.0
spice-netlist-ls spicefmt 0.3.0
ripgrep rg 15.2.0
rsync rsync 3.4.4
ruff ruff 0.16.2
procs procs 0.14.12
pv pv 1.6.6
sd sd 1.0.0
shfmt shfmt 3.13.1
shellcheck shellcheck 0.11.0
sqlite sqlite3 3.53.4
starship starship 1.26.0
stylua stylua 2.5.2
taplo taplo 0.10.0
tclint tclint 0.9.0
tkdiff tkdiff 6.0
tealdeer tldr 1.8.1
tmux tmux 3.7b
tree-sitter tree-sitter 0.26.12
ty ty 0.0.72
valgrind valgrind 3.27.1
vim vim.bin 9.2.0901
gvim gvim.bin 9.2.0901
surfer surfer 0.7.0
xterm xterm 410
resize resize 410
gnuplot gnuplot 6.0.5
xsel xsel 1.2.1
yank yank 1.4.0
yq yq 4.53.3
zoxide zoxide 0.10.0
zsh zsh 5.9
fish fish 4.8.1
tclsh tclsh 9.0.3
tmux-path-store tmux-path-store 1.1.0
ncdu ncdu 2.9.2
verilator verilator 5.050
klayout klayout 0.30.10
jupyterlab jupyter-lab 4.6.1
ipython ipython 9.16.1
uv uv 0.12.3
Python python3.14 3.14.7
liberty-filter liberty-filter 1.0.1
liberty-tools liberty-format 1.0.1.dev0
liberty-tools liberty-view 1.0.1.dev0
pdftotext (poppler) pdftotext 26.04.0
p7zip 7za 16.02
bzip2 bzip2 1.0.8
pigz pigz 2.8
ngspice ngspice 46
gnu-coreutils ls 9.7
biome biome 2.5.7
fresh fresh 0.3.8
ninja ninja 1.13.2
nodejs node 26.7.0
yara yara 4.5.8
zellij zellij 0.44.3