State Machine System
Last Updated: 2025-01-16
Primary Source: docs/project_status.md
Service Files: backend/src/services/stateMachineInstance.service.ts, backend/src/services/stateMachineApproval.service.ts, backend/src/services/stateMachineEvidence.service.ts, backend/src/services/stateMachineAction.service.ts, backend/src/services/stateMachineRitual.service.ts, backend/src/services/stateMachineAuto.service.ts
Models: backend/src/models/stateMachineInstance.model.ts, backend/src/models/stateMachineTask.model.ts, backend/src/models/stateMachineArtifact.model.ts, backend/src/models/stateMachineApproval.model.ts
State Machines: backend/src/stateMachines/
Overview
The State Machine System enables structured workflow management through state machines that define ritual processes for documentation, triage, and other collaborative tasks. The system supports guard-based transitions, automatic advancement, ritual checklists, and integration with the Coder Orchestrator for multi-agent task execution.
Architecture
State Machine Flow
State Machine Definitions
Available State Machines
1. Documentation Flow (documentation_flow_v1)
Purpose: ASO Documentation & Task Drafting workflow
States:
intake- Signal capture, gather requirementstriage- Break down tasks, assign codersexecution- Build & iterate, coders implementintegration- Merge & ritual, review and mergecompleted- Terminal state, archived
Protocol: observer_onboarding_v1
2. Triage Flow (triage_flow_v1)
Purpose: Incident Triage workflow
States:
triage_intake- Capture incident signaltooling_analysis- Choose coders/tools, outline planexecution_fix- Coders execute and reportstabilization- Verify service health, log gratitudecompleted- Terminal state
Protocol: triage_support_v1
State Machine Instance
Model
Table: state_machine_instances
Fields:
id- Primary key (UUID)machineId- State machine definition IDprotocolId- Associated protocol IDstate- Current statecontext- Instance context (JSONB)channelId- Discord channel (if applicable)guildId- Discord guild (if applicable)createdByUserId- Creator user IDupdatedByUserId- Last updater user ID
Instance Lifecycle
Creation:
createInstance(payload)- Validates machine definition
- Sets initial state
- Creates timeline event
- Emits entry checklist
Transition:
transitionInstance(payload)- Validates transition exists
- Evaluates guards
- Updates state
- Runs transition actions
- Emits new entry checklist
- Creates timeline event
Completion: Terminal state reached
- Emits project completion event
- Archives instance context
Guard System
Guard Types
1. Observer Approval (observerApproval)
Purpose: Requires observer approval before transition
Service: stateMachineApproval.service.ts
Process:
- Observer records approval via
/observer-approveor API - Approval stored in
state_machine_approvalstable hasApproval()checks if guard is satisfied- Auto-advance triggered if guard satisfied
API: POST /api/protocol/instances/:id/approvals
2. Tests or Demo Evidence (testsOrDemoAttached)
Purpose: Requires verification evidence (tests, demos) before transition
Service: stateMachineEvidence.service.ts
Process:
- Evidence recorded via
/observer-evidenceor API - Evidence stored as timeline event with
verification_evidencetype hasEvidence()checks if evidence exists- Auto-advance triggered if guard satisfied
API: POST /api/protocol/instances/:id/evidence
Guard Evaluation
Function: evaluateGuard(guard, instance)
Process:
- Checks guard type
- Calls appropriate service (
hasApproval,hasEvidence) - Returns boolean (guard satisfied or not)
- Throws helpful error if guard not satisfied
Auto-Advance System
Concept
When guards are satisfied (approval or evidence recorded), the system automatically checks if any transitions are unblocked and advances the state machine without manual intervention.
Implementation
Service: stateMachineAuto.service.ts
Function: autoAdvanceOnGuard(instanceId, guard)
Process:
- Finds transitions guarded by satisfied guard
- Verifies guard is actually satisfied
- Executes transition automatically
- Returns transition result
Trigger Points:
- After approval recorded (
stateMachineApproval.service.ts) - After evidence recorded (
stateMachineEvidence.service.ts)
State Actions
Action Types
1. announceExecutionStart
Purpose: Triggers Coder Orchestrator to start task execution
Process:
- Creates timeline event
- Sends Discord notification
- Calls
kickoffExecutionOrchestrator(instance) - Orchestrator assigns personas and executes tasks
2. collectArtifacts
Purpose: Requests verification artifacts for review
Process:
- Creates timeline event
- Sends Discord notification
- Creates GitHub issue (if configured)
- Records protocol memory
3. Custom Actions
Purpose: Extensible action system for workflow automation
Process:
- Action defined in state machine definition
- Executed during transition
- Can trigger notifications, API calls, etc.
Ritual Checklists
Concept
Every time a state machine enters a new state, the system automatically posts a checklist of required entry tasks and guards, ensuring observers know exactly what to deliver before advancing.
Implementation
Service: stateMachineRitual.service.ts
Function: emitStateEntryChecklist(instance, definition)
Format:
📋 **State Machine Title :: State Name**
State description
**Entry Tasks**
• Task 1
• Task 2
**Guards Blocking Exit**
• Transition description (guard_name)Trigger Points:
- After instance creation
- After state transition
Task and Artifact Management
Tasks
Model: state_machine_tasks
Fields:
id- Primary key (UUID)instanceId- State machine instance IDtitle- Task titledescription- Task descriptionstatus- Task status (pending, in_progress, completed, blocked)assignedPersonaId- Assigned coder personaassignedHuman- Assigned human (optional)notes- Task notesmetadata- Additional context (JSONB)
Artifacts
Model: state_machine_artifacts
Fields:
id- Primary key (UUID)instanceId- State machine instance IDtaskId- Associated task IDpersonaId- Persona that created artifactsummary- Artifact summarycontent- Artifact content (code, documentation, etc.)status- Artifact status (draft, ready)reviewStatus- Review status (pending, approved, rejected)reviewedByUserId- Reviewer user IDreviewNotes- Review notesmetadata- Additional context (JSONB)
Integration with Coder Orchestrator
Execution Flow
State Machine Enters Execution State
announceExecutionStartaction triggered- Orchestrator called with instance context
Orchestrator Processes Tasks
- Seeds tasks from instance context
- Assigns personas based on specialties
- Executes tasks concurrently
- Creates artifacts from outputs
Artifacts Linked to Instance
- Artifacts stored with instance ID
- Review workflow enabled
- Approval triggers state transitions
Data Flow
API Endpoints
Instance Management
POST /api/protocol/instances- Create state machine instanceGET /api/protocol/instances/:id- Get instanceGET /api/protocol/instances- List instancesPOST /api/protocol/instances/:id/transition- Transition state
Guard Management
POST /api/protocol/instances/:id/approvals- Record approvalGET /api/protocol/instances/:id/approvals- List approvalsPOST /api/protocol/instances/:id/evidence- Record evidence
Task Management
GET /api/protocol/instances/:id/tasks- List tasksPUT /api/protocol/tasks/:taskId- Update taskPOST /api/protocol/tasks/:taskId/rerun- Rerun task
Artifact Management
GET /api/protocol/instances/:id/artifacts- List artifactsGET /api/protocol/artifacts/:artifactId- Get artifactPOST /api/protocol/artifacts/:artifactId/review- Review artifact
Orchestrator
POST /api/protocol/instances/:id/orchestrate- Trigger orchestrator
Discord Commands
Instance Management
/observer-instance instance_id:xxx- View instance status/observer-transition instance_id:xxx target_state:xxx- Transition state
Guard Management
/observer-approve instance_id:xxx- Record approval/observer-evidence instance_id:xxx description:"..." proofUrl:"..."- Record evidence
Task Management
/observer-artifacts instance_id:xxx- View tasks and artifacts/observer-assign task_id:xxx persona_id:xxx status:pending- Reassign task
Artifact Management
/observer-artifact-view artifact_id:xxx- View artifact content/observer-artifact-review artifact_id:xxx approve:true- Review artifact
Orchestrator
/observer-orchestrate instance_id:xxx- Trigger orchestrator
Source Files
Primary Sources:
backend/src/services/stateMachineInstance.service.ts- Instance managementbackend/src/services/stateMachineApproval.service.ts- Approval systembackend/src/services/stateMachineEvidence.service.ts- Evidence systembackend/src/services/stateMachineAction.service.ts- Action executionbackend/src/services/stateMachineRitual.service.ts- Ritual checklistsbackend/src/services/stateMachineAuto.service.ts- Auto-advancebackend/src/stateMachines/- State machine definitions
Related Files:
backend/src/services/coderOrchestrator.service.ts- Task executionbackend/src/services/actionGithub.service.ts- GitHub integrationbackend/src/services/protocolMemory.service.ts- Ritual memories
Related Documentation
- Coder Orchestrator System - Multi-agent task execution
- Auto-Flow System - Workflow intelligence
- Protocol Routing - Protocol assignment
- 03-PLATFORMS/Discord-Bot.md - Discord integration
- 00-OVERVIEW.md - Complete system overview