What happened
The main → next back-merge did not run on the 0.8.7 promotion.
Run 32567839391 failed at
gh pr create:
GraphQL: The 'QAtlasHub' organization forbids access via a fine-grained personal access
tokens if the token's lifetime is greater than 366 days. Please adjust your token's
lifetime at https://github.com/settings/personal-access-tokens/14727750
.github/workflows/backmerge.yml:38 passes GH_TOKEN: ${{ secrets.RELEASE_PLZ_TOKEN }}.
The PAT was minted with a lifetime longer than 366 days, which was fine under the personal
account and is refused by the QAtlasHub org policy. Org-migration fallout, same family
as #392, but a separate secret and a separate fix.
Blast radius — small, and it is not the release path
RELEASE_PLZ_TOKEN appears in exactly one workflow:
$ grep -rn RELEASE_PLZ_TOKEN .github/workflows/
.github/workflows/backmerge.yml:14 # (comment)
.github/workflows/backmerge.yml:38 GH_TOKEN: ${{ secrets.RELEASE_PLZ_TOKEN }}
release-plz.yml publishes over OIDC (no token) and uses secrets.GITHUB_TOKEN for
the GitHub Release step, so tagging and publishing are unaffected by this. (They are
blocked by #392 for an unrelated reason.)
Nothing was lost on the 0.8.7 promotion either: git diff next main was empty — only the
merge commit faa3958 was missing from next. Opened by hand as #425.
Fix — pick one
- Re-mint the PAT with a lifetime ≤ 366 days and update the
RELEASE_PLZ_TOKEN repo
secret. Smallest change, keeps the current behaviour. Needs re-minting again within a
year, and this failure mode returns silently when it lapses.
- A GitHub App installation token (
actions/create-github-app-token). No expiry
treadmill and org-policy-clean, but it means creating and installing an App.
secrets.GITHUB_TOKEN. Free, but a PR opened with it does not trigger
workflows, so the back-merge PR would never get the test checks that next requires
and could not be merged. Not viable as-is.
(1) or (2). I would take (2) if this is meant to keep working unattended.
Worth fixing regardless of which
The job failed with a raw GraphQL error and the notice steps above it never ran, so from
the Actions list it just reads backmerge / failure. An explicit check — or trapping the
gh pr create failure and emitting ::error::back-merge PR could not be opened: <reason>; open it by hand from main → next — would make the next occurrence self-describing instead
of needing a log dive.
What happened
The
main → nextback-merge did not run on the 0.8.7 promotion.Run 32567839391 failed at
gh pr create:.github/workflows/backmerge.yml:38passesGH_TOKEN: ${{ secrets.RELEASE_PLZ_TOKEN }}.The PAT was minted with a lifetime longer than 366 days, which was fine under the personal
account and is refused by the QAtlasHub org policy. Org-migration fallout, same family
as #392, but a separate secret and a separate fix.
Blast radius — small, and it is not the release path
RELEASE_PLZ_TOKENappears in exactly one workflow:release-plz.ymlpublishes over OIDC (no token) and usessecrets.GITHUB_TOKENforthe GitHub Release step, so tagging and publishing are unaffected by this. (They are
blocked by #392 for an unrelated reason.)
Nothing was lost on the 0.8.7 promotion either:
git diff next mainwas empty — only themerge commit
faa3958was missing fromnext. Opened by hand as #425.Fix — pick one
RELEASE_PLZ_TOKENreposecret. Smallest change, keeps the current behaviour. Needs re-minting again within a
year, and this failure mode returns silently when it lapses.
actions/create-github-app-token). No expirytreadmill and org-policy-clean, but it means creating and installing an App.
secrets.GITHUB_TOKEN. Free, but a PR opened with it does not triggerworkflows, so the back-merge PR would never get the
testchecks thatnextrequiresand could not be merged. Not viable as-is.
(1) or (2). I would take (2) if this is meant to keep working unattended.
Worth fixing regardless of which
The job failed with a raw GraphQL error and the notice steps above it never ran, so from
the Actions list it just reads
backmerge / failure. An explicit check — or trapping thegh pr createfailure and emitting::error::back-merge PR could not be opened: <reason>; open it by hand from main → next— would make the next occurrence self-describing insteadof needing a log dive.