Skip to content

Merge run tracer bullet: thirdshift merge <Issue URL> merges a clean PR #91

Closed

Description

@JacobStephens2

Parent

#26

What to build

The tracer bullet for the Merge run. thirdshift merge <Issue URL> (alias thirdshift --merge <Issue URL>) runs everything a Run does. Once the pull request is open, ready for review, mergeable and green, it does the Self-merge: thirdshift merges the pull request into the Base branch with a merge commit, merging only the head commit whose CI it watched (gh pr merge --merge --match-head-commit <sha>, never --auto or --delete-branch; see ADR-0004).

On success the Run exits 0, prints only the pull request URL on stdout, and its last stderr line is PR <url> is merged. For now, a merge that fails is an ordinary Failed run; later tickets refine that. thirdshift <Issue URL> is unchanged. The agent's prompts are identical in both modes.

Acceptance criteria

  • thirdshift merge <Issue URL> and thirdshift --merge <Issue URL> start a Merge run.
  • thirdshift <Issue URL> --merge, or anything after the URL, is rejected with exit 2 and the help text on stderr.
  • thirdshift help lists merge as its own line.
  • A clean Merge run merges with a merge commit on exactly the head CI was watched on, exits 0, prints the PR URL on stdout, and ends stderr with PR <url> is merged.
  • A Merge run's implement prompt is identical to a normal Run's.
  • A normal Run's behaviour and output are unchanged.
  • The fake gh supports pr merge: it makes a real merge commit of the head into the base on the test origin, marks the PR merged, closes the linked issue only when the base is the default branch, and refuses when --match-head-commit doesn't match the head.
  • The README documents the merge form and the Self-merge step.

Blocked by

None (can start immediately)

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions