Repository navigation
feat(runner-policy): register the ci-workflows v0.63.0 pr-review-cli contract - #847
kyle-sexton wants to merge 2 commits into
Conversation
…contract pr-review-cli.yml (ci-workflows#862) runs every job on ubuntu-24.04 and has no runner input, so its contract is hosted-only. It admits the inputs claude-code-plugins' summary-mode shadow caller passes and only the reviews role's API key; a caller that passes the subscription token needs a contract of its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed Security review: incremental (ddf6768 → 7a23fbd)Scope: Change: the expected Findings: no security issues.
critical-findings: 0 |
|
claude-review reviewed No findings. The incremental change (7a23fbd) touches one line, |
…i contract test Biome's noTemplateCurlyInString warned on the plain string; use the escaped template literal the rest of the file uses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Superseded: the owner dropped the review shadow (Q39, 2026-10-23). The cutover needs a contract that also admits the reviews subscription token; that lands in a new PR. |
…contract (#848) Refs: melodic-software/claude-code-account-rotation#259 ## Summary Registers the runner-policy contract for ci-workflows v0.63.0 `pr-review-cli.yml` (`8778094736e414233110f3e0d6d9948628ba77b5`), so claude-code-plugins can move its live security review lane onto it. ## Fix - `policy.json`: a hosted-only contract, `fixedRunsOn: ["ubuntu-24.04"]`, the inputs `lane`, `publish`, `role`, `model-args`, `allowed-bot-sender-ids`, `allowed-author-ids`, `docs-only-paths`, `incremental-review` and `cli-version`, and both reviews-role secrets: `CLAUDE_API_KEY` from `REVIEWS_CLAUDE_API_KEY` (tried first) and `CLAUDE_CODE_OAUTH_TOKEN` from `REVIEWS_CLAUDE_CODE_OAUTH_TOKEN` (after a key handoff). - `README.md`: the v0.63.0 entry. - `runner-policy.test.mjs`: pins the contract; the secret expressions are escaped template literals. Supersedes the key-only #847. ## Verification - `node --test components/runner-policy/runner-policy.test.mjs`: 336 pass, 0 fail. - `node components/runner-policy/runner-policy.mjs --root .`: passed. - This branch's analyzer run against the claude-code-plugins security caller that moves to `pr-review-cli.yml@8778094` with both secrets: passed; the currently synced policy rejects the same caller with `runner-target-contract`. - biome and markdownlint clean on the changed files. ## Related - melodic-software/ci-workflows#862 - #842 (precedent), #847 (closed, key-only) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Refs: melodic-software/claude-code-account-rotation#259
Summary
Registers a contract for ci-workflows v0.63.0
(
8778094736e414233110f3e0d6d9948628ba77b5)pr-review-cli.yml, the review lane on therun-claude-cli launcher added in ci-workflows#862.
claude-code-plugins needs it for its summary-mode shadow caller,
claude-code-plugins#9292, whose
runner-policy check fails today with "the reusable workflow path@SHA has no reviewed runner-input contract".
Fix
components/runner-policy/policy.json: a newhosted-onlyentry. It has no runner input, and everyjob in the called workflow runs on
ubuntu-24.04. It admits the inputslane,publish,role,model-args,allowed-bot-sender-ids,allowed-author-ids,docs-only-paths,incremental-reviewandcli-version. Its only secret isCLAUDE_API_KEY: ${{ secrets.REVIEWS_CLAUDE_API_KEY }}, so a caller thatalso passes the subscription token is refused and needs a contract of its own (the cutover callers will).
The hosted-only schema carries no
roleorallowedCallerPermissions.components/runner-policy/README.md: the v0.63.0 rollout line, sign-off pending.components/runner-policy/runner-policy.test.mjs: a test pinning the entry and that it is the only key atthat SHA.
Review basis
Git blob and tree SHAs at
8778094:workflows/pr-review-cli.yml2ab9e8a1actions/apply-claude-managed-settings1301e911actions/check-author-trust3517c76factions/publish-reviewfbbb895eactions/report-lane-outcomea0bd0a47actions/run-claude-cli901de6cbThird-party actions are pinned by full SHA:
actions/checkout@3d3c42e5,actions/github-script@3a2844b7,actions/upload-artifact@cf430e03. The model jobs holdcontents: readandpull-requests: read; only thestatus job, which runs no model, holds
pull-requests: write.Verification
npm run test:runner-policy: 336 pass.npm run lint:runner-policy: passed.Runner policy passed.Related
🤖 Generated with Claude Code