Skip to content

The reconcile Run: bring a conflicting Proposal up to date #34

Description

@JacobStephens2

Problem

When a target's default branch advances, open Proposals for earlier tickets can fall behind. Tracewake already keeps mergeable Proposals current during each drain pass via gh pr update-branch (ADR 0023, #10). However, if an update produces merge conflicts (CONFLICTING or DIRTY), Tracewake refuses to force-update or mangle the branch; instead, it flags the Proposal on the Queue Board with a visual conflict badge (SPEC.md §6).

Today, a conflicting Proposal requires manual operator intervention. The reconcile Run automates bringing a conflicting Proposal up to date inside the microVM boundary.

What to build

A specialized Run type - the reconcile Run - dispatched when a Proposal has become conflicting against its base branch:

Intake & Dispatch: The Selector detects an open Proposal marked conflicting and dispatches a reconcile Run targeting that Proposal's working branch against the updated base.
MicroVM Conflict Resolution: The agent executes inside the standard microVM boundary, fetches the latest base branch, merges/rebases, and resolves the conflicting files.
Verification: The target's verification suite must pass cleanly after conflict resolution.
Push & Journal: Upon clean verification, the updated branch is pushed to the existing Proposal PR and journaled as proposal.reconciled.
Escalation: If conflicts cannot be resolved or the suite fails within contract bounds, the Proposal remains un-merged and is escalated to ready-for-human.
Invariants: Proposal-Only Output holds: the reconcile Run updates the draft pull request, never merging directly to the default branch.

Acceptance criteria

  • The Selector detects a conflicting open Proposal and can dispatch a reconcile Run for it
  • The reconcile Run executes inside the microVM boundary, merging the base branch and resolving conflicts
  • The target suite must pass before any push to the Proposal branch
  • A successful reconcile push is journaled (proposal.reconciled) and clears the board conflict flag
  • Failed reconciles or unresolvable conflicts escalate the issue to ready-for-human
  • Offline suite coverage verifies the reconcile dispatch, resolution failure escalation, and journaling

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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