From 28f44778716c8865029bcfa23758e435b6594b7d Mon Sep 17 00:00:00 2001 From: claude-bot Date: Sun, 7 Jun 2026 18:01:52 +0000 Subject: [PATCH] tester(ET): auto-commit from tester run_id=331 --- docs/work-items/ORCH-022/13-test-report.md | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 docs/work-items/ORCH-022/13-test-report.md diff --git a/docs/work-items/ORCH-022/13-test-report.md b/docs/work-items/ORCH-022/13-test-report.md new file mode 100644 index 0000000..8977d5c --- /dev/null +++ b/docs/work-items/ORCH-022/13-test-report.md @@ -0,0 +1,76 @@ +--- +type: test-report +work_item_id: ORCH-022 +result: PASS +--- + +# Test Report — ORCH-022 + +Security-гейт: secret-scanning (gitleaks) + dependency audit (pip-audit) как под-гейт +ребра `deploy-staging → deploy`. + +## Окружение +- Python: 3.12.13 +- pytest: 8.3.3 +- Дата: 2026-06-07 +- Ветка: `feature/ORCH-022-security-secret-scanning` +- Review verdict: APPROVED (`12-review.md`) + +## Smoke test API (prod 8500, self-hosting — не трогаем контейнер) +| Endpoint | Результат | +|----------|-----------| +| `GET /health` | `{"status":"ok","service":"orchestrator"}` — OK | +| `GET /status` | OK (active task ORCH-022 в stage=testing виден) | +| `GET /queue` | OK (counts/resilience/reconcile/reaper/post_deploy присутствуют) | + +## Результаты (привязка к 04-test-plan.yaml) + +| TC ID | Описание | Тест | Результат | +|-------|----------|------|-----------| +| TC-01 | Секрет в diff → FAIL, secrets_found>=1, причина называет находку | test_security_gate.py::test_tc01_secret_in_diff_fails | PASS | +| TC-02 | Чистая ветка → PASS, secrets_found=0 | test_tc02_clean_branch_passes | PASS | +| TC-03 | Аллоулист подавляет заведомо-безопасное | test_tc03_allowlisted_match_does_not_fail | PASS | +| TC-04 | HIGH/CRITICAL CVE при пороге HIGH → FAIL, deps_blocking>=1 | test_tc04_high_cve_at_high_threshold_blocks | PASS | +| TC-05 | Только MEDIUM/LOW → PASS, deps_warning>=1 | test_tc05_only_medium_low_warns_passes | PASS | +| TC-06 | Конфиг порога severity влияет на классификацию | test_tc06_threshold_config_changes_classification | PASS | +| TC-07 | Недоступный фид → детерминированный degrade (fail-open default / fail-closed strict) | test_tc07_degraded_feed_failopen_default_failclosed_strict | PASS | +| TC-08 | Вердикт ТОЛЬКО из frontmatter; negative-токен авторитетен | test_tc08_verdict_only_from_frontmatter | PASS | +| TC-09 | Нет/битый frontmatter → (False, reason) fail-closed | test_tc09_missing_or_broken_frontmatter_failclosed | PASS | +| TC-10 | Артефакт 17-security-report.md с валидным frontmatter + телом | test_tc10_artifact_has_valid_frontmatter_and_body | PASS | +| TC-11 | Нет бинаря / исключение → (False, reason), never-raise | test_tc11_missing_binary_failclosed_never_raises | PASS | +| TC-12 | Таймаут → детерминированный fail-closed, без зависания | test_tc12_timeout_is_deterministic_failclosed | PASS | +| TC-13 | Не-self репо при пустом scope → (True, N/A) мгновенно | test_qg_security.py::test_tc13_non_self_repo_empty_scope_is_na | PASS | +| TC-14 | ORCH_SECURITY_GATE_ENABLED=false → no-op pass | test_tc14_disabled_is_noop_pass | PASS | +| TC-15 | Зарегистрирован в QG_CHECKS и диспетчеризуется _run_qg | test_tc15_registered_in_qg_checks / test_tc15_dispatched_by_run_qg | PASS | +| TC-16 | FAIL → откат на development, enqueue developer, notify_qg_failure | test_stage_engine_security_gate.py::test_tc16_fail_rolls_back_and_enqueues_developer | PASS | +| TC-17 | task_desc несёт дословную причину (ORCH-046) | test_tc17_task_desc_has_verbatim_findings | PASS | +| TC-18 | После MAX_DEVELOPER_RETRIES (3) → set_issue_blocked + Telegram | test_tc18_retry_cap_blocks_and_alerts | PASS | +| TC-19 | PASS → штатное продвижение конвейера | test_tc19_pass_advances_normally | PASS | +| TC-20 | STAGE_TRANSITIONS не изменён; тесты стадий зелёные | tests/test_stages.py (полный прогон) | PASS | +| TC-21 | Гейт не вызывает деплой-хук/рестарт прод (self-hosting safety) | test_tc21_fail_never_triggers_deploy | PASS | + +Все 21 TC покрыты и зелёные. Соответствие критериям приёмки (03-acceptance-criteria): +AC-1..AC-21 закрыты соответствующими TC (AC-N ↔ TC-N для N=1..21; AC-20 «документация» +подтверждён в review 12-review.md). + +## Вывод pytest + +### Security-специфичные тесты (25 шт.) +``` +tests/test_security_gate.py ............... (15) +tests/test_qg_security.py ...... (6) +tests/test_stage_engine_security_gate.py ..... (5) +======================== 25 passed, 1 warning in 0.49s ========================= +``` + +### Полный регресс +``` +======================= 772 passed, 1 warning in 14.70s ======================== +``` +(1 warning — PydanticDeprecatedSince20 в src/config.py, не связан с ORCH-022, +существовал до задачи.) + +## Итог +**PASS** — полный регресс 772/772 зелёный, 25 security-тестов покрывают все 21 TC +плана и AC-1..AC-21, smoke-тесты API прод-инстанса OK. Прод-контейнер в процессе +тестирования не затронут (тесты офлайн/изолированы). Задача готова к стадии deploy-staging.