Skip to content

chore(claude-lanes): re-pin the review lanes to ci-workflows v0.10.2 - #1990

Merged
kyle-sexton merged 2 commits into
mainfrom
chore/repin-claude-lanes-v0.10.2
Aug 8, 2026
Merged

chore(claude-lanes): re-pin the review lanes to ci-workflows v0.10.2#1990
kyle-sexton merged 2 commits into
mainfrom
chore/repin-claude-lanes-v0.10.2

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Warning

Do not merge before melodic-software/standards#337 has merged AND its sync
PR has landed here.
CI on this branch is expected RED until then — see
"Ordering" below. The do-not-merge label is applied deliberately.

Summary

Re-pins both Claude lane callers from ci-workflows v0.9.1 (c136b27f) to
v0.10.2 (e94438746c300b02385a7f8a2a2dcd19a7f4ad4a).

These two callers are locally-owned in the standards sync manifest, not
managed — this is the org's one PUBLIC caller target, and runner-policy forbids
a public repository from referencing the governed select-runner indirection —
so the pins are bumped here rather than arriving by sync.

Neither reusable changes its input names, secret key set, runs-on, or
caller-permission surface against v0.9.1, so no caller edit beyond the pin is
required.

Ordering — this PR is blocked

.github/standards/runner-policy/policy.json is a MANAGED materialization and
is deliberately not touched here. It still approves only c136b27f, and
the gate fails closed on the new SHA. Measured locally on this branch:

$ node .github/standards/runner-policy/runner-policy.mjs --root .
.github/workflows/claude-review.yml#review: runner-target-contract: the reusable
  workflow path@SHA has no reviewed runner-input contract (auto-approval
  declined: inputs changed since the previously reviewed ...@1d3762c2)
.github/workflows/claude-security-review.yml#security-review: runner-target-contract:
  the reusable workflow path@SHA has no reviewed runner-input contract
  (auto-approval declined: inputs changed since the previously reviewed ...@66073e58)
exit 1

The same command on the unmodified base exits 0, so this is caused by the pin
bump and not pre-existing.

melodic-software/standards#337 adds the v0.10.2 contracts to the policy source.
Merging it triggers the sync cascade (sync.yml runs on push to main),
which delivers the updated policy.json here. Once that sync PR merges, re-run
CI on this branch and it goes green.

Test plan

  • node .github/standards/runner-policy/runner-policy.mjs --root . — currently
    exits 1 by design (above); expected to exit 0 after the policy sync lands.
  • No other repository check is affected: the change is two uses: pin lines.

Related

No linked issue.

This PR closes nothing. Related, not closed:

@kyle-sexton kyle-sexton added the do-not-merge Hard merge gate: do not merge while applied. label Aug 8, 2026
@cursor

cursor Bot commented Aug 8, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown

Claude has reviewed this PR 3 times. The lane skips further automatic reviews after 5; deleting this comment resets the count.

Both lane callers here are `locally-owned` in the standards sync manifest —
this is the org's one PUBLIC caller target, and runner-policy forbids a public
repository from referencing the governed select-runner indirection — so the
pins are bumped in this repository rather than arriving by sync.

v0.10.2 is `e94438746c300b02385a7f8a2a2dcd19a7f4ad4a`. Neither reusable
changes its input names, secret key set, `runs-on`, or caller-permission
surface against v0.9.1, so the callers need no edit beyond the pin.

BLOCKED on the policy sync. `.github/standards/runner-policy/policy.json` is a
MANAGED materialization and is deliberately not touched here; it still approves
only `c136b27f`, so the gate fails closed on the new SHA:

    runner-target-contract: the reusable workflow path@SHA has no reviewed
    runner-input contract (auto-approval declined: inputs changed since the
    previously reviewed ...@1d3762c2)

melodic-software/standards#337 adds the v0.10.2 contracts. This branch goes
green only once that merges and its sync PR delivers the updated policy.json
here.

Ref: melodic-software/standards#337

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kyle-sexton
kyle-sexton force-pushed the chore/repin-claude-lanes-v0.10.2 branch from cce06a8 to 47a6401 Compare August 8, 2026 07:41
kyle-sexton added a commit to melodic-software/claude-lane-sandbox that referenced this pull request Aug 8, 2026
)

## Summary

Re-pins this fixture's Claude review caller from ci-workflows v0.9.1
(`c136b27f`) to v0.10.2 (`e94438746c300b02385a7f8a2a2dcd19a7f4ad4a`).

The workflow's own header records why this is a hand re-pin:

> LOCALLY OWNED — not a sync-manifest target and not a standards-managed
file.
> This fixture is deliberately outside the caller wave […] Repin it by
hand
> when the fleet pin moves.

## Contract surface

The reusable's input names, secret key set, `runs-on`, and
caller-permission
surface are unchanged against v0.9.1, so the caller needs no edit beyond
the
pin line.

## No policy dependency

Unlike the claude-code-plugins caller bump, this repository carries no
`.github/standards/runner-policy/` materialization and no runner-policy
gate,
so this PR has no ordering dependency on the standards policy approval
and can
merge on its own.

## Related

No linked issue.

This PR closes nothing. Related, not closed:

- melodic-software/standards#337 — the policy approval and component
re-pin.
- melodic-software/claude-code-plugins#1990 — the locally-owned caller
bump
  (blocked on the sync).
- melodic-software/ci-workflows#355 — the change released as v0.10.2.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
kyle-sexton added a commit to melodic-software/standards that referenced this pull request Aug 8, 2026
…337)

## Summary

Re-pins the Claude review and security lane callers from ci-workflows
v0.9.1
(`c136b27f`) to v0.10.2 (`e94438746c300b02385a7f8a2a2dcd19a7f4ad4a`),
and
approves that revision in `runner-policy`.

The scheduled `claude-lanes-repin` job has resolved v0.10.2 on every run
since
2026-08-05 and opened nothing — no re-pin App credential is provisioned,
so it
warns and directs a re-pin by hand:

> `components/claude-lanes/` is behind ci-workflows v0.10.2, but no
re-pin App
> credential is configured, so no pull request was opened. […] Until
then,
> re-pin by hand.

This is that hand re-pin. The component rewrite was produced by
`repin-callers.sh apply v0.10.2 <sha>` — the same subject the scheduled
job
runs — rather than by editing the pins directly, so the script's own
count
guard covered the rewrite.

## Contract surface

Both lane reusables carry an **unchanged** workflow-call contract
against
v0.9.1:

- identical input names on `claude-review.yml` and
`claude-security-review.yml`
- identical secret key set and `required:` flags
- no change to `runs-on` or to any caller-permission surface
- `select-runner.yml` is **byte-identical** between the two tags

The new `approvedReusableWorkflowContracts` entries are therefore
verbatim
copies of their `c136b27f` predecessors under a new SHA key, and the
selector
reference stays owner-scoped to `melodic-software`.

The lane deltas are internal to the reusables: the review lane moves its
inline-comment tool grant out of the caller-replaceable `claude-args`
default
into the compose step (so replacing that default can no longer drop it),
adds a
scoped `Bash(gh pr diff:*)` grant in its place, routes findings to
line-anchored review comments, and narrows its retry gate to count real
assistant turns. The one security-relevant delta — routing every
line-anchorable finding through the inline-comment tool widens the
surface on
which untrusted diff content reaches a rendered comment carrying a
one-click-applicable suggestion block — sits inside the reusable, not on
the
contract, and is recorded in the runner-policy README alongside the
`contents: read` precedent.

## Scope

`standards` is the manifest **source**, not a sync target, so its
repo-local
`.github/workflows/claude-review.yml` is re-pinned here alongside the
components.

- Managed consumers (dotfiles, github-iac, medley, provisioning) receive
the
  bump through the normal sync cascade — not hand-edited.
- The one `locally-owned` caller set (claude-code-plugins) is re-pinned
in its
  own repository.
- `claude-lane-sandbox` is a hand-wired fixture and is re-pinned
separately.

## Test plan

- `components/runner-policy`: `node --test runner-policy.test.mjs` —
242/242
pass. The selector-allowlist assertion required the new revision's
constant
(`INLINE_COMMENT_LANE_SHA`) and list entry; that is the only test
change.
- `npm run lint:runner-policy` (the self-gate CI runs) — `Runner policy
passed.`
- `harness/shell/run-tests.sh` — 23 passed, 0 failed, 3 skipped. This
includes
`components/claude-lanes/claude-lanes.test.sh` (30/30), which
materializes
the re-pinned component into every managed consumer and actionlints the
  result.

## Related

No linked issue.

This PR closes nothing. Related, not closed:

- melodic-software/ci-workflows#355 — the change released as v0.10.2.
- melodic-software/claude-code-plugins#1990 — the locally-owned caller
bump,
which is BLOCKED until this PR merges and its sync PR delivers the
updated
  `policy.json` there.
- melodic-software/claude-lane-sandbox#3 — the hand-wired fixture bump
  (independent; no policy dependency).

Operator note: no `CLAUDE_LANES_REPIN_APP_CLIENT_ID` /
`CLAUDE_LANES_REPIN_APP_PRIVATE_KEY` is provisioned, which is why this
re-pin
is manual. Provisioning them would let the scheduled job open this PR
itself.

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kyle-sexton kyle-sexton removed the do-not-merge Hard merge gate: do not merge while applied. label Aug 8, 2026
@kyle-sexton
kyle-sexton merged commit 4e14fb0 into main Aug 8, 2026
33 of 34 checks passed
@kyle-sexton
kyle-sexton deleted the chore/repin-claude-lanes-v0.10.2 branch August 8, 2026 08:11
kyle-sexton added a commit that referenced this pull request Aug 12, 2026
)

Fixes #1995

Since the ci-workflows v0.10.2 repin (#1990),
`.github/claude-security-paths` is matched as root-anchored gitignore
patterns via `git check-ignore`, not GitHub Actions `paths:` syntax. The
header now states gitignore semantics and that `!`, `?`, and `+` are
forbidden.

## Related

- #1990

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.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