diff --git a/components/runner-policy/README.md b/components/runner-policy/README.md index 5a4d7c37..b4936e1d 100644 --- a/components/runner-policy/README.md +++ b/components/runner-policy/README.md @@ -1471,6 +1471,10 @@ The `credential-name` and `fallback-credential-name` inputs (v0.61.0) stay unallowed because no caller passes them. `maintenance-sync-standards` copies its v0.55.0 entry forward verbatim; its file is byte-identical at both tags. No input, secret, caller permission, or routing changes. +At the v0.65.15 tag `30b251532b2e9f7e0c4215e1dee5be0d3c688743`, the intake-triage +contract copies its v0.65.13 entry forward unchanged: the release makes priority +labels exclusive in the triage apply step (ci-workflows#896), with no input, +secret, permission or routing change. The Zizmor contract at `de50a08b6093d231519ee7a4c9371db76c0a7e1e` uses its reviewed `runner` input and checksum-verified native Linux binary, so enrolled consumers may route that advisory lane onto the managed fleet diff --git a/components/runner-policy/policy.json b/components/runner-policy/policy.json index ce6b7428..c4ee2db2 100644 --- a/components/runner-policy/policy.json +++ b/components/runner-policy/policy.json @@ -465,6 +465,33 @@ "issues": "write" } }, + "melodic-software/ci-workflows/.github/workflows/intake-triage.yml@30b251532b2e9f7e0c4215e1dee5be0d3c688743": { + "routing": "runner-input", + "runnerInput": "runner", + "role": "intake", + "allowedInputs": [ + "runner", + "allowed-labels", + "escalation-label", + "floor-label", + "instructions", + "cli-version", + "claude-args", + "issue-number", + "allowed-author-ids", + "allowed-bot-sender-ids", + "role" + ], + "allowedSecrets": { + "CLAUDE_API_KEY": "${{ secrets.INTAKE_CLAUDE_API_KEY }}", + "CLAUDE_CODE_OAUTH_TOKEN": "${{ secrets.INTAKE_CLAUDE_CODE_OAUTH_TOKEN }}", + "FALLBACK_CLAUDE_CODE_OAUTH_TOKEN": "${{ secrets.FALLBACK_CLAUDE_CODE_OAUTH_TOKEN }}" + }, + "allowedCallerPermissions": { + "contents": "read", + "issues": "write" + } + }, "melodic-software/ci-workflows/.github/workflows/pr-review.yml@ab83b01273026ab5c23c6f3b40e946d97a863fa2": { "routing": "runner-input", "runnerInput": "runner", diff --git a/components/runner-policy/runner-policy.test.mjs b/components/runner-policy/runner-policy.test.mjs index 733a4da1..0985c197 100644 --- a/components/runner-policy/runner-policy.test.mjs +++ b/components/runner-policy/runner-policy.test.mjs @@ -10366,6 +10366,19 @@ test("the claude-lanes contracts at the v0.65.14 tag copy their previous entries } }); +// v0.65.15 makes priority labels exclusive in the intake-triage apply step +// (ci-workflows#896): no input, secret or permission changes, so the +// intake-triage entry copies v0.65.13 forward unchanged. +test("the intake-triage contract at the v0.65.15 tag copies its v0.65.13 entry unchanged", () => { + const contracts = BASE_POLICY.approvedReusableWorkflowContracts; + const key = (sha) => `melodic-software/ci-workflows/.github/workflows/intake-triage.yml@${sha}`; + const sha = "30b251532b2e9f7e0c4215e1dee5be0d3c688743"; + const previous = "ba7af78d291f10bd75651857a0db2357c23df0fe"; + assert.ok(contracts[key(previous)]); + assert.deepEqual(contracts[key(sha)], contracts[key(previous)]); + assert.equal(Object.keys(contracts).filter((k) => k.endsWith(`@${sha}`)).length, 1); +}); + // Convergence as a property, never as a hardcoded SHA. The daily // claude-lanes-repin lane rewrites these components on ci-workflows releases, // and a test naming one revision would go red by construction on each of its