Skip to content

Call label-correspondence at the governance pin, and test that it stays there - #2076

Open
realmarcin wants to merge 3 commits into
mainfrom
fix/2067-label-correspondence-pin
Open

realmarcin wants to merge 3 commits into
mainfrom
fix/2067-label-correspondence-pin

Conversation

@realmarcin

@realmarcin realmarcin commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Why

.github/workflows/label-correspondence.yaml says: "Keep this at the same immutable CLAW revision as scripts/.vendored_canon_ref." It called the reusable workflow at c8b8f89e, while the pin is 76c1ebee. Nothing enforced the rule, and it had already drifted once (#2067).

What changes

Why the move changes no behaviour

In claw, .github/workflows/label-correspondence-reusable.yaml is byte-identical at c8b8f89e and 76c1ebee. Its only checkout is actions/checkout of this repository, so no other claw content is read at the new ref.

Verification

  • The new test fails on the previous ref, quoted or not, and passes on the pin.
  • Nine synthetic cases cover the variants that review found: quoted, commented and duplicate calls, a differently-cased owner, and a stale step-level claw action.
  • just pr-sanity reports 0 findings, which includes the 40-character-SHA rule for uses:.
  • tests/test_merge_queue_workflows.py, test_audit_required_workflows.py, test_vendored_sync_workflow.py and test_workflow_dependency_paths.py all pass.
  • This PR touches the workflow, so label-correspondence runs on it at the new ref. That run is the end-to-end check.

Fixes #2067. Fixes #2077. Fixes #2078. Raised in the adversarial review of the CultureBotAI/culturebotai-claw#729 re-pin PRs.

🤖 Generated with Claude Code

…ys there

The workflow says to keep its claw ref at scripts/.vendored_canon_ref,
but it called the reusable workflow at c8b8f89ecf while the pin is
76c1ebeea3 (#2067). Nothing enforced the rule, and it had already drifted
once. The reusable workflow is byte-identical at both commits and checks
out only this repository, so the move changes no behaviour.

tests/test_label_correspondence_pin.py now fails when the ref and the pin
differ. It fails on the previous ref and passes on the pin. claw's
pin-coupling already reports this file on a re-pin, so the re-pin commit
changes both.

Fixes #2067.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The review of #2076 found that the test's regex matched only an unquoted
`uses:` line with no trailing comment (#2077). A quoted or commented second
call at a stale ref passed, and quoting or commenting the one correct call
failed with "found []".

The test now parses the workflow. It collects every job- and step-level
`uses` that names culturebotai-claw, requires each to be at the pin, and
requires exactly one label-correspondence call. Seven cases drive each
distinction:
- a quoted good call;
- a commented good call;
- a quoted stale second call;
- a commented stale second call;
- a stale step-level claw action;
- no call at all;
- the plain good call.
The real-file test still fails on the previous ref, quoted or not.

Fixes #2077.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second review of #2076 found that the pin test matched the owner and
repository literally (#2078). GitHub resolves them case-insensitively, so
a stale call written as `culturebotai/culturebotai-claw/...@<old>` would
run but escaped both the pin check and the duplicate count.

The owner and repository are now compared in one case. The path and ref
stay exact, since git paths are case-sensitive. Messages still show each
call as written. Two new cases cover this: a differently-cased stale
second call is reported, and a differently-cased correct call is
accepted. Comparing case-sensitively fails both.

Fixes #2078.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant