diff --git a/bags/router-mentor-wall-GUIDE.md b/bags/router-mentor-wall-GUIDE.md index f5b48f9..107d1ea 100644 --- a/bags/router-mentor-wall-GUIDE.md +++ b/bags/router-mentor-wall-GUIDE.md @@ -50,6 +50,13 @@ criterion видит валидный план. Старый обход «сделать push НЕ-терминальным» (раздел «Пуш кода» п.2) больше НЕ нужен. +- **НАХОДКИ ЭТОЙ СЕССИИ (18.06, штатный режим).** (1) **Пол ПУСКАЕТ запуск скрипта-файла** (`python + tools/x.py`, `node tools/x.mjs`, `uv tool run … python tools/x.py`, установленный CLI типа `graphify …`) — + режет только ИНЛАЙН-eval (`python -c`/`node -e`), `rm`, цепочки `;`/`&&`/`|`. Нужен скрипт под планом — + пиши `.py`/`.mjs` шагом Write, запускай шагом Bash (см. «Floor-safe планы»). (2) **Субагенты под стеной — + только разведка** (read-only, ДО печати, возврат ТЕКСТОМ); единственный мутатор — контроллер (см. + «Субагенты под стеной»). + > Формальный свод правил (Pravila/CLAUDE.md) обновляется отдельно — через плагин `claude-md-management` > + синхрон квинтета, со включённой стеной (heavyweight-канал). Этот GUIDE — оперативная шпаргалка. @@ -85,7 +92,7 @@ - `## Цель`; - ` ```skills-json``` ` — объявленные навыки, напр. `["test-driven-development"]`; -- ` ```steps-json``` ` — массив `{op, object, ref}`: `op` ∈ Write|Edit|Bash|MultiEdit (**Task запрещён**); +- ` ```steps-json``` ` — массив `{op, object, ref}`: `op` ∈ Write|Edit|Bash|MultiEdit (**Task/субагент-шаг запрещён** — почему и как всё же звать субагентов: «Субагенты под стеной»); `object` = путь к файлу или **точная** строка команды (Bash); `ref` = якорь спеки (D1..Dn), непустой; - ` ```verified-context-json``` ` (план тоже требует ≥1 EXTRACTED); - без мета-болтовни. @@ -105,9 +112,14 @@ - **Чтение кода.** В режиме реализации чтение вне путей текущего шага блокируется. Свободно — в **разговорном** режиме (нет печати). - **Bash-цепочки.** `;`/`&&`/`||`/`|` с мутирующей частью hard-блокируются. Только одиночные команды. -- **Floor-safe планы.** НЕ ставь floor-опасные Bash-шаги: `node -e`/`curl`/install/eval, `rm -rf`/ - `git push --force`/`migrate:fresh`, PowerShell-записи, запись в `~/.claude/runtime`/секреты. Пол их - рубит, стена не двигает указатель → план встаёт колом. Файловые операции — через Write/Edit, не `node -e`. +- **Floor-safe планы.** НЕ ставь floor-опасные Bash-шаги: ИНЛАЙН-eval (`node -e`/`python -c`), `curl`/ + install, `rm`/`rm -rf`/`git push --force`/`migrate:fresh`, PowerShell-записи, цепочки `;`/`&&`/`|`, + запись в `~/.claude/runtime`/секреты. Пол их рубит, стена не двигает указатель → план встаёт колом. + Файловые операции — через Write/Edit, не `node -e`. + ✅ **ЗАПУСК СКРИПТА-ФАЙЛА пол ПУСКАЕТ** (проверено вживую 18.06): `python tools/x.py`, `node tools/x.mjs`, + `npx vitest …`, `uv tool run --from python tools/x.py`, установленный CLI (`graphify …`) — это + валидные Bash-шаги плана. Режется только ИНЛАЙН-eval (`-c`/`-e`), не файл. Значит «нужен скрипт под + планом» = Write `.py`/`.mjs` шагом → запуск `python/node ` шагом Bash; `-c`/`-e`-одностроку пол не пустит. - **Десинк указателя (F-J, 16.06).** Если PreToolUse-блокер (тупой судья навыков / `normative §6`) роняет действие exit-2, а `enforce-supreme-gate` (раньше в цепочке) УЖЕ сдвинул указатель — план застревает (указатель уехал, действие не прошло). **Сброс:** `FLOOR-ESCAPE: plan-done` ИЛИ новый @@ -143,6 +155,37 @@ (Skill) ПЕРВЫМ делом после печати, ДО первого мутирующего/Bash-шага — иначе skill-discipline уронит первый шаг и уведёт указатель. +## Субагенты под стеной — только разведка (находка 18.06) + +**Почему `op:"Task"` запрещён шагом и почему субагент-мутатор под стеной не живёт.** Стена — машина +ПОДОТЧЁТНОСТИ: ОДИН исполнитель (контроллер) гонит заранее одобренную, журналируемую, линейную цепочку +КОНКРЕТНЫХ правок. Три опоры (в коде): печать кроет конкретные op+object-шаги (`actionMatchesStep`); перед +каждой правкой — пред-запись намерения контроллера в журнал («нет записи — нет действия», Δ3); один +указатель по одному дереву. Субагент ломает все три: + +- печать кроет «пошли работника», а НЕ его реальные правки → seal отвязан от изменений; +- правки субагента идут мимо журнала контроллера → неподотчётный боковой канал; +- субагенту нельзя доверять (память `subagent-falsified-test-results`: Sonnet-субагент **сфальсифицировал** + «5 pass» не запустив тесты, набил 228 фальшивых расписок). Стена ровно для недоверчивого исполнителя — + отдать ей мутацию ещё менее надёжному субагенту = само-противоречие; +- веер/параллель субагентов несовместимы с линейным одним указателем. + +Под стеной субагентские вызовы душатся механически: его Read вне путей плана режет ДР-1; его Write не +совпадает с текущим шагом → блок «действие не в плане» (или у субагента нет плана → разговорный режим → +мутация блокируется). + +**Как субагенты ВСЁ ЖЕ помогают, сохраняя инварианты:** + +1. субагент только РАЗВЕДЫВАЕТ — читает/анализирует и **возвращает результат ТЕКСТОМ** (его Read — + observe-only, свободны), файлы НЕ пишет; +2. гоняй его в РАЗГОВОРНОМ режиме (ДО печати) — под печатью его Read упрётся в ДР-1; +3. контроллер берёт его текст и **сам** пишет/собирает шагами опечатанного плана. + +Единственный мутатор — контроллер, каждая правка запечатана и в журнале → все инварианты целы. +**Пример (agent-as-LLM, без API-ключа):** субагенты-экстракторы graphify читают контракты и возвращают +извлечённый JSON **текстом** → контроллер пишет чанк-файлы и `python tools/graphify-build.py` шагами плана +(пол пускает скрипт-файл, см. «Floor-safe планы»). Так graphify-сборка проходит и под стеной. + ## ⛔ Нельзя: правка машинерии стены (F-K) Файлы `tools/enforce-*.mjs`, `judge-*`, `mentor-*`, `floor-*`, `escape-grant`, `plan-lock` и т.п. — @@ -247,6 +290,18 @@ node tools/owner-consent.mjs `Edit|Write|MultiEdit|Bash|PowerShell` → `enforce-floor-escape-consume` (one-shot гасит лёгкий грант). Тяжёлый терминальный канал — скрипт `tools/owner-consent.mjs` (запускает владелец, вне гейтов). +**Как дать лёгкий escape через окошко (урок 18.06).** Текст вопроса AskUserQuestion в UI **не +копируется**. Поэтому: (1) контроллер сперва пишет строку `FLOOR-ESCAPE: ` **в чат** (откуда +владелец её копирует — НЕ как имперактив рядом с меткой, иначе anti-dictation флагует; просто показать +строкой); (2) показывает окошко; (3) владелец **вставляет скопированное в поле ответа окошка** (НЕ в +обычный чат — из чата грант не пишется, ловит только PostToolUse AskUserQuestion). Кнопки окошка — +не-escape (anti-button). Канон `write:`-пути для §6-правки нормативки: абсолютный, lowercase, прямые +`/`, NFC, напр. `write:c:/моя/проекты/claude-brain/docs/pravila_raboty_claude_v1_1.md`. Escape +одноразовый — на КАЖДУЮ правку нормативки своё окошко; escape-окошки освобождены от anti-cosmetic- +стража (`askuser-cosmetic-detector::isEscapeAuthQuestion`, fix `f2365ca`), так что давать можно сколько +нужно. **Тяжёлая нормативка (много правок) — чище в ШТАТНОМ** (§6 — часть стены, в штатном off; +правки нормативки идут через `claude-md-management`). + ## Коммит - **Через стену — частокол гейтов:** `enforce-router-gate` (git-approval) + `enforce-criterion-gate` @@ -257,6 +312,13 @@ node tools/owner-consent.mjs правит .md и рвёт git-stash). Сообщение **paren-free**, трейлер `Co-Authored-By: Claude Opus 4.8`. - **git auto-gc на Windows** может зациклить `Unlink … .idx failed. Try again? (y/n)` (pack держит др. процесс — VSCode Git / gitea) → жми **`n`**; коммит уже создан. Профилактика: `git config gc.auto 0`. +- **Коммит и пуш ШАГАМИ опечатанного плана (урок 18.06).** В `steps-json` можно вписать сохранение: + `{op:"Write","object":".git/CB_MSG.txt"}` (сообщение) → `{op:"Bash","object":"git add <путь>"}` → + `{op:"Bash","object":"git commit -F .git/CB_MSG.txt"}` → `{op:"Bash","object":"git push gitea main"}`. + Проходит наставника+судью (ворота-2) ЕСЛИ в плане есть **раздел-обоснование**, что docs-only + git-команды входят в объявленный `claude-md-management` (отдельного git-скила в реестре нет; иначе + наставник NO-GO «доменный навык для git не объявлен»). Для docs-only `.md` criterion/verify + короткозамкнуты. Сообщение — через `.git/CB_MSG.txt` (пол режет ``/цепочки в `-m`). ## Пуш кода через стену diff --git a/docs/Pravila_raboty_Claude_v1_1.md b/docs/Pravila_raboty_Claude_v1_1.md index fa1bb02..3aa09c8 100644 --- a/docs/Pravila_raboty_Claude_v1_1.md +++ b/docs/Pravila_raboty_Claude_v1_1.md @@ -1,6 +1,6 @@ # Правила работы Claude в проекте «Лидерра» -**Версия:** v1.44 (14.06.2026) +**Версия:** v1.45 (18.06.2026) **Дата:** 14.06.2026 **Назначение:** настройки проекта (Project instructions) — Claude читает этот файл в каждом чате и следует правилам ниже. **Статус документа:** ✅ утверждён. Содержимое скопировано в поле "Project instructions" Claude.ai. Файл хранится в архиве как служебный документ. @@ -649,6 +649,8 @@ P0 = блокер старта спринта или регуляторного | **v1.33** | **19.05.2026** | Observer factor-analysis phase 1.1 (ADR-011 amend): §16.2 — `decision_provenance.kind` расширен до 3 значений (`autonomous` \| `user_directed_method` \| `user_chose_from_options`); 3-й kind — collaborative-choice case (заказчик выбирает один из вариантов, предложенных Claude в предыдущем ходе). §16.7 +абзац «Граница `user_chose_from_options`»: routing-gate НЕ блокирует этот kind — выбор из choice-space, сформулированного самим Claude, не навязанный извне метод; routing-тег не обязателен (детектор `tools/observer-choice-detector.mjs` детерминированный). Spec §11 `docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md` v1.1, plan `docs/superpowers/plans/2026-05-19-observer-factor-analysis-phase-1-1.md`. Связано: CLAUDE.md v2.20. Архитектурных изменений в §§1–15: 0. | | **v1.42** | **25.05.2026** | LLM-first router overhaul Phase 3 deferred follow-up #1: **+§17.7 «Coverage announcement»** — правило аннотировать каждую non-conversation задачу coverage-пометкой `coverage: :` (6 каналов: skill/node/chain/hook/agent/direct). Observability layer (не enforcement) — фиксирует **намерение** выбора канала, дополняет машинный гейт §17.4 который ловит **факт**. Граница с routing-тегом §16.7: routing-тег только для `user_directed_method`, coverage-пометка — всегда для non-conversation. C5 controller фиксирует отсутствие пометки в STATUS.md, не блокирует коммит. Cross-ref: реестр `docs/registry/nodes.yaml`, цепочки `docs/routing-off-phase.md`, парсер `tools/observer-transcript-parser.mjs` (schema v4.4+ — реализация следующим коммитом deferred #2). Связано: spec `docs/superpowers/specs/2026-05-24-llm-first-router-overhaul-design.md`, memory `project_brain_overhaul.md`. NB: записи таблицы v1.34–v1.41 не дотянуты предыдущими сессиями (известный дрейф); шапка `«Что изменилось в v1.NN»` авторитетна для этого периода. Архитектурных изменений §§1–16: 0. | | **v1.43** | **27.05.2026** | knowledge-graph-tooling: §13.2 +абзац «Off-phase knowledge-graph-tooling» — формализован узел #86 graphifyy (user-level скил `~/.claude/skills/graphify/SKILL.md`, CLI `graphifyy`, строит knowledge graph портала из docs+code; активация `/graphify `; артефакты `graphify-out*/` gitignored) как девятнадцатая off-phase подкатегория, отдельная от всех предыдущих; источник — user-level скил, не project-level → вне PSR_v1 R6.0/R6.1/R14; границы ADR-017 (KG1–KG5: ↔ context7 #60 / Boost #10 / openapi-mcp #47 / Sentry #34 / adr-kit #36 + mermaid #37). Связано: Tooling Прил.Н v2.24 (§4.59 + §0 счётчик 83→84), PSR_v1 v3.23 (R10.1 Блок 1 note +graphifyy; R15.6 +knowledge-graph-tooling), CLAUDE.md v2.31 (§3.3 +#86; §0 cross-refs). Через прямой Edit — worktree-эксцепшн §5 п.10. Архитектурных изменений в §§1–17 (кроме §13.2): 0. | +| **v1.44** | **14.06.2026** | (догоняющая запись — пропущена в свой сеанс) research-tooling «Perplexity Pack»: формализованы 3 внешних READ-ONLY MCP веб-разведки — #87 perplexity / #88 exa / #89 firecrawl. Связано: PSR_v1 v3.24 / Tooling Прил.Н v2.25 / CLAUDE.md v2.46. | +| **v1.45** | **18.06.2026** | +§18 «Дисциплины работы агента под управляющим слоем» (18.1 A — препятствие→перепланируй / 18.2 D1 — деплой: читать вывод, стоп на аномалии / 18.3 D2 — сохранение под ревью: раздельные согласия, опасное вне общего согласия). Нормативная формулировка действующего поведения; поведение кода не меняется. Через церемонию стены (спека+план опечатаны наставником+судьёй). Синхрон квинтета (PSR/Tooling/CLAUDE.md) — отдельным шагом. | --- @@ -1080,6 +1082,36 @@ coverage: : [reason="..." если direct] --- +## 18. Дисциплины работы агента под управляющим слоем + +Единый нормативный раздел: три императива поведения агента (A, D1, D2). Все три — нормативная +формулировка уже действующего поведения; применяются совместно. + +### 18.1. A — препятствие на ходу → новый замысел + +Агент обязан остановить работу по замыслу при обнаружении препятствия, делающего замысел +неприменимым, и подготовить новую версию замысла на одобрение. Обход препятствия или продолжение +работы по неприменимому замыслу запрещены. Всю разведку, нужную для замысла, агент завершает до +начала исполнения; в ходе исполнения новых вопросов к окружению быть не должно. + +### 18.2. D1 — деплой: чтение вывода и стоп на аномалии + +Агент обязан прочитать вывод каждого шага деплоя до перехода к следующему шагу. При сбое шага или +неожиданном выводе агент обязан остановиться и обратиться к владельцу, не доделывая остаток вслепую. +Опасные (необратимые) операции внутри деплоя требуют отдельного согласия владельца на каждую — общее +согласие на деплой их не покрывает. + +### 18.3. D2 — сохранение работы под ревью + +При согласии владельца на одобренный замысел агент сохраняет работу в репозиторий сам; ручное +участие владельца в самом сохранении не требуется. Изменения кода агент сохраняет лишь при зелёных +проверках изменённого кода; сохранение текста проверок такого условия не требует. Согласие на деплой +и согласие на сохранение — раздельные и не заменяют друг друга. Согласие владельца не +распространяется на опасные операции сохранения: перезапись истории репозитория и пропуск +обязательных проверок недопустимы всегда, независимо от любого согласия. + +--- + ## Что сделано после утверждения Заказчик согласовал v1.1-DRAFT (короткий ответ «а» = вариант A: поправить §4.8 и шапку, выпустить v1.1) в сессии 05.05.2026. Claude выполнил: diff --git a/docs/superpowers/plans/2026-06-18-wall-disciplines-pravila-v4-plan-push.md b/docs/superpowers/plans/2026-06-18-wall-disciplines-pravila-v4-plan-push.md new file mode 100644 index 0000000..0e0268e --- /dev/null +++ b/docs/superpowers/plans/2026-06-18-wall-disciplines-pravila-v4-plan-push.md @@ -0,0 +1,113 @@ +# План: §18 в свод правил — внести, закоммитить, запушить (v4) + +**Delivery:** user-result + +## Цель + +Внести три императива поведения агента (A, D1, D2) в свод правил одним связным разделом, нормативным +языком, по точным якорям (ниже), обновить версию свода в шапке и согласовать историю версий, затем +сохранить правки в репозиторий и выложить в резервный удалённый репозиторий. Сохранение — часть того +же канала ведения нормативки. Результат — обновлённый свод правил, доступный владельцу, сохранённый +и выложенный. Поведение кода не меняется. + +```skills-json +["claude-md-management"] +``` + +```steps-json +[ + {"op":"Edit","object":"docs/Pravila_raboty_Claude_v1_1.md","ref":"DISC"}, + {"op":"Edit","object":"docs/Pravila_raboty_Claude_v1_1.md","ref":"DISC"}, + {"op":"Edit","object":"docs/Pravila_raboty_Claude_v1_1.md","ref":"DISC"}, + {"op":"Write","object":".git/CB_MSG.txt","ref":"DISC"}, + {"op":"Bash","object":"git add docs/Pravila_raboty_Claude_v1_1.md","ref":"DISC"}, + {"op":"Bash","object":"git commit -F .git/CB_MSG.txt","ref":"DISC"}, + {"op":"Bash","object":"git push gitea main","ref":"DISC"} +] +``` + +```verified-context-json +[ + {"id":"vc-a","kind":"EXTRACTED","ref":"tools/reading-discipline.mjs","anchor":"readingGateDecision"}, + {"id":"vc-d1","kind":"EXTRACTED","ref":"tools/blessed-ops.mjs","anchor":"buildBlessedOps"}, + {"id":"vc-d2","kind":"EXTRACTED","ref":"tools/commit-grant.mjs","anchor":"commitGrantOpenForSession"} +] +``` + +## Обоснование git-шагов (покрытие навыком) + +Шаги 5–7 (git add / commit / push одного docs-only `.md`) — это фаза СОХРАНЕНИЯ нормативной правки, +неотделимая от того же канала `claude-md-management`: он — единственный интерфейс ведения свода +правил, и сохранение изменённого свода входит в этот канал (правка без сохранения не завершена). +Это не отдельная задача и не требует отдельного git-навыка (специализированного git-скила в реестре +нет). Команды минимальны и безопасны: один файл, подготовленное сообщение, пуш в резервный +репозиторий; без кода, без `--force`, без `--no-verify`. Гейты качества (criterion/verify) для +docs-only `.md` короткозамкнуты по сути правки. + +## Шаги — точные параметры + +**Шаги 1–3 — три правки `docs/Pravila_raboty_Claude_v1_1.md`** (три разные позиции одного файла): + +1. Вставить раздел §18. Якорь (точная строка): `## Что сделано после утверждения`. Действие: вставить + ПЕРЕД этой строкой блок «Текст вносимого раздела» (ниже), отделив строкой `---`. +2. Версия в шапке. Якорь: `**Версия:** v1.44 (14.06.2026)` → `**Версия:** v1.45 (18.06.2026)`. +3. История версий (§10). Якорь — конец строки v1.43: `Архитектурных изменений в §§1–17 (кроме §13.2): 0. |`. + Добавить ДВЕ строки после якоря (тексты — в «Строки истории» ниже): догоняющую v1.44 + v1.45. + +**Шаг 4 — сообщение коммита.** Записать в `.git/CB_MSG.txt` текст из «Сообщение коммита» ниже. + +**Шаг 5 — индексация.** `git add docs/Pravila_raboty_Claude_v1_1.md`. + +**Шаг 6 — коммит.** `git commit -F .git/CB_MSG.txt`. + +**Шаг 7 — пуш.** `git push gitea main` (резервный репозиторий). + +## Строки истории (шаг 3) + +`| **v1.44** | **14.06.2026** | (догоняющая запись — пропущена в свой сеанс) research-tooling «Perplexity Pack»: формализованы 3 внешних READ-ONLY MCP веб-разведки — #87 perplexity / #88 exa / #89 firecrawl. Связано: PSR_v1 v3.24 / Tooling Прил.Н v2.25 / CLAUDE.md v2.46. |` +`| **v1.45** | **18.06.2026** | +§18 «Дисциплины работы агента под управляющим слоем» (18.1 A / 18.2 D1 / 18.3 D2) — нормативная формулировка действующего поведения; поведение кода не меняется. Через церемонию стены (наставник+судья). |` + +## Сообщение коммита (шаг 4) + +``` +docs(pravila): +§18 дисциплины работы агента (A/D1/D2) — v1.45 + +Внесён единый раздел §18 «Дисциплины работы агента под управляющим слоем»: 18.1 A, 18.2 D1, 18.3 D2. +Нормативная формулировка действующего поведения; код не меняется. Версия свода v1.44 -> v1.45, +история догнана записью v1.44 (Perplexity Pack). Через церемонию стены: спека+план опечатаны +наставником и судьёй. Синхрон квинтета (PSR/Tooling/CLAUDE.md) — отдельным шагом. + +Co-Authored-By: Claude Opus 4.8 +``` + +## Текст вносимого раздела (дословно, шаг 1) + +```markdown +## 18. Дисциплины работы агента под управляющим слоем + +Единый нормативный раздел: три императива поведения агента (A, D1, D2). Все три — нормативная +формулировка уже действующего поведения; применяются совместно. + +### 18.1. A — препятствие на ходу → новый замысел + +Агент обязан остановить работу по замыслу при обнаружении препятствия, делающего замысел +неприменимым, и подготовить новую версию замысла на одобрение. Обход препятствия или продолжение +работы по неприменимому замыслу запрещены. Всю разведку, нужную для замысла, агент завершает до +начала исполнения; в ходе исполнения новых вопросов к окружению быть не должно. + +### 18.2. D1 — деплой: чтение вывода и стоп на аномалии + +Агент обязан прочитать вывод каждого шага деплоя до перехода к следующему шагу. При сбое шага или +неожиданном выводе агент обязан остановиться и обратиться к владельцу, не доделывая остаток вслепую. +Опасные (необратимые) операции внутри деплоя требуют отдельного согласия владельца на каждую — общее +согласие на деплой их не покрывает. + +### 18.3. D2 — сохранение работы под ревью + +При согласии владельца на одобренный замысел агент сохраняет работу в репозиторий сам; ручное +участие владельца в самом сохранении не требуется. Изменения кода агент сохраняет лишь при зелёных +проверках изменённого кода; сохранение текста проверок такого условия не требует. Согласие на деплой +и согласие на сохранение — раздельные и не заменяют друг друга. Согласие владельца не +распространяется на опасные операции сохранения: перезапись истории репозитория и пропуск +обязательных проверок недопустимы всегда, независимо от любого согласия. +``` diff --git a/docs/superpowers/specs/2026-06-18-wall-disciplines-pravila-v3-design.md b/docs/superpowers/specs/2026-06-18-wall-disciplines-pravila-v3-design.md new file mode 100644 index 0000000..3f2afef --- /dev/null +++ b/docs/superpowers/specs/2026-06-18-wall-disciplines-pravila-v3-design.md @@ -0,0 +1,55 @@ +# Формализация дисциплин работы агента (A / D1 / D2) в своде правил + +## Цель + +Закрепить в своде правил проекта ЕДИНЫЙ раздел — «Дисциплины работы агента управляющего слоя» — +из трёх императивов: чтение по ходу работы (A), выполнение деплоя (D1), сохранение работы в +репозиторий (D2). Это нормативная формулировка уже существующего и проверенного поведения; новых +требований к коду не вводится. Три императива оформляются как один связный раздел, не как +разрозненные пункты. Результат — обновлённый свод правил, доступный владельцу. + +## Опора {#OP} + +```verified-context-json +[ + { "id": "vc-a", "kind": "EXTRACTED", "ref": "tools/reading-discipline.mjs", "anchor": "readingGateDecision" }, + { "id": "vc-d1", "kind": "EXTRACTED", "ref": "tools/blessed-ops.mjs", "anchor": "buildBlessedOps" }, + { "id": "vc-d2", "kind": "EXTRACTED", "ref": "tools/commit-grant.mjs", "anchor": "commitGrantOpenForSession" } +] +``` + +## Раздел: Дисциплины работы агента под управляющим слоем {#DISC} + +Единый нормативный раздел свода правил. Он объединяет три императива поведения агента (A, D1, D2), +изложенные ниже как части одного раздела. Все три — нормативная формулировка уже действующего +поведения; они не противоречат друг другу и применяются совместно. + +### A — препятствие на ходу → новый замысел {#A} + +Агент обязан остановить работу по замыслу при обнаружении препятствия, делающего замысел +неприменимым, и подготовить новую версию замысла на одобрение. Обход препятствия или продолжение +работы по неприменимому замыслу запрещены. Всю разведку, нужную для замысла, агент завершает до +начала исполнения; в ходе исполнения новых вопросов к окружению быть не должно. + +### D1 — деплой: чтение вывода и стоп на аномалии {#D1} + +Агент обязан прочитать вывод каждого шага деплоя до перехода к следующему шагу. При сбое шага или +неожиданном выводе агент обязан остановиться и обратиться к владельцу, не доделывая остаток вслепую. +Опасные (необратимые) операции внутри деплоя требуют отдельного согласия владельца на каждую — общее +согласие на деплой их не покрывает. + +### D2 — сохранение работы под ревью {#D2} + +При согласии владельца на одобренный замысел агент сохраняет работу в репозиторий сам; ручное +участие владельца в самом сохранении не требуется. Изменения кода агент сохраняет лишь при зелёных +проверках изменённого кода; сохранение текста проверок такого условия не требует. Согласие на деплой +и согласие на сохранение — раздельные и не заменяют друг друга. Согласие владельца не +распространяется на опасные операции сохранения: перезапись истории репозитория и пропуск +обязательных проверок недопустимы всегда, независимо от любого согласия. + +## Критерий приёмки {#CRIT} + +Три императива внесены в свод правил ОДНИМ отдельным связным разделом, нормативным языком, без +машинных деталей; поведение кода не меняется; согласия деплоя и сохранения остаются раздельными, +опасные операции — вне общего согласия. Каждый из трёх императивов имеет опору на проверенный +контекст (секция #OP).