bug(workflows): inside a called reusable github.event_name is workflow_call, so the landing-tree replay and the commit-subject scan never run #1548

Open
opened 2026-10-05 00:48:39 +02:00 by claude · 0 comments
Member

Two steps in the gate reusables key on github.event_name == 'pull_request'. Inside a called reusable on this forge, github.event_name reads workflow_call, so neither step has ever run in a reusable. The PR payload is still there: github.event.pull_request.base.sha and .head.sha resolve.

Measured

On PR #1547's first head 96650fd, 2026-10-04, from job logs read in the browser:

  • replay onto the landing base (#1195) was skipped in every called reusable:
    • manifest-check (run 19755);
    • fragment-check coverage and density (run 19753);
    • workflow-parse-check's reusable job (run 19762).
  • It ran only in jobs that are not reusables: toolkit-self-gates (run 19761) and the parse wrapper's self job.
  • The register gate logged commit-subject scan skipped: event is 'workflow_call', not pull_request.

The code on main 44bdba5:

  • reusable-register-check.yml:124: the replay step is under if: github.event_name == 'pull_request'.
  • reusable-register-check.yml:267: rt register-check --git-log BASE..HEAD is under if: ${{ inputs.check_commit_subjects == 'true' && github.event_name == 'pull_request' }}.
  • The other gate reusables have the same replay condition.

#1530 had already listed the replay as out of scope ("triggered by event: workflow_call"). This issue gives it, and the subject scan, a home.

Why it matters

  • The gates grade the PR head, not the landing tree. #1195 measured 78 of 142 merged PRs (54%) landing a SHA other than the one tested. Every adopter on the old reusables has never had the replay. Toolkit-self is partly covered: toolkit-self-gates replays, and base-divergence-check refuses a stale base.
  • The commit-subject scan was never live. Turning it on is a policy question: a hit on a PR commit can only be cleared by rewriting that commit, and AGENTS.md section 15 forbids amend and force-push for review fixes.

Decided (operator, 2026-10-04)

  • reusable-pr-gates.yml (#1541, PR #1547) runs the landing-tree replay, keyed on the pull_request payload, not on event_name.
  • It does NOT run the commit-subject scan. That waits for the policy decision below.
  • The six old reusables are not patched. #1542 deletes them. Adopters get the replay by migrating to reusable-pr-gates.yml; old tags keep the dead steps.

Acceptance criteria

  • PR #1547 runs the replay inside the reusable, which its job log shows, and does not run the commit-subject scan. — DONE @ #1547 (855b34e, reviewed as 855b34e). Run 19818 logs landing-tree replay: PASS inside the reusable, and register-check: file scan only; the commit-subject scan is not part of this gate (#1548). The scan's step and input are removed, and a bats arm guards it.
  • Policy for the commit-subject scan, decided by the operator. Either keep it off, and remove the dead input and step in #1542, or turn it on with a remedy for a hit that does not need a history rewrite, such as an allowlist or a scan of new commits only.
  • Each adopter issue under #1530 notes that migrating turns on the landing-tree replay. A PR whose branch no longer applies cleanly will then go red with "rebase locally". — DONE 2026-10-05: tmux-tell#963, storey#69, ember#166, cellblock#181 and purser#63 each carry the replay note.
Two steps in the gate reusables key on `github.event_name == 'pull_request'`. Inside a called reusable on this forge, `github.event_name` reads `workflow_call`, so neither step has ever run in a reusable. The PR payload is still there: `github.event.pull_request.base.sha` and `.head.sha` resolve. ## Measured On PR #1547's first head `96650fd`, 2026-10-04, from job logs read in the browser: - **`replay onto the landing base (#1195)` was skipped in every called reusable:** - `manifest-check` (run 19755); - `fragment-check` coverage and density (run 19753); - `workflow-parse-check`'s reusable job (run 19762). - **It ran only in jobs that are not reusables:** `toolkit-self-gates` (run 19761) and the parse wrapper's `self` job. - **The register gate logged** `commit-subject scan skipped: event is 'workflow_call', not pull_request`. The code on main `44bdba5`: - `reusable-register-check.yml:124`: the replay step is under `if: github.event_name == 'pull_request'`. - `reusable-register-check.yml:267`: `rt register-check --git-log BASE..HEAD` is under `if: ${{ inputs.check_commit_subjects == 'true' && github.event_name == 'pull_request' }}`. - The other gate reusables have the same replay condition. #1530 had already listed the replay as out of scope ("triggered by event: workflow_call"). This issue gives it, and the subject scan, a home. ## Why it matters - **The gates grade the PR head, not the landing tree.** #1195 measured 78 of 142 merged PRs (54%) landing a SHA other than the one tested. Every adopter on the old reusables has never had the replay. Toolkit-self is partly covered: `toolkit-self-gates` replays, and `base-divergence-check` refuses a stale base. - **The commit-subject scan was never live.** Turning it on is a policy question: a hit on a PR commit can only be cleared by rewriting that commit, and AGENTS.md section 15 forbids amend and force-push for review fixes. ## Decided (operator, 2026-10-04) - **`reusable-pr-gates.yml` (#1541, PR #1547) runs the landing-tree replay**, keyed on the pull_request payload, not on `event_name`. - **It does NOT run the commit-subject scan.** That waits for the policy decision below. - **The six old reusables are not patched.** #1542 deletes them. Adopters get the replay by migrating to `reusable-pr-gates.yml`; old tags keep the dead steps. ## Acceptance criteria - [x] PR #1547 runs the replay inside the reusable, which its job log shows, and does not run the commit-subject scan. — DONE @ #1547 (`855b34e`, reviewed as `855b34e`). Run 19818 logs `landing-tree replay: PASS` inside the reusable, and `register-check: file scan only; the commit-subject scan is not part of this gate (#1548).` The scan's step and input are removed, and a bats arm guards it. - [ ] Policy for the commit-subject scan, decided by the operator. Either keep it off, and remove the dead input and step in #1542, or turn it on with a remedy for a hit that does not need a history rewrite, such as an allowlist or a scan of new commits only. - [x] Each adopter issue under #1530 notes that migrating turns on the landing-tree replay. A PR whose branch no longer applies cleanly will then go red with "rebase locally". — DONE 2026-10-05: tmux-tell#963, storey#69, ember#166, cellblock#181 and purser#63 each carry the replay note.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
frankenbit/release-toolkit#1548
No description provided.