10 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-009 | testing | tester | pass | 2026-06-10 | claude-opus-4-8 | test-report | ORCH-009 |
Test Report — ORCH-009 — Turnkey-онбординг проектов (kit + CLI + runbook)
Машинный вердикт читается ТОЛЬКО из frontmatter (
result:). Перепрогон стадии testing на opus после сброса session-limit (ре-ран по запросу). Review-вердикт цикла 2 —APPROVED(12-review.md, P0/P1 нет). Дельта цикла (герметизация ORCH-41-тестовe903818) перепроверена полным регрессом под фактическим окружением worktree.
Окружение
- Python: 3.12.13
- pytest: 8.3.3 (pytest-cov 5.0.0, asyncio 0.23.8)
- Дата: 2026-06-10
- Worktree:
feature/ORCH-009-turnkey-plane(/repos/_wt/orchestrator/feature_ORCH-009-turnkey-plane, HEADb97ffae) - Прод-контейнер
orchestrator(8500) — НЕ трогался (smoke read-only).
Smoke API (read-only)
GET /health→{"status":"ok","service":"orchestrator"}✅GET /status→ отвечает; задача ORCH-009 (task 87) на стадииtesting✅GET /queue→ блокserial_gateприсутствует (ORCH-088) ✅; блокauto_labelsприсутствует ✅ (полный набор ключей:auto_labels, bug_fast_track, build_cache_prune, counts, coverage, disk_monitor, fs_ownership, lessons, max_concurrency, merge_verify, poll_interval, post_deploy, reaper, recent, reconcile, resilience, serial_gate, stop, task_deps).
Результаты
Полный регресс
pytest tests/ -q → 1713 passed, 0 failed, 1 warning за 65.40s (exit 0). Прод-контейнер не
трогался. Средовая мина merge-gate цикла 1 обезврежена фиксом e903818 — регресс зелёный.
Профильные сюиты (онбординг)
pytest tests/test_onboarding_kit.py tests/test_onboarding_script.py tests/test_onboarding_invariants.py -v
→ 83 passed, 0 failed за 0.55s (exit 0). Сетевых вызовов нет (Plane/Gitea — фейк-клиенты, NFR-5).
Сопоставление с тест-планом (04-test-plan.yaml)
| TC ID | Описание | Тест-функция | Рез. |
|---|---|---|---|
| TC-01 | Kit содержит все элементы FR-1 (6 промптов + доки) | test_tc01_kit_contains_all_required_elements, test_tc01_kit_readme_and_placeholder_dictionary_exist |
PASS |
| TC-02 | Материализация добавляет live-копии _templates/_standards; форк канона отсутствует |
test_tc02_materialise_live_copies_canon, test_kit_does_not_fork_the_canon |
PASS |
| TC-03 | 5 XML-секций в нормативном порядке (6 ролей) | test_tc03_five_xml_sections_in_normative_order[*] |
PASS |
| TC-04 | <escalation> у dev/rev/tester; запреты «❌→✅» |
test_tc04_escalation_section_after_success_criteria[*], test_tc04_bans_use_cross_check_format[*] |
PASS |
| TC-05 | Директивы доки (читай паспорт/AGENTS/ADR; пиши в work-items; CHANGELOG) | test_tc05_prompt_directs_agent_to_docs[*], test_tc05_changelog_duty_present[*], test_tc05_architect_carries_adr_rules |
PASS |
| TC-06 | 6-польная схема 52c; verdict-ключи байт-в-байт; даты/модели — плейсхолдеры | test_tc06_six_schema_fields_named[*], test_tc06_schema_pins_role_author_and_stage[*], test_tc06_machine_verdict_keys_byte_exact, test_tc06_dates_and_models_are_placeholders[*] |
PASS |
| TC-07 | reviewer-gate: дока не обновлена → REQUEST_CHANGES |
test_tc07_reviewer_gate_docs_not_updated_means_request_changes |
PASS |
| TC-08 | Языковая политика (5 ru + deployer en) | test_tc08_ru_canon_for_five_roles[*], test_tc08_deployer_is_english |
PASS |
| TC-09 | Рендер подставляет все плейсхолдеры (нет неразрешённых) | test_tc09_render_resolves_all_placeholders, test_render_is_a_pure_replace |
PASS |
| TC-10 | Нет утечек орк-специфики (ORCH-/8500/8501/self-hosting) | test_tc10_no_orchestrator_specific_leaks |
PASS |
| TC-11 | Ссылочная целостность отрендеренных промптов/AGENTS | test_tc11_referenced_paths_exist_in_materialised_tree |
PASS |
| TC-12 | Registry round-trip через фактический _parse_projects_json; существующие записи целы |
test_tc12_registry_round_trip_through_actual_parser, test_tc12_merge_is_idempotent_no_duplicates |
PASS |
| TC-13 | План Plane: все статусы _PLANE_NAME_TO_KEY (вкл. Confirm Deploy/STOP) + лейблы |
test_tc13_plan_covers_all_statuses_and_labels, test_state_groups_match_plane_name_to_key |
PASS |
| TC-14 | Недоступный Plane-шаг → manual-step (не падение/не молча) |
test_tc14_plane_refusal_becomes_manual_step |
PASS |
| TC-15 | План Gitea: репо + webhook (push/pr/status + HMAC) + initial push | test_tc15_plan_contains_gitea_repo_webhook_and_push |
PASS |
| TC-16 | dry-run (plan) — ноль мутаций | test_tc16_plan_is_a_pure_dry_run, test_secret_never_leaks_into_report |
PASS |
| TC-17 | Повторный apply: skipped(exists), без дублей/удалений; отчёт created/skipped/manual |
test_tc17_second_apply_skips_everything_existing |
PASS |
| TC-18 | Нет операций рестарта/правки прод-.env/push в существующие репо (NFR-2) | test_tc18_fresh_apply_runs_git_only_inside_workdir, test_tc18_source_has_no_container_or_env_mutation_ops |
PASS |
| TC-19 | INFRA.md шаблон: обязательные секции; INFRA орка не тронут | test_tc19_infra_template_mandatory_sections, test_tc19_orchestrator_own_infra_untouched_sections |
PASS |
| TC-20 | Runbook: слои предусловия→Plane→Gitea→kit→регистрация→верификация→откат | test_tc20_runbook_exists_and_layer_order, test_tc20_runbook_manual_steps_and_selfhosting_warning, test_tc20_runbook_verification_and_smoke_journal |
PASS |
| TC-21 | Снапшот STAGE_TRANSITIONS/QG_CHECKS; src/** не ссылается на онбординг; закрытый список импортов |
test_tc21_stage_transitions_snapshot, test_tc21_qg_checks_registry_snapshot, test_tc21_src_never_references_onboarding, test_tc21_cli_src_imports_stay_in_closed_list, test_tc21_kit_prompts_name_only_real_gates |
PASS |
| TC-22 | Полный регресс tests/ зелёный |
весь прогон pytest tests/ (1713 passed) |
PASS |
Итого тест-плана: 22/22 TC выполнены и PASS.
Сопоставление с критериями приёмки (03-acceptance-criteria.md)
| AC | Покрытие | Результат |
|---|---|---|
| AC-1 Kit полон | TC-01 | PASS |
| AC-2 Канон 52d/92 промптов | TC-03/04/05/06 | PASS |
| AC-3 Reviewer-gate доки | TC-07 | PASS |
| AC-4 Языковая политика | TC-08 | PASS |
| AC-5 Материализация / нет утечек | TC-02/09/10/11 | PASS |
| AC-6 Registry round-trip | TC-12 | PASS |
| AC-7 План Plane (статусы/лейблы) | TC-13/14 | PASS |
| AC-8 План Gitea + dry-run без мутаций | TC-15/16 | PASS |
| AC-9 Идемпотентность/безопасность apply | TC-17/18 | PASS |
| AC-10 INFRA.md шаблон | TC-19 | PASS |
| AC-11 Runbook полон | TC-20 | PASS |
AC-12 src/** не тронут (снапшот + регресс) |
TC-21/22 | PASS |
| AC-13 Операторский smoke на песочнице | вне pytest (см. ниже) | DEFERRED (операторский гейт до Confirm Deploy) |
AC-13 — операторский smoke (не блокирует ребро testing → deploy-staging)
AC-13 по построению (ADR D8, scope-нота 04-test-plan.yaml) — документированный операторский
прогон на песочнице staging 8501 с реальными Plane/Gitea-вызовами. Это мутирующая операторская
процедура → вне read-only smoke и автоматизированного скоупа тестера. «Журнал smoke-прогонов»
в docs/operations/ONBOARDING.md сейчас — плейсхолдер (прогон не выполнен).
- Не блокирует данную стадию: AC-13 обязателен до
Confirm Deploy(человеческий гейт прод-деплоя, ORCH-059), который наступает ПОСЛЕdeploy-staging. Реброtesting → deploy-stagingон не гейтит (это операторская страховка, а не Quality Gate;QG_CHECKSне содержит проверки AC-13). - Handoff оператору: выполнить runbook §5.2 (staging 8501, sandbox-префикс) и запротоколировать
результат в «Журнале smoke-прогонов»
ONBOARDING.mdперед нажатиемConfirm Deploy.
Вывод pytest (итоги)
# полный регресс
1713 passed, 1 warning in 65.40s (exit 0)
# профильные сюиты онбординга
83 passed, 1 warning in 0.55s (exit 0)
(Единственный warning — PydanticDeprecatedSince20 в src/config.py:8, существующий, не связан с задачей.)
Итог
PASS. Полный регресс зелёный (1713 passed), все 22 TC тест-плана выполнены и PASS, все
машинно-проверяемые AC (1–12) закрыты, read-only smoke API в норме (serial_gate/auto_labels
в /queue присутствуют). AC-13 — операторский smoke, отложен к гейту Confirm Deploy (не блокирует
переход на deploy-staging). Задача готова к стадии deploy-staging.