Skip to content

ci(nightly): push with yngatech-nightly app token - #92

Merged
incognitojam merged 1 commit into
mainfrom
ci/nightly-app-token
Aug 11, 2026
Merged

ci(nightly): push with yngatech-nightly app token#92
incognitojam merged 1 commit into
mainfrom
ci/nightly-app-token

Conversation

@incognitojam

Copy link
Copy Markdown
Collaborator

Problem

Fork Nightly authenticates its pushes through the checkout token, which was secrets.FORK_RELEASE_TOKEN — a personal access token. The "PR + CI" ruleset on main has exactly one bypass actor: the yngatech-nightly GitHub App. The PAT has no bypass, so the promotion push to main fails with GH013. Run 31514413207 demonstrated the full failure shape: release published, nightly promoted, main promotion rejected.

Fix

Mint an installation token for the yngatech-nightly app at the start of each job that pushes, and check out with it:

  • Both the prepare job (its alignment step can force-push main on no-change days, plus the nightly-candidate push) and the release job (nightly, the daily backup ref, and main) get an app_token step using actions/create-github-app-token, SHA-pinned to v3.2.0 per repo convention, followed by token: ${{ steps.app_token.outputs.token }} on the checkout.
  • Minting per job is deliberate: installation tokens expire after one hour, and the desktop builds sit between prepare and release. Noted in step comments.
  • v3 of the action deprecates app-id in favor of client-id, which is what the pre-provisioned YNGATECH_NIGHTLY_APP_CLIENT_ID variable holds, so the step uses client-id directly (verified against the action's v3.2.0 action.yml).

Cameron pre-provisioned the app, the YNGATECH_NIGHTLY_APP_CLIENT_ID variable, and the YNGATECH_NIGHTLY_APP_PRIVATE_KEY secret; only the workflow wiring was missing. No other behavior changes. After this lands, FORK_RELEASE_TOKEN is referenced nowhere in .github/ — these two checkouts were its only uses.

Verified with actionlint (only the pre-existing Blacksmith runner-label warning) and by tracing every push in the workflow to one of the two app-token checkouts; the remaining github.token uses (release notes, draft release, issue edit) touch no protected refs.


Built by Fable 5 (claude-fable-5) on Claude Code.

Pushes authenticated with FORK_RELEASE_TOKEN, a personal access token
with no bypass on main's PR + CI ruleset, so the promotion push to main
was rejected with GH013 after the release published. Mint an
installation token for the yngatech-nightly GitHub App — the ruleset's
bypass actor — at the start of each pushing job and check out with it
instead. Minted per job because installation tokens expire after one
hour and the desktop builds sit between prepare and release. The app
and its credentials were already provisioned; only the workflow was
missing.
@github-actions github-actions Bot added size:S vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 11, 2026
@incognitojam
incognitojam merged commit 0cb5da5 into main Aug 11, 2026
9 of 10 checks passed
@incognitojam
incognitojam deleted the ci/nightly-app-token branch August 11, 2026 18:36
incognitojam added a commit that referenced this pull request Aug 11, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 11, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 12, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 12, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 12, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 13, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 13, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 13, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 13, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 14, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 14, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
incognitojam added a commit that referenced this pull request Aug 15, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 18, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 18, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 18, 2026
## Problem

The `source_ref` dispatch that fixed the conflicted patch stack promoted
a resolution cut before today's workflow PRs merged, rolling `main`'s
workflow state back: #87 (promote every verified run), #90 (require
workflow jobs directly), #91 (`source_ref` input), and #92
(yngatech-nightly app token) were dropped. The moved-main lease only
guards movement during a run, not whether the provided stack already
contained everything on `main`.

## Fix

Cherry-pick the four squash commits back onto the promoted stack, in
original merge order. The restored `.github/workflows/fork-nightly.yml`,
`.github/workflows/fork-ci.yml`, and `docs/operations/fork-nightly.md`
are byte-identical to their pre-rollback state (verified with `git diff`
against the old `main` tip).

A follow-up should make `source_ref` runs fail when the provided stack
is missing patches present on `main` (patch-id comparison in prepare).

---
Written by an agent (Claude Code, claude-fable-5).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant