docs: update QG table, task-file write, orphan recovery; add BUGFIXES_2026-06-02
This commit is contained in:
22
README.md
22
README.md
@@ -27,10 +27,10 @@ created → analysis → architecture → development → review → testing →
|
||||
| created | — | — | Plane webhook (work_item.created) |
|
||||
| analysis | analyst | Файлы BRD/TRZ/AC/TestPlan | Push docs/ |
|
||||
| architecture | architect | ADR или infra-requirements | Push docs/ |
|
||||
| development | developer | CI green | Gitea status event |
|
||||
| review | reviewer | PR approved (no stale) | Gitea review event |
|
||||
| development | developer | check_tests_local (орк сам гоняет `make test`) | Auto-advance после developer |
|
||||
| review | reviewer | check_reviewer_verdict (`verdict:` во frontmatter 12-review.md) | Auto-advance после reviewer |
|
||||
| testing | tester | Test report с PASS | Auto-advance после tester |
|
||||
| deploy | — | — | PR merge |
|
||||
| deploy | deployer | — | SSH deploy-hook |
|
||||
| done | — | — | — |
|
||||
|
||||
## API Endpoints
|
||||
@@ -115,8 +115,14 @@ uvicorn src.main:app --reload --port 8500
|
||||
### Review bounce
|
||||
При REQUEST_CHANGES от reviewer задача откатывается в development, developer перезапускается (до 3 попыток). При исчерпании — эскалация.
|
||||
|
||||
### Orphan recovery
|
||||
При старте контейнера все runs с `finished_at IS NULL` старше 35 минут помечаются как failed (exit_code=-1).
|
||||
### Orphan recovery (M-1)
|
||||
При старте контейнера каждый run с `finished_at IS NULL` старше 35 минут помечается exit_code=-1, логируется per-run warning и отправляется Telegram-уведомление «нужна ручная проверка/перезапуск» (не молча).
|
||||
|
||||
### Запись task-файлов (B-1)
|
||||
Task-файлы `.task-*.md` пишутся **прямой записью в смонтированный volume `/repos/<repo>/`** (без docker). При ошибке записи — RuntimeError (не молчит). В `.gitignore` проекта.
|
||||
|
||||
### Логи агентов (B-2)
|
||||
stdout/stderr агента перенаправляются СРАЗУ в `/app/data/runs/{id}.log` на уровне ОС (без PIPE). monitor-поток делает `proc.wait()` → реальный exit_code, нет зомби.
|
||||
|
||||
### Watchdog
|
||||
Каждый агент имеет timeout 30 минут. При превышении — SIGKILL + запись exit_code=-9.
|
||||
@@ -125,7 +131,7 @@ uvicorn src.main:app --reload --port 8500
|
||||
Gitea events роутятся по типу:
|
||||
- `push` → проверка файлов, advance architecture/development
|
||||
- `pull_request*` (wildcard) → review approved/rejected, PR merge
|
||||
- `status` → CI green/failure
|
||||
- `status` → (legacy) Gitea CI; С-1: больше не authoritative, `failure` логируется на debug и не блокирует/не алертит (QG развития = локальный `check_tests_local`)
|
||||
|
||||
## Тесты
|
||||
|
||||
@@ -135,7 +141,9 @@ pytest tests/ -v
|
||||
|
||||
## Известные ограничения
|
||||
|
||||
1. **Single-task** — одновременно обрабатывается одна задача на репозиторий (нет параллелизма)
|
||||
1. **Single-task / shared `/repos` checkout** — одновременно безопасно обрабатывается одна задача: все агенты и `check_tests_local` делают `git checkout` в одном `/repos/<repo>` → гонки при параллельных задачах. Исправление — git worktree per task (S-4, отдельно).
|
||||
2. **Plane sync** — маппинг issue ID может быть некорректным (P3, в работе)
|
||||
3. **In-process daemon-потоки** — агенты живут в потоках uvicorn; при рестарте ловит orphan-recovery. Целевое — очередь задач (F-2b)
|
||||
4. **Gitea CI не настроен** — тесты гоняет сам оркестратор локально
|
||||
3. **Tester timeout** — e2e тесты с Playwright могут занимать >25 мин на тяжёлых фичах
|
||||
4. **No retry on API errors** — httpx вызовы к Gitea/Plane без retry logic
|
||||
|
||||
Reference in New Issue
Block a user