Repository navigation
feat(runner-policy): register ci-workflows v0.60.0 intake and review contracts - #842
Conversation
…contracts Copies the v0.58.0 intake-triage entry and the v0.59.1 pr-review and pr-review-security entries verbatim to the v0.60.0 tag 82ca5ca9, so claude-code-plugins can repin those callers (claude-code-plugins#8491). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Security review passed the PR at 83b057e on 2026-10-22 and authorized the sign-off. README wording only. 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 reviewed all three changed files and posted no inline comments. What I checked
What I did not verify
Observation, not a finding
|
|
claude-security-review reviewed Security review: PR #842 at 9cc1640Result: no security findings. The PR is open and the diff has security-relevant surface, so I read all three files. What changed. The PR registers three reusable-workflow contracts in Why it is safe.
Not verified. The README says the upstream v0.60.0 workflow files keep the same interface. I could not confirm that against the ci-workflows repo, because the |
…contracts (#843) Refs: melodic-software/claude-code-account-rotation#288 ## Summary Registers the ci-workflows v0.61.0 tag (`164c2809f6150429b6f24d4a2777bb377af953d9`) contracts for `intake-triage.yml`, `pr-review.yml` and `pr-review-security.yml`, in the same shape as #842 did for v0.60.0. ## Fix - `components/runner-policy/policy.json`: three entries keyed `@164c2809…`, verbatim copies of the `@82ca5ca…` (v0.60.0) entries, each placed right after its v0.60.0 entry. - `components/runner-policy/README.md`: a v0.61.0 sign-off paragraph after the v0.60.0 one. - `components/runner-policy/runner-policy.test.mjs`: `REPINE_LANE_SHA_V0_61_0` and a test that the three v0.61.0 contracts equal their v0.60.0 entries and that exactly three v0.61.0 contracts exist. v0.61.0 is v0.60.0 plus melodic-software/ci-workflows#856 and melodic-software/ci-workflows#857 (`git log 82ca5ca..164c280`). In `git diff 82ca5ca 164c280`: - `intake-triage.yml`: no change to `workflow_call` inputs, secrets, job permissions or `runs-on`; only steps, job outputs and the status job change. - `pr-review.yml` and `pr-review-security.yml`: each adds two optional inputs, `credential-name` (default `CLAUDE_CODE_OAUTH_TOKEN`) and `fallback-credential-name` (default empty). Callers do not pass them, so `allowedInputs` stays as at v0.60.0. Secrets, permissions and routing are unchanged. ## Verification - `npm run test:runner-policy`: 328 tests, 328 pass, 0 fail, including the new v0.61.0 test. - Adding `credential-name` to the new `pr-review` entry made the new test fail (1 fail); the file was then restored. - `npm run lint:runner-policy`: `Runner policy passed.` - biome (`components/biome/biome.json`) on `components/runner-policy`, markdownlint, typos, editorconfig-checker and gitleaks: clean (lefthook pre-commit also passed). ## Related - #842 (v0.60.0 registration this copies) - melodic-software/ci-workflows#856 - melodic-software/ci-workflows#857 - melodic-software/claude-code-account-rotation#288 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…contracts (#846) No related issue: registers the ci-workflows v0.62.0 contracts so claude-code-plugins can repin to it. ## Summary Registers the ci-workflows [v0.62.0](https://github.com/melodic-software/ci-workflows/releases/tag/v0.62.0) tag (`2fe38c031867900824c164e33a140a335ed9ecf0`) contracts for `intake-triage.yml`, `pr-review.yml` and `pr-review-security.yml`, in the same shape as [#843](#843) (v0.61.0) and [#842](#842) (v0.60.0). v0.62.0 adds only [ci-workflows#858](melodic-software/ci-workflows#858), which bounds the subprocess isolation install that timed out in two hosted security-review runs on claude-code-plugins. ## Fix - `components/runner-policy/policy.json`: three entries keyed `@2fe38c03…`, verbatim copies of the `@164c2809…` (v0.61.0) entries, each placed right after its v0.61.0 entry. - `components/runner-policy/README.md`: a v0.62.0 rollout paragraph after the v0.61.0 one. - `components/runner-policy/runner-policy.test.mjs`: `REPINE_LANE_SHA_V0_62_0` and a test that the three v0.62.0 contracts equal their v0.61.0 entries and that exactly three v0.62.0 contracts exist. ### Review basis `git diff 164c2809 2fe38c03` (ci-workflows compare API) touches four files: the three workflows and `.github/scripts/claude-lane-install-isolation.test.cjs`. No commit-relative action changes. - For each workflow, `yq` comparison of `.on` (`workflow_call` inputs and secrets), `.permissions`, each job's `permissions`, `runs-on` and `timeout-minutes`, the job list, and every step's `uses`: identical between the two tags. - The only hunks are the "Install subprocess isolation" step (`pr-review.yml`, `pr-review-security.yml`) and the two "Isolate the runner" steps (`intake-triage.yml`): apt is skipped when `bwrap` and `socat` are present, every `apt-get` call runs under `sudo timeout` against one shared deadline (50 s in the review lanes, 100 s in intake), and the final check requires both tools. ## Verification - `npm run test:runner-policy`: 335 tests, 335 pass, 0 fail, including `✔ the intake-triage and review contracts at the v0.62.0 tag copy their v0.61.0 entries forward verbatim`. - `npm run lint:runner-policy`: `Runner policy passed.` - Against the claude-code-plugins repin worktree (three callers moved to `@2fe38c03…`): its vendored policy gives three `runner-target-contract` failures (auto-approval declined); this branch's `runner-policy.mjs` and `policy.json` give `Runner policy passed.` - lefthook pre-commit (typos, editorconfig, markdownlint, gitleaks, biome): clean. - Left out: nothing. ## Related - [ci-workflows#858](melodic-software/ci-workflows#858), released in [v0.62.0](https://github.com/melodic-software/ci-workflows/releases/tag/v0.62.0). - The claude-code-plugins repin PR passes its runner-policy gate once this merges and syncs. - [#844](#844) (automated repin of the standards lane components to v0.61.0) is separate and not touched here. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…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-plugins#8491
Summary
Registers ci-workflows v0.60.0
(
82ca5ca9be6e18a1addb7986eae15689339aedbc) contracts forintake-triage.yml,pr-review.ymlandpr-review-security.yml, so claude-code-plugins can repinintake triage from v0.58.0 and both review lanes from v0.59.1 to v0.60.0. The
intake-triage repin carries ci-workflows#854,
which claude-code-plugins#8491 needs.
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
" at sign-off.
Fix
components/runner-policy/policy.json: verbatim copies at82ca5ca9of thev0.58.0 (
5e18f3d6)intake-triageentry and the v0.59.1 (8bd4d7f9)pr-reviewandpr-review-securityentries. No input, secret mapping, callerpermission or routing is added or widened.
components/runner-policy/README.md: the v0.60.0 rollout line, sign-offpending.
components/runner-policy/runner-policy.test.mjs: a test that the threev0.60.0 entries equal their previous entries and are the only keys at that SHA.
Review basis
Git blob SHAs of the workflow files and tree SHAs of the commit-relative (
$/)actions they use, from the contents API at each ref:
5e18f3d6(v0.58.0)8bd4d7f9(v0.59.1)82ca5ca9(v0.60.0)workflows/intake-triage.yml8ff8eac38ff8eac30c69f08cworkflows/pr-review.yml47a2b1c94f3d4e444f3d4e44workflows/pr-review-security.yml16e9be5b30b595b930b595b9actions/check-subprocess-sandboxd9d60153d9d6015392d69c1bactions/report-lane-outcome5f583be15f583be10b6bb70aactions/run-claude-cli0edc45c10edc45c16234a8b1actions/apply-claude-managed-settings1301e9111301e9111301e911actions/check-author-trust3517c76f3517c76f3517c76fv0.58.0..v0.60.0, four hunks per job pair, none inon.workflow_call, permissions orruns-on): the issue file gives eachcomment's
html_urland the prompt says the model reads it(ci-workflows#854);
the report step passes
lane-id: intake-triageto report-lane-outcome.new optional
lane-idandhandoffinputs; with a lane id and a credentialsecret name that maps to a kind, each annotation also carries a
lane-outcome {json}record built from the same closed-pattern facts as theexisting tokens. The credential appears as its secret name only, never a value.
(ci-workflows#849):
the sandbox probe's error text names Docker's seccomp profile. Message text
only.
The review workflow files are byte-identical to v0.59.1; their change is the
commit-relative actions above, which is the diff the gate declines to
auto-approve.
Verification
npm run test:runner-policy: 327 pass, 0 fail, including✔ the intake-triage and review contracts at the v0.60.0 tag copy their previous entries forward verbatim.npm run lint:runner-policy:Runner policy passed.node .github/standards/runner-policy/runner-policy.mjs --root .:main): threerunner-target-contractfailures, auto-approval declined forintake-triage.yml,pr-review.ymlandpr-review-security.ymlat82ca5ca9;policy.jsoncopied in:Runner policy passed.(filerestored afterwards).
Related
merges and syncs.
🤖 Generated with Claude Code