docs(adr-0056): Scoop+Homebrew validated; record the Caddy HEAD fix

Amendment 3: scoop install and brew install both verified end-to-end on
real Windows + macOS (install + run), resolving Amendment 2's unverified
caveats (incl. the HEAD:main push).

Records the root cause + fix for the Homebrew 403: Gitea (>=1.25)
303-redirects release downloads to a method-bound SigV4 presigned S3 URL;
brew resolves with HEAD, captures the HEAD-signed URL, then GETs it -> 403
(GET-only tools are unaffected). Fixed by a server-side Caddy rule that
answers HEAD on release-download paths directly (200, no redirect) so the
download GET re-runs the redirect fresh. That rule lives in the Gitea edge
config, NOT this repo - documented so a server rebuild doesn't silently
break brew. Includes the reference Caddyfile block.

Also notes the ad-hoc mac signature runs fine via brew; Developer-ID +
notarization stays parked on the Apple org conversion. Remaining D3: winget.
This commit is contained in:
claude@clouddev1
2026-06-20 08:15:17 +00:00
parent 6d54c1e96c
commit 6bb2288470
3 changed files with 75 additions and 9 deletions
+12 -8
View File
@@ -86,14 +86,18 @@ since ADR-0027.)
- [ ] **D3** Released via prebuilt binaries plus Homebrew, Scoop,
`winget`, and `cargo binstall`.
*(Prebuilt binaries + checksums on Gitea releases (D1); **`cargo
binstall` + crates.io live** (ADR-0056); **Scoop + Homebrew wired**
(ADR-0056 Amendment 2) — `publish.yaml` `scoop-bucket` /
`homebrew-tap` jobs render dependency-free manifests from the release
`.sha256` sidecars and push them, via the scoped `lazyeval-ci` bot
token, to `lazyeval/scoop-bucket` and `lazyeval/homebrew-tap`;
rendering covered by `scripts/test-package-renders.sh`, end-to-end
install still to be user-verified. **Remaining: winget** (komac on
Linux CI, or a manual PR). Asset naming
binstall` + crates.io live** (ADR-0056); **Scoop + Homebrew wired and
validated end-to-end** on real Windows + macOS (ADR-0056 Amendments
2 & 3) — `publish.yaml` `scoop-bucket` / `homebrew-tap` jobs render
dependency-free manifests from the release `.sha256` sidecars and push
them, via the scoped `lazyeval-ci` bot token, to
`lazyeval/scoop-bucket` and `lazyeval/homebrew-tap`; rendering covered
by `scripts/test-package-renders.sh`. NB: the Homebrew path depends on
a **server-side Caddy rule** answering HEAD on release-download paths
directly (Gitea's presigned-S3 redirect is method-bound and brew
reuses a HEAD-signed URL for its GET) — see ADR-0056 Amendment 3;
that rule lives in the Gitea edge config, not this repo. **Remaining:
winget** (komac on Linux CI, or a manual PR). Asset naming
`rdbms-playground-<tag>-<target>` is binstall-friendly.)*
## TUI shell