75 lines
7.1 KiB
Markdown
75 lines
7.1 KiB
Markdown
# Сводная таблица расхождений: Proposal v1 vs Реализация
|
||
|
||
## Статус: 2026-06-01 (обновлено после полной интеграции Plane)
|
||
|
||
| # | Аспект | Proposal v1 | Реализация (факт) | Критичность | Статус |
|
||
|---|--------|-------------|-------------------|-------------|--------|
|
||
| **АГЕНТЫ** |||||
|
||
| 1 | Deployer | Полноценный агент: merge → tag → deploy → smoke → rollback | ✅ Deployer в AGENT_CONFIGS + stages.py. Prompt: merge → tag → deploy → healthcheck → smoke → rollback | ✅ DONE | Реализовано 01.06 |
|
||
| 2 | Designer | Отдельный агент между Architect и Developer (макеты, states, a11y) | Не реализован. Этап пропускается | 🟢 LOW | Skip (ui_affected=false). Добавить при UI-heavy задаче |
|
||
| 3 | Модели агентов | Analyst: Sonnet, Architect: Opus, Developer: Sonnet/GLM, Reviewer: Opus, Tester: Sonnet | Все на `claude-sonnet-4-6` | 🟡 MED | TODO: Architect/Reviewer на Opus |
|
||
| **QUALITY GATES** |||||
|
||
| 4 | QG-0 (Inception→Analysis) | Валидация: title 5-80, description ≥3 предложений, priority | ✅ Валидация title 5-80, description ≥2 предложений. При fail → Blocked + комментарий | ✅ DONE | Реализовано 01.06 |
|
||
| 5 | QG-1 (Analysis→Architecture) | `lint-spec.sh` + `lint-test-plan.sh` + `:approved:` | Проверка файлов + `:approved:` + In Review статус | 🟢 LOW | Lint-скрипты — backlog |
|
||
| 6 | QG-2 (Architecture→Development) | `lint-adr.sh` + req-coverage | `check_architecture_done` (файлы существуют) + conflict detection | 🟢 LOW | Lint — backlog |
|
||
| 7 | QG-4 (Development→Review) | CI: lint+type+unit+integration+build+coverage | `check_ci_green` через Gitea API | ✅ OK | Работает |
|
||
| 8 | QG-5 (Review→Testing) | Gitea PR review APPROVED + 0 unresolved | `check_reviewer_verdict` — читает `12-review.md` | 🟢 LOW | Оба подхода рабочие |
|
||
| 9 | QG-6 (Testing→Deploy) | CI на preview: e2e + visual + a11y + perf | `check_tests_passed` — `13-test-report.md` с "PASS" | 🟡 MED | Нет Playwright/e2e |
|
||
| 10 | QG-7 (Deploy test→prod) | smoke + healthcheck + user `:approved:` | ✅ Deployer делает smoke + healthcheck. При fail → Blocked + rollback | ✅ DONE | Реализовано 01.06 |
|
||
| 11 | QG-final | uptime 10min + user `:final-approved:` | Нет | 🟢 LOW | Backlog |
|
||
| **GIT WORKFLOW** |||||
|
||
| 12 | Ветки | `feature/<plane-id>-<slug>` | `feature/ET-NNN-<slug>` | ✅ OK | Работает |
|
||
| 13 | PR creation | Developer открывает PR через Forge MCP | `_ensure_pr()` после developer push | ✅ OK | Работает |
|
||
| 14 | PR merge | Deployer мержит после QG-6 | ✅ Deployer agent мержит PR | ✅ DONE | Реализовано 01.06 |
|
||
| 15 | Tags/semver | Deployer создаёт tag `vX.Y.Z` | ✅ В deployer prompt (semver patch) | ✅ DONE | В prompt deployer'а |
|
||
| 16 | Conventional commits | `feat(scope): описание` + `Refs: PROJ-NNN` | Частично (developer делает `feat(web): ...`) | 🟢 LOW | Добавить lint в CI |
|
||
| **PLANE INTEGRATION** |||||
|
||
| 17 | Подзадачи (7 subtasks) | Auto-create 7 подзадач при создании Feature | Нет. Одна задача, этапы через статусы + комментарии | 🟢 LOW | Backlog (статусы покрывают потребность) |
|
||
| 18 | Статусы | To Do → In Progress → Awaiting Approval → Done → Blocked | ✅ Backlog → Todo → In Progress → Needs Input → In Review → Blocked → Done | ✅ DONE | Реализовано 01.06 |
|
||
| 19 | Custom fields | `stage`, `agent_running`, `branch`, `pr_url` | Нет custom fields. Ссылки в комментариях | 🟢 LOW | Nice-to-have |
|
||
| 20 | Webhook events | `work_item.created`, `comment.created` | ✅ `work_item.created` (auto-init + QG-0) + `comment.created` (approve/reject/answer) | ✅ DONE | Реализовано 01.06 |
|
||
| 21 | Ссылки в комментариях | Branch URL, PR URL, артефакты | ✅ Branch + PR ссылки при переходах stage | ✅ DONE | Реализовано 01.06 |
|
||
| **ORCHESTRATOR** |||||
|
||
| 22 | Event journal (DB) | Postgres с полным журналом | SQLite с tasks + agent_runs + events | 🟢 LOW | SQLite достаточен |
|
||
| 23 | Idempotency | Повторный webhook → тот же результат | Частично (дубли комментариев возможны) | 🟡 MED | TODO: event dedup |
|
||
| 24 | Budget/kill-switch | `.openclaw/budget.yaml` | Только timeout watchdog (30 min) | 🟡 MED | TODO |
|
||
| 25 | Retry/escalation | 3 retry developer, escalation | ✅ 3 retry developer + tester fail → developer retry + Blocked при исчерпании | ✅ DONE | Реализовано 01.06 |
|
||
| 26 | Analyst questions | Analyst задаёт вопросы → ждёт ответа | ✅ 01-questions.md → Needs Input → relaunch (до 3 раундов) | ✅ DONE | Реализовано 01.06 |
|
||
| 27 | :rejected: с причиной | Откат + relaunch с контекстом | ✅ Парсинг причины + relaunch analyst/rollback | ✅ DONE | Реализовано 01.06 |
|
||
| **DEPLOY** |||||
|
||
| 28 | Environments | test + prod (два этапа) | Один merge в main = deploy | 🟡 MED | TODO: test/prod split |
|
||
| 29 | Rollback | Deployer откатывает при failed smoke | ✅ Deploy fail → Blocked + rollback + notification | ✅ DONE | Реализовано 01.06 |
|
||
| 30 | CHANGELOG.md | Deployer обновляет при merge | В deployer prompt (инструкция есть) | ✅ DONE | В prompt |
|
||
| **MONITORING** |||||
|
||
| 31 | Telegram notifications | На каждом переходе + ошибках | ✅ Реализовано | ✅ OK | Работает |
|
||
| 32 | Plane comments | На каждом переходе + ошибках + ссылки | ✅ Реализовано | ✅ DONE | Реализовано 01.06 |
|
||
| 33 | Метрики (время/стоимость) | Дашборд | Нет | 🟢 LOW | Backlog |
|
||
|
||
---
|
||
|
||
## Итого
|
||
|
||
- **✅ DONE:** 18 из 33 пунктов (55%)
|
||
- **🟡 MED (TODO):** 6 пунктов
|
||
- **🟢 LOW (Backlog):** 9 пунктов
|
||
|
||
### Оставшиеся TODO (🟡)
|
||
|
||
| # | Что | Приоритет |
|
||
|---|-----|-----------|
|
||
| 3 | Architect/Reviewer на Opus | Следующая итерация |
|
||
| 9 | E2E тесты (Playwright) | Когда будет UI-heavy задача |
|
||
| 23 | Event dedup (idempotency) | Следующая итерация |
|
||
| 24 | Budget tracking | Следующая итерация |
|
||
| 28 | Test/prod environments | Когда будет prod |
|
||
|
||
### Backlog (🟢)
|
||
|
||
- Designer agent
|
||
- Lint-скрипты для QG
|
||
- Plane подзадачи (7 subtasks)
|
||
- Custom fields в Plane
|
||
- Метрики/дашборд
|
||
- QG-final (uptime 10min)
|
||
- Conventional commits lint
|