One full dispatch: clone → read the manifest from the clone (so the
clone's own adapter config governs, not the workstation's) → spawn its
command → parse the outcome → harvest-then-dispose (ADR-3).
A command failure, a timeout, or a manifest that could not be read
produced nothing to harvest — the workspace is removed immediately
(AC4.1/AC4.2). A successful command harvests the role's own pathspecs
(harvestPathspecs) to a branch and pushes it to origin — including
whatever the harness itself already committed (review-04.md round-2 F8:
every dispatch prompt instructs the harness to commit its own work, so
base is captured before the harness runs, not after, or a committing
harness's work is silently dropped exactly like the original defect).
Disposal is gated on that push landing, never on the harness returning
— a failed push keeps the workspace and reports failure instead, so the
control plane retries rather than silently losing paid, completed work.
One full dispatch: clone → read the manifest from the clone (so the clone's own adapter config governs, not the workstation's) → spawn its command → parse the outcome → harvest-then-dispose (ADR-3).
A command failure, a timeout, or a manifest that could not be read produced nothing to harvest — the workspace is removed immediately (AC4.1/AC4.2). A successful command harvests the role's own pathspecs (harvestPathspecs) to a branch and pushes it to origin — including whatever the harness itself already committed (review-04.md round-2 F8: every dispatch prompt instructs the harness to commit its own work, so
baseis captured before the harness runs, not after, or a committing harness's work is silently dropped exactly like the original defect). Disposal is gated on that push landing, never on the harness returning — a failed push keeps the workspace and reports failure instead, so the control plane retries rather than silently losing paid, completed work.