feat(installer): read bundles from the branch they are published to #15

Open
wtclaude wants to merge 1 commits from feat/bundle-branch-url into edge
Member

What & why

The crate half of installer#13. main is protected, so the unattended compose job cannot push a bundle there — the pre-receive hook declines it, which is not something a nightly cron can resolve. Bundles now publish to a bundles branch, at its root, so BUNDLE_BASE follows them:

https://gitea.whitlocktech.com/RunicGateway/installer/raw/branch/bundles/current.json
https://gitea.whitlocktech.com/RunicGateway/installer/raw/branch/bundles/bundle-<tag>.json

Everything the original choice was for survives the move: a reviewable diff, a git history of the compat matrix, and a plain anonymous URL needing no credentials on the shard host.

The test's bundle becomes a frozen fixture (tests/fixtures/published-bundle.json) rather than an include_str! of the published file, which this checkout no longer carries. Frozen is the honest shape anyway — a test that silently re-targeted whatever CI published last would change meaning without a commit. It is still a real CI-emitted document, copied verbatim.

bundles/*.json is dropped here too, matching installer#13, so the eventual edge → main cutover has nothing to reconcile. bundles/README.md stays on both.

How it was tested

cargo fmt --check, cargo clippy --all-targets -- -D warnings, and the suite: 129 + 9 green.

The new URL was checked by hand — the bundles branch is live and anonymously readable, currently serving bundle 2026.08.04 (seeded from main so --bundle 2026.08.04 keeps resolving). Once installer#13 merges, a compose run replaces current.json there with 2026.08.05.

Nothing is released from edge, so no shipped binary ever read the old URL — there is no window to manage.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally.
  • I have added or updated tests/docs where it makes sense.
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Opus 5). I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a Co-Authored-By trailer.

License

  • I agree that my contribution is licensed under this project's license (GNU GPL v3.0 or later), and I have the right to contribute it.
## What & why The crate half of installer#13. `main` is protected, so the unattended compose job cannot push a bundle there — the pre-receive hook declines it, which is not something a nightly cron can resolve. Bundles now publish to a **`bundles` branch**, at its root, so `BUNDLE_BASE` follows them: ``` https://gitea.whitlocktech.com/RunicGateway/installer/raw/branch/bundles/current.json https://gitea.whitlocktech.com/RunicGateway/installer/raw/branch/bundles/bundle-<tag>.json ``` Everything the original choice was for survives the move: a reviewable diff, a git history of the compat matrix, and a plain anonymous URL needing no credentials on the shard host. **The test's bundle becomes a frozen fixture** (`tests/fixtures/published-bundle.json`) rather than an `include_str!` of the published file, which this checkout no longer carries. Frozen is the honest shape anyway — a test that silently re-targeted whatever CI published last would change meaning without a commit. It is still a real CI-emitted document, copied verbatim. `bundles/*.json` is dropped here too, matching installer#13, so the eventual `edge → main` cutover has nothing to reconcile. `bundles/README.md` stays on both. ## How it was tested `cargo fmt --check`, `cargo clippy --all-targets -- -D warnings`, and the suite: 129 + 9 green. The new URL was checked by hand — the `bundles` branch is live and anonymously readable, currently serving bundle `2026.08.04` (seeded from `main` so `--bundle 2026.08.04` keeps resolving). Once installer#13 merges, a compose run replaces `current.json` there with `2026.08.05`. **Nothing is released from `edge`, so no shipped binary ever read the old URL** — there is no window to manage. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. - [x] I have added or updated tests/docs where it makes sense. - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Opus 5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it.
wtclaude added 1 commit 2026-08-05 22:20:41 +00:00
feat(installer): read bundles from the branch they are published to
All checks were successful
PR Checks / rust-gates (pull_request) Successful in 1m58s
2787eaadff
`main` is protected, so the compose job cannot push a bundle there --
the pre-receive hook declines it, which is not something a nightly cron
can resolve. Bundles now publish to a branch of their own, at its root,
so BUNDLE_BASE follows them. Everything the original choice was for
survives the move: a reviewable diff, a git history of the compat
matrix, and a plain anonymous URL that needs no credentials on the
shard host.

The test's bundle is now a frozen fixture rather than an include of the
published file, which this checkout no longer carries. Frozen is the
honest shape anyway: a test that silently re-targeted whatever CI
published last would change meaning without a commit. It is still a
real CI-emitted document, copied verbatim.

Nothing is released from `edge`, so no shipped binary ever read the old
URL.

Co-Authored-By: Claude <noreply@anthropic.com>
All checks were successful
PR Checks / rust-gates (pull_request) Successful in 1m58s
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/bundle-branch-url:feat/bundle-branch-url
git checkout feat/bundle-branch-url
Sign in to join this conversation.
No description provided.