SpaceWorks 0.8.2 — permanent release history - #18
Merged
Merged
Conversation
The release workflow retained only the current and immediately previous release, deleting every older release AND its Git tag on each run. That is why the Releases page never showed history. A release row and a tag cost nothing, while the history is the only record of what a given deployment was told to install, so both are now permanent. Container versions stay pruned -- images consume real registry storage and the digest-based retention rules are unchanged. The step is renamed to keep the two concerns apart. `previous_version` is still computed from the first listed tag that is not the current one, because `ghcr-retention.py` needs it to keep the previous version's images for the installer's rollback path. Verified the loop resolves the same value it did before, with older releases untouched. Co-Authored-By: Shaan-Shoukath <shaanshoukath4522@gmail.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Bumps VERSION and SPECTACULAR_SETTINGS together as
tests/test_version_consistency.py requires, and regenerates both frontend
artifacts; only the version string changed in each, so there is no route drift.
0.8.1.1 was requested but is not usable: the semver guard in
test_version_consistency.py rejects it, release.yml exits 1 on a non
MAJOR.MINOR.PATCH VERSION before building anything, and `series="${base%.*}"`
would derive "0.8.1" and collide with a real base-version string in the
container tag scheme. 0.8.2 is the patch bump that ships the same change.
Co-Authored-By: Shaan-Shoukath <shaanshoukath4522@gmail.com>
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.
Releases 0.8.2, whose one substantive change is that GitHub Release history is now permanent.
The fix
release.ymlkept only the current and immediately previous release, deleting every older release and its Git tag on every run. That is why the Releases page never showed any history.Neither is deleted any more, and
docs/INVARIANTS.mdrecords the decision so it does not get "restored" later.Container versions are still pruned — deliberately kept as a separate concern:
manifest unknownoutage, and are unchanged.The loop still computes
previous_version, becauseghcr-retention.pyneeds it to keep the previous version's images for the installer's rollback-to-previous-release path. So deleting releases would eventually have stranded that rollback, not merely lost history. Verified by simulation thatprevious_versionresolves the same value as before while older releases survive.The step is renamed to "Prune superseded container versions (release history is kept forever)" to keep the two concerns apart.
Version
0.8.1.1was requested but is unusable, in three independent places:test_version_consistency.py:50—re.fullmatch(r"\d+\.\d+\.\d+", ...)fails.release.yml:38—exit 1on a nonMAJOR.MINOR.PATCHVERSION, before building anything, so no release would publish.series="${base%.*}"would derive0.8.1, colliding with a real base-version string in the container tag scheme.0.8.2 ships the same change with no pipeline surgery.
VERSIONandSPECTACULAR_SETTINGSare bumped together as the guard requires, and both frontend artifacts are regenerated — only the version string changed in each, so there is no route drift.Also included
6bba83d1, a no-content merge absorbing the PR #17 merge commit sodevandmainshare history. Verified to change zero file content.Verification
netlify.toml/ workflow YAMLbash -nclean;previous_versionresolution simulatedtsccleanNote that CI here runs only
pip-audit; the suite evidence is from local runs (Docker round-trips 1517/0, host 5960 passed with 17 environment-only failures that pass in Docker).🤖 Generated with Claude Code