4.3 KiB
4.3 KiB
type, work_item_id, result
| type | work_item_id | result |
|---|---|---|
| test-report | ORCH-074 | PASS |
Test Report — ORCH-074
Убрать мёртвый frontmatter model: из 6 промптов + валидация имени модели (never-break).
Скоп: G1 + G2 + опц. G4 (выключен). G3 routing снят. Review-вердикт: APPROVED.
Окружение
- Python: 3.12.13
- pytest: 8.3.3
- Ветка: feature/ORCH-074-orch-52a-frontmatter-routing-e (worktree)
- prod health (8500):
{"status":"ok","service":"orchestrator"} - Дата: 2026-06-08
Результаты по тест-плану (04-test-plan.yaml)
| TC ID | Описание | Тест | Результат |
|---|---|---|---|
| TC-01 | Ни один .openclaw/agents/*.md не содержит ^model: (G1, AC-1) |
test_no_model_line_in_frontmatter[×6] | PASS |
| TC-02 | frontmatter валидный YAML, ключи name/description сохранены | test_frontmatter_still_valid_yaml_with_keys[×6] | PASS |
| TC-03 | Мусорный agent_model_<agent> → откат на default, warning, мусор не в --model |
test_garbage_per_agent_env_falls_back_to_default | PASS |
| TC-04 | Мусорный project-override → откат на default | test_garbage_project_override_falls_back_to_default | PASS |
| TC-05 | Невалидны override И default → "" (CLI-дефолт), без исключения |
test_all_levels_invalid_returns_empty | PASS |
| TC-06 | Валидное claude-opus-4-8 проходит без изменения (регрессия ORCH-041) |
test_valid_canonical_unchanged | PASS |
| TC-07 | Все 6 агентов резолвятся в claude-opus-4-8 (routing выкл) |
test_all_six_agents_resolve_to_opus_4_8 | PASS |
| TC-08 | Валидный enduro per-project override не сломан валидацией | test_valid_per_project_override_unchanged | PASS |
| TC-09 | G4 выключен: agent_fallback_model == "" (дефолт) |
test_fallback_model_disabled_by_default | PASS |
| TC-10 | Полный pytest зелёный; never-break graceful-деградация | tests/ (1012 passed) | PASS |
| TC-11 | G4 never-break (мусорный fallback не в --fallback-model) |
— | N/A (G4 выключен, синхр. с ADR/AC-5) |
Доп. предикат-юниты: test_is_valid_model_accepts_canonical, test_is_valid_model_rejects_garbage — PASS.
Проверка критериев приёмки
| AC | Статус | Подтверждение |
|---|---|---|
AC-1 frontmatter model: убран |
PASS | grep -L "^model:" .openclaw/agents/*.md → все 6 файлов; grep -rn "^model:" → пусто |
| AC-2 валидация never-break | PASS | TC-03..05 |
AC-3 все 6 → claude-opus-4-8 |
PASS | TC-07 |
| AC-4 routing G3 | N/A | снят решением (ADR) |
| AC-5 fallback G4 | PASS | G4 выключен, agent_fallback_model="", ADR фиксирует отказ (TC-09) |
| AC-6 синхронизация доков | PASS | проверено reviewer (README/CLAUDE.md/.env.example) |
| AC-7 pytest зелёный | PASS | 1012 passed |
| AC-8 enduro override | PASS | TC-08 |
| AC-9 ADR | PASS | 06-adr/ADR-001 присутствует |
Smoke test API (prod, read-only)
GET /health → HTTP 200 {"status":"ok","service":"orchestrator"}
GET /status → HTTP 200
GET /queue → HTTP 200
Вывод pytest
$ python -m pytest tests/ -q
1012 passed, 1 warning in 22.07s
$ python -m pytest tests/test_agent_frontmatter_no_model.py tests/test_resolve_agent_model.py -v
32 passed, 1 warning in 0.37s
(1 warning — PydanticDeprecatedSince20 в src/config.py:5, существующий, вне скоупа задачи.)
AC-1 grep-проверка
$ grep -L "^model:" .openclaw/agents/*.md
.openclaw/agents/analyst.md
.openclaw/agents/architect.md
.openclaw/agents/deployer.md
.openclaw/agents/developer.md
.openclaw/agents/reviewer.md
.openclaw/agents/tester.md
$ grep -rn "^model:" .openclaw/agents/*.md # пусто (exit 1)
Итог
PASS — все применимые тест-кейсы (TC-01..10) зелёные, TC-11 корректно N/A (G4 выключен), все AC выполнены (AC-4 — N/A по скоупу), smoke API OK. Задача готова к стадии deploy-staging.