ci: date the nightly release, so a downstream can pin one - #70
Merged
Conversation
The nightly exists so downstreams can track SifterSearch without waiting for a formal release -- wikven is the one named in the comment. It published to a single rolling "nightly" tag, deleted and recreated at main's tip each night, which is the one shape that downstream cannot use. wikven pins SifterSearch by release tag in its Dockerfile, and says of the pin beside it: "Commits, not the branch tip: a branch pin builds a different Translate from the same wikven commit a week later." It now also asserts in CI that two bakes of the same source are byte-identical. A tag whose contents change nightly is a branch pin wearing a tag's clothes, so the nightly could not be pinned by the project it was built for; only a formal release could. Dated tags fix that: nightly-<date> names one build forever, a downstream can pin it and stay reproducible, and updatecli has something to bump. Nothing references the rolling tag -- not this repository, not wikven -- so it goes rather than staying on as an alias whose whole behaviour is the problem. Two smaller faults go with it, both from publishing before the assets exist: - delete-then-recreate leaves a window where the tag resolves to nothing and a downstream fetch 404s; - the release was created published, then packaged, so it was visible with no tarballs on it for the length of a five-platform build. Creating the release as a draft, attaching every platform, then un-drafting closes both, and is what GitHub's immutable releases require in any case: assets lock the moment a release is published, and only a draft can still be written to. This is wikven's own nightly, structure and reasoning alike. The feat/fix gate comes with it, so a day of chores or CI-only commits does not mint a release identical to yesterday's. --- _Generated by [Claude Code](https://claude.ai/code/session_01NiyBN88bnGhcXVUXkpD7Mc)_ Co-authored-by: Claude <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.
The problem
The nightly says what it is for:
It then published to a single rolling
nightlytag, deleted and recreated at main's tip each night — which is the one shape that downstream cannot use.wikven pins SifterSearch by release tag in its
Dockerfile, and says of the pin sitting directly beneath it:It also now asserts in CI that two bakes of the same source are byte-identical. A tag whose contents change nightly is a branch pin wearing a tag's clothes, so the nightly could not be pinned by the very project it was built for — only a formal release could, which is what the nightly was meant to spare them.
The change
nightly-<date>names one build forever. A downstream can pin it, stay reproducible, and updatecli has something to bump.Nothing references the rolling tag — not this repository, not wikven — so it goes rather than staying on as an alias whose whole behaviour is the problem.
Two smaller faults went with the old shape, both from publishing before the assets existed:
Creating the release as a draft, attaching every platform, then un-drafting closes both — and is what GitHub's immutable releases require in any case, since assets lock the moment a release is published and only a draft can still be written to.
A
feat/fixgate comes with it, so a day of chores or CI-only commits does not mint a release identical to yesterday's.This is wikven's own
nightly.yml, structure and reasoning alike; the two repositories were solving the same problem two different ways, and only one of them had written down why.What a downstream does with it
wikven's
Dockerfiletakes a tag directly, so tracking a nightly needs no change there:ARG SIFTERSEARCH_VERSION=nightly-2026-08-18and reproducibility survives, because that tag will hold the same tarballs next month.
Notes
package.yamlis untouched apart from its header comment, and still receives a tag and uploads the same assets to it.nightlyrelease and tag are left in place by this PR; they can be deleted whenever you like, since nothing consumes them.nightly-*tag, and the current tag isnightlywith no dash, so the first run after this merges is unconditional — which is what you want for the first dated build.main, no overlap.Generated by Claude Code