Repository navigation
feat(runner-policy): register ci-workflows v0.58.0 intake contracts - #832
Conversation
Copy the v0.56.0 intake-triage and intake-label-needs-triage entries forward verbatim to the v0.58.0 tag (5e18f3d6). intake-label-needs-triage is byte-identical; intake-triage keeps its workflow_call inputs, secrets, outputs and job permissions and changes only steps and job outputs (the 401/402 subscription handoff and the latest CLI default). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
claude-review reviewed No findings on PR #832. Checked
Could not run
For the owner, not a code defect
Closing issues: none. The PR uses |
|
claude-security-review reviewed Security review: PR #832 (head c6ceb4c)Result: no security findings. No inline comments were posted. Scope: The PR touches only What I checked:
Limitation: The sandbox denied my attempt to read the |
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. |
…838) Refs: melodic-software/claude-code-plugins#8938 ## Summary Registers ci-workflows [v0.59.1](https://github.com/melodic-software/ci-workflows/releases/tag/v0.59.1) (`8bd4d7f963a06627dd2d551ffcd8d9db5e6b881b`) contracts for `pr-review.yml` and `pr-review-security.yml`, so [claude-code-plugins#8938](melodic-software/claude-code-plugins#8938) can repin both review lanes from v0.55.0 (`3a2c748`) to v0.59.1. **Review: the GitHub Security & Cost session reviews this PR.** The gate cannot auto-approve these entries, so the copies rest on the review below. The README rollout line says "sign-off pending"; replace it with "signed off by hand on <date>" at sign-off. ## Fix - `components/runner-policy/policy.json`: verbatim copies of the v0.55.0 (`3a2c748`) entries at `8bd4d7f9`, for `pr-review` and `pr-review-security`. No input, secret mapping, caller permission or routing is added or widened. The policy entries do not record a credential-reference shape; the gate computes `credentialReferences` from the workflow, so no field changes there. - `components/runner-policy/README.md`: the v0.59.1 rollout line, sign-off pending. - `components/runner-policy/runner-policy.test.mjs`: a test that both v0.59.1 entries equal their v0.55.0 entries and are the only two keys at that SHA. ### Review basis Git blob SHAs (`git rev-parse <sha>:.github/workflows/<file>`): | File | `3a2c748` (v0.55.0) | `8bd4d7f9` (v0.59.1) | |---|---|---| | `pr-review.yml` | `c67ec82b` | `4f3d4e44` | | `pr-review-security.yml` | `1737f82d` | `30b595b9` | `git log 3a2c748f..8bd4d7f9` on the two files lists two commits. The full diff of each file has three hunks and none touches `on.workflow_call`, permissions or `runs-on`: 1. **Credential-bearing steps:** the review step and its fallback step, which receive `CLAUDE_CODE_OAUTH_TOKEN`, move `anthropics/claude-code-action` from `f27be6b65a4652f08a2ba3cff79114829b588967` (v1.0.252) to `5eb090f3c3afd701a0672cd32981197ca27688f6` (v1.0.253) ([ci-workflows#838](melodic-software/ci-workflows#838)). This is the `credentialReferences` diff the gate declines to auto-approve. 2. **Findings count:** the result step raises the review's findings count to the number of `manifest <field>: flag` lines in its summary when the count is lower ([ci-workflows#848](melodic-software/ci-workflows#848)). Model-free script logic, no credential. ## Verification - `npm run test:runner-policy`: 326 pass, 0 fail, including `✔ both review contracts at the v0.59.1 tag copy their v0.55.0 entries forward verbatim`. - `npm run lint:runner-policy`: `Runner policy passed.` - In the claude-code-plugins#8938 worktree (head `5fd71552`), `node .github/standards/runner-policy/runner-policy.mjs --root .`: - with its vendored policy (identical to standards `main`): two `runner-target-contract` failures, "auto-approval declined: credentialReferences changed since the previously reviewed melodic-software/ci-workflows@3a2c748f..." and the same for `pr-review-security.yml`; - with this branch's `policy.json` copied in: `Runner policy passed.` (file restored afterwards). - lefthook pre-commit (typos, editorconfig, markdownlint, gitleaks, biome): clean. ## Related - [claude-code-plugins#8938](melodic-software/claude-code-plugins#8938) passes its runner-policy gate once this merges and syncs. - [ci-workflows#838](melodic-software/ci-workflows#838): the claude-code-action bump. - [ci-workflows#848](melodic-software/ci-workflows#848): the findings-count fix (the v0.59.1 release commit). - Precedent: #832, #829, #828. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Refs: melodic-software/ci-workflows#840
Refs: melodic-software/ci-workflows#841
Summary
Registers ci-workflows
v0.58.0
(
5e18f3d6cebd6fa5e66b0941ee0f7ed6ba288d6c) contracts forintake-triage.ymlandintake-label-needs-triage.yml, soclaude-code-plugins#8800
can repin both intake callers from v0.56.0 (
1bb8953) to v0.58.0 and intakegets the 401/402 subscription handoff.
Owner review needed. Unlike #829,
intake-triageis not byte-identical tothe SHA its copied entry reviewed. Its contract surface is unchanged, but its
steps changed, so the gate cannot auto-approve it and the copy rests on the
review below. The README rollout line says "sign-off pending"; replace it with
"signed off by hand on " when you sign off.
Fix
components/runner-policy/policy.json: verbatim copies of the v0.56.0(
1bb8953) entries at5e18f3d6, forintake-triageandintake-label-needs-triage. No input, secret mapping, caller permission orrouting is added or widened.
components/runner-policy/README.md: the v0.58.0 rollout line, sign-offpending.
components/runner-policy/runner-policy.test.mjs: a test that both v0.58.0entries equal their v0.56.0 entries and are the only two keys at that SHA.
Review basis
Git blob SHAs (
git rev-parse <sha>:.github/workflows/<file>):1bb8953(v0.56.0)5e18f3d6(v0.58.0)intake-label-needs-triage.yml8d274a668d274a66intake-triage.ymld79b7e9e8ff8eac3intake-label-needs-triage.ymlis byte-identical, so its copy has the samebasis as #829.
For
intake-triage.yml, parsing both versions and comparing themstructurally:
on.workflow_callinputs (except thecli-versiondescription), secrets and outputs are identical, as are the top-level
permissions and every job's
permissionsandruns-on. The two jobs thathold
issues: write,applyandskipped, are identical in full. Theclaude,subscriptionandstatusjobs changed (ci-workflows#840, #841).Please review these changes:
2.1.304tolatest. When thecaller passes no
cli-versionand sets noCLAUDE_LANE_CLI_VERSIONvariable, run-claude-cli now installs whatever npm resolves as latest at
run time, with a Claude credential in its environment
(L200,
L527,
L1053).
The contract does not model this. It is a supply-chain change.
unchanged, but the
subscriptionjob, which holdsCLAUDE_CODE_OAUTH_TOKEN, now runs whenhandoff == 'true': after acredit stop as before, and also when the API refuses the key with status
401 or 402. A 403 stops the run
(L855).
handoffjob output onclaudeandsubscription(L340,
L866).
These are job outputs, not
workflow_calloutputs.fallback-reason: authin the subscription job's lane record(L1295),
and a status-job warning and
class=authwhen the key was refused(L1671).
The contract has no allowlist entry for the
skipped-labelinput. That wasalready true at v0.56.0, and this PR leaves it unchanged.
Verification
npm run test:runner-policy: 324 pass, 0 fail, including✔ both intake contracts at the v0.58.0 tag copy their v0.56.0 entries forward verbatim.npm run lint:runner-policy:Runner policy passed..githubwith both intake callers repinned to5e18f3d6(
--repository-visibility public):runner-policy.mjsand policy: tworunner-target-contractfailures,intake-label-needs-triage("carries areviewed allowedCallerPermissions grant; its steps cannot be proven
unchanged by this surface diff, so auto-approval is declined") and
intake-triage("inputs changed since the previously reviewed...intake-triage.yml@182aca3..."), and no others;
runner-policy.mjsand--policyset to this branch'spolicy.json:Runner policy passed.;runner-policy.mjsandpolicy.json:Runner policy passed.clean.
Related
can repin to v0.58.0 once this merges and syncs.
pr-review.ymlandpr-review-security.yml(4 lineseach). This PR adds no contracts for them. #8800 calls both at v0.55.0
(
3a2c748), which already has contracts.🤖 Generated with Claude Code