98 lines
4.3 KiB
YAML
98 lines
4.3 KiB
YAML
work_item: ORCH-048
|
||
title: staging B6 check reads registry from host worktree, not staging container
|
||
stage: analysis
|
||
notes: >
|
||
B6 в staging_check.py должен оценивать реестр окружения работающего staging-инстанса.
|
||
Для тестируемости логика вердикта B6 выделяется в чистую функцию (напр.
|
||
_evaluate_b6(known: set[str]) -> tuple[bool, str]); тесты бьют именно её и не
|
||
поднимают живой staging-инстанс/docker. Идентификаторы — те же константы из скрипта:
|
||
SANDBOX_PROJECT_ID=8c5a3025-4f9d-4190-b79f-fa06276bb27e,
|
||
PROD_ET_PROJECT_ID=7a79f0a9-5278-49cd-9007-9a338f238f9c,
|
||
PROD_ORCH_PROJECT_ID=8da6aa25-a60e-44d6-a1e2-d8ae59aa7d6a.
|
||
|
||
tests:
|
||
- id: TC-01
|
||
type: unit
|
||
description: >
|
||
B6-вердикт PASS при чистом staging-реестре: known={SANDBOX} ->
|
||
passed=True, detail содержит sandbox=YES, prod-ET=NO, prod-ORCH=NO. (AC-1, AC-2)
|
||
module: tests/test_staging_check_b6.py
|
||
expected: PASS
|
||
|
||
- id: TC-02
|
||
type: unit
|
||
description: >
|
||
B6-вердикт FAIL при попадании прод-ET в реестр: known={SANDBOX, PROD_ET} ->
|
||
passed=False, detail помечает prod-ET как нарушение. (AC-2)
|
||
module: tests/test_staging_check_b6.py
|
||
expected: PASS
|
||
|
||
- id: TC-03
|
||
type: unit
|
||
description: >
|
||
B6-вердикт FAIL при попадании прод-ORCH в реестр: known={SANDBOX, PROD_ORCH} ->
|
||
passed=False, detail помечает prod-ORCH как нарушение. (AC-2)
|
||
module: tests/test_staging_check_b6.py
|
||
expected: PASS
|
||
|
||
- id: TC-04
|
||
type: unit
|
||
description: >
|
||
B6-вердикт FAIL при отсутствии sandbox в реестре: known=set() (пусто) ->
|
||
passed=False (sandbox absent), детерминированно, без исключения. (AC-2, TR-4)
|
||
module: tests/test_staging_check_b6.py
|
||
expected: PASS
|
||
|
||
- id: TC-05
|
||
type: unit
|
||
description: >
|
||
B6-вердикт FAIL при загрязнении и ET, и ORCH одновременно:
|
||
known={SANDBOX, PROD_ET, PROD_ORCH} -> passed=False. (AC-2)
|
||
module: tests/test_staging_check_b6.py
|
||
expected: PASS
|
||
|
||
- id: TC-06
|
||
type: unit
|
||
description: >
|
||
Источник реестра в B6 больше не зависит от host-path хака
|
||
sys.path.insert(0,"/repos/orchestrator"): проверить (статически/через структуру
|
||
кода или мок источника), что построение known не делается локальным импортом
|
||
src.projects из произвольного process-env. (AC-1, TR-6)
|
||
module: tests/test_staging_check_b6.py
|
||
expected: PASS
|
||
|
||
- id: TC-07
|
||
type: unit
|
||
description: >
|
||
Деградация источника реестра (HTTP-ошибка / недоступный контейнер / битый ответ)
|
||
-> B6 даёт детерминированный FAIL с понятным detail, а не ложный PASS и не
|
||
необработанное исключение. (TR-4)
|
||
module: tests/test_staging_check_b6.py
|
||
expected: PASS
|
||
|
||
- id: TC-08
|
||
type: unit
|
||
description: >
|
||
Регрессия реестра: существующие тесты src/projects.py остаются зелёными,
|
||
подтверждая, что src/projects.py не изменён. (AC-3, AC-4)
|
||
module: tests/test_projects.py
|
||
expected: PASS
|
||
|
||
- id: TC-09
|
||
type: integration
|
||
description: >
|
||
Полный прогон pytest без падений после правок:
|
||
`python -m pytest tests/ -q` -> exit 0. (AC-4)
|
||
module: tests/
|
||
expected: PASS
|
||
|
||
- id: TC-10
|
||
type: integration
|
||
description: >
|
||
Живой staging-прогон (ручной, вне CI): запустить scripts/staging_check.py
|
||
выбранным архитектором способом против orchestrator-staging (8501) ->
|
||
B6 == PASS (sandbox=YES, prod-ET=NO, prod-ORCH=NO); блоки A/B4/B5/C не сломаны.
|
||
(AC-1, AC-3) Выполняется деплоером на стадии deploy-staging.
|
||
module: scripts/staging_check.py
|
||
expected: PASS
|