Files
orchestrator/docs/work-items/ORCH-009/13-test-report.md
claude-bot dd09e3da89
All checks were successful
CI / test (push) Successful in 54s
CI / test (pull_request) Successful in 53s
tester(ET): auto-commit from tester run_id=590
2026-06-10 16:08:43 +03:00

14 KiB
Raw Blame History

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-fable-5 test-report ORCH-009

Test Report — ORCH-009 — Turnkey-онбординг проектов (kit + CLI + runbook)

Машинный вердикт — в frontmatter (result: PASS). Ниже — факты, на которых он основан.

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3
  • Дата: 2026-06-10
  • Worktree: /repos/_wt/orchestrator/feature_ORCH-009-turnkey-plane/ (ветка feature/ORCH-009-turnkey-plane) — прогон в worktree ветки задачи, НЕ в общем чекауте /repos/orchestrator (анти-гонка checkout).
  • Прод http://localhost:8500/health{"status":"ok","service":"orchestrator"}
  • Staging http://localhost:8501/health{"status":"ok","service":"orchestrator"}
  • Прод-контейнер не трогался (read-only smoke, NFR self-hosting).

Результаты

Полный регресс (pytest tests/ -v --tb=short)

1712 passed, 1 failed (средовое, pre-existing — не регресс PR), 1 warning, 69.90s.

Единственное падение — tests/test_resolve_agent_effort.py::test_flags_present_when_configured:

assert "--model claude-opus-4-8 " in flags
E   AssertionError: assert '--model claude-opus-4-8 ' in
    '--model claude-fable-5 --effort xhigh --fallback-model claude-sonnet-4-6 '

Диагноз (подтверждает handoff-пункт №2 reviewer'а в 12-review.md): падение вызвано env-переменными агент-раннера (ORCH_AGENT_MODEL_DEFAULT=claude-fable-5, ORCH_AGENT_FALLBACK_MODEL, ORCH_AGENT_EFFORT_*), а не кодом ветки. Контрольный перепрогон с полностью очищенной средой (env -u ORCH_AGENT_*):

pytest tests/test_resolve_agent_effort.py tests/test_resolve_agent_model.py -q
49 passed, 1 warning in 0.44s

Дополнительно проверено: git diff --name-only origin/main...HEAD НЕ содержит src/**, .openclaw/**, tests/test_resolve_agent_* — PR эти файлы не трогает (pre-existing средовой эффект; авторитетен CI с чистой средой). С учётом контрольного прогона эффективный регресс — полностью зелёный.

Профильные сюиты задачи

Модуль Результат
tests/test_onboarding_kit.py 60/60 PASSED
tests/test_onboarding_script.py 18/18 PASSED
tests/test_onboarding_invariants.py 5/5 PASSED
Итого профильных 83/83 PASSED

Smoke API (read-only, прод 8500)

Проверка Результат
GET /health {"status":"ok"}
GET /status активные задачи отдаются (ORCH-009 stage=testing, ORCH-101 analysis)
GET /queue → блок serial_gate (ORCH-088) присутствует: enabled: true, per-repo картина корректна (активная ORCH-009, ожидающая ORCH-101 — FIFO, заморозок нет)
GET /queue → блок auto_labels (ORCH-089) присутствует (autoApprove/autoDeploy)
GET /health staging 8501 (контур smoke D8) ok

Регресса смока нет.

Сопоставление с тест-планом (04-test-plan.yaml) — каждый TC

TC ID Описание (кратко) Тест-функция(и) Результат
TC-01 Состав kit: все элементы FR-1 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 (6 параметров) PASS
TC-04 <escalation> у dev/reviewer/tester; «» test_tc04_escalation_section_after_success_criteria, test_tc04_bans_use_cross_check_format PASS
TC-05 Директивы доки: паспорт/AGENTS/ARCHITECTURE/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_machine_verdict_keys_byte_exact, test_tc06_schema_pins_role_author_and_stage, 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 (ADR D9) 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, test_placeholder_dictionary_bijection PASS
TC-10 Нет утечек орк-специфики (ORCH-, 8500/8501, self-hosting) test_tc10_no_orchestrator_specific_leaks PASS
TC-11 Ссылочная целостность отрендеренного каркаса 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: все 22 статуса _PLANE_NAME_TO_KEY (incl. Confirm Deploy, STOPcancelled) + лейблы test_tc13_plan_covers_all_statuses_and_labels, test_state_groups_match_plane_name_to_key PASS
TC-14 CE-отказ Plane → manual-step со ссылкой на runbook, не молча test_tc14_plane_refusal_becomes_manual_step PASS
TC-15 План Gitea: репо + webhook (push/pull_request/status, HMAC вне гита) + initial push test_tc15_plan_contains_gitea_repo_webhook_and_push, test_secret_never_leaks_into_report PASS
TC-16 plan — чистый dry-run: ноль мутаций test_tc16_plan_is_a_pure_dry_run PASS
TC-17 Повторный applyskipped(exists), без дублей/удалений test_tc17_second_apply_skips_everything_existing PASS
TC-18 Нет рестартов/правки .env/push в существующие репо test_tc18_source_has_no_container_or_env_mutation_ops, test_tc18_fresh_apply_runs_git_only_inside_workdir PASS
TC-19 INFRA.md шаблон: обязательные секции; INFRA орка не тронут test_tc19_infra_template_mandatory_sections, test_tc19_orchestrator_own_infra_untouched_sections PASS
TC-20 Runbook: все слои в порядке, ручные шаги помечены, журнал smoke 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/** и .openclaw/ не тронуты 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/ зелёный весь прогон: 1712 passed (+1 средовой pre-existing, с чистой средой 49/49 — см. выше) PASS

22/22 TC выполнены, все PASS.

Сопоставление с критериями приёмки (03-acceptance-criteria.md)

AC Покрытие Результат
AC-1 (состав kit) TC-01 PASS
AC-2 (канон 52d/92) TC-03…TC-06 PASS
AC-3 (reviewer-gate доки) TC-07 PASS
AC-4 (языковая политика, ADR D9) TC-08 PASS
AC-5 (плейсхолдеры/утечки/целостность) TC-09…TC-11 PASS
AC-6 (registry round-trip) TC-12 PASS
AC-7 (план Plane: статусы/лейблы) TC-13, TC-14 PASS
AC-8 (план Gitea + dry-run без мутаций) TC-15, TC-16 PASS
AC-9 (идемпотентность/безопасность apply) TC-17, TC-18 PASS
AC-10 (INFRA.md шаблон) TC-19 PASS
AC-11 (runbook полон) TC-20 PASS
AC-12 (инварианты src/**) TC-21, TC-22 + diff-проверка (origin/main...HEAD: src/**, .openclaw/** — пусто) PASS
AC-13 (операторский smoke, ADR D8) вне pytest-скоупа (по 04-test-plan.yaml: «выполняется вручную и протоколируется») ⚠️ NOT RUN — открытый операторский шаг (см. ниже)

⚠️ AC-13 — открытый ОБЯЗАТЕЛЬНЫЙ операторский шаг (ADR-001 D8)

«Журнал smoke-прогонов» в docs/operations/ONBOARDING.md (§ строка 186) на момент отчёта содержит плейсхолдер — операторский smoke на песочнице (runbook §5.2: онбординг sandbox onboarding-smoke/SMK → регистрация в .env.staging → рестарт staging → тестовая задача → стадия analysis) не выполнен и не запротоколирован.

  • Прогон по построению мутирующий (создание сущностей Plane/Gitea, правка .env.staging, рестарт staging-контейнера) и в 04-test-plan.yaml/AC-13 явно классифицирован как ручной операторский — он вне полномочий tester-агента (read-only smoke) и не покрывается ни одним TC; дефекта кода нет, поэтому FAIL/откат на development не обоснован.
  • Контур smoke готов: staging 8501 жив (health ok), verify-режим CLI и runbook протестированы структурно (TC-13…TC-20).
  • Эскалация оператору: по D8 первый протокол в «Журнале smoke-прогонов» обязателен для приёмки ORCH-009 — выполнить прогон по runbook §5.2 и заполнить журнал ДО прод-деплоя (гейт Confirm Deploy — человеческий, точка контроля сохраняется). Ссылка по требованию D8: docs/operations/ONBOARDING.md § «Журнал smoke-прогонов».

Вывод pytest

$ cd /repos/_wt/orchestrator/feature_ORCH-009-turnkey-plane && pytest tests/ -v --tb=short
...
tests/test_onboarding_invariants.py — 5 PASSED
tests/test_onboarding_kit.py — 60 PASSED
tests/test_onboarding_script.py — 18 PASSED
...
=================================== FAILURES ===================================
______________________ test_flags_present_when_configured ______________________
tests/test_resolve_agent_effort.py:190: in test_flags_present_when_configured
    assert "--model claude-opus-4-8 " in flags
E   AssertionError: assert '--model claude-opus-4-8 ' in
    '--model claude-fable-5 --effort xhigh --fallback-model claude-sonnet-4-6 '
=========================== short test summary info ============================
FAILED tests/test_resolve_agent_effort.py::test_flags_present_when_configured
============= 1 failed, 1712 passed, 1 warning in 69.90s (0:01:09) =============

# Контрольный перепрогон средового падения с чистой средой (handoff reviewer):
$ env -u ORCH_AGENT_* pytest tests/test_resolve_agent_effort.py tests/test_resolve_agent_model.py -q
49 passed, 1 warning in 0.44s

Итог

PASS.

  • 22/22 TC тест-плана выполнены и зелёные; AC-1…AC-12 подтверждены.
  • Полный регресс эффективно зелёный (1712 passed; единственное падение — средовое pre-existing, с чистой средой проходит; PR src/**/.openclaw/**/файлы этих тестов не трогает).
  • Smoke API без регрессов: /health, /status, /queue (блоки serial_gate и auto_labels присутствуют); staging 8501 жив.
  • ⚠️ AC-13 (операторский smoke, D8) — не закрыт: обязателен к выполнению и протоколированию оператором до прод-деплоя (Confirm Deploy). Дефекта кода нет — вердикт стадии testing PASS.