Repository navigation
feat(github-actions-conventions): mark pr unblock in use and retire update, fix-ci, address-feedback - #781
Conversation
…pdate, fix-ci, address-feedback pr-unblock is live in claude-code-plugins and replaced the planned pr-update, pr-fix-ci and pr-address-feedback lanes. The vocabulary schema has no retired status, so the three reserved entries are removed and unblock moves to in-use. The slot-name test swaps the three retired names for pr-unblock and asserts the retired names no longer parse. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 37s —— View job Code review complete
No blocking or high-signal findings. This is a clean, minimal retirement of three unused reserved vocabulary entries plus the in-use flip for Verified by reading the code (not re-running the author's commands — sandbox denies
No paved-path row exists in this repo (no |
|
Claude finished @kyle-sexton's task in 51s —— View job Security review — no issues found
Skip-gate result: this PR has no security-relevant surface. The diff touches only two files:
This is a pure vocabulary/data update describing naming conventions for GitHub Actions workflow slot names — no executable logic, no auth/authz paths, no secrets or credential handling, no injection surface, and no workflow YAML ( No security findings to report. |
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 has reviewed this pull request through f00b1cb; a later push is reviewed from there. |
|
claude-review has reviewed this pull request through f00b1cb; a later push is reviewed from there. |
Refs: melodic-software/claude-code-plugins#7599 ## Summary claude-code-plugins PR #7625 adds the lane `work-auto-unblock`, which promotes issues whose last blocker closed. `resolve-config` there rejects a lane not named `<stage>-<function>` from the vocabulary, and the `work` stage lists no matching function word. ## Fix In `components/github-actions-conventions/vocabulary.json`, `functions.work` gains `unblock` with status `in-use` and the purpose "Promote issues whose last blocker closed." The lane is named `work-unblock` rather than `work-auto-unblock`: `naming-lint.mjs` requires every function word to start with a listed verb, and `auto` is not one. `unblock` is already a verb (#770). ## Verification - `npm run test:github-actions-conventions`: 14 pass, 0 fail (exit 0). - `npm run lint:github-actions-conventions`: 0 findings, 0 blocking (exit 0). - `biome check components/github-actions-conventions/vocabulary.json`: clean (exit 0). ## Related - melodic-software/claude-code-plugins#7599, melodic-software/claude-code-plugins#7625 (the lane must be named `work-unblock`) - #770, #781 (earlier `unblock` entries) After the merge, the standards sync lands the copy in claude-code-plugins (`.github/standards/`). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ws v0.51.0 intake (#811) No related issue: runner-policy contract for the claude-code-plugins intake move onto ci-workflows' run-claude-cli launcher (melodic-software/ci-workflows#784) Hold: a human merges this. ## Summary claude-code-plugins' intake now calls ci-workflows `intake-triage.yml` at v0.51.0, which runs on the `run-claude-cli` launcher funded by the `automations` role. The caller passes the role's two secrets, `AUTOMATIONS_CLAUDE_API_KEY` and `AUTOMATIONS_CLAUDE_CODE_OAUTH_TOKEN`. The same-name rule for privileged contracts (from #140) refused that mapping, so the contract could not load. ## Fix - **Security control change, owner-approved 2026-10-19.** A contract with `allowedCallerPermissions` may map a secret to its own name, as before, or to its funding role's prefixed name, `NAME: ${{ secrets.<ROLE>_NAME }}`. The prefixed form is allowed only when: - the contract declares a literal `role` (lower kebab); - `role` is in its `allowedInputs`; - the caller passes `role:` as that exact literal. Any other rename is still refused, as are expressions and other prefixes. The role is a reviewed literal, never an expression. This lets several funding roles share one repository. - Registers `intake-triage.yml@f129f4c142d00ec3feacbf2b9102d327088504bf` (v0.51.0) with `role: automations`. It is the v0.49.0 entry plus the `role` input, with the one OAuth secret replaced by the role's API key and subscription token. Permissions and routing are unchanged. The v0.49.0 entry stays until the caller repins. - `policy.schema.json` gains the optional `role` property, and the README documents the rule. ## Verification `node --test components/runner-policy/*.test.mjs`: 319/319 pass. The new tests: - a declared role's prefixed secret is accepted; - another role's prefix is refused, and so is a prefix with no declared role; - a declared role missing from `allowedInputs` is refused; - a caller passing another role is refused; - the v0.51.0 entry equals the v0.49.0 entry plus the role, its input and its secrets. ## Related - melodic-software/ci-workflows#784 and #781: the intake move and the launcher. - #140: the same-name control this narrows. - claude-code-plugins branch `feat/intake-on-run-claude-cli`: the caller, opened after this syncs. 🤖 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#6989
Summary
pr-unblockis live on claude-code-plugins main(
.github/workflows/pr-unblock.yml). It replaced the planned lanespr-update,pr-fix-ciandpr-address-feedback. The vocabulary stilllists
unblockas reserved and keeps the three replaced words reserved.Fix
components/github-actions-conventions/vocabulary.json,functions.pr:unblockbecomes{ "name": "unblock", "status": "in-use" }, theshape of the other in-use entries. The
update,fix-ciandaddress-feedbackentries are removed: the schema'sstatusenum isin-useorreservedonly, so removal is the only way to retire one.naming-lint.test.mjs: the slot-name contract test listed the threeretired names and failed once they left the vocabulary. It now lists
pr-unblockand asserts the three retired names no longer parse.assess,unblock,update,fixandaddressstay in the allowlist, andunblockis not a stage word.Verification
npx biome check components/github-actions-conventions: no fixes.npm run test:github-actions-conventions: 14 pass, 0 fail.npm run lint:github-actions-conventions: 0 findings, 0 blocking.npm run lint:md: 0 issues.functions.prunblockisin-useand none ofupdate,fix-ci,address-feedbackis present: exit 0.Related
unblockandassess; leftthe retirement out of scope)
🤖 Generated with Claude Code