fix(notifications): tracker card — status completeness, rollback reflection, stage-metric summation (ORCH-091) #102

Merged
admin merged 8 commits from feature/ORCH-091-bug-to-analyse-stage-deploy-st into main 2026-06-09 22:13:09 +03:00
Owner

ORCH-091 — Live-карточка трекера: 3 верифицированных дефекта рендера

Три аддитивные правки src/notifications.py (ORCH-067/087), индикация-only: STAGE_TRANSITIONS / QG_CHECKS / check_* / транспорт нотификаций / схема БД — не тронуты; рендер never-raise; откат = revert.

Деф.1 — застрявший заголовок «To Analyse» (FR-1/2/3, AC-1/2/3)

_STAGE_STATUS_LABEL покрывал 8 из 10 ключей STAGE_TRANSITIONSdeploy-staging и cancelled (ORCH-090) выпадали в дефолт-«To Analyse». Добавлены deploy-staging→"Deploying (staging)", cancelled→"Cancelled"; runtime-фолбэк для немаппленной стадии заменён на нейтральный капитализированный лейбл (_neutral_stage_label). created остаётся явной «To Analyse»; битый/None-вход → безопасный дефолт. Полнота карты проверяется программно от STAGE_TRANSITIONS.keys().

Деф.2 — ложная картина при откате (FR-4, AC-4)

Введён read-only _pipeline_pos от порядка STAGE_TRANSITIONS; -строка стадии рисуется только если её позиция ≤ текущей. Нормализация deploy-staging→deploy — только в гейте подавления; is_active_stage не тронут. Пропадает абсурд « Внедрение + 🔄 Разработка».

Деф.3 — занижение метрик строки стадии (FR-5, AC-5)

_stage_line агрегирует ВСЕ agent_runs агента стадии (Σ cost/токены/время теми же формулами, что блок тоталов) вместо последнего прогона → строгая сходимость с SUM(agent_runs). Верифицировано на ORCH-069 (developer 3 прогона Σ $3.98). Модель/эффорт/«попытка N» — из последнего прогона.

Тесты

  • tests/test_tracker_status_line.py — ORCH-091 TC-01..TC-03 (полнота карты, staging-лейбл, нейтральный фолбэк/never-raise) + обновлён test_tc06.
  • tests/test_tracker_rollback_metrics.py (новый) — TC-05..TC-08 (подавление при откате, суммирование метрик, сходимость тоталов, never-raise).
  • Полный регресс pytest tests/ -q зелёный (1370 passed).

Документация

CHANGELOG.md, docs/architecture/internals.md (architecture README обновлён архитектором). ADR: docs/work-items/ORCH-091/06-adr/ADR-001-tracker-status-rollback-metrics.md.

Refs: ORCH-091

🤖 Generated with Claude Code

## ORCH-091 — Live-карточка трекера: 3 верифицированных дефекта рендера Три аддитивные правки `src/notifications.py` (ORCH-067/087), **индикация-only**: `STAGE_TRANSITIONS` / `QG_CHECKS` / `check_*` / транспорт нотификаций / схема БД — не тронуты; рендер never-raise; откат = revert. ### Деф.1 — застрявший заголовок «To Analyse» (FR-1/2/3, AC-1/2/3) `_STAGE_STATUS_LABEL` покрывал 8 из 10 ключей `STAGE_TRANSITIONS` — `deploy-staging` и `cancelled` (ORCH-090) выпадали в дефолт-«To Analyse». Добавлены `deploy-staging→"Deploying (staging)"`, `cancelled→"Cancelled"`; runtime-фолбэк для немаппленной стадии заменён на нейтральный капитализированный лейбл (`_neutral_stage_label`). `created` остаётся явной «To Analyse»; битый/None-вход → безопасный дефолт. Полнота карты проверяется программно от `STAGE_TRANSITIONS.keys()`. ### Деф.2 — ложная картина при откате (FR-4, AC-4) Введён read-only `_pipeline_pos` от порядка `STAGE_TRANSITIONS`; `✅`-строка стадии рисуется только если её позиция ≤ текущей. Нормализация `deploy-staging→deploy` — только в гейте подавления; `is_active_stage` не тронут. Пропадает абсурд «✅ Внедрение + 🔄 Разработка». ### Деф.3 — занижение метрик строки стадии (FR-5, AC-5) `_stage_line` агрегирует ВСЕ `agent_runs` агента стадии (Σ cost/токены/время теми же формулами, что блок тоталов) вместо последнего прогона → строгая сходимость с `SUM(agent_runs)`. Верифицировано на ORCH-069 (developer 3 прогона Σ $3.98). Модель/эффорт/«попытка N» — из последнего прогона. ### Тесты - `tests/test_tracker_status_line.py` — ORCH-091 TC-01..TC-03 (полнота карты, staging-лейбл, нейтральный фолбэк/never-raise) + обновлён `test_tc06`. - `tests/test_tracker_rollback_metrics.py` (новый) — TC-05..TC-08 (подавление `✅` при откате, суммирование метрик, сходимость тоталов, never-raise). - Полный регресс `pytest tests/ -q` зелёный (**1370 passed**). ### Документация `CHANGELOG.md`, `docs/architecture/internals.md` (architecture README обновлён архитектором). ADR: `docs/work-items/ORCH-091/06-adr/ADR-001-tracker-status-rollback-metrics.md`. Refs: ORCH-091 🤖 Generated with [Claude Code](https://claude.com/claude-code)
admin added 7 commits 2026-06-09 22:08:53 +03:00
Three verified live-card defects in src/notifications.py (ORCH-067/087),
all additive and indication-only (STAGE_TRANSITIONS / QG_CHECKS / check_* /
transport / DB schema untouched; never-raise; revert = git revert):

- Деф.1 (D1): _STAGE_STATUS_LABEL covered 8 of 10 STAGE_TRANSITIONS keys —
  deploy-staging and cancelled (ORCH-090) fell back to the misleading
  "To Analyse". Added deploy-staging→"Deploying (staging)",
  cancelled→"Cancelled"; replaced the runtime fallback for an UNMAPPED stage
  with a neutral capitalized label (_neutral_stage_label). created stays an
  explicit "To Analyse"; broken/None input degrades safely. Map completeness
  is asserted programmatically from STAGE_TRANSITIONS.keys() (single source of
  truth), not a static list.
- Деф.2 (D2): the stage-row loop drew  for any stage with a finished agent
  run regardless of position — after a rollback the card showed the absurd
  " Внедрение + 🔄 Разработка". Added read-only _pipeline_pos from the
  STAGE_TRANSITIONS order and a suppression gate ( only when
  current_pos >= _pipeline_pos(stage_key)); deploy-staging→deploy normalization
  applied ONLY to the current position; is_active_stage untouched.
- Деф.3 (D3): _stage_line took only the LAST run (ORCH-069: developer 3 runs
  Σ $3.98 rendered ~$0.00). It now aggregates ALL of the agent's runs with the
  same per-run formulas as the task totals → strict convergence with
  SUM(agent_runs) by task_id; model/effort/attempt come from the last run.

Tests: test_tracker_status_line.py (ORCH-091 TC-01..TC-03 + updated tc06);
new test_tracker_rollback_metrics.py (TC-05..TC-08). Full suite green (1370).
Docs: CHANGELOG + internals.md (architecture README already updated by architect).

Refs: ORCH-091
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tester(ET): auto-commit from tester run_id=509
All checks were successful
CI / test (push) Successful in 36s
CI / test (pull_request) Successful in 33s
86b013c872
admin force-pushed feature/ORCH-091-bug-to-analyse-stage-deploy-st from 311121e6f8 to 86b013c872 2026-06-09 22:08:53 +03:00 Compare
admin merged commit 33b7fd57ff into main 2026-06-09 22:13:09 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/orchestrator#102