fix(ci): accept multi-arch Scoop manifests in validator#11
Conversation
The operator's apex jonbogaty.com already CNAMEs to jbcom.github.io repo-wide, so GitHub Pages transparently serves /pkgs/ on the apex with no reverse proxy needed. Updates astro.config.mjs `site` field to feed correct absolute URLs into sitemap + OG tags, and aligns README / CLAUDE.md / AGENTS.md / docs/ to the real canonical URL. jbcom.github.io/pkgs/ 301-redirects to the canonical URL.
The validator required top-level `url` + `hash` keys, which is the
single-arch/legacy shape. GoReleaser v2 (and modern Scoop itself)
emit the multi-arch shape with `url` and `hash` nested under
`architecture.{64bit,32bit,arm64}`.
This blocked PR #10 (radioactive-ralph v0.8.1) — the manifest was
valid Scoop but the validator rejected it.
New logic: top-level url+hash pass, OR an `architecture` block with
at least one known arch sub-block containing both url and hash.
Flat-shape manifests still pass unchanged. Includes coverage for
obviously-broken manifests (no top-level, no architecture block;
architecture block present but missing url/hash).
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 48 minutes and 8 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Summary
This PR successfully updates the Scoop manifest validator to accept both legacy single-arch manifests (top-level url + hash) and modern multi-arch manifests (with architecture.{64bit,32bit,arm64} blocks). The implementation correctly handles all validation scenarios:
- Accepts manifests with top-level
url+hash(legacy format) - Accepts manifests with properly structured
architectureblocks containing at least one known arch withurl+hash - Rejects manifests missing both formats
- Rejects architecture blocks that lack required fields
The logic properly validates the existing bucket/radioactive-ralph.json manifest which has both formats. Documentation updates correctly reflect the custom domain deployment at jonbogaty.com/pkgs/.
No blocking issues found. The changes are ready to merge.
You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.
There was a problem hiding this comment.
Code Review
This pull request migrates the project's public package index domain from jbcom.github.io/pkgs/ to jonbogaty.com/pkgs/. Changes include updating URLs in documentation (CLAUDE.md, README.md, docs/DEPLOYMENT.md), adjusting the Astro configuration, and updating architectural documentation to reflect the new CNAME-based routing. Review feedback highlights a significant discrepancy between the PR's title/description (which mentions Scoop manifest validator fixes) and the actual code changes, as well as a need to update the validation examples in the README to match the intended logic.
|
|
||
| export default defineConfig({ | ||
| site: "https://jbcom.github.io", | ||
| site: "https://jonbogaty.com", |
There was a problem hiding this comment.
There is a significant discrepancy between the pull request title/description and the actual code changes. The PR title and summary describe a fix for the Scoop manifest validator to support multi-architecture manifests, but the provided diffs only contain changes related to a domain migration (from jbcom.github.io to jonbogaty.com). The validator logic mentioned in the description is missing from this PR. Please verify if the correct commits were pushed.
| Unified package repository for every `jbcom/*` project — Homebrew, | ||
| Scoop, and Chocolatey from one git tree. Public package index at | ||
| <https://jbcom.github.io/pkgs/>. | ||
| <https://jonbogaty.com/pkgs/>. |
There was a problem hiding this comment.
While updating the documentation for the new domain, please note that the 'Validation' section later in this file (lines 121-131) still contains the 'legacy' validation logic that the PR description claims to be replacing. If the validator logic is indeed being updated in this PR (though currently missing from the diff), the example script in the README should also be updated to ensure local validation remains consistent with CI.
There was a problem hiding this comment.
Pull request overview
Updates the Scoop manifest validation in CI to accept modern multi-architecture manifest shapes, and refreshes site/docs references to use the jonbogaty.com/pkgs/ URL as canonical.
Changes:
- Adjust Scoop manifest validation to accept either legacy root
url+hashorarchitecture.{64bit,32bit,arm64}.{url,hash}. - Update Astro
siteconfig tohttps://jonbogaty.com(keepingbase: "/pkgs"). - Replace
jbcom.github.io/pkgs/links withjonbogaty.com/pkgs/across docs and repo metadata files.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/STATE.md | Removes reverse-proxy TODO now that custom-domain routing is documented/assumed. |
| docs/DEPLOYMENT.md | Updates production URL and rewrites custom-domain guidance. |
| docs/ARCHITECTURE.md | Documents the canonical site URL and how site + base are set. |
| astro.config.mjs | Changes Astro canonical site to https://jonbogaty.com. |
| README.md | Updates public site URLs to the custom-domain path. |
| CLAUDE.md | Updates references to the public site URL. |
| .github/workflows/validate-packages.yml | Updates CI Scoop validator to accept multi-arch manifests. |
| # architecture.{32bit,64bit,arm64}.* for multi-arch manifests | ||
| # (GoReleaser v2, modern Scoop). Either shape is valid. | ||
| arch_required = {"url", "hash"} | ||
| arch_keys = {"64bit", "32bit", "arm64"} |
There was a problem hiding this comment.
arch_keys is a Python set, so iteration order is not guaranteed. This can make present_arches and the subsequent error output order nondeterministic across Python versions/runs. Use an ordered sequence (e.g., a list/tuple) for arch_keys, and derive present_arches with that order (or sort explicitly).
| arch_keys = {"64bit", "32bit", "arm64"} | |
| arch_keys = ("64bit", "32bit", "arm64") |
| # Top-level keys every manifest must carry. | ||
| top_required = {"version", "description", "homepage", "license"} | ||
| # url + hash may live either at the root OR nested under | ||
| # architecture.{32bit,64bit,arm64}.* for multi-arch manifests | ||
| # (GoReleaser v2, modern Scoop). Either shape is valid. | ||
| arch_required = {"url", "hash"} | ||
| arch_keys = {"64bit", "32bit", "arm64"} |
There was a problem hiding this comment.
The README’s “Run locally” Scoop validation snippet still enforces top-level url+hash only, which will incorrectly fail multi-arch manifests that this CI validator now accepts. Please update the documented local validation snippet to match this new logic so local + CI validation stay consistent.
| // Served at https://jonbogaty.com/pkgs/ via GitHub Pages custom-domain | ||
| // routing. jbcom.github.io/pkgs/ 301-redirects here automatically. | ||
|
|
||
| export default defineConfig({ | ||
| site: "https://jbcom.github.io", | ||
| site: "https://jonbogaty.com", | ||
| base: "/pkgs", |
There was a problem hiding this comment.
The PR title/description focus on the Scoop manifest validator, but this change also updates the site’s canonical URL (site:) and multiple docs/README links to jonbogaty.com. Please either update the PR description to cover the domain/canonical URL change (and any expected operational impact) or split these doc/site changes into a separate PR to keep scope clear.
Summary
The scoop-manifest validator required top-level `url` + `hash` keys — the legacy/single-arch shape. GoReleaser v2 and modern Scoop itself produce manifests where `url` and `hash` live under `architecture.{64bit,32bit,arm64}`. The old validator rejects every modern manifest as "missing required keys: hash, url."
That blocked jbcom/pkgs PR #10 (radioactive-ralph v0.8.1) — valid manifest, invalid validator.
What changed
New logic accepts either shape:
Rejects obviously-broken manifests (no top-level, no architecture block; architecture block present but missing url/hash inside).
Verification
Smoke-tested locally against:
Follow-up
Once this merges, re-trigger validate on PR #10 and it should land cleanly.