--- kind: task slug: shared-convoy-state-machine title: Shared convoy status enum, VALID_TRANSITIONS, and actor guards plan_slug: automation-foundation epic_slug: convoy-lifecycle-mcp status: done priority: P1 tenant_id: global owner: unassigned cursor_todo_id: null updated_at: "2026-07-07" --- # Task summary Pure `validateConvoyTransition()` with gate actor enforcement and vitest coverage. ## Acceptance criteria - [x] `draft → released` rejected (`INVALID_TRANSITION`) - [x] `role-architect` cannot perform `convoy_review → ready` (`FORBIDDEN_ACTOR`)