Repository navigation
fix(runner-policy): approve pr-review-cli.yml v0.66.1 contract with status job reads - #900
Conversation
…tatus job reads Register the reviewed pr-review-cli.yml contract at the ci-workflows v0.66.1 tag (20a822d73b6e2d7e21d48e609a01b427e0e161e7). Since v0.65.14 the workflow's only surface change is the status job's permissions block, which adds actions: read and checks: read so the cost hold can read its earlier runs' check-run notices (ci-workflows#904). Both are read-only scopes the callers already grant, and a hosted-only contract records no caller permissions, so the entry copies v0.65.14 forward unchanged. Auto-approval declines on that jobPermissions change, so the entry is added by hand. 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-review reviewed No findings. I read the full diff (
|
|
claude-security-review reviewed Security review: PR #900 @ 4c47234critical-findings: 0 No security findings. What I read: the full diff via What changed: the PR adds one approved-contract entry to Trust-control check: the new entry matches the v0.65.14 entry field for field. I compared the two entries as printed in the diff and at
So the entry admits no new input, secret, or runner target. It only lets callers pin one more SHA that has the same contract. The listed trust controls under Not verified: the README says v0.66.1 adds Manifest items: none hit, since no |
…#901) Refs: melodic-software/claude-code-plugins#9635 ## Summary Every re-pin pull request whose lockstep copies a runner-policy contract forward fails `check-typescript`, because `repin-policy-lockstep.mjs` writes `policy.json` with `JSON.stringify(policy, null, 2)`. That spreads short arrays such as `allowedInputs` over one line per item, and Biome's format check (`File content differs from formatting output`) rejects the file. #895 failed this way at 09f6f35. ## Fix `maintenance-repin-ci-workflows.yml` gains a step after the lockstep step, gated on the same `steps.repin.outputs.changed == 'true'`. It runs `npm ci --ignore-scripts` at the root and `node_modules/.bin/biome format --write --config-path=components/biome/biome.json` on `components/runner-policy/policy.json`. The root lockfile pins `@biomejs/biome` 2.5.15, the version `check-typescript`'s biome action derives from the root `package.json`, and the config is the one `check-typescript` passes. No new action and no new permission. ## Verification - Ran the step's commands on #895's unformatted `policy.json` (09f6f35): the output is byte-identical to the hand-formatted fix cc1d460, on which `check-typescript` and `ci-status` pass. - `actionlint` and `zizmor` (offline) report nothing for the workflow. - No existing test covers this workflow's step list; `repin-callers.test.sh` covers the script. ## Related - #895, the re-pin pull request this failure blocked. - #900, which also edits `components/runner-policy/policy.json`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Refs: melodic-software/claude-code-plugins#9635
Summary
This PR registers the reviewed
pr-review-cli.ymlcontract at theci-workflows v0.66.1
tag (
20a822d73b6e2d7e21d48e609a01b427e0e161e7), so callers can pin thatrelease. Auto-approval declines it today: "jobPermissions changed since the
previously reviewed ...pr-review-cli.yml@3180217". The change is
ci-workflows#904:
the status job adds
actions: readandchecks: readso the cost hold canread its earlier runs' check-run notices. The owner approved those read-only
scopes for this lane (claude-code-plugins#9635, Q1(a)).
Fix
policy.json: the v0.66.1pr-review-cli.ymlentry copies its v0.65.14(
3180217) entry forward unchanged. A hosted-only contract has no field forcaller permissions (the schema refuses
minimumCallerPermissionswithoutrunnerInput), so the reviewed change is recorded in the README and test,not in the entry.
README.md: one paragraph on the v0.66.1 contract and the reviewedpermission change.
runner-policy.test.mjs: a test that the v0.66.1 entry equals the v0.65.14entry.
Verification
pr-review-cli.ymlbetween3180217and20a822d(comments excluded): the status job's
actions: readandchecks: readlines and one
STATUS_JOBstep env value.on.workflow_callinputs,secrets and
runs-ondo not change.node --test components/runner-policy/runner-policy.test.mjs components/claude-lanes/repin-policy-lockstep.test.mjs:398 pass, 0 fail.
runner-policy.mjs --root <claude-code-plugins#10782 head d4b21de>:policy.json:Runner policy passed.policy.json: the twopr-review-cli.yml@20a822drunner-target-contract findings that fail #10782's
lint-repo.pr-review-cli.yml@9a886d5(v0.66.0). No caller pins it.Related
repins the review callers to v0.66.1. Its
lint-repoandci-statusfail on this missing contract and pass once it syncs.
re-pin to v0.66.0. It copies forward
pr-review.yml,pr-review-security.ymlandmaintenance-sync-standards.ymlbut notpr-review-cli.yml.pr-review-cli.ymlregistration, which this follows.the permission change reviewed here.
🤖 Generated with Claude Code