Переносит архив `audits/2026-10-11/` (19 файлов) из codex/audit-remediation-2026-10-11 в develop и добавляет точечный allowlist в .gitignore.
343 lines
66 KiB
Markdown
343 lines
66 KiB
Markdown
# Аудит 14 — AI Agent Workflow Efficiency
|
||
|
||
## 1. Audit metadata
|
||
|
||
- **Дата:** 2026-10-11.
|
||
- **Основание:** `audit-prompts/14-ai-agent-workflow-efficiency.md`.
|
||
- **Результат:** этот файл; имя выбрано по прямому запросу пользователя, вместо имени с суффиксом `-report`, указанного в шаблоне.
|
||
- **Режим:** статический read-only аудит четырех репозиториев и анализ предоставленного локального `session.json`. Единственная запись — итоговый отчет вне четырех репозиториев.
|
||
- **Workspace/cwd:** `/Users/ksv741/Project/vibe/WealthLedger`; ниже пути относительно него. `~/…` обозначает локальную глобальную конфигурацию, которая не входит в Git проекта.
|
||
|
||
| Repo | Проверенный путь | Точный HEAD | Начальный status |
|
||
| --- | --- | --- | --- |
|
||
| root | `/Users/ksv741/Project/vibe/WealthLedger` | `dc030f84c979cedb2628ef4bd97c62d6c63a9256` | clean |
|
||
| frontend | `/Users/ksv741/Project/vibe/WealthLedger/frontend` | `c8821200ce699dab1ce65360d1968d5877a2e78b` | clean |
|
||
| backend | `/Users/ksv741/Project/vibe/WealthLedger/backend` | `0ad84ff4f0b4712abc7e69dc299856f14af6eadd` | clean |
|
||
| specs | `/Users/ksv741/Project/vibe/WealthLedger/specs` | `fcdc805f6c1b3be6a20a7e858e3e80cbd83a9121` | clean |
|
||
| docs | `/Users/ksv741/Project/vibe/WealthLedger/docs` | `e6fd4f64b81dd73b33959b845a1babcfac1891c8` | clean |
|
||
|
||
**Skills.** В начале через Skill загружен установленный `ponytail-audit`. Применены его критерии удаления процессной сложности, поиска существующих средств и минимального изменения. Его краткий формат расширен обязательной структурой этого аудита; потенциальные строки/зависимости к удалению не выдумываются. Остальные skill-файлы читались как предмет исследования, без запуска их workflow.
|
||
|
||
**Что выполнялось:** Read/Glob/Grep; `git status --short`; `git rev-parse --show-toplevel HEAD`; `git config --show-origin --get core.hooksPath`; `command -v opencode`; `ls` для проверки каталога результата и типа каталогов skills; read-only `jq`-агрегации существующего JSON. При отсутствии `core.hooksPath` запрос Git возвращает отсутствие значения, а не поломку репозитория. Не найденный `specs/.githooks/pre-commit` проверен перечислением каталога: там только `commit-msg`.
|
||
|
||
**Не выполнялось:** install, Node-команды, tests, lint, build, verify, codegen, OpenSpec CLI, hooks, graph generation, обращения к MCP/внешним сервисам, commit/PR, изменения конфигураций или исходников. Команды тестирования внутри исторического trace — наблюдаемые записи прежнего сеанса, не запуски этого аудита.
|
||
|
||
**Ограничения:** глобальные настройки, локальные `.agents/skills` и `session.json` не versioned этим root allowlist; указанный root SHA не фиксирует их содержание. Startup/debug logs текущего harness не исследованы. Не открывались auth-файлы, БД истории, чужие глобальные sessions или банковские данные. Значения credentials из конфигураций не приводятся. `technical-audit-2026-10-11.md` использован только как прежний реестр: отдельного доказательства workflow-проблем он не дает. Отчет локальный и исключен root allowlist (`.gitignore:1–7`); добавление в tracking не выполняется.
|
||
|
||
## 2. Executive verdict
|
||
|
||
1. **Факт:** действующие repo routers уже обеспечивают selective context и самостоятельность checkout. Нет обязательного правила читать все четыре репозитория для каждого UI/backend изменения. Это следует сохранить, а не заменять новым общим руководством.
|
||
2. **Подтвержденный механизм затрат:** для любого code/dependency change оба engineering-файла требуют `npm ci` и полный `verify`. В SDD task-dispatch это становится требованием каждого исполнителя. Два завершенных исполнителя в trace сообщают о full verify; фактические subprocess traces и длительность этих gates отсутствуют. Размер экономии **not measured**.
|
||
3. **Подтвержденные конфликты инструкций:** локальный risk-based testing конкурирует с универсальным TDD; scoped reviewer — с требованием «fresh verification в этом сообщении»; project approval flow — с generic autonomous rulings. Дополнительные отрицания в dispatch prompt сейчас компенсируют часть конфликтов.
|
||
4. **Наблюдаемый локальный сбой:** `nvm use --silent` без bootstrap завершился `127`; следующий вызов с загрузкой `nvm.sh` выполнил целевой тест. Это дешевый устранимый retry, а не свидетельство медленных тестов.
|
||
5. **Факт о выборке:** родительский SDD export содержит 53 tool parts и записанные token counts. Повторных Read одного пути нет. Две отмены task и повторные dispatch видны; причины отмен и объем потерянной работы **UNVERIFIED**. Обвинять модель или считать все время сеанса overhead нельзя.
|
||
6. **Непроверенная гипотеза:** глобальный каталог MCP/skills и широкий graphify trigger увеличивают нерелевантный контекст. Экспозиция инструментов подтверждена, их вклад в tokens/latency — нет. До измерения нужны селективные triggers, а не массовое удаление полезных инструментов.
|
||
7. **KEEP:** approval, explicit store, публичные API artifacts, финансовые/DB/auth regression boundaries и независимый semantic review. В исторической второй задаче review действительно выявил нарушение exact-UID требования после зеленых тестов; это контрпример предложению удалить review целиком.
|
||
|
||
**Итог:** пять подтвержденных instruction/config findings и одна исследовательская гипотеза. P0/P1 не установлены. Основной путь улучшения — согласовать существующие правила и единицу verification, без новой инфраструктуры.
|
||
|
||
## 3. Inventory & coverage
|
||
|
||
### 3.1. Что реально изучено
|
||
|
||
| Область | Проверенные объекты | Граница выводов |
|
||
| --- | --- | --- |
|
||
| Repo entry points | Root и четыре локальных `AGENTS.md`; frontend/backend engineering/testing; frontend architecture/UI/data; backend HTTP API; specs README/AI_INDEX; docs CONTRIBUTING | Правила прочитаны; их соблюдение во всех прежних sessions не доказано |
|
||
| Verification consumers | frontend/backend/specs/docs `package.json`; frontend `.husky/pre-commit`, `commit-msg`, установленный Husky launcher; specs `.githooks/commit-msg`; Git hooksPath | Прослежены точки запуска, без аудита семантики custom scripts или CI topology |
|
||
| SDD | `specs/openspec/config.yaml`, v2 `schema.yaml`, установленный стандартный `openspec-apply-change` | Approval/dependencies/context loading; весь массив canonical specs и archives не читался |
|
||
| Generic workflows | `subagent-driven-development` и implementer/reviewer templates; TDD; verification-before-completion | Проверены реальные противоречия и capability mismatch, без исполнения workflow |
|
||
| Global OpenCode | `~/.config/opencode/opencode.jsonc`, `plugins/rtk.ts`, установленный Ponytail plugin | Регистрация/триггеры; tool transport startup latency не измерена |
|
||
| Другие harness | `~/.claude/CLAUDE.md`, RTK.md, settings; пустой `~/.codex/AGENTS.md`, релевантные config declarations и hooks.json | Наличие и регистрация не приравниваются к исполнению в OpenCode |
|
||
| UI conventions | AccountIncomePage container и BankCardForm consumer; FSD skill sections о selective references/extraction | Проверка обвинения в обязательных пустых VM/wrappers; не frontend architecture audit |
|
||
| Runtime sample | Workspace `session.json`, parent messages/tool states/token counters | Один незавершенный SDD-сеанс; child tool traces отсутствуют |
|
||
|
||
Frontend — React/TypeScript/Vite с Mantine, Vitest и локальными packages; backend — NestJS/Prisma/SQLite с Jest. Стек проверен по manifests и локальным инструкциям, не принят из старого отчета.
|
||
|
||
На glob по root нельзя полагаться для nested repos: root исключает их из tracking. Поэтому entry points и поиск локальных AGENTS выполнялись с явными repo paths. В охваченном поиске frontend/backend/specs/docs найдено по одному `AGENTS.md`; repo listings не показывают локальных `.opencode`/`.claude` configs. Это не доказательство отсутствия всех возможных environment overrides.
|
||
|
||
### 3.2. Метрики и метод
|
||
|
||
Источник — JSON export; обход `.messages[].parts[]`, только `type == "tool"`. Считаются вызовы родителя, включая отмененные и незавершенный. Tokens суммированы **один раз** из assistant `.info.tokens`, без повторного учета `step-finish.tokens`; сумма сверена с `.info.tokens` сеанса. Размеры outputs — `utf8bytelength(.state.output)`, без дубликатов из metadata. Байты не конвертируются в tokens.
|
||
|
||
| Метрика | Значение | Охват/интерпретация |
|
||
| --- | --- | --- |
|
||
| Сообщения | 42: 38 assistant, 4 user | Только parent export |
|
||
| Tool parts | 53 | bash 19; read 12; task 9; skill 4; write 3; grep 2; edit 2; todowrite 2 |
|
||
| Повторное чтение пути | 0 повторов среди 12 Read | Не включает shell reads и инструменты children |
|
||
| До первого implementer dispatch | 34 tool parts | Включает approvals, необходимые contextFiles и два explore; не означает 34 лишних вызова |
|
||
| Записанные input tokens | 449369 | Provider/harness counters, не независимый tokenizer |
|
||
| Записанные cache read tokens | 2601600 | Сумма по turns, не число уникальных tokens контекста |
|
||
| Записанные output / reasoning tokens | 13682 / 17208 | Отдельные поля export; не суммируются в придуманную billing-модель |
|
||
| Tool output bytes | 242449 | `.state.output` родителя |
|
||
| Из них четыре Skill outputs | 58388 | apply, subagent workflow, TDD, verification; без injected system prompt |
|
||
| Два explore outputs | 25197 | Backend/frontend mapping; полезность каждой строки не измерена |
|
||
| Самый большой tool output | 33577 bytes | Загрузка subagent-driven-development |
|
||
| Dispatch prompt bytes | 26357 | Девять task inputs, включая отмены и resume |
|
||
| Отмены / незавершенный task | 2 / 1 | Отмены сопровождаются MessageAbortedError; последний fix имеет status running |
|
||
| Bash с nonzero exit | 1 | `nvm` отсутствует; exit 127 |
|
||
| Интервал export | 2026-10-10 18:59:47–20:17:09 UTC; 4642.105 s | `updated-created`; включает ожидание пользователя и children, не active processing time |
|
||
|
||
Evidence: `session.json:1–34` — metadata; `:2970–2994`, `:3280–3300`, `:3961–3979`, `:4070–4089`, `:4392–4410`, `:4511–4530` — task states; `:3420–3434` — failed shell. Числа получены read-only `jq` с фильтрацией/group_by и суммированием, а не оценкой по размерам файлов.
|
||
|
||
**Стоимость исполнения:** `cost: 0` в export не доказывает бесплатную работу. Полные costs/tokens children, стоимость tool catalog/system instructions, чистый verification runtime и контрфактическая экономия **NOT MEASURED**. Отдельно выделенный **runtime agent overhead NOT MEASURED**, хотя session usage counters доступны.
|
||
|
||
Репрезентативность ограничена: один явно запрошенный SDD feature с делегацией, TDD и review. Нет runtime samples small UI fix или обычного backend contract change; их последовательности ниже — рекомендации, не измерения. Точные HEAD четырех repo в export не установлены; его snapshot hashes не приравниваются к repo commits. Историческое исполнение не приписывается текущим HEAD автоматически. Reports/briefs из прежнего `.superpowers` workspace изучались только по встроенному содержимому export, без подтверждения наличия этих файлов сейчас.
|
||
|
||
## 4. Instruction Precedence Map
|
||
|
||
| Уровень/источник | Реальное включение | Правило разрешения |
|
||
| --- | --- | --- |
|
||
| System/developer текущего harness | Уже передан в текущем сеансе: инструменты, cwd, инструкции OpenCode, правила выбора skills и запрет незапрошенной делегации | Имеет более высокий приоритет, чем project/skill text; каталог навыков не означает загрузку всех тел |
|
||
| Прямой user request / audit protocol | Пользователь назвал prompt и точный файл результата; protocol прочитан | Read-only ограничения определяют этот аудит; создание feature/SDD артефактов не активировано |
|
||
| Global `~/.claude/CLAUDE.md` | Прямо объявлен harness как loaded instruction source в текущем сеансе; внутри ссылка `@RTK.md` | Само включение подтверждено; детали loader fallback не установлены. RTK.md дополнительно прочитан вручную, его автоматическое раскрытие не предполагается |
|
||
| Root `AGENTS.md` | Объявлен loaded source; cwd находится в root | Root правила относятся к root; локальные application conventions не наследуют root conventions (`AGENTS.md:9–13`) |
|
||
| Repo-local AGENTS | В этом аудите явно прочитаны; при чтении файлов repo harness дополнительно показывает соответствующий reminder | Владелец реализации — affected repo. Повторный reminder не требует второго Read того же файла |
|
||
| Topic conventions | Через локальные task/path triggers, не все сразу | Объединить применимые темы, убрать дубликаты путей; engineering entry point обязателен в frontend/backend |
|
||
| SDD context/config/schema | Только при explicit OpenSpec; CLI возвращает contextFiles, selected schema и tasks | Approval/contract — проектный semantic authority; structural readiness не является approval |
|
||
| Loaded skills | Тело появляется после Skill invocation или целевого чтения | Уточняют способ выполнения, не отменяют user scope, repo safety или утвержденные contracts |
|
||
| Ponytail plugin | Config registration + `experimental.chat.system.transform`; активный ruleset виден в текущем harness | Это injected text, не отдельный Skill call на каждом turn. Число последовательных копий в prompt не установлено |
|
||
| Codex/Claude settings/hooks | Конфигурации существуют; нет runtime traces их исполнения в выбранном OpenCode sample | Не переносить их subprocess costs на OpenCode по факту наличия файлов |
|
||
|
||
Evidence: root `AGENTS.md:9–32`; frontend/backend `AGENTS.md:3–26`; specs `AGENTS.md:3–19`; `~/.claude/CLAUDE.md:1–5`; `specs/openspec/config.yaml:55–62`; v2 `schema.yaml:592–609`. Реальный механизм Ponytail: `~/.config/opencode/opencode.jsonc:6–9` → установленный package `.opencode/plugins/ponytail.mjs:51–82`.
|
||
|
||
Каталоги `.agents/skills`, `~/.config/opencode/skills`, `~/.codex/skills`, `~/.claude/skills/graphify` проверены как directories, не top-level symlinks. Это не исключает ссылок глубже. Происхождение global Claude fallback и discovery internals — **UNVERIFIED**; loaded-source declaration и видимый skill catalog достаточны для утверждения об экспозиции, но не для вывода о конкретном loader algorithm.
|
||
|
||
## 5. Agent Hook/Tool Trigger Matrix
|
||
|
||
| Событие | Агент/prompt | Hook/subprocess | Что установлено |
|
||
| --- | --- | --- | --- |
|
||
| Read / Grep / Glob | Router может активировать conventions/skills | В просмотренном OpenCode RTK plugin эти tools отфильтрованы | Нет найденного автоматического lint/test/build при чтении |
|
||
| Edit / apply_patch | Изменение путей активирует rerouting; code change требует final gates по engineering | Просмотренные RTK/Ponytail hooks не запускают application checks на edit | Проверки выбирает агент; наличие других environment hooks не исключено |
|
||
| Bash/shell | Команду выбирает агент из task verification/conventions | RTK проверяет binary при инициализации, затем вызывает `rtk rewrite <command>` до каждого bash/shell | Rewrite — дополнительный subprocess, не test runner; latency NOT MEASURED |
|
||
| Каждый OpenCode system transform | Активен Ponytail mode | Plugin читает mode и добавляет ruleset к system output | Нет запуска lint/test/build; накопление старых копий не доказано |
|
||
| `npm ci` frontend | Требуется engineering для code/dependency change | Manifest `prepare: husky` | Может настраивать локальные hooks; это не read-only проверка |
|
||
| `npm run verify` frontend | Full final gate; может попасть в каждый worker brief | Package build, OpenAPI check, types, ESLint, lint-rule tests, Vitest coverage, Knip, два dependency graphs, app и Storybook builds | Триггер проверен; внутренние дубли/CI topology отнесены audit 11 |
|
||
| `npm run verify` backend | Аналогичное local требование | Lint, lint-rule tests, два typecheck, Jest coverage, Prisma generate/Nest build | В sample два исполнителя сообщают о запуске; child command traces отсутствуют |
|
||
| Git commit frontend | Агент обязан видеть результат hooks | Активный `.husky/_`; pre-commit → Gitleaks, lint-staged с ESLint `--fix`, `npm run deps`; commit-msg → commitlint | Depcruise запускает hook, не Read/Edit; lint-staged может изменить staged content |
|
||
| Git commit specs | Commit metadata | Активный `.githooks`; только `commit-msg` → commitlint | Pre-commit/full validation hook не найден |
|
||
| Git commit root/backend/docs | Правила подготовки commit | Явный `core.hooksPath` не задан в прочитанной конфигурации | Отсутствие custom hooks в `.git/hooks` не утверждается: их содержимое не проверялось |
|
||
| Codex PreToolUse/PostToolUse и lifecycle | Не выбранный runtime sample | `~/.codex/hooks.json` регистрирует Caveman adapters, PreToolUse также shrink-hook; config содержит trusted hashes | Регистрация подтверждена; runtime вызовы и стоимость UNVERIFIED |
|
||
| Claude lifecycle | Global plugins enabled | В `~/.claude/settings.json` собственный `hooks` block не найден | Plugin hooks отдельно не изучены; фраза RTK.md про transparent Claude rewrite не является доказательством его исполнения |
|
||
| OpenSpec Apply | Store/status/apply context по явному запросу | CLI не является edit hook; после task checkbox стандартный skill требует refresh instructions | Не сокращать через угадывание путей/checkbox line; payload filtering не должно скрывать обязательный context |
|
||
|
||
Evidence: `~/.config/opencode/plugins/rtk.ts:10–36`; Ponytail plugin `:73–95`; `frontend/package.json:14–38`; `.husky/pre-commit:1–3`, `.husky/commit-msg:1`, `.husky/_/h:6–17`; `backend/package.json:12–38`; `specs/package.json:8–14`; `.githooks/commit-msg:1–2`; `~/.codex/hooks.json:23–68`; `~/.codex/config.toml:269–314`; `~/.claude/settings.json:1–33`; OpenSpec apply skill `:104–112`.
|
||
|
||
## 6. Findings
|
||
|
||
### AGENT-001 — Verification привязан к каждому code change/worker, включая переустановку
|
||
|
||
- **Decision = SIMPLIFY; Severity = P2; Confidence = High; Effort = S.**
|
||
- **Evidence:** `frontend/.ai/conventions/engineering.md:58–66`; `backend/.ai/conventions/engineering.md:58–66`; `frontend/package.json:26–27`; `backend/package.json:34`; `session.json:2975–2993,4071–4089`.
|
||
- **Claim:** единый финальный gate оправдан, но правило `npm ci` + full `verify` не различает восстановление environment, целевую task и готовность repo delivery.
|
||
- **Current mechanism:** локальный router ведет в engineering; dispatch требует полного backend verify до отчета каждого исполнителя. Worker 1.1 и worker 1.2 сообщают full verify на последовательных состояниях одного checkout. `npm ci` предписан текстом, но его исполнение в этой выборке не видно.
|
||
- **Impact / actual cost:** лишние install/full checks при уже готовом environment и дроблении feature. Full verify включает coverage/build, у frontend также Storybook. **Impact unmeasured**; две декларации запуска — не измерение двух реальных длительностей.
|
||
- **Why now:** это прямой consumer локальных инструкций в доступном SDD-сеансе; одинаковое требование применяется и к небольшому UI diff.
|
||
- **Minimum change:** в существующем разделе gates отделить install при отсутствующих/измененных dependencies, targeted iteration и full verify один раз на итоговом состоянии affected repo. Worker проверяет свою boundary; repo owner закрывает финальный gate. Explicit approved task Verification остается обязательной и не отменяется этой оптимизацией.
|
||
- **Guarantees at risk:** общий type/build/import graph; fresh Prisma/package artifacts; money/auth/DB/contract regression checks. Полный финальный gate и risk checks сохранить, не заменять их одним changed-file lint.
|
||
- **Counterarguments / trade-offs:** `npm ci` полезен для подозрительного или несовместимого environment; per-task full gate дает ранний сигнал интеграции. Поэтому исключение должно зависеть от готовности environment и типа diff, а не от желания ускориться. Markdown-only путь уже дешевый — исправлять его не требуется.
|
||
- **Verification or rollback:** одна small UI задача и одна backend task с неизмененным lockfile; сравнить реальные install/check invocations, сохранив финальный full gate. При ошибке из stale environment восстановить clean install. До согласования локального правила действующее full verify требование сохраняется.
|
||
- **Related finding IDs:** AGENT-002, AGENT-004.
|
||
|
||
### AGENT-002 — Несогласованные testing/fresh-evidence rules требуют лишней работы
|
||
|
||
- **Decision = SIMPLIFY; Severity = P2; Confidence = High; Effort = S.**
|
||
- **Evidence:** `frontend/.ai/conventions/testing.md:13–24`; `backend/.ai/conventions/testing.md:13–20,34–42`; `.agents/skills/workflow/test-driven-development/SKILL.md:18–45,185–193,293–306`; `.agents/skills/workflow/verification-before-completion/SKILL.md:17–35,64–71,100–114`; `.agents/skills/workflow/subagent-driven-development/task-reviewer-prompt.md:73–92`; `session.json:3380–3428,3517–3533`.
|
||
- **Claim:** project risk-based testing допускает declaration/thin wiring без нового unit test, а generic TDD требует test-first для любого production code и тест каждой новой функции. Отдельно правило fresh evidence «в этом сообщении» конфликтует с переиспользованием проверенного отчета reviewer.
|
||
- **Current mechanism:** оба skills опубликованы в текущем catalog; в sample оба загружены. Reviewer template запрещает rerun без конкретного сомнения; после review coordinator объявляет independent check и повторно запускает целевой Jest. Начальный user prompt также прямо просил coordinator verification — повтор нельзя целиком приписать skill.
|
||
- **Impact / actual cost:** один дополнительный успешный parent target-test вызов после worker/reviewer; перед ним одна failed shell попытка. Наличие бессмысленных новых tests из-за TDD в текущих исходниках не доказано. **Impact unmeasured** для общего потока.
|
||
- **Why now:** правила не дают единого ответа, что считается task proof; агент повторно принимает решение вместо использования одного evidence contract.
|
||
- **Minimum change:** применимость generic TDD ограничить observable behavior/regression; declaration/generated/low-risk cosmetic changes следуют local testing. Fresh evidence связывать с проверенной версией diff, command, exit и outcome, а не номером текущего сообщения. Reviewer проверяет diff и соответствие evidence; повторяет test при named doubt или изменении проверенного кода.
|
||
- **Guarantees at risk:** обнаружение реальной регрессии, честный RED/GREEN для bug/новой логики, достоверность worker evidence. Не принимать один `DONE`; если отчет неполный или outcome/версия не совпадают, проверить целевую boundary заново.
|
||
- **Counterarguments / trade-offs:** independent execution нужен при явном user требовании, подозрительном evidence или чувствительной boundary. В этой sample coordinator rerun имеет такое пользовательское основание. Текущий harness также уже исключает tests для low-risk reversible changes; его более высокий приоритет ограничивает generic TDD. Проблема — конфликт default rules, а не доказанная бесполезность каждого повторного теста.
|
||
- **Verification or rollback:** сравнить три случая — cosmetic diff, behavior fix, misleading worker report. Первому не добавлять фиктивный test, второму оставить meaningful regression, третий должен вызвать повторную проверку/блокировку. При сомнении в evidence вернуть targeted rerun.
|
||
- **Related finding IDs:** AGENT-001, AGENT-003, AGENT-004.
|
||
|
||
### AGENT-003 — Generic autonomous rulings конфликтуют с approval flow SDD
|
||
|
||
- **Decision = FIX; Severity = P2; Confidence = High; Effort = S.**
|
||
- **Evidence:** `.agents/skills/workflow/subagent-driven-development/SKILL.md:17–31,296–301,366–371,411–428`; `.agents/skills/sdd/openspec-apply-change/SKILL.md:115–120`; `specs/openspec/config.yaml:55–58`; `specs/openspec/schemas/wealth-ledger-sdd-v2/schema.yaml:625–642`; `session.json:57,2977,4073`.
|
||
- **Claim:** generic controller предлагает самостоятельно решать plan defects/ambiguities и продолжать, тогда как WealthLedger требует остановить downstream при semantic conflict и переутвердить affected artifacts.
|
||
- **Current mechanism:** user загрузил OpenSpec и subagent workflow вместе. Generic skill объявляет только четыре stop classes и разрешает rulings; OpenSpec отдельно требует surface/ask при scope/design issues. User и worker briefs в sample явно запрещают изменение approved requirements, компенсируя конфликт.
|
||
- **Impact / actual cost:** дополнительный process text в dispatch и риск неверного continuation/rework при следующем неоднозначном контракте. Нарушение approval в этой sample **не установлено**. **Impact unmeasured**.
|
||
- **Why now:** противоречие находится в реально загруженной паре workflows, а не в неиспользуемом архиве.
|
||
- **Minimum change:** сузить generic rulings до implementation choices внутри approved semantics; при SDD ссылаться на существующий project change-control. Убрать универсальную формулу «only four stops» для workflow с внешним approval. Стандартный OpenSpec skill не менять и не форкать.
|
||
- **Guarantees at risk:** approval provenance, contract compatibility, financial/access invariants и пользовательское управление scope. Никакой token optimization не оправдывает их обход.
|
||
- **Counterarguments / trade-offs:** автономные локальные решения ускоряют execution и не требуют approval на каждый naming/refactor. Сохранять их для механических решений; semantic changes различать по уже существующей schema, без нового документа принятия решений.
|
||
- **Verification or rollback:** статический dry-run на двух ситуациях: локальный helper choice продолжает execution; новая wire field/error semantics возвращает к earliest affected artifact. При неоднозначности сохранять downstream stop.
|
||
- **Related finding IDs:** AGENT-002, AGENT-006.
|
||
|
||
### AGENT-004 — Инструкция Node bootstrap недостаточна для non-interactive shell
|
||
|
||
- **Decision = FIX; Severity = P2; Confidence = High; Effort = S.**
|
||
- **Evidence:** `AGENTS.md:26`; `frontend/.ai/conventions/engineering.md:14`; `backend/.ai/conventions/engineering.md:14`; `specs/AGENTS.md:18–19`; `session.json:3420–3434,3517–3533`.
|
||
- **Claim:** команда `nvm use --silent` предполагает уже загруженную shell function, но tool shell в sample этого не обеспечил.
|
||
- **Current mechanism:** coordinator вызывает буквально рекомендованную команду в backend cwd; получает `zsh:1: command not found: nvm`, exit 127. Следующий вызов загружает `$HOME/.nvm/nvm.sh`, выбирает local Node и получает 28 passed.
|
||
- **Impact / actual cost:** подтвержден один failed tool call и следующий исправленный вызов. Записанные tool durations — 13 ms и 1406 ms; это не стоимость reasoning/turn и не прогноз экономии.
|
||
- **Why now:** это воспроизводимый по trace разрыв между documented command и выбранным tool environment; worker briefs уже содержат bootstrap, но общий entry point — нет.
|
||
- **Minimum change:** добавить к существующей инструкции короткое условие для non-interactive shell: загрузить установленный `nvm.sh`, затем `nvm use --silent` из repo owner cwd. Не создавать bootstrap script, не менять `.nvmrc`, не ставить Node в этом аудите.
|
||
- **Guarantees at risk:** pinned local Node и правильный cwd. Их сохранить; использование произвольного системного Node не является исправлением.
|
||
- **Counterarguments / trade-offs:** в interactive shell исходная команда работает. Не делать безусловный второй bootstrap на каждый вызов, если shell уже предоставляет `nvm`.
|
||
- **Verification or rollback:** в следующей обычной implementation session проверить bootstrap в том же non-interactive tool shell и local cwd одной безопасной version-командой; этот аудит не запускал Node.
|
||
- **Related finding IDs:** AGENT-001, AGENT-002.
|
||
|
||
### AGENT-005 — Глобальный skill/tool routing шире типичных задач; вклад требует измерения
|
||
|
||
- **Decision = INVESTIGATE; Severity = P3; Confidence = Medium; Effort = S.**
|
||
- **Evidence:** `~/.claude/CLAUDE.md:1–5`; `~/.claude/skills/graphify/SKILL.md:1–4,49–59,65–100`; `~/.config/opencode/opencode.jsonc:84–102`; `~/.cache/opencode/packages/@dietrichgebert/ponytail@latest/node_modules/@dietrichgebert/ponytail/.opencode/plugins/ponytail.mjs:54–82`; текущий harness catalog/tool declarations.
|
||
- **Claim:** есть risk of inefficiency: global graphify description предлагает обработать любую codebase/project-content question через graph, а глобальная короткая инструкция явно называет `/graphify`. В обычном backend/text task также доступны браузерные и remote-repo tools.
|
||
- **Current mechanism:** graphify description действительно опубликован в текущем skill catalog; в отсутствие графа полный workflow предполагает install/detect/write. Playwright, Chrome DevTools, Gitea и Context7 доступны в текущем tool surface и зарегистрированы global config. Sample не содержит graphify/browser/MCP вызовов.
|
||
- **Impact / actual cost:** irrelevance/selection risk и потенциальный prompt/startup cost. Tokens tool schemas, install/startup latency и число ошибочных skill invocations **NOT MEASURED**. Существование двух browser tools не доказывает, что один лишний.
|
||
- **Why now:** уже видна широкая экспозиция; измерение можно сделать без нового tracing stack и без изменения стандартных OpenSpec skills.
|
||
- **Minimum change:** проверить resolved startup sources; на обычных задачах выбирать skill по требуемому workflow, не по слову «codebase». Для graphify сравнить narrow explicit-query trigger с текущим broad description; для MCP — доступный task-specific набор при запуске, если harness его поддерживает. Менять default registration только после сравнения.
|
||
- **Guarantees at risk:** browser/a11y proof для UI, актуальные library docs, remote issue/review operations, полезные существующие graph queries. Для задач с такими boundaries инструменты должны оставаться доступны.
|
||
- **Counterarguments / trade-offs:** MCP может запускаться лениво, tool schemas могут кэшироваться; graph lookup по готовому графу может экономить чтение. Read-only протокол этого аудита исключает graph generation независимо от broad skill trigger.
|
||
- **Verification or rollback:** один и тот же bounded task в полном и релевантном tool surface; записать resolved sources, first-response tokens, tool calls и outcomes. Без такого A/B автоматическое удаление MCP/graphify не рекомендовано.
|
||
- **Related finding IDs:** AGENT-002, AGENT-006.
|
||
|
||
### AGENT-006 — Обязательный выбор модели не поддержан текущим Task interface
|
||
|
||
- **Decision = SIMPLIFY; Severity = P3; Confidence = High; Effort = S.**
|
||
- **Evidence:** `.agents/skills/workflow/subagent-driven-development/SKILL.md:184–214`; `.agents/skills/workflow/subagent-driven-development/implementer-prompt.md:6–10`; `.agents/skills/workflow/subagent-driven-development/task-reviewer-prompt.md:11–14,190–204`; текущая declaration `functions.task`; `session.json:2975–2987,3282–3293,4071–4082,4511–4523`.
|
||
- **Claim:** правило «always specify model explicitly» без capability condition невозможно выполнить через текущий Task tool: он принимает description/prompt/subagent_type/task_id/command, но не model.
|
||
- **Current mechanism:** все девять task inputs в export без `model`; metadata children совпадает с моделью родительского turn, в том числе после смены parent provider/model. Это подтверждает фактическую выборку, но не раскрывает внутренний routing провайдера.
|
||
- **Impact / actual cost:** невозможно гарантировать заявленную дешевую роль; агент может тратить время на выбор недоступного параметра или ошибочно обещать экономию. Ни невалидного вызова с model, ни финансового ущерба в sample не наблюдается. **Impact unmeasured**.
|
||
- **Why now:** несоответствие находится в обязательном template и реальном доступном interface, поэтому повторяется при каждой подготовке dispatch.
|
||
- **Minimum change:** сделать выбор model условным по tool capability; при неподдерживаемом override использовать доступный default и не заявлять оптимизацию тарифа. Не добавлять custom dispatcher/новый subagent type ради обхода.
|
||
- **Guarantees at risk:** достаточная модель для сложного review и честное описание фактических capabilities. Не обещать escalation, которую tool не может исполнить.
|
||
- **Counterarguments / trade-offs:** другой harness может поддерживать model override; правило там полезно. Историческая Task schema не сохранена, поэтому невозможность override доказана для текущего interface, а для sample виден только фактический default routing.
|
||
- **Verification or rollback:** сверить template с tool schema; следующий нужный dispatch должен быть валидным без выдуманного параметра. При доступном override правило можно применять как раньше.
|
||
- **Related finding IDs:** AGENT-003, AGENT-005.
|
||
|
||
## 7. Observed Session Anti-patterns и контрпримеры
|
||
|
||
**Goal → reads → tools → result:** explicit stock-screener SDD/delegation request (`session.json:57`) → store/list/status, approval lookup и tasks → user approval → apply contextFiles → семь дополнительных planning/contract reads, repo entry points → два explore и generic workflow setup → task 1.1 implementer/reviewer → coordinator target check → checkbox/ledger → task 1.2 dispatch, interruption/re-dispatch, review interruption/re-dispatch → выявленный contract defect → fix running при окончании export.
|
||
|
||
| Наблюдение | Evidence | Вывод с границами |
|
||
| --- | --- | --- |
|
||
| Generic workflow дает большой payload | Skill output `session.json:2251–2256`; размер 33577 bytes | Содержимое реально попало в parent context; его token attribution не измерена |
|
||
| Explore возвращают подробную карту в parent | `:2276–2330`; суммарно 25197 bytes | Можно сузить будущий запрос до owner/entry points/named risks; нельзя объявить всю карту ненужной для сложной feature |
|
||
| Worker full verify заявлен дважды | `:2980`, `:4076`; task-2 report сохранен в `:4176–4184` | Per-worker требование видно; реальные commands/timings children недоступны |
|
||
| Fresh coordinator test после review | `:3380–3428,3517–3533` | Наблюдаемое повторное исполнение; user explicit verification — существенный контраргумент |
|
||
| Non-interactive bootstrap retry | `:3421–3428,3519–3526` | Подтвержденная ошибка, AGENT-004 |
|
||
| Два canceled task заменены свежими dispatch | `:3929–3979,4072–4089,4371–4410,4513–4530` | Отмена/повтор подтверждены. Потеря partial edits, корень отмен, crash модели и возможность safe resume UNVERIFIED |
|
||
| Последующий fix использует resume | `:4620–4632` | Уже есть экономящий context механизм; результат fix в export отсутствует |
|
||
| Read loops | Group by `.state.input.filePath` | Не найдены в parent. Нельзя переносить вывод на children |
|
||
| Review выявляет реальный mismatch | `:4517` | Зеленые worker tests не заменяют semantic review. Здесь удалить review нельзя |
|
||
|
||
Начальные store/status/apply commands и чтение всех возвращенных contextFiles соответствуют explicit user request и стандартному skill. Одинаковые слова `verify`, `AGENTS`, `contract` в разных источниках сами по себе не доказательство DRY-нарушения.
|
||
|
||
Смена модели после interruption сопровождается parent token counters без cache reuse (`session.json:4026–4034`), позже — частичным cache read (`:4467–4475`). Это наблюдение, **не доказательство**, что смена модели вызвала потерю кэша или что непрерывный сеанс стоил бы меньше.
|
||
|
||
## 8. Minimal Agent Execution Policy
|
||
|
||
Это рекомендуемое сокращение существующей процедуры после согласования AGENT-001/002, а не новый обязательный документ. Сегодня действующие repo gates и explicit task Verification имеют силу.
|
||
|
||
Общий путь: **read once → narrow search → edit batch → targeted check → final affected-repo gate**. Повторный routing — проверка новых границ, а не перечитывание уже актуального файла. Новый Read нужен при смене revision, неполном excerpt или появлении новой ответственности.
|
||
|
||
| Размер / тип | Минимальная последовательность | Verification и stop boundaries |
|
||
| --- | --- | --- |
|
||
| S — small UI fix | Явный frontend cwd/status → local AGENTS + engineering entry point → affected component/CSS/i18n и 1 ближайший пример → UI или только strings section; TS/testing темы по реальному diff → одна batch правка | Targeted type/lint, semantic visual/keyboard/narrow viewport по изменению; behavior test только при risk. Full final gate по действующей/согласованной policy. Не читать backend/docs/specs ради чисто визуального diff, не открывать SDD lifecycle |
|
||
| M — backend contract change | Backend cwd/status → AGENTS/engineering → HTTP API, affected DTO/controller/service, configured HTTP tests → согласованная wire expectation и опубликованный baseline/artifact → errors/security/data только по trigger → batch implementation | Type/lint + relevant HTTP outcome + `test:openapi-contract`; генерация публичного artifact. Money/CAS/transaction changes требуют своей real-boundary proof. Передать artifact потребителю; affected frontend отдельно проверяет snapshot/generated types и relevant behavior. Не читать весь consumer checkout для проектирования DTO |
|
||
| L — SDD feature | Explicit store selection/status/apply и approvals → все native contextFiles прочитать один раз → dependency/owner map → local AGENTS только affected repo → task-specific upstream sections/contracts → implementation по dependencies; делегация только если явно запрошена/разрешена | Targeted proof в worker; один read-only scoped reviewer на оговоренную границу; fix только findings и covering tests; full verify на итоговом состоянии affected repo с дополнительными contract/DB/auth checks. До task checkbox — approved task Verification; после — refresh native apply instructions. Final semantic comparison target ↔ generated API, docs/QA по approved tasks |
|
||
|
||
**Что действительно нельзя пропустить:** измененный response/status/error shape требует producer/consumer contract lookup, даже если UI diff маленький. Изменение auth/connection cache требует проверки владельца session/generation. Для утвержденного SDD нельзя заменить contextFiles догадкой или пропустить upstream requirement ради smaller context. Structural validation не доказывает runtime contract compatibility.
|
||
|
||
**Контекст соседей:** фактическое число нерелевантных прочитанных файлов определить нельзя. В sample оба application repo и docs входят в explicit delivery scope, поэтому их AGENTS не являются ошибочным чтением. В S UI flow идеальная выборка не требует чтения трех соседних checkout; в M она требует предоставленного API artifact и конкретных consumer expectations, а не исходников всех соседей.
|
||
|
||
## 9. Keep/Delete/Move Instruction Register
|
||
|
||
| Instruction / mechanism | Решение | Owner / куда относится | Основание |
|
||
| --- | --- | --- | --- |
|
||
| Local AGENTS task/path routing | KEEP | Каждый repo | Самостоятельность и selective context уже реализованы; root `AGENTS.md:9–13` |
|
||
| Одинаковые engineering базовые нормы frontend/backend | KEEP | Оба автономных repo | Общий root файл создал бы обязательную cross-checkout зависимость; одинаковый текст здесь не доказательство лишнего механизма |
|
||
| Безусловное install для любого code change | SIMPLIFY | Существующий local engineering section | Environment need отделить от source diff, AGENT-001 |
|
||
| Полный gate на каждую мелкую worker task | SIMPLIFY | Repo delivery owner и approved task Verification | Сохранять final proof; не дублировать по факту слова DONE |
|
||
| «Каждая функция обязана иметь новый test», «fresh в этом message» | SIMPLIFY | Generic skill applicability | Local risk boundary + evidence version, AGENT-002 |
|
||
| Autonomous ruling над SDD semantics | FIX | Generic coordinator, project change-control остается owner | AGENT-003; стандартные OpenSpec skills сохраняются |
|
||
| Обязательное поле model при отсутствии capability | SIMPLIFY | Generic templates | AGENT-006 |
|
||
| Manual style/sorting/import-rule перепроверка | MOVE responsibility | Существующие ESLint/TypeScript/dependency configs | AGENT prompt оставляет короткий trigger и ссылку; не дублирует deterministic analyzer вручную |
|
||
| Смысл owner, public error safety, product i18n | KEEP | Semantic review и local conventions | Lint не доказывает смысл; UI `:157–170`, architecture `:86–93` |
|
||
| Finance page container/VM/view | KEEP | Frontend UI owner | UI `:44–70`; AccountIncomePage `:8–14` — state selection, не пустой wrapper для каждого control |
|
||
| Запрет passthrough hooks и ненужных VM/wrapper файлов | KEEP | Frontend UI owner | `frontend/.ai/conventions/ui.md:26–28,84–105` уже запрещает механическое дробление; конкретного требования/объекта для удаления не найдено |
|
||
| FSD skill и local placement profile | KEEP с selective references | Local architecture решает placement | Skill `:24–29,33–50,76–77` допускает selective reading и existing widgets; автоматическая миграция не нужна |
|
||
| Explicit SDD, approvals, store, contextFiles | KEEP | Specs config/schema + native skill | Project semantic authority и защита cwd/store; не переписывать standard skill ради меньшего payload |
|
||
| Progress/checkpoint и scoped review | KEEP | Уже выбранный workflow | Защита от повторной работы/пропуска contract; bounded brief/report может быть полезен |
|
||
| Глобальные graphify/MCP declarations | INVESTIGATE | Harness/global config | Startup/capability cost не измерен, AGENT-005 |
|
||
| Boy Scout | KEEP | Affected area review | Root code-health `:30–37`, engineering `:25–27` ограничивают low-risk scope; не повод для whole-repo cleanup |
|
||
|
||
### DELETE / SIMPLIFY / KEEP / INVESTIGATE — сводка
|
||
|
||
| Decision | Объекты | Безопасная граница |
|
||
| --- | --- | --- |
|
||
| DELETE | Подтвержденных standalone механизмов для удаления нет | Не удалять проверку только из-за ее размера/повтора названия |
|
||
| SIMPLIFY | AGENT-001, AGENT-002, AGENT-006 | Reuse environment и evidence, final gate и meaningful regression остаются |
|
||
| FIX | AGENT-003, AGENT-004 | Approval precedence и pinned Node сохраняются |
|
||
| KEEP | Local routers; native OpenSpec; target/runtime API comparison; auth/money/real DB/CAS/rollback checks; scheduler lifecycle/idempotency/replay proof по trigger; scoped semantic review | Protected invariants не торгуются на tokens; их runtime реализации в этом аудите не переоценивались |
|
||
| INVESTIGATE | AGENT-005; cancellation recovery; child overhead | Только bounded measurement, без нового tracing framework |
|
||
|
||
Ponytail-ranked cuts: `shrink:` объединить final verification на repo delivery boundary [AGENT-001]; `shrink:` убрать конкурирующие blanket testing/freshness mandates [AGENT-002]; `yagni:` убрать обязательный неподдерживаемый model override [AGENT-006]. **Net lines/deps possible: not measured; удаление dependencies не предложено.**
|
||
|
||
## 10. Cost & benefit
|
||
|
||
| Изменение | Класс ожидаемой экономии | Фактическая опора | Необходимые гарантии |
|
||
| --- | --- | --- | --- |
|
||
| AGENT-001 | Local runtime, agent turns, install traffic | Два worker full-verify reports; экономия not measured | Fresh final verify, dependency reproducibility, targeted risk suites |
|
||
| AGENT-002 | Agent tokens/tool calls, test maintenance | Coordinator rerun виден; непродуктивные новые tests не доказаны | Версия evidence, meaningful RED/GREEN, independent semantic review |
|
||
| AGENT-003 | Cognitive load, dispatch prompt, rework | Конфликт реально загруженных instructions | Approved semantics, safe escalation |
|
||
| AGENT-004 | Retry/tool call и associated reasoning | Один failed call + corrected run | Local pinned Node/cwd |
|
||
| AGENT-005 | Возможные prompt tokens/startup latency | Global registration/catalog exposure | Нужные browser/docs/remote tools по actual task |
|
||
| AGENT-006 | Planning overhead, честность cost policy | Template требует отсутствующую capability | Валидный task interface и достаточная model capability |
|
||
|
||
**CI minutes:** этот аудит не обосновывает сокращение CI. Рассматриваются причины, по которым агент вызывает checks локально; изменение состава pipeline — audit 11. Проценты, ускорение, денежная экономия и сокращение строк не рассчитывались.
|
||
|
||
## 11. Top actions
|
||
|
||
### Quick wins
|
||
|
||
1. **AGENT-004:** дополнить существующий Node entry point non-interactive bootstrap условием; проверить один реальный tool shell без нового скрипта.
|
||
2. **AGENT-006:** заменить безусловный model override на capability-aware правило; убрать невыполнимое обязательство из templates.
|
||
3. **AGENT-003:** явно подчинить generic rulings существующему SDD change-control; semantic conflicts должны останавливать affected downstream.
|
||
4. **AGENT-002:** согласовать generic TDD applicability с local testing; повторную проверку обосновывать изменением diff/named doubt или explicit user requirement.
|
||
|
||
### Решения с подтверждением проверки
|
||
|
||
5. **AGENT-001:** согласовать install/targeted/final verification tiers в двух существующих engineering sections. Сначала сохранить full final gate и сравнить реальные вызовы на одной bounded delivery; explicit approved task checks не сокращать автоматически.
|
||
6. **AGENT-005:** снять resolved instruction/tool surface для одного запуска, затем A/B релевантного MCP/skill набора. Изменение default global config — только при наблюдаемом выигрыше и сохраненных outcomes.
|
||
|
||
Новый ADR для текста bootstrap или capability caveat не нужен. Если меняется принятая модель SDD approvals/verification authority, сначала нужен owner decision в существующем process source; не создавать отдельную approval инфраструктуру.
|
||
|
||
## 12. Cross-audit signals
|
||
|
||
- **Audit 11:** возможные повторы build/dependency graph внутри local verify/commit пути — `frontend/package.json:14–34`, `.husky/pre-commit:1–3`; здесь установлены только agent/hook triggers.
|
||
- **Audit 10:** пригодность generic workflow scripts для no-commit/multi-repo execution — `.agents/skills/workflow/subagent-driven-development/scripts/`; script semantics не исследовались.
|
||
- **Audit 15:** project SDD artifact/approval granularity и `skip_specs` lifecycle — `specs/README.md:9–14`, v2 `schema.yaml`; текущий аудит не предлагает удалить согласованные артефакты.
|
||
- **Audit 13:** хранение credentials в global agent config — `~/.config/opencode/opencode.jsonc`; значения не воспроизводятся, отдельное security расследование не проводилось.
|
||
|
||
## 13. Open questions / verification plan
|
||
|
||
| Вопрос, меняющий решение | Самый дешевый способ проверки | До проверки |
|
||
| --- | --- | --- |
|
||
| Сколько full verify/install реально запускают children? | Для следующей одной affected-repo delivery предоставить child export/command log с command, cwd, exit, duration и revision; не собирать все личные sessions | AGENT-001 static finding остается; численную экономию не заявлять |
|
||
| Есть ли безопасный resume после двух cancellations? | Проверить конкретные child status/report/diff до re-dispatch; сопоставить canceled и replacement task IDs | Не объявлять отмененную task DONE и не удалять checkpoint |
|
||
| Почему global CLAUDE и skill directory попадают в OpenCode? | Startup resolved-source/config diagnostic для этого cwd без provider secrets; сравнить с loaded declarations | Loader fallback UNVERIFIED; не утверждать наличие symlink или mandatory global reads |
|
||
| MCP startup/tool schema или skill bodies доминируют в первом prompt? | Один bounded A/B: одинаковая task, model, repo revision; export первых turn counters и tool catalog | Не удалять серверы по количеству зарегистрированных tools |
|
||
| Дает ли новый verification tier ту же защиту? | Итоговый full verify + applicable HTTP/DB/auth tests на том же конечном diff; убедиться, что dependency/artifact state fresh | Текущие mandatory checks сохраняются |
|
||
| Возможен ли model override в выбранном runtime? | Текущая tool schema и documented runtime capability; никаких проб с выдуманным parameter | AGENT-006 применим для текущего interface; историческая schema UNVERIFIED |
|
||
|
||
Для минимального последующего измерения достаточно одного существующего session export на каждый из S/M/L типов: tool counts; unique/repeated reads; failed/retried commands; checks по revision; `.info.tokens` отдельно input/cache/output/reasoning; parent/child boundaries; completion outcome. Тела secrets/PII и сырые приватные conversations не нужны. Новые hooks, scripts или multi-agent observability infrastructure не требуются.
|
||
|
||
### Проверка результата аудита
|
||
|
||
Выполнена ручная смысловая сверка отчета с evidence. `git diff --check` и отдельный `git diff --no-index --check /dev/null audit-results/14-ai-agent-workflow-efficiency.md` завершились без замечаний; отдельная проверка нужна, поскольку файл ignored и обычный diff его не видит. `git check-ignore -v` подтвердил root правило `.gitignore:2`. Финальные `git status --short` четырех checkout пусты, HEAD совпадают с начальной таблицей. Standard OpenSpec skills и исходники не редактировались; tests/build/verify не запускались. Application gates не применяются к единственному Markdown-отчету в root.
|
||
|
||
## Consolidation table
|
||
|
||
| ID | Decision | Severity | Confidence | Repo | Files | One-line impact | Effort | Related IDs |
|
||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||
| AGENT-001 | SIMPLIFY | P2 | High | frontend,backend | frontend/.ai/conventions/engineering.md; backend/.ai/conventions/engineering.md; frontend/package.json; backend/package.json; session.json | Безусловный install/full verify переносится в каждый worker; экономия не измерена | S | AGENT-002,AGENT-004 |
|
||
| AGENT-002 | SIMPLIFY | P2 | High | root,frontend,backend | .agents/skills/workflow/test-driven-development/SKILL.md; .agents/skills/workflow/verification-before-completion/SKILL.md; .agents/skills/workflow/subagent-driven-development/task-reviewer-prompt.md; frontend/.ai/conventions/testing.md; backend/.ai/conventions/testing.md; session.json | Конкурирующие blanket testing/fresh-evidence rules затрудняют reuse proof | S | AGENT-001,AGENT-003,AGENT-004 |
|
||
| AGENT-003 | FIX | P2 | High | root,specs | .agents/skills/workflow/subagent-driven-development/SKILL.md; .agents/skills/sdd/openspec-apply-change/SKILL.md; specs/openspec/config.yaml; specs/openspec/schemas/wealth-ledger-sdd-v2/schema.yaml; session.json | Generic autonomous rulings конфликтуют с approved semantic change-control | S | AGENT-002,AGENT-006 |
|
||
| AGENT-004 | FIX | P2 | High | root,frontend,backend,specs | AGENTS.md; frontend/.ai/conventions/engineering.md; backend/.ai/conventions/engineering.md; specs/AGENTS.md; session.json | Недостаточный nvm bootstrap вызвал подтвержденный shell retry | S | AGENT-001,AGENT-002 |
|
||
| AGENT-005 | INVESTIGATE | P3 | Medium | global | ~/.claude/CLAUDE.md; ~/.claude/skills/graphify/SKILL.md; ~/.config/opencode/opencode.jsonc | Широкая skill/tool экспозиция создает risk of inefficiency; стоимость не измерена | S | AGENT-002,AGENT-006 |
|
||
| AGENT-006 | SIMPLIFY | P3 | High | root | .agents/skills/workflow/subagent-driven-development/SKILL.md; .agents/skills/workflow/subagent-driven-development/implementer-prompt.md; .agents/skills/workflow/subagent-driven-development/task-reviewer-prompt.md; session.json | Обязательный model override отсутствует в текущем Task interface | S | AGENT-003,AGENT-005 |
|