Skip to content

A release that proves it installs - #6

Merged
O6lvl4 merged 2 commits into
mainfrom
develop
Sep 20, 2026
Merged

O6lvl4 merged 2 commits into
mainfrom
develop

Conversation

@O6lvl4

@O6lvl4 O6lvl4 commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

v0.5.0 published three assets and looked done. Installing it found three things the workflow could not have known, so the workflow no longer trusts itself.

What installing v0.5.0 found

Half the platforms were missing. Docker on Apple silicon asked the installer for porta-linux-aarch64.tar.gz and got a 404 — as would an Intel Mac, a Graviton instance or a Raspberry Pi. macos-13 and ubuntu-24.04-arm are in the matrix now, so all four are published.

The Linux binary was 552MB. Debug symbols are not something to ask somebody to download in order to run a command. Stripped it is 33MB. The strip happens after the integration suite has run, so what was tested and what ships differ only in symbols.

The verifier checked one half of enforcement. It asserted a write outside every mount was refused — which a binary that runs nothing at all also passes. It checks both halves now.

It also swallowed stderr, so porta correctly refusing a host with no Landlock, in an emulated amd64 container, read exactly like a broken build. That nearly had a working release pulled. The reason is printed now, and an unenforceable host exits 2 by hand but 1 under CI, where the runners are the platforms the release claims.

The pipeline

build   → four platforms; integration suite against the binary it made; strip
publish → as a prerelease, not as latest
verify  → on each of the four, install from the published release over the
          network with the script the README points at, and check it runs,
          refuses a write outside every mount, and writes inside one
promote  → only now is it the release people get

A release that cannot be shown to enforce on one of its own platforms never becomes the one the install instructions hand out.

Also

Bumped to 0.5.1. verify_release.sh is the same check by hand, for a host that is not a runner.

🤖 Generated with Claude Code

O6lvl4 and others added 2 commits September 20, 2026 23:36
v0.5.0 published three assets and I called it done. Installing it turned up
three things the workflow could not have known.

Half the platforms were missing. Docker on Apple silicon asked for
porta-linux-aarch64.tar.gz and got a 404 — as would an Intel Mac, a Graviton
instance or a Pi. macos-13 and ubuntu-24.04-arm are in the matrix now.

The Linux binary was 552MB. Debug symbols are not something to ask somebody to
download to run a command; stripped it is 33MB, and the strip happens after
the suite has run, so what was tested and what ships differ only in symbols.

And the verifier only checked that a write outside every mount was refused,
which a binary that runs nothing at all also passes. It checks both halves
now. It also swallowed stderr, so porta correctly refusing a host with no
Landlock — an emulated amd64 container — looked exactly like a broken build.
That one nearly had me pull a working release.

So the workflow no longer trusts itself: it publishes a prerelease, installs
it on every platform it claims, checks it enforces there, and only then marks
it latest.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Same porta, a release somebody can actually install: all four platforms
instead of two, stripped, and proved installable on each before it becomes
the one the install instructions point at.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@O6lvl4
O6lvl4 merged commit 8f2f8f1 into main Sep 20, 2026
4 checks passed
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