14 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-078 | analysis | analyst | ready-for-review | 2026-06-09 | claude-opus-4-8 |
02 — ТЗ (TRZ): ORCH-078 — ORCH-52e: трассировка ORCH-NNN (маркеры-стандарт + правило чтения)
Work Item: ORCH-078 · Repo: orchestrator (self-hosting) · Стадия: analysis
ТЗ описывает конкретные изменения (выведенные из BRD и фактического содержимого репозитория). Архитектурное обоснование (нужен ли сквозной ADR, точные формулировки врезок в промпты, форма стандарта) — задача архитектора (
06-adr). Это docs + prompts-only задача:src/**не меняется.
1. Сводка изменения
Ввести формальный стандарт маркеров-трассировки docs/_standards/TRACEABILITY.md и точечно
(не переписывая) дополнить 3 системных промпта правилом чтения ADR перед правкой маркированного
кода (developer/architect) и контролем его соблюдения (reviewer). Задокументировать fallback-доступ
к чужому work item и анти-археологию (3+ маркеров → сводный сквозной ADR). Сопутствующе обновить
CLAUDE.md, docs/architecture/README.md, CHANGELOG.md; расширить структурный анти-регресс-тест
промптов. Существующие 51 маркер в src/ не переразмечаются.
2. Задействованные модули / пути
| Путь | Действие |
|---|---|
docs/_standards/TRACEABILITY.md |
создать (новый стандарт; см. FR-1) |
.openclaw/agents/developer.md |
точечно дополнить — правило чтения + fallback-доступ (FR-2, FR-5); ссылка на стандарт |
.openclaw/agents/architect.md |
точечно дополнить — правило чтения + анти-археология (FR-3, FR-6); ссылка на стандарт |
.openclaw/agents/reviewer.md |
точечно дополнить — ось контроля соблюдения трассировки (FR-4); ссылка на стандарт |
CLAUDE.md |
обновить — раздел «Правила для агентов» / «Конвенции»: правило трассировки + ссылка на TRACEABILITY.md (FR-7) |
docs/architecture/README.md |
обновить — упоминание стандарта как слоя 4 эпика 52 (FR-7) |
CHANGELOG.md |
добавить запись ## [Unreleased] |
tests/test_agent_prompts_canon.py |
расширить (tests-only) — анти-регресс reading-rule маркеров (FR-8); НЕ трогает src/ |
docs/work-items/ORCH-078/06-adr/ADR-001-*.md |
создать (архитектор) |
docs/architecture/adr/adr-NNNN-*.md |
создать при необходимости (архитектор, если решение сквозное) |
| НЕ трогать | src/** (любой), STAGE_TRANSITIONS, QG_CHECKS, check_*, _parse_*, src/frontmatter.py, схема БД; XML-канон и 52c-эмиссия промптов 52d |
3. Функциональные требования
FR-1 — Стандарт docs/_standards/TRACEABILITY.md (BR-1, BR-4, BR-5)
Новый нормативный документ в стиле соседей (PIPELINE_DOCS.md/HANDOFF_PROTOCOL.md). Обязательные
смысловые блоки:
- Назначение и определение. Маркер
ORCH-NNN(иET-NNN) в коде = обязательный стандарт трассировки: привязка нетривиальной строки/блока/инварианта к work item, который его ввёл, и к его ADR. (Зафиксировать существующий факт: ~51 уникальный маркер вsrc/.) - Формат маркера. Inline-комментарий, содержащий
ORCH-NNN(например, в docstring модуля и/или у строки инварианта); рекомендуется указывать ссылку на решение (ORCH-088, ADR-001 D1). Не вводить нового синтаксиса — кодифицировать сложившийся. - Где ставится. Рядом с нетривиальным инвариантом (fail-open/fail-closed выбор, точное условие сериализации, идемпотентность, обходимая дыра конвейера), а не на тривиальном/ самоочевидном коде. Правило для нового кода: вводишь значимый инвариант → ставь маркер своей задачи рядом.
- Как читать историю — с РЕАЛЬНЫМ примером (AC-1). Пошагово: маркер в коде →
docs/work-items/ ORCH-NNN/06-adr/. Обязателен ≥1 проверяемый пример из существующего кода, например:src/serial_gate.pyстрокаt2.id < jobs.task_idнесёт маркер ORCH-088 (ADR-001 D1 / FR-2, FIFO-уточнение) → читатьdocs/work-items/ORCH-088/06-adr/ADR-001-serial-gate.md. Пример обязан ссылаться на реально существующие вmainфайл и ADR. - Fallback-доступ (BR-4). Если папки
docs/work-items/ORCH-NNN/нет в текущей ветке (срезана отmainбез неё) — читать изorigin/main:git show origin/main:docs/work-items/ORCH-NNN/06-adr/ADR-001-<slug>.md(при необходимостиgit fetch originзаранее; листинг —git ls-tree origin/main:docs/work-items/ORCH-NNN/06-adr/). - Анти-археология (BR-5). Если функция/блок несёт 3+ маркеров
ORCH-NNN— вместо раскопок по каждому work item ставится сводная ссылка на один сквозной ADR (docs/architecture/adr/ adr-NNNN-*), агрегирующий эволюцию. Пример из кода:src/merge_gate.pyнесёт ORCH-043/065/071/073 → сводные сквозныеadr-0006/adr-0013/adr-0014/adr-0016. - Правило чтения (нормативная формулировка). «Правишь код с маркером
ORCH-NNN→ прочитай его06-adrПЕРЕД изменением; не сломай зафиксированный инвариант; не можешь — эскалируй/верни в анализ» — каноничный текст, на который ссылаются промпты (BR-6: единый источник, без повтора).
FR-2 — Правило чтения в developer.md (BR-2)
Точечная врезка (НЕ перезапись), сохраняющая 5 XML-секций и 52c-эмиссию. В <constraints> (и/или
<context> списком «что прочесть») добавить пункт в формате «❌ X → ✅ Y»:
- ❌ Не правь строку/блок с маркером
ORCH-NNNвслепую → ✅ перед изменением прочитайdocs/work-items/ORCH-NNN/06-adr/и не сломай зафиксированный инвариант; стандарт —docs/_standards/TRACEABILITY.md. - Включить fallback-доступ (FR-5).
Существующее 52d-упоминание «реализуй по
06-adr/» относится к ADR текущей задачи — НЕ дублировать, а дополнить правилом для чужих маркеров.
FR-3 — Правило чтения + анти-археология в architect.md (BR-2, BR-5)
Точечная врезка: при изменении маркированного компонента архитектор обязан свериться с ADR work
item(ов), породивших инвариант; при введении/правке блока с 3+ маркерами — оформить/обновить
сводный сквозной ADR (docs/architecture/adr/) согласно TRACEABILITY.md §анти-археология.
Ссылка на стандарт; без перезаписи существующих секций.
FR-4 — Контроль соблюдения в reviewer.md (BR-3)
Точечная врезка в ось «Соответствие ADR» (или новый под-пункт): reviewer проверяет, что правка
кода, несущего чужой маркер ORCH-NNN, сверена с его 06-adr и не ломает инвариант; нарушение
(правка маркированного инварианта без обоснования / со сломом) → finding. Рекомендуемая severity —
P1 (must-fix); слом критического инварианта конвейера может быть P0 на усмотрение reviewer.
Ссылка на TRACEABILITY.md. НЕ дублировать существующую общую ADR-ось — усилить её этим под-пунктом.
FR-5 — Fallback-доступ задокументирован (BR-4)
Команда git show origin/main:docs/work-items/ORCH-NNN/06-adr/... присутствует и в TRACEABILITY.md
(FR-1.5), и в developer.md (рядом с правилом чтения), чтобы агент, у которого нет папки в ветке,
знал штатный способ прочитать чужой ADR.
FR-6 — Анти-археология зафиксирована (BR-5)
Конвенция «3+ маркеров → сводный сквозной ADR» присутствует в TRACEABILITY.md (FR-1.6) и в
architect.md (FR-3). Reviewer может опираться на неё при ревью (FR-4).
FR-7 — Сопутствующая документация (BR-7)
CLAUDE.md— в «Правила для агентов» и/или «Конвенции» добавить правило трассировки одной строкой- ссылку на
docs/_standards/TRACEABILITY.md(по образцу того, как там уже ссылаются наPIPELINE_DOCS.md/HANDOFF_PROTOCOL.md).
- ссылку на
docs/architecture/README.md— в разделе про стандарты документов конвейера (ORCH-075/077) упомянутьTRACEABILITY.mdкак слой 4 (трассировка) эпика ORCH-52 со ссылкой.CHANGELOG.md— запись под## [Unreleased](docs:).
FR-8 — Анти-регресс промптов (NFR-2)
Расширить tests/test_agent_prompts_canon.py (tests-only, src/ не трогается) так, чтобы он
утверждал присутствие reading-rule маркеров в developer/architect/reviewer (напр. строка
TRACEABILITY и/или паттерн правила чтения у маркированного кода) — аналогично существующим
_ANTI_REGRESS-проверкам. Существующие проверки 52d (5 XML-секций, 6 полей схемы, точный регистр
verdict-ключей, self-hosting-маркеры deployer) остаются и зелёные;
tests/test_agent_frontmatter_no_model.py остаётся зелёным.
4. Изменения API
Нет. Эндпоинты не добавляются/не меняются.
5. Изменения схемы БД
Нет. Таблицы/миграции/индексы не трогаются.
6. Требования к новым/изменённым QG checks
Нет. QG_CHECKS, check_*, _parse_*, STAGE_TRANSITIONS — без изменений.
frontmatter_validation_strict остаётся False; enforcement не вводится. Новый QG не добавляется
(стандарт трассировки — нормативный документ + анти-регресс-тест промптов, не машинный гейт
конвейера).
7. Совместимость / регресс
- Нулевое касание кода (NFR-1): меняются только
docs/**и.openclaw/agents/*.md(+ tests-only расширение структурного теста). Поведениеsrc/идентично → нулевая функциональная регрессия, enduro-trails не затронут. - Анти-регресс промптов (NFR-2): точечные врезки сохраняют 5 XML-секций, 52c-эмиссию и
machine-verdict ключи байт-в-байт; гарантируется расширенным
test_agent_prompts_canon.py. - Self-hosting (NFR-4): промпт
cat-ается из worktree при запуске → новое правило действует на следующем worktree отmainбез прод-рестарта (8500). - Обратимость (NFR-5): чисто текстовое изменение;
git revertPR — полный откат; kill-switch не нужен (нет машинного поведения); нет миграций/состояния. - Анти-дубль (BR-6): промпты ссылаются на единый текст правила в
TRACEABILITY.md, а не повторяют его; 52d-канон не переписывается. - Тесты: полный
pytest tests/ -q— зелёный.