Publish install.sh as a release asset, so an installer can be pinned to a release instead of tracking master #261
Labels
No labels
code-review
correctness
dos
performance
security
severity/high
severity/low
severity/medium
tech-debt
Kind/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
h-dv/code-index#261
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What ships now
install.sh(v0.28.0) is the install and update mechanism. Thedocumented one-liner fetches it from the default branch:
That is correct as far as it goes — the script asks the release API for
the latest tag, so it installs a released version, not master's
build. But the script itself is whatever master says at the moment you
curl it.
What is missing
There is no way to pin the installer. An operator who wants a
reproducible provisioning step — a Dockerfile, an image build, a
locked-down runner — has to either vendor the script or accept that the
URL's contents move.
Publishing
install.shas a release asset beside the archives fixesthat:
Why it was not done in v0.28.0
Deliberately, and the reason is worth recording rather than repeating:
adding a new required asset to
release.ymlin the same change thatships the mechanism means the first release to carry it is also the
first release that can fail on it. The required-asset audit is strict by
design (it refuses to publish a set it could not count), so a wiring
mistake costs a whole release cycle. The raw-URL path delivers the
capability today; pinning is an addition, not a fix.
Shape of the work
install.shalongside the archives in the release job.not type it. The audit already enumerates packages from
tests/packages/*/plugin.toml; the installer is a single known file,so the honest form is a presence check with a reason string, not a
list entry that can be forgotten.
branch URL documented as the "always latest" form. Both, labelled —
they answer different questions.
The trap to avoid
The installer's platform table is graded against
release.yml'smatrices by
crates/cli/tests/installer_targets.rs. If a copy ofinstall.shis generated or rewritten during the release, that gate isgrading the repository's copy while operators run the published one.
Publish the file verbatim, or the gate becomes vacuous — which is the
precision_gate-shaped hazard: a check correctly implemented over adomain that cannot contain the failure.
Related
de.h-dv.rubyomission, which is why the required-asset auditderives its population instead of listing it.
code-index-plugin-hostcannot say which build it is — three of four shipped binaries answer--version, the fourth exits 21 with usage #262Released in v0.28.1, build
340a75a, via #264 and #265. Release CI passed, including the Windows archive round-trip smoke test. The release now contains install.sh and its SHA-256 sidecar. Downloaded bytes match the installer at the exact tag, the checksum passes, and that published script successfully installed v0.28.1 into an isolated prefix and passed --check. Installed executables match the downloaded archive bytes. The documented pin covers both the installer URL and --tag. Closing after testing the public assets.buildagent referenced this issue2026-09-11 20:25:15 +02:00