Skip to content

feat(runner-policy): add ci-workflows v0.39.3 contracts - #742

Merged
kyle-sexton merged 4 commits into
mainfrom
feat/runner-policy-v0.39.3-contracts
Oct 9, 2026
Merged

kyle-sexton merged 4 commits into
mainfrom
feat/runner-policy-v0.39.3-contracts

Conversation

@kyle-sexton

Copy link
Copy Markdown
Member

No related issue: unblocks the ci-workflows v0.39.3 fleet repin in the GitHub Actions conventions migration.

Summary

Registers the nine ci-workflows reusables at the v0.39.3 tag ab83b01273026ab5c23c6f3b40e946d97a863fa2 in components/runner-policy/policy.json, so consumer repins from v0.38.2, v0.39.0 and v0.39.1/v0.39.2 pass runner-policy. The 6ba73b9 (v0.39.0) and cf316d1 (v0.38.2) entries stay until every consumer has repinned; a follow-up retires them.

Fix

  • policy.json: nine new keys, each spliced in as text after its 6ba73b9 entry (no re-serialization; 121 insertions, 0 deletions). All nine are verbatim copies (parsed-JSON equality checked per entry).
  • README.md: review note for v0.39.3.

Contracts added (all melodic-software/ci-workflows/.github/workflows/<file>@ab83b01273026ab5c23c6f3b40e946d97a863fa2):

Reusable Secret-capable Workflow blob Commit-relative paths reached Contract
intake-triage.yml yes (CLAUDE_CODE_OAUTH_TOKEN) identical (ccc44c4) $/report-lane-outcome identical (cff090b) Verbatim copy
pr-review.yml yes (CLAUDE_CODE_OAUTH_TOKEN) identical (f0e042a) $/report-lane-outcome identical Verbatim copy
pr-review-security.yml yes (CLAUDE_CODE_OAUTH_TOKEN) identical (121c7e2) $/report-lane-outcome identical Verbatim copy
maintenance-sync-standards.yml yes (App client ID + private key) identical (b3e81ac) none Verbatim copy
intake-label-needs-triage.yml no identical (a0a7e39) none Verbatim copy
pr-scan-dependencies.yml no identical (5ced69e) none Verbatim copy
pr-audit-workflows.yml no identical (0a1a611) none Verbatim copy
pr-automerge-dependabot.yml no identical (7f65abe) none Verbatim copy
pr-run-checks.yml no identical (3f9622e) 13 $/ actions: 8 identical; detect-changes, gitleaks, check-exec-bit, check-machine-paths, check-comment-markers changed Verbatim copy, needs hand review

Hand review needed on pr-run-checks: its surface and workflow blob are identical, but five action trees it reaches have different object SHAs, so it is not an auto-copy under the README's tree-SHA rule. The change is the shfmt switch_case_indent re-indentation (ci-workflows#712): git diff --stat 6ba73b97 ab83b01 on those five directories shows 103 insertions and 103 deletions across superset-test.sh, check-exec-bit.sh, check-machine-specific-paths.sh, match.sh, scan.sh and scan.test.sh, and git diff -w on the same paths is empty. No action.yml changed.

The other release changes (check-managed-files Dependabot-skip hardening in ci-workflows#709, pr-require-checks.yml, pr-run-checks-go.yml golangci-lint bump in #713) are not reached by any registered reusable.

Verification

  • In ci-workflows, git rev-parse of each of the nine workflow blobs at 6ba73b97 and ab83b01 matches, and a recursive walk of every $/ and ./ reference shows the object SHAs in the table.
  • Per-entry check: each new key's parsed contract equals its 6ba73b9 predecessor.
  • npm run test:runner-policy (297/297), npm run lint:runner-policy, npm run test:concurrency-policy (31/31), npm run lint:concurrency-policy, npm run test:pr-convention-lockstep (82/82), npm run lint:dependabot-automerge-lockstep, npx biome check components/runner-policy/policy.json, markdownlint-cli2 components/runner-policy/README.md, and the lefthook pre-commit (editorconfig, typos, markdownlint, gitleaks, biome): all pass.
  • npm run lint:pr-convention-lockstep fails locally on live fleet fetches (unauthenticated HTTP 403s and caller drift in other repos); it reads no file this PR touches.

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Register the nine ci-workflows reusables at the v0.39.3 tag
ab83b01273026ab5c23c6f3b40e946d97a863fa2, each a verbatim copy of its
v0.39.0 entry. Every workflow blob is byte-identical between the two
tags; pr-run-checks reaches five $/ action trees that changed only by
shell re-indentation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T02:03:23.928911Z 22bf15e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 20s —— View job


Security review — /review:security-review

  • Gather context (diff, PR body, policy.json schema)
  • Check skip gate (policy file is security-relevant surface — reviewed, not skipped)
  • Verify each new contract entry against its claimed v0.39.0 predecessor
  • Check for instruction-surface deletions (none — change is purely additive)
  • Report findings

Scope reviewed: components/runner-policy/policy.json (+121) and components/runner-policy/README.md (+8), per git diff against origin/main.

What this is: nine new approvedReusableWorkflowContracts entries pinning melodic-software/ci-workflows reusable workflows at ab83b01273026ab5c23c6f3b40e946d97a863fa2, each inserted alongside its existing 6ba73b97... (v0.39.0) entry.

Verification performed: read every new entry (intake-triage.yml, pr-review.yml, pr-review-security.yml, intake-label-needs-triage.yml, pr-scan-dependencies.yml, maintenance-sync-standards.yml, pr-audit-workflows.yml, pr-automerge-dependabot.yml, pr-run-checks.yml) against its 6ba73b97... predecessor in policy.json. All nine are byte-identical to their predecessor — routing, allowedInputs, allowedSecrets, and allowedCallerPermissions/minimumCallerPermissions are unchanged. None of the three secret-capable entries (intake-triage.yml, pr-review.yml, pr-review-security.yml — all granting CLAUDE_CODE_OAUTH_TOKEN; maintenance-sync-standards.yml granting the App client ID/private key) widen the secret set or the caller permissions relative to what's already approved. No existing entry was modified or removed.

No security findings.

Out of this lane's scope, per the skill's routing to zizmor's advisory lane: whether the pinned SHA ab83b01273026ab5c23c6f3b40e946d97a863fa2 actually resolves to the workflow content the entries describe (supply-chain/pin-integrity verification) is not something this review can independently confirm — it requires checking the external ci-workflows repository, which the PR body already documents in detail (blob-SHA matches, the pr-run-checks.yml shfmt re-indentation explanation). That class of check belongs to zizmor, not this logic/trust-boundary lane.

No instruction-surface deletions in this diff — both files are purely additive, so the instruction-exception-register lens doesn't apply here.
· branch

@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 4m 55s —— View job


Code review complete

  • Gather context (diff, changed files, CLAUDE.md/REVIEW.md)
  • Review components/runner-policy/policy.json additions
  • Review components/runner-policy/README.md additions
  • Verify flagged pr-run-checks hand-review claim
  • Post findings (inline + summary)

Scope: git diff 0c71b19..22bf15e1 (the PR's actual single commit) — components/runner-policy/policy.json (+121) and components/runner-policy/README.md (+8).

Verified independently:

  • policy.json is valid JSON (jq empty), and has 27 top-level contract keys with no duplicate-key collisions (27 keys in the parsed object match 27 raw key occurrences in text).
  • Each of the 9 new @ab83b01273026ab5c23c6f3b40e946d97a863fa2 entries is byte-for-byte identical to its @6ba73b97b058602c4dd2bb6e2cce234d11011787 (v0.39.0) predecessor — confirmed by direct read of all 9 pairs, matching the PR's own claim.
  • components/runner-policy/runner-policy.test.mjs does not hardcode a contract count or enumerate specific SHAs it expects to be absent, so the 9 new entries don't risk breaking an existing snapshot/count assertion.
  • Markdown style: MD013 (line length) is disabled repo-wide, so the added prose lines raise no lint concern.

Not independently verified (author-claimed only, no network access to ci-workflows from this sandbox): the underlying workflow-blob/object-SHA equality claims against the ci-workflows repo, the npm run test:*/lint:* results, and the shfmt re-indentation explanation for pr-run-checks's five changed action trees. python3/node invocations were also blocked by the sandbox's approval gate, so I could not re-run the test suite myself.

Finding posted inline on components/runner-policy/README.md (lines 1142–1149): the new v0.39.3 paragraph omits the "signed off by hand" / "hand-reviewed" attestation sentence that every prior analogous paragraph in this same file includes for secret-capable entries and for entries with changed $/ action-tree SHAs (precedents at lines 1076, 1100, 1134). The PR body itself flags pr-run-checks as needing hand review, but that never makes it into the durable README record, and the file's own established convention treats secret-capable additions as never auto-copyable — which this paragraph's phrasing doesn't reflect.

No other correctness issues found in the data additions themselves; the change is a mechanical, well-scoped registration of already-reviewed contract shapes under a new tag.

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

claude-security-review has reviewed this pull request through a75a9ad; a later push is reviewed from there.

Comment thread components/runner-policy/README.md Outdated
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

claude-review has reviewed this pull request through a75a9ad; a later push is reviewed from there.

@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 35s —— View job


Code review complete

  • Gather context (incremental diff since 22bf15e1, prior review comments)
  • Review components/runner-policy/README.md changes
  • Verify against prior inline finding (hand-review attestation)
  • Post findings

Scope: incremental review per the lane's instructions — only the diff in components/runner-policy/README.md since 22bf15e1 (lines 1149–1151, +3/-1), which adds the sign-off sentence requested by the prior round's inline comment. components/runner-policy/policy.json is unchanged since 22bf15e1 and was reviewed then; not re-reviewed here.

Finding posted inline on components/runner-policy/README.md:1149-1151: the new sentence responds to the prior comment's request for a hand-review attestation, but not in the form every other precedent in this file uses. Precedents tie the sign-off to something checkable — a specific date (line 1100: signed off by hand on 2026-10-05) or an unqualified factual statement (lines 1077, 1134). The new sentence instead cites "the owner's standing approval of this migration's contract sign-offs" — a phrase that appears nowhere else in the repo, is circular (sign-offs attested via approval of sign-offs), names no date or reviewer, and drops the ci-workflows#712 reference the prior comment specifically asked for to explain the pr-run-checks shfmt re-indentation. That leaves a weaker audit trail than every other paragraph in this section.

No other issues found in this incremental change.
· branch

Comment thread components/runner-policy/README.md Outdated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R
@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 4s —— View job


Incremental code review complete

  • Gather context (incremental diff since 01889a5, prior review threads)
  • Review the changed lines in components/runner-policy/README.md
  • Verify the new attestation sentence against policy.json and the PR body's secret-capable table
  • Post findings

Scope: per the incremental lane header, only components/runner-policy/README.md:1149–1151 (+3/-1), the sign-off sentence added in the latest push responding to the prior round's two review threads. policy.json is unchanged since 01889a5 and was reviewed then.

Finding posted inline on components/runner-policy/README.md:1150-1151: the new sentence fixes the previous "standing approval" circularity the prior review flagged (it now names a concrete date, matching the file's established convention), but its parenthetical list of secret-capable entries — maintenance-sync-standards, pr-review, pr-review-security — omits intake-triage. The PR body's own contract table marks intake-triage.yml secret-capable (CLAUDE_CODE_OAUTH_TOKEN), and its v0.39.3 entry in policy.json (lines 40–56) confirms allowedSecrets.CLAUDE_CODE_OAUTH_TOKEN. That leaves one of the four secret-capable v0.39.3 entries without a recorded hand-review attestation in this durable file, which is the exact gap this sentence was added to close.

Note: ci-workflows#712 (the shfmt re-indentation basis for the pr-run-checks clearance, requested in the first review round) still isn't cited in this sentence or elsewhere in the paragraph — flagging for visibility, but not re-raising as a separate finding since the second review round's comment already covered it and the author may consider the date-stamped attestation sufficient without the issue reference.
· branch

Comment thread components/runner-policy/README.md Outdated
@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 54s —— View job


Incremental code review complete

  • Gather context (incremental diff since 759bd35, prior review threads)
  • Review the changed lines in components/runner-policy/README.md
  • Verify the intake-triage addition against policy.json and prior findings
  • Post findings

Scope: per the incremental lane header, only components/runner-policy/README.md:1150-1151 (+2/-1), the latest push's fix for the second review round's finding that intake-triage was missing from the hand-sign-off attestation's secret-capable list. policy.json is unchanged since 759bd35 and was reviewed then.

Verified independently: policy.json registers intake-triage.yml@ab83b01273026ab5c23c6f3b40e946d97a863fa2 (line 40) with allowedSecrets.CLAUDE_CODE_OAUTH_TOKEN (lines 49–51), confirming it is secret-capable as the prior review comment claimed. The new sentence now names all four secret-capable v0.39.3 entries — intake-triage, maintenance-sync-standards, pr-review, pr-review-security — matching the PR body's own contract table. The sentence retains the dated, non-circular phrasing (signed off by hand on 2026-10-09) that the second review round required, so both outstanding findings on this paragraph are now resolved.

No findings on this incremental change.

(The ci-workflows#712 citation flagged for visibility in an earlier round, but not re-raised as a blocking finding, still isn't present in this paragraph — not re-raising it again here either, since it wasn't part of this round's diff and the prior comment already left it as a non-blocking note.)
· branch

@kyle-sexton
kyle-sexton merged commit 1075d8f into main Oct 9, 2026
22 checks passed
@kyle-sexton
kyle-sexton deleted the feat/runner-policy-v0.39.3-contracts branch October 9, 2026 03:09
kyle-sexton added a commit that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins in
`.github/workflows/` from v0.39.0 (`6ba73b9`) to v0.39.3
(`ab83b01273026ab5c23c6f3b40e946d97a863fa2`).

## Fix

- Pin SHA and `# v0.39.3` comment on 29 lines across five workflows
(`maintenance-sync-standards`, `pr-automerge-dependabot`,
`pr-require-checks`, `pr-review`, `pr-review-security`). No input or
secret names change: every reusable workflow blob is byte-identical
between v0.39.0 and v0.39.3.
- Component sources under `components/` are untouched; managed callers
move through `maintenance-repin-ci-workflows` (#735 is its open PR,
currently at v0.39.1, and also touches the three sync-family callers
here).

## Verification

- actionlint passes on the changed workflows; every pinned path exists
at `ab83b01`; the lefthook pre-commit passed.
- Runner-policy contracts for `ab83b01` are in #742; this PR's
runner-policy check passes once #742 merges.

## Related

- #742 (v0.39.3 runner-policy contracts)
- #733 (v0.39.0 repin precedent)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/codex-plugins that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins from v0.39.0
(`6ba73b9`) to v0.39.3 (`ab83b01273026ab5c23c6f3b40e946d97a863fa2`), so
the fleet runs one release.

## Fix

Pin SHA and `# v0.39.3` comment only. Sync-managed callers and the
synced runner-policy contracts are left to the standards sync. Between
v0.39.0 and v0.39.3 no pinned path moved, every reusable workflow blob
is byte-identical, and the only `action.yml` that changed is
`check-managed-files` (Dependabot-skip hardening, ci-workflows#709). The
rest of the release is shell re-indentation (ci-workflows#712) and a
golangci-lint bump in `pr-run-checks-go` (ci-workflows#713).

## Verification

- Every repo-owned `uses: melodic-software/ci-workflows/...` pin is at
`ab83b01`; every pinned path exists at that commit.
- actionlint passes on the changed workflows; the diff touches pin lines
only; the lefthook pre-commit passed.
- The runner-policy contracts for `ab83b01` are in
melodic-software/standards#742. Until it merges and the standards sync
delivers them, this PR's runner-policy check fails on the new reusable
keys; that is expected.

## Related

- melodic-software/standards#742 (v0.39.3 runner-policy contracts)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/ci-workflows that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins from v0.39.0
(`6ba73b9`) to v0.39.3 (`ab83b01273026ab5c23c6f3b40e946d97a863fa2`), so
the fleet runs one release.

## Fix

Pin SHA and `# v0.39.3` comment only. Sync-managed callers and the
synced runner-policy contracts are left to the standards sync. Between
v0.39.0 and v0.39.3 no pinned path moved, every reusable workflow blob
is byte-identical, and the only `action.yml` that changed is
`check-managed-files` (Dependabot-skip hardening, ci-workflows#709). The
rest of the release is shell re-indentation (ci-workflows#712) and a
golangci-lint bump in `pr-run-checks-go` (ci-workflows#713).

## Verification

- Every repo-owned `uses: melodic-software/ci-workflows/...` pin is at
`ab83b01`; every pinned path exists at that commit.
- actionlint passes on the changed workflows; the diff touches pin lines
only; the lefthook pre-commit passed.
- The runner-policy contracts for `ab83b01` are in
melodic-software/standards#742. Until it merges and the standards sync
delivers them, this PR's runner-policy check fails on the new reusable
keys; that is expected.

## Related

- melodic-software/standards#742 (v0.39.3 runner-policy contracts)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/.github that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins from v0.39.0
(`6ba73b9`) to v0.39.3 (`ab83b01273026ab5c23c6f3b40e946d97a863fa2`), so
the fleet runs one release.

## Fix

Pin SHA and `# v0.39.3` comment only. Sync-managed callers and the
synced runner-policy contracts are left to the standards sync. Between
v0.39.0 and v0.39.3 no pinned path moved, every reusable workflow blob
is byte-identical, and the only `action.yml` that changed is
`check-managed-files` (Dependabot-skip hardening, ci-workflows#709). The
rest of the release is shell re-indentation (ci-workflows#712) and a
golangci-lint bump in `pr-run-checks-go` (ci-workflows#713).

## Verification

- Every repo-owned `uses: melodic-software/ci-workflows/...` pin is at
`ab83b01`; every pinned path exists at that commit.
- actionlint passes on the changed workflows; the diff touches pin lines
only; the lefthook pre-commit passed.
- The runner-policy contracts for `ab83b01` are in
melodic-software/standards#742. Until it merges and the standards sync
delivers them, this PR's runner-policy check fails on the new reusable
keys; that is expected.

## Related

- melodic-software/standards#742 (v0.39.3 runner-policy contracts)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/agent-plugins that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins from v0.39.0
(`6ba73b9`) to v0.39.3 (`ab83b01273026ab5c23c6f3b40e946d97a863fa2`), so
the fleet runs one release.

## Fix

Pin SHA and `# v0.39.3` comment only. Sync-managed callers and the
synced runner-policy contracts are left to the standards sync. Between
v0.39.0 and v0.39.3 no pinned path moved, every reusable workflow blob
is byte-identical, and the only `action.yml` that changed is
`check-managed-files` (Dependabot-skip hardening, ci-workflows#709). The
rest of the release is shell re-indentation (ci-workflows#712) and a
golangci-lint bump in `pr-run-checks-go` (ci-workflows#713).

## Verification

- Every repo-owned `uses: melodic-software/ci-workflows/...` pin is at
`ab83b01`; every pinned path exists at that commit.
- actionlint passes on the changed workflows; the diff touches pin lines
only; the lefthook pre-commit passed.
- The runner-policy contracts for `ab83b01` are in
melodic-software/standards#742. Until it merges and the standards sync
delivers them, this PR's runner-policy check fails on the new reusable
keys; that is expected.

## Related

- melodic-software/standards#742 (v0.39.3 runner-policy contracts)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/cursor-plugins that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins from v0.39.0
(`6ba73b9`) to v0.39.3 (`ab83b01273026ab5c23c6f3b40e946d97a863fa2`), so
the fleet runs one release.

## Fix

Pin SHA and `# v0.39.3` comment only. Sync-managed callers and the
synced runner-policy contracts are left to the standards sync. Between
v0.39.0 and v0.39.3 no pinned path moved, every reusable workflow blob
is byte-identical, and the only `action.yml` that changed is
`check-managed-files` (Dependabot-skip hardening, ci-workflows#709). The
rest of the release is shell re-indentation (ci-workflows#712) and a
golangci-lint bump in `pr-run-checks-go` (ci-workflows#713).

## Verification

- Every repo-owned `uses: melodic-software/ci-workflows/...` pin is at
`ab83b01`; every pinned path exists at that commit.
- actionlint passes on the changed workflows; the diff touches pin lines
only; the lefthook pre-commit passed.
- The runner-policy contracts for `ab83b01` are in
melodic-software/standards#742. Until it merges and the standards sync
delivers them, this PR's runner-policy check fails on the new reusable
keys; that is expected.

## Related

- melodic-software/standards#742 (v0.39.3 runner-policy contracts)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/claude-code-account-rotation that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins from v0.39.0
(`6ba73b9`) to v0.39.3 (`ab83b01273026ab5c23c6f3b40e946d97a863fa2`), so
the fleet runs one release.

## Fix

Pin SHA and `# v0.39.3` comment only. Sync-managed callers and the
synced runner-policy contracts are left to the standards sync. Between
v0.39.0 and v0.39.3 no pinned path moved, every reusable workflow blob
is byte-identical, and the only `action.yml` that changed is
`check-managed-files` (Dependabot-skip hardening, ci-workflows#709). The
rest of the release is shell re-indentation (ci-workflows#712) and a
golangci-lint bump in `pr-run-checks-go` (ci-workflows#713).

## Verification

- Every repo-owned `uses: melodic-software/ci-workflows/...` pin is at
`ab83b01`; every pinned path exists at that commit.
- actionlint passes on the changed workflows; the diff touches pin lines
only; the lefthook pre-commit passed.
- The runner-policy contracts for `ab83b01` are in
melodic-software/standards#742. Until it merges and the standards sync
delivers them, this PR's runner-policy check fails on the new reusable
keys; that is expected.

## Related

- melodic-software/standards#742 (v0.39.3 runner-policy contracts)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/claude-code-plugins that referenced this pull request Oct 9, 2026
No related issue: fleet repin to ci-workflows v0.39.3 in the GitHub
Actions conventions migration.

## Summary

Moves this repository's repo-owned ci-workflows pins from v0.39.0
(`6ba73b9`) and v0.39.1 (`c586acc`, the required `check-managed-files`
job) to v0.39.3 (`ab83b01273026ab5c23c6f3b40e946d97a863fa2`), so the
fleet runs one release.

## Fix

Pin SHA and `# v0.39.3` comment on 25 lines across five workflows, plus
the two repo-owned files that record the pin: the README "As of" line
for the `machine-specific-paths` local pre-flight, and the hand-verified
pin note in `check-docs-only-gate.sh`. Sync-managed callers and the
synced runner-policy contracts are left to the standards sync. Between
v0.39.0 and v0.39.3 no pinned path moved and every reusable workflow
blob is byte-identical; `check-managed-files` is identical between
v0.39.1 and v0.39.3.

## Verification

- Every repo-owned `uses: melodic-software/ci-workflows/...` pin is at
`ab83b01`; every pinned path exists at that commit.
- `aggregate-results`: `action.yml` is unchanged and `run.sh` differs
only by re-indentation (`git diff -w 6ba73b97 ab83b01` is empty), so the
hand-verified `contract-only` predicate note in
`check-docs-only-gate.sh` still holds at the new pin.
`check-machine-specific-paths.sh` likewise differs only by
re-indentation, so the README's standalone-run claim holds.
- actionlint passes on the changed workflows; the lefthook pre-commit
passed.
- The runner-policy contracts for `ab83b01` are in
melodic-software/standards#742. Until it merges and the standards sync
delivers them, this PR's runner-policy check fails on the new reusable
keys; that is expected.

## Related

- melodic-software/standards#742 (v0.39.3 runner-policy contracts)
- ci-workflows v0.39.3 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/cursor-plugins that referenced this pull request Oct 9, 2026
No related issue: finishes the ci-workflows v0.39.3 repin wave, whose
earlier PR in this repository missed these lines.

## Summary

Repins the remaining ci-workflows v0.38.2 (`cf316d12`) composite-action
pins in `pr-require-checks.yml` to v0.39.3 (`ab83b01`).

## Fix

The wave PR moved the v0.39.0 pin but left these v0.38.2 lines. They are
composite actions, so no runner-policy contract is involved. With these
merged, no repository pins v0.38.2, and its contracts can be retired in
standards.

## Verification

- Each action path exists at `ab83b01` (`gh api
repos/melodic-software/ci-workflows/contents/.github/actions/<path>/action.yml?ref=ab83b01`).
- `actionlint` on the workflow: no new findings; the only report is a
pre-existing SC2016 note on an unchanged step.
- The diff changes only `uses:` pin lines.

## Related

- ci-workflows v0.39.3 repin wave; contracts in
melodic-software/standards#742.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/agent-plugins that referenced this pull request Oct 9, 2026
No related issue: finishes the ci-workflows v0.39.3 repin wave, whose
earlier PR in this repository missed these lines.

## Summary

Repins the remaining ci-workflows v0.38.2 (`cf316d12`) composite-action
pins in `pr-require-checks.yml` to v0.39.3 (`ab83b01`).

## Fix

The wave PR moved the v0.39.0 pin but left these v0.38.2 lines. They are
composite actions, so no runner-policy contract is involved. With these
merged, no repository pins v0.38.2, and its contracts can be retired in
standards.

## Verification

- Each action path exists at `ab83b01` (`gh api
repos/melodic-software/ci-workflows/contents/.github/actions/<path>/action.yml?ref=ab83b01`).
- `actionlint` on the workflow: no new findings; the only report is a
pre-existing SC2016 note on an unchanged step.
- The diff changes only `uses:` pin lines.

## Related

- ci-workflows v0.39.3 repin wave; contracts in
melodic-software/standards#742.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T7GukBojtE99rLCPY7Cw3R

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Oct 10, 2026
## Related

Refs: melodic-software/ci-workflows#726
Refs: #748

Precedents: #742 (v0.39.3 contracts), #746 (retirement).

## Fix

Registers the nine ci-workflows reusables at the v0.39.8 tag
`594987abe8657a40bccc13d301f1f0d5cccb5348` in
`components/runner-policy/policy.json`. This unblocks the claude-lanes
repin in #748, whose policy lockstep declined, and the ci-runner repin,
whose pin tests need one SHA across every ci-workflows reference. The
v0.39.3 (`ab83b01`) entries stay until every consumer has repinned.

- `policy.json`: nine new keys, each spliced in as text after its
`ab83b01` entry (121 insertions, 0 deletions). No `workflow_call` input,
secret, workflow or job permission, or `runs-on` routing changed between
v0.39.3 and v0.39.8, so each contract equals its v0.39.3 entry.
- `README.md`: rollout note for v0.39.8.
- `runner-policy.test.mjs`: `REPINE_LANE_SHA_V0_39_8` and a copy-forward
assertion that each v0.39.8 entry equals its v0.39.3 entry and that
exactly nine v0.39.8 keys exist.

| Reusable | Change since v0.39.3 | Lockstep result |
| --- | --- | --- |
| `intake-label-needs-triage.yml` | none, blob identical | unchanged |
| `pr-scan-dependencies.yml` | none, blob identical | unchanged |
| `pr-audit-workflows.yml` | none, blob identical | unchanged |
| `pr-automerge-dependabot.yml` | none, blob identical | unchanged |
| `intake-triage.yml` | `claude-code-action` v1.0.241 to v1.0.245
(`6fed3ca`) | declined: `credentialReferences` |
| `pr-review.yml` | same bump, plus rate-limit summary wording |
declined: `credentialReferences` |
| `pr-review-security.yml` | same bump, plus rate-limit summary wording
| declined: `credentialReferences` |
| `maintenance-sync-standards.yml` | `setup-node` v7.0.0 to v7.1.0
(`949feb2`) | declined: `sync` job routes through `needs` |
| `pr-run-checks.yml` | blob identical; `$/markdownlint` takes the
`setup-node` bump | declined: commit-relative reference changed |

"unchanged" means the comparison found the surface unchanged. Because
any decline suppresses every lockstep write, all nine entries were
registered by hand, and the five declined ones were reviewed against the
v0.39.8 file content. `$/report-lane-outcome`, which the claude lanes
reach, changes only its rate-limit error message.

## Verification

- `laneSecuritySurfacesMatch` from `repin-policy-lockstep.mjs`, run
without writes for all nine paths from `ab83b01` to `594987a`, gave the
results in the table.
- Each v0.39.8 file's `workflow_call` surface (inputs, secrets, workflow
and job permissions, `runs-on`) was parsed and compared with v0.39.3:
unchanged for all nine.
- `npm run test:runner-policy` (298/298), `npm run lint:runner-policy`,
biome, markdownlint and the lefthook pre-commit all pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01TRhsMPSTMFo99ik7gkdgQt

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant