5.7 KiB
5.7 KiB
State Machines — Agent Control Center
Версия: 0.1.0-draft | Статус: Draft
Run State Machine
┌─────────┐
│ QUEUED │
└────┬────┘
│ dispatch
┌────▼────┐
│ PENDING │
└────┬────┘
│ connector accepts
┌────▼────┐
│ RUNNING │◄──────────────┐
└────┬────┘ │
┌──────────────┼──────────────┐ │
▼ ▼ ▼ │
┌──────────┐ ┌───────────┐ ┌──────────┐ │
│COMPLETED │ │ FAILED │ │CANCELLED │ │
└──────────┘ └───────────┘ └──────────┘ │
│
┌──────────┐ │
│ PAUSED │───────────────────────────────┘
└──────────┘ resume
Переходы:
| Из | В | Условие |
|---|---|---|
| QUEUED | PENDING | Scheduler dispatch |
| PENDING | RUNNING | Connector accept |
| PENDING | FAILED | Timeout / connector offline |
| RUNNING | COMPLETED | Agent finished successfully |
| RUNNING | FAILED | Error / timeout |
| RUNNING | CANCELLED | User cancel / policy |
| RUNNING | PAUSED | User pause / preemption |
| PAUSED | RUNNING | User resume |
| PAUSED | CANCELLED | User cancel while paused |
Инварианты:
- COMPLETED/FAILED/CANCELLED — терминальные, не могут переходить
- Только один Run активен на Agent одновременно (MUST)
- CANCELLED → terminal; cleanup resources within 30s (SHOULD)
Task State Machine
┌─────────┐ ┌──────────┐ ┌───────────┐
│ BACKLOG │────►│ TODO │────►│ IN_PROGRESS│
└─────────┘ └──────────┘ └─────┬─────┘
▲ │
│ ┌────────────┼────────────┐
│ ▼ ▼ ▼
│ ┌─────────┐ ┌─────────┐ ┌──────┐
└──────────────│ DONE │ │ BLOCKED │ │ REVIEW│
└─────────┘ └─────────┘ └──┬───┘
│
▼
┌─────────┐
│ DONE │
└─────────┘
Project State Machine
┌─────────┐ ┌────────┐ ┌──────────┐
│ DRAFT │────►│ ACTIVE │────►│ ARCHIVED │
└─────────┘ └────────┘ └──────────┘
│ ▲
└───────────────┘
reactivate
Connector State Machine
┌──────────┐ ┌────────┐ ┌───────────┐
│REGISTERING│───►│ ONLINE │────►│ DEGRADED │
└──────────┘ └───┬────┘ └─────┬─────┘
│ │
▼ ▼
┌─────────┐ ┌──────────┐
│ OFFLINE │◄───│ OFFLINE │
└─────────┘ └──────────┘
Переходы:
| Событие | Переход |
|---|---|
| Heartbeat OK (каждые 30s) | → ONLINE |
| Heartbeat missed × 3 | ONLINE → DEGRADED |
| Heartbeat missed × 10 | DEGRADED → OFFLINE |
| Reconnect | OFFLINE → ONLINE |
Approval State Machine
┌─────────┐ ┌───────────┐
│ PENDING │────►│ APPROVED │
└────┬────┘ └───────────┘
│
├──────────►┌──────────┐
│ │ DENIED │
│ └──────────┘
│
└──────────►┌──────────┐
│ EXPIRED │ (timeout 5 min)
└──────────┘
Правила:
- PENDING → APPROVED/DENIED: только authorized approver (не self-approval для high/critical)
- PENDING → EXPIRED: автоматически через 5 минут
- EXPIRE → новый Approval (MUST)