6.2 KiB
result, work_item, stage, author_agent, status, created_at, model_used, type, work_item_id
| result | work_item | stage | author_agent | status | created_at | model_used | type | work_item_id |
|---|---|---|---|---|---|---|---|---|
| PASS | ORCH-109 | testing | tester | pass | 2026-06-14 | claude-opus-4-8 | test-report | ORCH-109 |
Test Report — ORCH-109 — timeout budgets + launch-time model telemetry для developer/reviewer
Машинный вердикт читается ТОЛЬКО из frontmatter. Канонический ключ —
result:.
Окружение
- Python: 3.12.13
- pytest: 8.3.3 (plugins: cov-5.0.0, anyio-4.13.0, asyncio-0.23.8)
- Дата: 2026-06-14
- Worktree:
feature/ORCH-109-orch-timeout-budgets-launch-ti(/repos/_wt/orchestrator/feature_ORCH-109-orch-timeout-budgets-launch-ti/)
Smoke API (read-only, прод не трогался)
| Endpoint | Результат |
|---|---|
GET /health |
PASS — {"status":"ok","service":"orchestrator"} |
GET /status |
PASS — задача 98 (ORCH-109) в стадии testing, агент не запущен |
GET /queue |
PASS — блок serial_gate присутствует (ORCH-088); блок auto_labels присутствует (ORCH-089) |
Результаты
Полный регресс
pytest tests/ -q → 1899 passed, 1 warning in 516.70s (0:08:36) (exit 0).
Единственное предупреждение — PydanticDeprecatedSince20 (class-based config, pre-existing,
не связано с ORCH-109). Прод-контейнер не затрагивался.
Профильная сюита
pytest tests/test_orch109_timeout_model.py -v → 25 passed (exit 0, 13.50s).
Покрывает TC-01…TC-12 (+ доп. варианты: configurable-keys, overrides-json-wins, параметризация
non-positive [0,-5,abc], clean-exit advances, unstamped-killed drops suffix).
Сопоставление с тест-планом (04-test-plan.yaml)
| TC ID | Описание | Тест-функция(и) | Результат |
|---|---|---|---|
| TC-01 | _resolve_timeout('developer'/'reviewer') возвращает поднятый бюджет |
test_tc01_developer_reviewer_raised, test_tc01_dedicated_keys_are_configurable, test_tc01_overrides_json_wins_over_dedicated |
PASS |
| TC-02 | Прочие роли (analyst/architect/tester/deployer) → глобальный 1800 | test_tc02_other_roles_use_global_default |
PASS |
| TC-03 | Малформный конфиг → откат на дефолт + WARNING, без исключения | test_tc03_malformed_overrides_json_never_raises, test_tc03_non_positive_dedicated_falls_back[0/-5/abc] |
PASS |
| TC-04 | Launch стампит agent_runs.model (непустую) рядом с effort |
test_tc04_spawn_stamps_model_and_effort |
PASS |
| TC-05 | Стамп изолирован: сбой записи не пробрасывает исключение (never-raise) | test_tc05_stamp_failure_is_isolated |
PASS |
| TC-06 | record_usage(None)/model=None НЕ затирают launch-стамп (COALESCE) |
test_tc06_record_usage_none_preserves_model, test_tc06_record_usage_model_none_preserves_model |
PASS |
| TC-07 | record_usage с непустой model уточняет/проставляет значение |
test_tc07_record_usage_nonempty_model_enriches_blank, test_tc07_record_usage_refines_existing_model |
PASS |
| TC-08 | Sanity reaper-инварианта: reaper_max_running_s > max(timeout)+grace |
test_tc08_shipped_defaults_satisfy_invariant, test_tc08_resolved_max_is_developer |
PASS |
| TC-09 | _stage_line для exit_code=-9 рендерит · <model> · <effort> (model не null) |
test_tc09_killed_run_renders_model_effort, test_tc09_unstamped_killed_run_drops_model_suffix |
PASS |
| TC-10 | get_running_agents отдаёт непустую model для running-job (in-flight) |
test_tc10_running_job_exposes_model |
PASS |
| TC-11 | Анти-salvage: killed developer/reviewer (exit_code=-9) не продвигает стадию |
test_tc11_killed_developer_run_does_not_advance, test_tc11_killed_reviewer_run_does_not_advance, test_tc11_clean_exit_advances |
PASS |
| TC-12 | Анти-регресс: STAGE_TRANSITIONS/QG_CHECKS/схема agent_runs не изменены |
test_tc12_stage_transitions_unchanged, test_tc12_agent_runs_model_effort_columns_preexist, test_tc12_qg_checks_registry_present |
PASS |
Все 12 TC выполнены и сопоставлены.
Сопоставление с критериями приёмки (03-acceptance-criteria.md)
| AC | Критерий | Покрытие | Результат |
|---|---|---|---|
| AC-1 | Модель стампится в agent_runs.model на launch |
TC-04 | PASS |
| AC-2 | Постфактум-enrich не затирает launch-стамп при оборванном JSON | TC-06, TC-07 | PASS |
| AC-3 | Тайм-аут developer/reviewer поднят и конфигурируем без влияния на прочие | TC-01, TC-02 | PASS |
| AC-4 | Малформный timeout-конфиг → безопасный откат (never-break) | TC-03 | PASS |
| AC-5 | Reaper-инвариант сохранён | TC-08 | PASS |
| AC-6 | Строка стадии трекера показывает model+effort при timeout/kill | TC-09 | PASS |
| AC-7 | In-flight видимость модели в /metrics//queue |
TC-10 | PASS |
| AC-8 | Timeout-killed прогон не продвигает стадию (анти-salvage) | TC-11 | PASS |
| AC-9 | Неприкосновенность контрактов и схемы | TC-12 | PASS |
| AC-10 | Документация и полный регресс зелёный | full regress (1899 passed) + review APPROVED | PASS |
Все 10 AC покрыты и зелёные.
Итог
PASS — полный регресс зелёный (1899 passed, exit 0), профильная сюита ORCH-109 зелёная
(25 passed), smoke API OK (serial_gate/auto_labels присутствуют в /queue), каждый TC из
тест-плана выполнен и сопоставлен с критериями приёмки. Задача переходит на deploy-staging.