Skip to content

fix(ci): accept multi-arch Scoop manifests in validator#11

Merged
jbdevprimary merged 2 commits into
mainfrom
fix/scoop-validator-multi-arch
Apr 16, 2026
Merged

fix(ci): accept multi-arch Scoop manifests in validator#11
jbdevprimary merged 2 commits into
mainfrom
fix/scoop-validator-multi-arch

Conversation

@jbdevprimary
Copy link
Copy Markdown
Contributor

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:

  • Top-level `url` + `hash` (legacy), OR
  • An `architecture` block with at least one known arch sub-block containing both `url` and `hash`

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.

jbdevprimary and others added 2 commits April 15, 2026 01:02
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).
Copilot AI review requested due to automatic review settings April 16, 2026 23:38
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 16, 2026

Warning

Rate limit exceeded

@jbdevprimary has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 48 minutes and 8 seconds before requesting another review.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7c3c63a1-70ee-4a60-b325-7c6a71d0a711

📥 Commits

Reviewing files that changed from the base of the PR and between dff3103 and 82947c9.

📒 Files selected for processing (7)
  • .github/workflows/validate-packages.yml
  • CLAUDE.md
  • README.md
  • astro.config.mjs
  • docs/ARCHITECTURE.md
  • docs/DEPLOYMENT.md
  • docs/STATE.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/scoop-validator-multi-arch

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@amazon-q-developer amazon-q-developer Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 architecture blocks containing at least one known arch with url + 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.

@jbdevprimary jbdevprimary merged commit 287dc53 into main Apr 16, 2026
11 checks passed
@jbdevprimary jbdevprimary deleted the fix/scoop-validator-multi-arch branch April 16, 2026 23:39
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread astro.config.mjs

export default defineConfig({
site: "https://jbcom.github.io",
site: "https://jonbogaty.com",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

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.

Comment thread README.md
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/>.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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+hash or architecture.{64bit,32bit,arm64}.{url,hash}.
  • Update Astro site config to https://jonbogaty.com (keeping base: "/pkgs").
  • Replace jbcom.github.io/pkgs/ links with jonbogaty.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"}
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
arch_keys = {"64bit", "32bit", "arm64"}
arch_keys = ("64bit", "32bit", "arm64")

Copilot uses AI. Check for mistakes.
Comment on lines +40 to +46
# 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"}
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment thread astro.config.mjs
Comment on lines +11 to 16
// 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",
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants