Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion merge-queue/administration/metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Conclusion counts are an important signal to potential bottlenecks or underlying

Conclusions are tagged with a reason to give further insights into how merges pass or fail in the queue. You can show or hide conclusions of a particular reason by using the **+ Add** button.

<table><thead><tr><th width="167">Category</th><th width="248">Reason</th><th>Description</th></tr></thead><tbody><tr><td>✅ Pass</td><td>Merged by Trunk</td><td>Passed all tests in Merge Queue and merged by Trunk</td></tr><tr><td>✅ Pass</td><td>Merged manually</td><td>User manually merged the PR in Git</td></tr><tr><td>❌ Failure</td><td>Test run timeout</td><td>User-defined timeout for tests exceeded</td></tr><tr><td>❌ Failure</td><td>Failed Tests</td><td>Required test failed while testing the PR in the merge queue</td></tr><tr><td>❌ Failure</td><td>Merge conflict</td><td>A (git) merge conflict encountered</td></tr><tr><td>❌ Failure</td><td>Config parsing failure</td><td>Malformed <code>trunk.yaml</code> that couldn't be parsed</td></tr><tr><td>❌ Failure</td><td>Config bad version</td><td>Invalid version field in <code>trunk.yaml</code></td></tr><tr><td>❌ Failure</td><td>Config bad required statuses</td><td>Failed to parse required statuses in <code>trunk.yaml</code></td></tr><tr><td>❌ Failure</td><td>No required statuses</td><td>No source for required tests was found in <code>trunk.yaml</code> or branch protection settings</td></tr><tr><td>❌ Failure</td><td>GitHub API Failed</td><td>GitHub returned an error to us that could not be resolved while processing the PR</td></tr><tr><td>❌ Failure</td><td>PR updated at merge time</td><td>PR updated as Trunk was attempting to merge it</td></tr><tr><td>🚫 Cancel</td><td>Canceled by user</td><td>PR explicitly canceled by user</td></tr><tr><td>🚫 Cancel</td><td>PR closed</td><td>PR closed (not merged)</td></tr><tr><td>🚫 Cancel</td><td>PR pushed to</td><td>New commits pushed to the PR branch while in the merge queue</td></tr><tr><td>🚫 Cancel</td><td>PR draft</td><td>PR was converted to a draft, which cannot be merged</td></tr><tr><td>🚫 Cancel</td><td>PR base branch changed</td><td>Base branch of PR in the merge queue changed</td></tr><tr><td>🚫 Cancel</td><td>Admin requested</td><td>Trunk employee canceled PR during a support session (extreme cases)</td></tr><tr><td>🚫 Cancel</td><td>A PR in the stack had its base branch changed</td><td>A member of the PR stack had its base branch changed while in the queue (stacked PRs only)</td></tr><tr><td>🚫 Cancel</td><td>A PR in a PR stack was closed</td><td>A member of the PR stack was closed while in the queue (stacked PRs only)</td></tr><tr><td>🚫 Cancel</td><td>PR was merged as part of a different stack</td><td>The PR was already merged through a different stack (stacked PRs only)</td></tr><tr><td>🚫 Cancel</td><td>Part of this PR's stack was pushed to</td><td>New commits were pushed to a PR in the stack while in the queue (stacked PRs only)</td></tr></tbody></table>
<table><thead><tr><th width="167">Category</th><th width="248">Reason</th><th>Description</th></tr></thead><tbody><tr><td>✅ Pass</td><td>Merged by Trunk</td><td>Passed all tests in Merge Queue and merged by Trunk</td></tr><tr><td>✅ Pass</td><td>Merged manually</td><td>User manually merged the PR in Git</td></tr><tr><td>❌ Failure</td><td>Test run timeout</td><td>User-defined timeout for tests exceeded</td></tr><tr><td>❌ Failure</td><td>Failed Tests</td><td>Required test failed while testing the PR in the merge queue</td></tr><tr><td>❌ Failure</td><td>Merge conflict</td><td>A (git) merge conflict encountered</td></tr><tr><td>❌ Failure</td><td>Config parsing failure</td><td>Malformed <code>trunk.yaml</code> that couldn't be parsed</td></tr><tr><td>❌ Failure</td><td>Config bad version</td><td>Invalid version field in <code>trunk.yaml</code></td></tr><tr><td>❌ Failure</td><td>Config bad required statuses</td><td>Failed to parse required statuses in <code>trunk.yaml</code></td></tr><tr><td>❌ Failure</td><td>No required statuses</td><td>No source for required tests was found in <code>trunk.yaml</code> or branch protection settings</td></tr><tr><td>❌ Failure</td><td>GitHub API Failed</td><td>GitHub returned an error to us that could not be resolved while processing the PR</td></tr><tr><td>❌ Failure</td><td>PR updated at merge time</td><td>PR updated as Trunk was attempting to merge it</td></tr><tr><td>🚫 Cancel</td><td>Canceled by user</td><td>PR explicitly canceled by user</td></tr><tr><td>🚫 Cancel</td><td>PR closed</td><td>PR closed (not merged)</td></tr><tr><td>🚫 Cancel</td><td>PR pushed to</td><td>New commits pushed to the PR branch while in the merge queue</td></tr><tr><td>🚫 Cancel</td><td>PR draft</td><td>PR was converted to a draft, which cannot be merged</td></tr><tr><td>🚫 Cancel</td><td>PR base branch changed</td><td>Base branch of PR in the merge queue changed</td></tr><tr><td>🚫 Cancel</td><td>Admin requested</td><td>Trunk employee canceled PR during a support session (extreme cases)</td></tr></tbody></table>

### Time in queue

Expand Down
20 changes: 0 additions & 20 deletions merge-queue/chrome-extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,26 +52,6 @@ Once a PR is in the queue, the extension panel updates in real time as it moves
* **Tests Passed** - waiting for upstream PRs before merging
* **Merged**, **Failed** - terminal states

### Stacked pull requests

{% hint style="info" %}
Stacked PR queue support requires the [Trunk Sudo GitHub App](../setup-and-administration/trunk-sudo-app.md) and the `/trunk stack` workflow. Stacks submitted one PR at a time with `/trunk merge` are tracked individually, not as a group.
{% endhint %}

When a stack is queued with [`/trunk stack`](using-the-queue/stacked-pull-requests.md#merge-the-stack-as-one-unit), the extension shows a stack-aware view on every member PR page.

**What the panel shows:**

* **Stack path** — the full list of PRs in the stack from tip to base, so you can see where your PR sits within the group.
* **Stacked PR chip** — a link to the combined test PR Trunk creates for the stack (labeled **Stacked PR #N**). Click it to open the stacked PR on GitHub and inspect its CI status.

**Actions:**

* **Add stack to queue** — enqueues the entire stack as one unit. Clicking it on any member PR page submits the same stack.
* **Remove** — removes the whole stack from the queue.

Re-enqueueing after a remove works the same way: click **Add stack to queue** on any member PR page to resubmit the stack.

### Rolling the Extension out to an entire Org

Chrome admins can install the Trunk extension for everyone in a Google Workspace organization using the [Chrome Web Store ID](https://chromewebstore.google.com/detail/liggeliamkammmieidmmfmmdnjilabgn) `liggeliamkammmieidmmfmmdnjilabgn`. See Google's [Automatically install apps and extensions](https://support.google.com/chrome/a/answer/6306504?hl=en) guide for the admin console steps.
Expand Down
4 changes: 2 additions & 2 deletions merge-queue/getting-started/configure-branch-protection.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ This ruleset encodes the rules that determine when a PR is ready to merge. Trunk
2. Target the same protected branch (e.g., `main`) with the same single-include targeting.
3. Under **Rules → Branch rules**, add the rules that gate mergeability — typically **Require a pull request before merging** and **Require status checks to pass**. Add others (signed commits, linear history, etc.) as your team requires.
4. **Do not** add the Trunk GitHub App (`trunk-io`) to the bypass list. The queue relies on GitHub reporting the PR as not-yet-ready until these rules pass.
5. Optionally, add **Trunk Sudo** to the bypass list as **Exempt** if you use [Force merge](../using-the-queue/force-merge.md) or stacked PRs. See the [Trunk Sudo page](../../setup-and-administration/trunk-sudo-app.md) for the full guidance.
5. Optionally, add **Trunk Sudo** to the bypass list as **Exempt** if you use [Force merge](../using-the-queue/force-merge.md). See the [Trunk Sudo page](../../setup-and-administration/trunk-sudo-app.md) for the full guidance.
6. Save.

<figure><img src="../../.gitbook/assets/merge-github-ruleset-prs.png" alt="GitHub ruleset with Require a pull request before merging and Require status checks to pass enabled, Trunk.io not on the bypass list"><figcaption>Ruleset #2: Trunk is <em>not</em> on the bypass list, so the queue respects these requirements when admitting PRs.</figcaption></figure>
Expand Down Expand Up @@ -160,7 +160,7 @@ Before submitting your first PR to the queue, confirm:
* [ ] Ruleset #2 targets only your protected branch and does **not** bypass Trunk.
* [ ] Every other Branch ruleset visible at the organization level and on this repository either does not match `trunk-temp/**/*`/`trunk-merge/**/*`, or explicitly excludes both patterns.
* [ ] (If using [Trunk Sudo](../../setup-and-administration/trunk-sudo-app.md)) Trunk Sudo is on Ruleset #1's bypass list as **Exempt**.
* [ ] (If using [Trunk Sudo](../../setup-and-administration/trunk-sudo-app.md) **and** Force merge or stacked PRs) Trunk Sudo is also on Ruleset #2's bypass list as **Exempt**.
* [ ] (If using [Trunk Sudo](../../setup-and-administration/trunk-sudo-app.md) **and** Force merge) Trunk Sudo is also on Ruleset #2's bypass list as **Exempt**.

#### Migrating from Classic rules to Rulesets <a href="#migrating-from-classic-rules-to-rulesets" id="migrating-from-classic-rules-to-rulesets"></a>

Expand Down
3 changes: 0 additions & 3 deletions merge-queue/using-the-queue/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ These pages cover the daily operations that developers perform when working with
[**Submit and cancel pull requests**](reference.md)\
How to add PRs to the queue via GitHub comments, CLI, or UI, and remove them when needed.

[**Work with stacked pull requests**](stacked-pull-requests.md)\
Manage dependent PRs that build on each other.

### Monitor and troubleshoot

[**Monitor queue status**](monitor-queue-status.md)\
Expand Down
2 changes: 1 addition & 1 deletion merge-queue/using-the-queue/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ trunk login
trunk merge <pr-number>
```

Admins can also use [`/trunk merge --force`](force-merge.md) to push a PR through the queue when branch protection isn't satisfied. To submit a chain of dependent PRs as a single unit, see [`/trunk stack`](stacked-pull-requests.md#merge-the-stack-as-one-unit).
Admins can also use [`/trunk merge --force`](force-merge.md) to push a PR through the queue when branch protection isn't satisfied.

We offer similar commands for cancellation.

Expand Down
7 changes: 1 addition & 6 deletions setup-and-administration/trunk-sudo-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ description: >-

Trunk Sudo is a second Trunk GitHub App, separate from the [main Trunk GitHub App](github-app-permissions.md). Its only purpose is to programmatically merge pull requests while bypassing GitHub branch protections, on behalf of Trunk features that need that capability.

Trunk Sudo is a shared prerequisite for bypass-dependent features. Today it powers [Force merge](../merge-queue/using-the-queue/force-merge.md) and [stacked pull requests with `/trunk stack`](../merge-queue/using-the-queue/stacked-pull-requests.md#merge-the-stack-as-one-unit).
Trunk Sudo is a prerequisite for bypass-dependent features. Today the only such feature is [Force merge](../merge-queue/using-the-queue/force-merge.md).

{% hint style="info" %}
**Trunk Sudo is optional.** You only need to install it if you plan to use a feature that requires it. If you don't use any bypass-dependent features, you can skip this setup.
Expand Down Expand Up @@ -116,11 +116,6 @@ This permission includes access to update GitHub Action workflow files.

Required so Trunk Sudo can merge PRs that modify files under `.github/`. GitHub blocks any merge that touches workflow files unless the merging actor has this permission.

### Features that use Trunk Sudo

* [Force merge](../merge-queue/using-the-queue/force-merge.md) — admins push a PR through Merge Queue even when branch protection isn't satisfied.
* [Stacked pull requests with `/trunk stack`](../merge-queue/using-the-queue/stacked-pull-requests.md#merge-the-stack-as-one-unit) — combine a chain of dependent PRs into a single stacked PR that moves through the merge queue as one unit.

### Next steps

→ [**Force merge**](../merge-queue/using-the-queue/force-merge.md) — use the Trunk Sudo app to merge PRs through the queue that don't satisfy branch protection.
Expand Down
1 change: 0 additions & 1 deletion summary.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
* [Submit and cancel pull requests](merge-queue/using-the-queue/reference.md)
* [Monitor queue status](merge-queue/using-the-queue/monitor-queue-status.md)
* [Handle failed pull requests](merge-queue/using-the-queue/handle-failed-pull-requests.md)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Orphaned page — merge-queue/using-the-queue/stacked-pull-requests.md still exists

After this PR, no markdown file links to stacked-pull-requests.md (the entry is removed from summary.md, using-the-queue/README.md, reference.md, chrome-extension.md, trunk-sudo-app.md, and configure-branch-protection.md), but the 12 KB source file is still in the repo and still describes /trunk stack as a supported feature.

If the goal of this PR is to retire the feature from the docs, the page should either be deleted or replaced with a short deprecation/redirect notice. Leaving an orphan markdown file means:

  • The page is still buildable/indexable by GitBook and search engines via direct URL.
  • It still cross-links to other pages (Trunk Sudo, priority merging, batching, predictive testing), making it look like a live, supported workflow.
  • Old bookmarks and Slack links land on documentation that contradicts the rest of the site.

If keeping the URL alive intentionally (e.g. for SEO/inbound links), consider trimming the file down to a short "this feature has been removed" notice instead. Otherwise git rm it.

Fix this →

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

intentional

* [Work with stacked pull requests](merge-queue/using-the-queue/stacked-pull-requests.md)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the page still remains but we don't link to it

* [Emergency pull requests](merge-queue/using-the-queue/emergency-pull-requests.md)
* [Force merge](merge-queue/using-the-queue/force-merge.md)
* [Integration for Slack](merge-queue/integration-for-slack.md)
Expand Down
Loading