You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Migrate review-federation orchestration into the Build engine (currently orchestrator._run_review_federation).
Migrate dependency resolution (_unblock_dependents, _cascade_fail_dependents) into decide() transitions.
Partial multi-action dispatch error handling (BLOCKER before real side effects):decide() can return multiple actions in one transition. The dispatch shell must define what happens when action N succeeds and action N+1 fails — idempotent effect handlers (safe to retry), at-least-once delivery with ack tracking, and a defined recovery state. Without this, a mid-batch failure leaves the ticket in an inconsistent state. Design must be reviewed before any real side effects (agent spawn, worktree merge) are wired through the seam.
Serialized coordinator performance gate (BLOCKER before production use): the initial Build coordinator serializes all ticket processing through one decide() loop. Define an explicit acceptance criterion for maximum ticket throughput before production use — e.g. "N concurrent tickets complete within T seconds on the fixture corpus." Per-ticket concurrency is a post-MVP optimization, but the serialized path must have a measured baseline before any production routing relies on it.
Epic 4 — Build engine (MVP)
Migrate the orchestrator god-object onto the pure
decide()state machine.Tasks:
orchestrator._run_review_federation)._unblock_dependents,_cascade_fail_dependents) intodecide()transitions.decide()can return multiple actions in one transition. The dispatch shell must define what happens when action N succeeds and action N+1 fails — idempotent effect handlers (safe to retry), at-least-once delivery with ack tracking, and a defined recovery state. Without this, a mid-batch failure leaves the ticket in an inconsistent state. Design must be reviewed before any real side effects (agent spawn, worktree merge) are wired through the seam.decide()loop. Define an explicit acceptance criterion for maximum ticket throughput before production use — e.g. "N concurrent tickets complete within T seconds on the fixture corpus." Per-ticket concurrency is a post-MVP optimization, but the serialized path must have a measured baseline before any production routing relies on it.Gate: Spike 1 (#201, done). Depends on: CORE + Substrate + Runtime + Build bones.
Parent: #191 · Plan ref:
architecture/plan.mdEpic 4 — MVP