auto-sync: 2026-06-04 00:00:01
This commit is contained in:
@@ -271,3 +271,49 @@ PR #12 (status-only verdict, баг3 эхо-самоудар) → PR #13 (баг
|
||||
- architect запущен, проектирует. Следить: создаст docs/work-items/ET-011/ архитектуру → Development.
|
||||
|
||||
### Хронология (вся сессия): PR#12 (status-only, баг3 эхо) → PR#13 (баги A desc/B name/C коммент+ссылки) → PR#14 (ссылки внешний домен) → PR#15 (баг4 Approved-advance). Все боевые чистые.
|
||||
|
||||
---
|
||||
|
||||
## PR #15 — БАГ 4: ручной Approved из analysis НЕ двигал конвейер (03.06 ~20:30) — БЛОКЕР, закрыт
|
||||
|
||||
**Merge main = `b6aa107`.** Ветка `fix/approved-advances-stage` из main `b01643f` (PR #14). Коммит `0b8013c` `fix(stage): approved verdict advances analysis->architecture instead of re-running gate`. Задеплоен.
|
||||
|
||||
### Симптом (боевой)
|
||||
Слава перевёл #6 (task 29) в **Approved** из analysis. Лог: `Task 29: Approved status -> advance from analysis` → `200 OK`, НО task остался `stage=analysis`, architect НЕ запущен, в Architecture не уехало. Конвейер встал на первой стадии.
|
||||
|
||||
### Корень (`src/stage_engine.py` `advance_stage`, ~стр.193)
|
||||
Ветка `if qg_name == "check_analysis_approved": _handle_analysis_approved_flow(...); return result` — **ВСЕГДА** ранний return → блок Advance (~стр.228: update_task_stage + enqueue_job) недостижим. А `_handle_analysis_approved_flow` (~стр.312) в начале `if not (agent=="analyst" and work_item_id): return` → на webhook-пути Approved (`finished_agent=None`) выходил ничего не сделав. Доп.нюанс: `check_analysis_approved` ищет `:approved:` **коммент**, а Слава ставил **статус** Approved → QG вернул бы False и снова заблокировал advance даже при простом fall-through.
|
||||
|
||||
### Фикс — развести ветку по `finished_agent`
|
||||
- `agent == "analyst"` (launcher) → `_handle_analysis_approved_flow` + return (In Review + коммент, НЕ ломать).
|
||||
- `agent is None` (webhook Approved-вердикт) → `result.qg_passed=True`, `qg_reason="approved-via-status"`, НЕ заходить во flow, НЕ перезапускать QG → провалиться в блок Advance (analysis→architecture + enqueue architect).
|
||||
- Прочие QG обёрнуты в `else: passed,reason=_run_qg(...)`.
|
||||
|
||||
### Подтверждено: `get_agent_for_stage("analysis")=architect` (не analyst!), `get_next_stage("analysis")=architecture` (`src/stages.py:14`). Зацикливания analyst нет.
|
||||
|
||||
### Тесты: **210 passed + 9 pre-existing failed** (test_webhooks HMAC/401). +2 новых: `test_approved_verdict_advances_analysis_to_architecture` (finished_agent=None→advanced/architecture/architect, QG замокан на fail = доказывает что гейт не перезапускается), `test_launcher_path_does_not_advance_and_calls_flow` (finished_agent=analyst→не advance, flow вызван). test_stage_engine: 18→20.
|
||||
|
||||
### ✅ БОЕВОЙ ПРОГОН (task 29): отправила Approved-вердикт заново → `analysis→architecture` auto-advance, #6 уехал в **Architecture**, **architect запущен** (job 11, run 64, pid 47), без мелькания In Progress. Первый полный end-to-end проход стадии через ручной Approved.
|
||||
|
||||
### 🔥 Конвейер поехал дальше сам (пока писала доки):
|
||||
- architect завершился (exit 0, 49758 tokens): создал `docs/work-items/ET-011/06-adr/ADR-014-gpx-download-endpoint.md`, `ADR-015-source-redistribution-policy.md`, `07-infra-requirements.md`.
|
||||
- **architecture → development** auto-advance, **developer запущен** (run 65) — пишет код.
|
||||
- ⚠️ `QG check_ci_green — failed: CI state: failure` — CI красный (ожидаемо, кода ещё нет / early-fail). developer работает.
|
||||
- **Итог:** три стадии подряд (analysis→architecture→development) с одного Approved.
|
||||
|
||||
## Документация обновлена (03.06) — по запросу Славы «обнови доки + запиши баги»
|
||||
- **`tasks/orchestrator/ORCHESTRATOR_DOCS.md`**: новый раздел «🐛 Баги входа/выхода analyst (03.06.2026)» — таблица 4 багов; обновлены статус-шапка, переходы статусов (status-only model PR#12), ссылки (gitea_public_url PR#14), webhook events, Changelog (PR #12–#15).
|
||||
- **`tasks/orchestrator/STATUS.md`**: свежий блок 03.06 + таблица багов сессии.
|
||||
- **wiki ingest** обеих доков (правило: при работе с проектами обновлять онтологию + wiki).
|
||||
|
||||
### Сводка 4 багов сессии (для быстрой ссылки):
|
||||
- **Баг 3** PR #12 (`status-only verdict`): эхо-самоудар — собственный апдейт статуса перезапускал стадию.
|
||||
- **Баг A** PR #13: `description` (Plane API, 445 симв) не попадал в `.task.md` (был 101-байт пустышка).
|
||||
- **Баг B** PR #13: `name` не тянулся → ветка `untitled`.
|
||||
- **Баг C** PR #13: устаревший коммент analyst «Жду :approved:» + нет ссылок на доки.
|
||||
- **PR #14**: ссылки в комменте на `localhost:3000` → внешний `gitea_public_url=https://git.mva154.duckdns.org`.
|
||||
- **Баг 4** PR #15 (БЛОКЕР): ручной Approved не продвигал analysis→architecture.
|
||||
|
||||
### Хвост на следующую сессию:
|
||||
- Следить за developer (run 65) + CI: дойдёт ли до review/testing/deploy.
|
||||
- Старые разделы ORCHESTRATOR_DOCS про `:approved:`/`:rejected:` комментом — переписаны на status-only, но перепроверить остаточные упоминания в нижней части файла (~стр.100+).
|
||||
|
||||
Reference in New Issue
Block a user