Patch Proposals
Patch Proposals are durable records for agent-produced code changes. They let BMO capture a proposed change, keep its provenance and review artifacts, run bounded review policy, and separate approval from actually mutating the workspace.
Maturity: Advanced operator and maintainer surface. Use it when BMO is collecting or reviewing proposed code changes from retained worktrees, arena candidates, mesh/A2A materialization, or imported diffs. It is not the normal first-run edit path.
What problem this solves
Section titled “What problem this solves”Agent-produced changes can arrive from several places: a local retained worktree, a verified arena candidate, mesh/A2A materialization, or a diff-only import. A chat summary is not enough to decide whether that change should land.
Patch Proposals give each candidate a durable record with changed paths, validation metadata, diff artifacts, lifecycle events, and review decisions. That lets an operator inspect, accept, reject, send back, materialize, apply, or merge selected paths without treating every producer as equally trusted.
Use it when
Section titled “Use it when”- a worker, mesh agent, arena candidate, or remote agent produced code that should be reviewed before it mutates the main workspace
- you need a queue of reviewable code changes scoped to a workstream
- a proposal needs Quality Gate or policy evidence before human review
- a diff-only result needs explicit local materialization before apply
- you want audit history for accept, reject, send-back, apply, conflict, or selected-path merge actions
Do not use it when
Section titled “Do not use it when”- you are making ordinary local edits in the active checkout
- a proposal only describes a learning or prompt asset from Shadow Evals
- the change has no readable diff artifact or materialized source
- live lifecycle actions are not allowed by the workstream policy
Lifecycle
Section titled “Lifecycle”Patch Proposal status is review and mutation state, not a single yes/no flag:
| Status | Meaning |
|---|---|
draft / submitted | A producer has created or submitted the proposal. |
judging | BMO is evaluating bounded review evidence. |
send_back | The proposal needs revision before review can continue. |
ready_for_human | The proposal can be inspected by an operator. |
accepted | The proposal is approved, but not yet applied. |
applying / applied | BMO is mutating, or has mutated, the workspace. |
rejected / superseded / conflicted | The proposal is not currently landing as-is. |
accepted means approval. applied means mutation succeeded. Quality Judge
and proposal-review policy can move a proposal toward review readiness, but
they do not merge code.
Review and apply
Section titled “Review and apply”Workstream proposal commands expose the operator path:
bmo workstream proposals review <proposal-id>bmo workstream proposals review <proposal-id> --jsonbmo workstream proposals decisions <proposal-id>Review can run in shadow mode or live mode depending on policy. Shadow mode records the action BMO would take, blockers, confidence, policy snapshot, and evidence snapshot without changing proposal state or workspace files.
Live actions remain app-service gated. Apply and selected-path merge are separate from accept, so approval can be audited before mutation.
Quality Gates
Section titled “Quality Gates”Patch Proposals can use Quality Gates as a review readiness signal. The judge sees bounded evidence: provenance, changed paths, diff artifact metadata, validation output, selected run events, risk notes, and optional workstream context.
Quality decisions are advisory or review-state transitions. A pass, warn,
or unavailable judge keeps the proposal reviewable. send_back requests
revision. escalate preserves review readiness unless conflict evidence marks
the proposal conflicted.
Patch proposals vs shadow eval proposals
Section titled “Patch proposals vs shadow eval proposals”BMO has two proposal families:
| Proposal kind | Source | Purpose |
|---|---|---|
| Patch Proposal | Agent-produced code change, worktree, arena candidate, A2A materialization, or imported diff | Review and optionally apply code changes. |
| Shadow Eval proposal | Comparable replay scorecards from Shadow Evals | Decide whether to promote a learned recipe, operating pack, or change contract reference. |
Both are append-only review artifacts. They do not share lifecycle authority: Patch Proposals own code-change review and apply state, while Shadow Eval proposals own learning/promotion decisions.
Implementation reference
Section titled “Implementation reference”The implementation reference covers the store, source kinds, artifacts, events, HTTP/API surfaces, materialization, and the focused validation lane:
task test:patch-proposals