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
fix(ci): make the daemon release complete, and correct two false claims
Review found that the previous commit asserted two things that are not true,
and that this workflow could still publish a wrong or half-finished release.
**The kept image references are not public.** That commit justified keeping
`blox-sandbox` and `blox-browser` on the grounds that they "name public images
in this repository's own organization". They do not: an anonymous ghcr token
request is refused for both, while `openblox-sandbox` — the image this repo
actually builds and publishes — is granted. So the de-identification pass kept
two private references on a rationale that a one-command check refutes. The
sandbox examples now use the real public image; the browser example uses a
neutral placeholder, because no reference browser image is published.
**The release could still be partial.** Three ways, all now closed:
- `fail-fast` was left at its default, so a failing amd64 leg cancels arm64 and
the release ends up holding one architecture. That is the same
partially-published failure this workflow exists to end, only harder to notice
than shipping nothing at all.
- `gh release upload` needs the release object, which it does not create. A
hand-pushed tag has none, and on the normal path go-semantic-release creates
the tag ref and the release in separate calls — this job's trigger fires on
the first. The build usually outlasts that gap; "usually" is the wrong
property here. It now waits for the object and fails loudly if it never
appears, rather than creating one and racing the sibling leg.
- The verify step ran `--version` and threw the output away, so it proved the
flag exists and nothing about the stamp. If `-X main.version` ever stops
landing, the binary prints `dev` and the step still passes — publishing an
asset that claims to be someone's local build, which is exactly what the
`dev` default is for. It now asserts the value equals the tag.
Also: attach the systemd unit and example config, since the workflow header
claimed to ship a unit and did not; key the concurrency group on the tag rather
than the triggering ref, which had it backwards (dispatches for different tags
serialized, while a dispatch and a tag push for the same tag did not); document
the install in docs/security.md, which described deploying a daemon whose binary
had no stated source; and drop the comment in release.yml claiming there are no
binaries to ship, which the previous commit diagnosed as the cause of the
assetless release and then left in place.
`TestVersionDefaultsToDev` pins the invariant the `version` doc comment argues
for, so stamping in-tree fails a test instead of shipping.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments