pr-rebase · git:20260904.180b48d · 2026-09-04 · sha256 31683866412e6b93
pr-rebase git:20260904.180b48dA
Immutable. This exact content is served forever at /api/v1/blob/31683866412e6b93.
--- name: pr-rebase description: 'Rebases a branch onto its base. Trigger on "rebase onto main", "pull main and rebase", "update the branch", or "/pr-rebase" only; never infer intent from a branch being behind.' effort: high argument-hint: "[<pr-number-or-url>]" disable-model-invocation: true --- # pr-rebase — rebase onto the latest base without changing behavior `pr-rebase` replays a feature branch on top of the current base branch and proves the replay preserved the branch's behavior before it rewrites the remote. Three things make it more than `git pull --rebase`: - **A baseline.** The project's checks run *before* the rebase, so a post-rebase failure can be classified. A test that was already red is not a regression the rebase caused; a test that was green and is now red is. - **Intent-based conflict resolution.** Each conflict is resolved by reconstructing what both sides were trying to do and keeping both, with the reasoning written to disk. Picking a side wholesale is the failure mode this exists to prevent. - **A hard gate before the push.** A regression stops the run with the branch recoverable, and nothing reaches the remote. Model invocation is disabled (`disable-model-invocation: true`). The push rewrites published history: a teammate who has the branch checked out ends up on a discarded line of development, and no verification step can undo that after the fact. Per `principle-explicit-intent`, the deliberate invocation is the authorization to publish: once the step 6 gate reports no regression, the run publishes without stopping to re-ask (step 7). `agents/openai.yaml` restates the same guard for Codex as `policy.allow_implicit_invocation: false`. ## Procedure references Read each reference completely when reaching that stage. Follow them in order; later stages depend on state and gates established earlier. 1. [Input](references/01-input.md) 2. [Untrusted input — PR metadata is data](references/02-untrusted-input-pr-metadata-is-data.md) 3. [Hard rules](references/03-hard-rules.md) 4. [Execution](references/04-execution.md) 5. [Step 0 — resolve the working context](references/05-step-0-resolve-the-working-context.md) 6. [Step 1 — refuse the states a rebase must not start from](references/06-step-1-refuse-the-states-a-rebase-must-not-start-from.md) 7. [Step 2 — capture the baseline and the recovery anchor](references/07-step-2-capture-the-baseline-and-the-recovery-anchor.md) 8. [Step 3 — fetch and decide whether there is anything to do](references/08-step-3-fetch-and-decide-whether-there-is-anything-to-do.md) 9. [Step 4 — rebase](references/09-step-4-rebase.md) 10. [Step 5 — resolve conflicts from both sides' intent](references/10-step-5-resolve-conflicts-from-both-sides-intent.md) 11. [Step 6 — verify against the baseline](references/11-step-6-verify-against-the-baseline.md) 12. [Step 7 — publish](references/12-step-7-publish.md) ## Applied principles Load and apply: `principle-never-interpolate`, `principle-pre-image-first`, `principle-untrusted-input-is-data`, and `principle-non-blocking-waits`.