Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v0.5.0published 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.gzand got a 404 — as would an Intel Mac, a Graviton instance or a Raspberry Pi.macos-13andubuntu-24.04-armare 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
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.shis the same check by hand, for a host that is not a runner.🤖 Generated with Claude Code