release-agent.sh: the publish leg was unrunnable on its first real use
gates / gates (push) Successful in 7s

R-115's whole point is that publishing cannot be forgotten because it rides the
release script. On the first real release through it (v0.121.0, R-86) it died at
exactly that leg:

  scripts/release-agent.sh: line 101: .../scripts/publish-agent.sh: Permission denied

publish-agent.sh has been mode 0644 since it was created on 2026-06-28 — every
earlier caller ran it as `bash scripts/publish-agent.sh`, so nothing ever noticed,
and release-agent.sh (written the same day it was needed) called it directly.

Two fixes, both small and both wanted: restore the executable bit, and invoke it
through `bash` so the release no longer depends on a file mode — the kind of
thing a checkout, an archive or a copy loses again.

The v0.121.0 tag created by the failed run is withdrawn and recreated on this
commit; nothing was published under it (verified 404 on the package endpoint), so
one version name still means one binary.
This commit is contained in:
2026-08-03 15:04:52 +02:00
parent 4618169036
commit 4d82591052
2 changed files with 7 additions and 1 deletions
+7 -1
View File
@@ -98,7 +98,13 @@ git push origin "$TAG" || die "tag push failed — refusing to publish an untagg
# ── 5. Publish (the existing script; deliberately not reimplemented) ────────────────────────────
log "publishing …"
"$REPO_ROOT/scripts/publish-agent.sh" "$VERSION" "$BIN" || die "publish failed"
# Invoked through `bash` DELIBERATELY, not as an executable. On 2026-08-03 the first real release
# through this script died here — `publish-agent.sh` has been mode 0644 since it was created on
# 2026-06-28, because every earlier caller ran it as `bash scripts/publish-agent.sh`. So the one leg
# R-115 exists to make unforgettable was, on its first use, unrunnable. The mode bit is restored in
# the same commit; this line makes the release independent of it, because a file mode is exactly the
# kind of thing that is lost again by a checkout, an archive, or a copy.
bash "$REPO_ROOT/scripts/publish-agent.sh" "$VERSION" "$BIN" || die "publish failed"
# ── 6. Verify by an INDEPENDENT download ────────────────────────────────────────────────────────
# The publish step's own success is not proof: it reports on its own write. What matters is that a