tester(ET): auto-commit from tester run_id=149
All checks were successful
CI / test (push) Successful in 12s
CI / test (pull_request) Successful in 12s

This commit is contained in:
2026-06-06 05:29:49 +00:00
parent 1cf7096e2d
commit 4abe746fc0

View File

@@ -0,0 +1,60 @@
---
type: test-report
work_item_id: ORCH-048
result: 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). `/health` prod+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**.