81 lines
5.4 KiB
YAML
81 lines
5.4 KiB
YAML
work_item: ORCH-118
|
||
stage: analysis
|
||
author_agent: analyst
|
||
status: ready-for-review
|
||
created_at: 2026-06-15
|
||
model_used: claude-opus-4-8
|
||
title: "LLM call-site inventory + classification + roadmap + usage policy (inventory-first, docs+tests only)"
|
||
framework: pytest
|
||
scope: >
|
||
Покрываются СТРУКТУРНЫЕ инварианты карты вызовов LLM и анти-дрейф (FR-6), плюс скоуп-гард
|
||
(рантайм-контракты не тронуты, раннеры не реализованы). ВНЕ покрытия: реализация
|
||
детерминированных раннеров tester/deployer (ORCH-115/116) — отдельные follow-up задачи.
|
||
notes: >
|
||
Все тесты детерминированы и offline: без сети, без запуска LLM, без subprocess-к-модели.
|
||
Имена файла теста и документов карты — примерные (финально решает архитектор); тест-кейсы
|
||
привязываются к фактическим путям артефактов, выбранным в 06-adr. Полный регресс tests/
|
||
должен оставаться зелёным (TC-08). Регрессом считается: появление второй точки запуска LLM,
|
||
запуск LLM в детерминированном модуле, дрейф карты относительно .openclaw/agents/, изменение
|
||
рантайм-контрактов (STAGE_TRANSITIONS / QG_CHECKS / check_* / machine-verdict / схема БД).
|
||
|
||
tests:
|
||
- id: TC-01
|
||
type: unit
|
||
description: "Единственная точка запуска LLM: ровно одно место в src/** собирает/запускает Claude CLI (CLAUDE_BIN + --system-prompt + Popen/bash -c), и это launcher._spawn (FR-6a / AC-1)"
|
||
module: tests/test_llm_call_site_inventory.py
|
||
expected: PASS
|
||
|
||
- id: TC-02
|
||
type: unit
|
||
description: "Детерминированные модули без LLM: перечисленные leaf'ы (serial_gate, merge_gate, coverage_gate, security_gate, staging_verdict, review_parse, error_classifier, frontmatter, self_deploy, post_deploy, transition_lease, reconciler, job_reaper) не содержат запуска Claude CLI (FR-6b / AC-3)"
|
||
module: tests/test_llm_call_site_inventory.py
|
||
expected: PASS
|
||
|
||
- id: TC-03
|
||
type: unit
|
||
description: "Анти-дрейф промптов: карта перечисляет ровно те 6 промпт-файлов, что физически лежат в .openclaw/agents/ (двусторонняя сверка, нет лишних/пропущенных) (FR-6c / AC-1)"
|
||
module: tests/test_llm_call_site_inventory.py
|
||
expected: PASS
|
||
|
||
- id: TC-04
|
||
type: unit
|
||
description: "Тотальность классификации: каждый перечисленный в карте call-site отнесён ровно к одному классу из таксономии {keep-LLM, replace-deterministic-now, replace-later/risky, needs-hybrid-fallback}; без дублей и пропусков (FR-6d / AC-2)"
|
||
module: tests/test_llm_call_site_inventory.py
|
||
expected: PASS
|
||
|
||
- id: TC-05
|
||
type: unit
|
||
description: "keep-LLM требует обоснования: каждая запись класса keep-LLM несёт непустое поле названного конкретного суждения (FR-2 / AC-2)"
|
||
module: tests/test_llm_call_site_inventory.py
|
||
expected: PASS
|
||
|
||
- id: TC-06
|
||
type: unit
|
||
description: "Детерминированные job-роли: launch_job перехватывает deploy-finalizer и post-deploy-monitor ДО _spawn (LLM не запускается) — эталон паттерна замены (FR-6e / AC-3)"
|
||
module: tests/test_llm_call_site_inventory.py
|
||
expected: PASS
|
||
|
||
- id: TC-07
|
||
type: unit
|
||
description: "Полнота roadmap: документ roadmap для каждого кандидата содержит обязательные атрибуты (зависимости / оценка экономии со ссылкой на agent_runs / риск / hybrid-need / follow-up work item) и явно называет рекомендованный первый срез (FR-4 / AC-4)"
|
||
module: tests/test_llm_determinization_docs.py
|
||
expected: PASS
|
||
|
||
- id: TC-08
|
||
type: unit
|
||
description: "Политика LLM существует и нормативна: документ политики содержит принцип 'LLM только где нужно суждение' и критерии keep vs replace (FR-5 / AC-5)"
|
||
module: tests/test_llm_determinization_docs.py
|
||
expected: PASS
|
||
|
||
- id: TC-09
|
||
type: integration
|
||
description: "Скоуп-гард рантайм-контрактов: снимок set ролей-агентов из STAGE_TRANSITIONS и набора имён QG_CHECKS не изменился относительно эталона — ORCH-118 не тронул машину стадий/гейты (FR-7 / AC-7)"
|
||
module: tests/test_llm_call_site_inventory.py
|
||
expected: PASS
|
||
|
||
- id: TC-10
|
||
type: integration
|
||
description: "Полный регресс tests/ остаётся зелёным (pytest tests/ -q) — инвентаризация и тесты не ломают существующий конвейер (NFR-1 / AC-6, AC-7)"
|
||
module: tests/
|
||
expected: PASS
|