4.8 KiB
type, work_item_id, result
| type | work_item_id | result |
|---|---|---|
| test-report | ORCH-048 | PASS |
Test Report — ORCH-048
Title: staging B6 check reads registry from host worktree, not staging container Stage: testing Branch: feature/ORCH-048-staging-b6-check-reads-registr Review verdict: APPROVED (12-review.md, version 1)
Окружение
- Python: 3.12.13
- pytest: 8.3.3
- Дата: 2026-06-06T05:28Z
- prod
orchestrator(8500):/health→ 200{"status":"ok"} - staging
orchestrator-staging(8501):/health→ 200{"status":"ok"} - Примечание:
curlв окружении тестера отсутствует — HTTP-smoke выполнен черезpython urllib/TestClient.
Результаты (сопоставление с 04-test-plan.yaml)
| TC ID | Тип | Описание | Результат |
|---|---|---|---|
| TC-01 | unit | B6 PASS при чистом реестре known={SANDBOX} (test_tc01_clean_registry_passes) |
PASS |
| TC-02 | unit | B6 FAIL при known={SANDBOX,PROD_ET} (test_tc02_prod_et_pollution_fails) |
PASS |
| TC-03 | unit | B6 FAIL при known={SANDBOX,PROD_ORCH} (test_tc03_prod_orch_pollution_fails) |
PASS |
| TC-04 | unit | B6 FAIL детерминированно при known=set() без исключения (test_tc04_sandbox_absent_fails_deterministically) |
PASS |
| TC-05 | unit | B6 FAIL при known={SANDBOX,PROD_ET,PROD_ORCH} (test_tc05_both_prod_pollution_fails) |
PASS |
| TC-06 | unit | Нет host-path хака sys.path.insert("/repos/orchestrator") в источнике B6 (test_tc06_no_host_path_hack_in_source) |
PASS |
| TC-07 | unit | Деградация источника (network error / non-200 / нет ключа / битый тип) → детерминированный FAIL (test_tc07_* ×4 + test_check_b6_polluted_endpoint_fails) |
PASS |
| TC-08 | unit | Регрессия src/projects.py зелёная, файл не изменён (tests/test_projects.py, 16 тестов) |
PASS |
| TC-09 | integration | Полный pytest tests/ -q → exit 0 (476 passed) |
PASS |
| TC-10 | integration | Живой staging-прогон B6 против orchestrator-staging (8501) |
DEFERRED → deployer (deploy-staging) |
Доп. проверки
GET /projectsв коде ветки (TestClient): HTTP 200, схема{known_plane_project_ids, projects}, prod-реестр ET+ORCH — корректно.- Smoke staging API:
/status→ 200,/queue→ 200 (breaker closed, preflight_ok)./healthprod+staging → 200.
TC-10 — почему DEFERRED (не FAIL)
GET /projects на работающем staging-инстансе (8501) сейчас отдаёт 404: новый read-only эндпоинт присутствует в коде ветки, но в staging-контейнер ещё не задеплоен (деплой staging — следующая стадия). Это ожидаемо и не является дефектом. По 04-test-plan.yaml TC-10 явно помечен «Выполняется деплоером на стадии deploy-staging», т.е. вне зоны ответственности тестера. В коде ветки эндпоинт верифицирован через TestClient (200 + корректная схема), что подтверждает готовность к staging-прогону.
Покрытие Acceptance Criteria (03-acceptance-criteria.md)
- AC-1 (B6 читает реестр из staging-окружения по HTTP, без host-path хака) — покрыто TC-01, TC-06; живой прогон → deployer.
- AC-2 (оба исхода вердикта покрыты юнитами) — покрыто TC-01…TC-05, TC-07.
- AC-3 (
src/projects.py,.env*не тронуты; прочие чеки целы) —git diffподтверждён ревью; TC-08 зелёный. - AC-4 (существующие тесты зелёные) — 476 passed, exit 0.
- AC-5 (документация/ADR в том же PR) — подтверждено на review (APPROVED).
Вывод pytest
tests/test_staging_check_b6.py ... 12 passed
tests/test_projects.py ......... 16 passed
========================= 476 passed, 1 warning in 7.99s =========================
Единственное предупреждение — PydanticDeprecatedSince20 в src/config.py (class-based Config), не связано с ORCH-048, не влияет на результат.
Итог
PASS — полный регресс (476 passed) зелёный, все unit/integration TC тестера (TC-01…TC-09) PASS, smoke API OK. TC-10 (живой staging-прогон B6) корректно делегирован деплоеру на стадию deploy-staging. Задача переходит на deploy-staging.