Found while design-reviewing #124, and pre-existing — it applies to the conflict-rebase force-push path that has shipped since rebase mode existed, not only to the new refresh input.
Empirical evidence
Harness run 29793647876 force-push rebased 13 PRs. Checking one:
PR #617 head: c3f5b3ea (committed 2026-07-21T01:39:27Z, by the rebase run)
check runs on that SHA: 0
Zero check runs on the new head. Commits pushed with the default GITHUB_TOKEN do not trigger workflows — GitHub's recursion guard — so every rebased PR's synchronize event fired into the void. The distributed rebase-translations.yml template passes secrets.GITHUB_TOKEN, and so do all five production target repos.
Why this is worse than it sounds
A rebased PR does not merely miss a CI refresh — it goes from stale-but-green to a head with no runs at all. With required status checks, that blocks merging until someone manually re-triggers. And the review workflow also does not re-run, so the force-pushed content (which conflict rebasing regenerates through the sync pipeline!) lands on the PR unreviewed. The re-translated content on those 13 harness PRs was never looked at by the review workflow.
Contrast with sync mode, which passes QUANTECON_SERVICES_PAT precisely so its PRs trigger the review workflow — the rebase template never adopted the same reasoning.
Options
- Template change:
rebase-translations.yml passes the machine-user PAT (or a GitHub App token) as github-token, mirroring the sync workflows. One-line change per repo; the org secret already exists. Recommended.
- Action-side warning: rebase mode logs a prominent warning when it detects it pushed with a token that cannot trigger workflows (not directly detectable — it can at best note the caveat unconditionally).
- Documentation only — #124 already adds the caveat to the action reference and the template comment. That is the floor, not the fix.
Note option 1 has a real trade-off to weigh: the machine-user PAT grants broader rights to the rebase workflow than GITHUB_TOKEN does, and rebase runs on pull_request: closed events in target repos. Worth a deliberate decision rather than a reflex adoption.
Relationship to #123 / #124
#124's rebase-stale-siblings refresh has the same property (its whole purpose is re-running checks, so under GITHUB_TOKEN it is a no-op with extra commits). The docs/template caveat shipped there; this issue tracks the actual token decision and the estate rollout, since the same choice governs both paths.
Found while design-reviewing #124, and pre-existing — it applies to the conflict-rebase force-push path that has shipped since rebase mode existed, not only to the new refresh input.
Empirical evidence
Harness run 29793647876 force-push rebased 13 PRs. Checking one:
Zero check runs on the new head. Commits pushed with the default
GITHUB_TOKENdo not trigger workflows — GitHub's recursion guard — so every rebased PR'ssynchronizeevent fired into the void. The distributedrebase-translations.ymltemplate passessecrets.GITHUB_TOKEN, and so do all five production target repos.Why this is worse than it sounds
A rebased PR does not merely miss a CI refresh — it goes from stale-but-green to a head with no runs at all. With required status checks, that blocks merging until someone manually re-triggers. And the review workflow also does not re-run, so the force-pushed content (which conflict rebasing regenerates through the sync pipeline!) lands on the PR unreviewed. The re-translated content on those 13 harness PRs was never looked at by the review workflow.
Contrast with sync mode, which passes
QUANTECON_SERVICES_PATprecisely so its PRs trigger the review workflow — the rebase template never adopted the same reasoning.Options
rebase-translations.ymlpasses the machine-user PAT (or a GitHub App token) asgithub-token, mirroring the sync workflows. One-line change per repo; the org secret already exists. Recommended.Note option 1 has a real trade-off to weigh: the machine-user PAT grants broader rights to the rebase workflow than
GITHUB_TOKENdoes, and rebase runs onpull_request: closedevents in target repos. Worth a deliberate decision rather than a reflex adoption.Relationship to #123 / #124
#124's
rebase-stale-siblingsrefresh has the same property (its whole purpose is re-running checks, so underGITHUB_TOKENit is a no-op with extra commits). The docs/template caveat shipped there; this issue tracks the actual token decision and the estate rollout, since the same choice governs both paths.