registry: pin packslip release and index workflows - #12841
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited) Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThe PR adds separate Packslip release-list signer policies, supports canonical registry resolution, improves bracketed backend option parsing, updates documentation, and expands unit and end-to-end coverage. ChangesPackslip identity and parsing
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant CLI
participant PackslipBackend
participant PinForReleaseList
participant ReleaseListVerifier
CLI->>PackslipBackend: resolve packslip options
PackslipBackend->>PinForReleaseList: derive release-list policy
PinForReleaseList-->>PackslipBackend: return issuer and identity prefix
PackslipBackend->>ReleaseListVerifier: verify signed release list
ReleaseListVerifier-->>CLI: return verified versions
Poem
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 |
Greptile SummaryThis PR separates Packslip release-list signer trust from release-bundle signer trust and updates the canonical Packslip registry entry accordingly.
Confidence Score: 5/5The PR appears safe to merge, with signer separation, cache partitioning, registry option propagation, and parser behavior covered by focused tests. No actionable failures remain: release lists and bundles use distinct intended policies, configured stampers remain isolated, changed list policies do not share local cache entries, and bracket-aware parsing preserves valid option values and version suffixes. Important Files Changed
Reviews (1): Last reviewed commit: "registry: pin packslip release and index..." | Re-trigger Greptile |
Configure the existing Packslip registry entry with
packslip.devand separate pins for release bundles (release.yml@) and the signed index (packslip-releases.yml@). Users can install withmise use -g packslipor[tools] packslip = "latest"without supplying signer options. This restricts the broad workflow trust reported on #12839, excluding CI signing jobs.Add
list_identity_prefixto select the vendor index signer separately while retaining the bundle policy's OIDC issuer. Include the option in listing cache keys and persisted installation options, reject invalid combinations, and update the CLI example, TOML configuration, documentation, and registry-shorthand smoke test. Configured stampers keep their own policies.Workflow identities contain
@, so also fix CLI argument parsing to distinguish that character inside backend options from the version separator. Regression cases cover scoped package names, quoted brackets, nested arrays, and version paths containing brackets.Validation:
mise run test:e2e 'e2e/backend/test_packslip$' 'e2e/backend/test_packslip_resources$'passed, including live1.1.1resolution and installation withmise use -g packslip,0.2.0installation/lockfile fixture checks, rejection of CI signer pins, and rejection of the index signer for release bundles.cargo clippy --workspace --all-features --all-targets -- -D warningspassed.Local mbx 1.5.0 emitted target-path cache mapping warnings; equivalent Cargo validation passed after resetting generated CMake state from a compiler-wrapper switch. No repository build configuration changes.
AI-assisted — Tool: Codex; model: unavailable/unavailable; version: unavailable.
Note
High Risk
Changes Packslip signer verification and registry trust policy; a parsing or policy bug could reject valid installs or weaken which workflows are accepted.
Overview
Tightens Packslip trust so release bundles and the signed release index can use different GitHub Actions workflow identities, closing the gap where a CI job could satisfy the same pin as release publishing.
Adds
list_identity_prefix, applied only when verifying vendor release lists (well-known and GitHub.well-knownlists) while bundle verification keepsidentity/identity_prefix. The option is wired into install/listing cache keys, validated (non-empty, requires issuer, incompatible withpubkey), and documented.The
packslipregistry entry now resolves viapackslip:packslip.devwith registry-supplied pins:release.yml@for bundles andpackslip-releases.yml@for the index, so users can runmise use -g packslipwithout hand-configuring signers. Docs and e2e cover the canonical quickstart and that wrong pins fail even with a warm version cache.CLI parsing is updated so
@inside bracketed backend options (common in workflow URLs) is not treated as a version separator; nested brackets and quoted values are handled when splitting options from an optional@versionsuffix.Reviewed by Cursor Bugbot for commit 6911073. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit
New Features
Bug Fixes
@characters.Documentation