agent-control-center/docs/OPERATIONS.md

124 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Operations: Scheduler, Events, Errors, SLO
**Версия:** 0.1.0-draft | **Статус:** Draft
## 1. Scheduler
Приоритетная очередь запусков с поддержкой fair scheduling.
### Очереди
| Очередь | Приоритет | Описание |
|---|---|---|
| Priority Queue | 0 (высший) | Критические задачи, ручной запуск |
| Fair Queue | 1 | Обычные задачи, round-robin по workspace |
| Retry Queue | 2 | Задачи после transient failure |
| Delayed Queue | 3 | Отложенные задачи (cron, schedule) |
| Approval Queue | — | Задачи, ожидающие approval (блокируют слот агента) |
### Параметры планировщика
| Параметр | Значение |
|---|---|
| Макс. concurrent runs на connector | 5 |
| Макс. concurrent runs на agent | 1 |
| Preemption | Выключена в MVP |
| Fair share | Минимум 1 слот на workspace |
| Retry backoff | 1min, 5min, 15min, 1h, затем fail |
| Max queued per workspace | 100 |
## 2. Event Bus
Durable event bus с гарантией at-least-once доставки.
### События
| Событие | Payload | Частота |
|---|---|---|
| `run.created` | run_id, task_id, agent_id, goal | ~1/min |
| `run.started` | run_id, connector_id, timestamp | ~1/min |
| `run.completed` | run_id, duration, tokens, cost | ~1/min |
| `run.failed` | run_id, error_code, error_message | ~0.1/min |
| `run.cancelled` | run_id, cancelled_by | ~0.05/min |
| `approval.requested` | approval_id, run_id, action, risk | ~2/day |
| `approval.granted` | approval_id, approved_by | ~2/day |
| `approval.denied` | approval_id, denied_by, reason | ~0.5/day |
| `connector.online` | connector_id, version, agents | ~0.1/day |
| `connector.offline` | connector_id, last_heartbeat | ~0.1/day |
| `connector.degraded` | connector_id, missed_heartbeats | ~0.2/day |
| `artifact.created` | artifact_id, run_id, name, size | ~5/min |
| `memory.updated` | memory_id, key, scope, version | ~1/min |
| `skill.registered` | skill_id, name, version | ~0.1/day |
### Гарантии доставки
| Свойство | Значение |
|---|---|
| Доставка | At-least-once |
| Порядок | Per-run (внутри одного run — строгий порядок) |
| Дедупликация | По event_id (idempotency key) |
| Хранение | 30 дней |
| Версионирование | Все схемы эволюционируют additive-only |
## 3. Error Catalog
Единый каталог ошибок с кодами по подсистемам.
| Код | Подсистема | Описание | HTTP |
|---|---|---|---|
| AUTH-001 | Auth | Invalid credentials | 401 |
| AUTH-002 | Auth | Token expired | 401 |
| AUTH-003 | Auth | Insufficient permissions | 403 |
| CONN-001 | Connector | Registration failed | 400 |
| CONN-002 | Connector | Heartbeat timeout | 408 |
| CONN-003 | Connector | Version incompatible | 409 |
| RUN-001 | Run | Agent busy | 409 |
| RUN-002 | Run | Quota exceeded | 429 |
| RUN-003 | Run | Invalid goal format | 400 |
| RUN-004 | Run | Run not found | 404 |
| APPROVAL-001 | Approval | Self-approval denied | 403 |
| APPROVAL-002 | Approval | Approval expired | 410 |
| ARTIFACT-001 | Artifact | Upload failed | 500 |
| ARTIFACT-002 | Artifact | Size limit exceeded | 413 |
| MEM-001 | Memory | Key conflict | 409 |
| SKILL-001 | Skill | Signature invalid | 403 |
| WIKI-001 | Wiki | Page locked | 423 |
## 4. SLO / SLA
Целевые показатели качества обслуживания.
### SLO (Service Level Objectives)
| Метрика | Цель | Окно |
|---|---|---|
| API availability | 99.5% | monthly |
| p95 latency (REST read) | < 200ms | rolling 1h |
| p95 latency (REST write) | < 500ms | rolling 1h |
| Event delivery (p95) | < 2s | rolling 1h |
| Run dispatch (p99) | < 10s | rolling 1h |
| Search latency (p95) | < 500ms | rolling 1h |
| Artifact upload (p95) | < 30s per MB | rolling 1h |
### SLA (Service Level Agreements) — целевые, не контрактные в MVP
| Метрика | Цель |
|---|---|
| Time to detect connector offline | < 90s |
| Time to recover connector | < 5min (ручной) |
| Max data loss (events) | < 5min окно |
| RPO (артефакты) | < 1h |
| RTO (полное восстановление) | < 4h |
## 5. API Versioning
| Версия | Статус | Дата |
|---|---|---|
| /api/v1 | Draft | Q3 2026 |
| /api/v2 | Planned | Q1 2027 (breaking changes) |
**Правила:**
- MAJOR version в URL (/api/v1, /api/v2)
- MINOR changes additive (новые поля, эндпоинты)
- Deprecation: минимум 3 месяца уведомления через Sunset header
- Старые версии: 6 месяцев поддержки после выхода новой MAJOR