docs(pravila): +§18 дисциплины работы агента (A/D1/D2) — v1.45

Внесён единый раздел §18 «Дисциплины работы агента под управляющим слоем»: 18.1 A (препятствие
на ходу — перепланируй, не гадай), 18.2 D1 (деплой — читать вывод каждого шага, стоп на аномалии,
опасное — per-command согласие), 18.3 D2 (сохранение под ревью — раздельные согласия деплоя/коммита,
опасное вне общего согласия). Нормативная формулировка действующего поведения; код не меняется.
Версия свода v1.44 -> v1.45; история догнана записью v1.44 (Perplexity Pack). Через церемонию стены:
спека (v3) + план (v4-push) опечатаны наставником+судьёй; §6-правка авторизована escape владельца.
Синхрон квинтета (PSR/Tooling/CLAUDE.md) — отдельным шагом.

GUIDE (bags/router-mentor-wall-GUIDE.md): +урок про escape-окошко (строку давать в чат для
копирования, вставлять в поле ответа окошка) +урок про коммит/пуш шагами плана (обоснование
docs-only git под claude-md-management).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-18 23:23:05 +03:00
parent f2365caf4b
commit b365ebe567
4 changed files with 267 additions and 5 deletions
+66 -4
View File
@@ -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 <pkg> python tools/x.py`, установленный CLI (`graphify …`) — это
валидные Bash-шаги плана. Режется только ИНЛАЙН-eval (`-c`/`-e`), не файл. Значит «нужен скрипт под
планом» = Write `.py`/`.mjs` шагом → запуск `python/node <file>` шагом 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 <sessionId> <action>
`Edit|Write|MultiEdit|Bash|PowerShell``enforce-floor-escape-consume` (one-shot гасит лёгкий грант).
Тяжёлый терминальный канал — скрипт `tools/owner-consent.mjs` (запускает владелец, вне гейтов).
**Как дать лёгкий escape через окошко (урок 18.06).** Текст вопроса AskUserQuestion в UI **не
копируется**. Поэтому: (1) контроллер сперва пишет строку `FLOOR-ESCAPE: <action>` **в чат** (откуда
владелец её копирует — НЕ как имперактив рядом с меткой, иначе 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 <sessionId> <action>
правит .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` (пол режет `<email>`/цепочки в `-m`).
## Пуш кода через стену
+33 -1
View File
@@ -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: <channel>:<id>` (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 <command>`; артефакты `graphify-out*/` gitignored) как девятнадцатая off-phase подкатегория, отдельная от всех предыдущих; источник — user-level скил, не project-level → вне PSR_v1 R6.0/R6.1/R14; границы ADR-017 (KG1KG5: ↔ 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: <channel>:<id> [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 выполнил:
@@ -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-шагов (покрытие навыком)
Шаги 57 (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 <noreply@anthropic.com>
```
## Текст вносимого раздела (дословно, шаг 1)
```markdown
## 18. Дисциплины работы агента под управляющим слоем
Единый нормативный раздел: три императива поведения агента (A, D1, D2). Все три — нормативная
формулировка уже действующего поведения; применяются совместно.
### 18.1. A — препятствие на ходу → новый замысел
Агент обязан остановить работу по замыслу при обнаружении препятствия, делающего замысел
неприменимым, и подготовить новую версию замысла на одобрение. Обход препятствия или продолжение
работы по неприменимому замыслу запрещены. Всю разведку, нужную для замысла, агент завершает до
начала исполнения; в ходе исполнения новых вопросов к окружению быть не должно.
### 18.2. D1 — деплой: чтение вывода и стоп на аномалии
Агент обязан прочитать вывод каждого шага деплоя до перехода к следующему шагу. При сбое шага или
неожиданном выводе агент обязан остановиться и обратиться к владельцу, не доделывая остаток вслепую.
Опасные (необратимые) операции внутри деплоя требуют отдельного согласия владельца на каждую — общее
согласие на деплой их не покрывает.
### 18.3. D2 — сохранение работы под ревью
При согласии владельца на одобренный замысел агент сохраняет работу в репозиторий сам; ручное
участие владельца в самом сохранении не требуется. Изменения кода агент сохраняет лишь при зелёных
проверках изменённого кода; сохранение текста проверок такого условия не требует. Согласие на деплой
и согласие на сохранение — раздельные и не заменяют друг друга. Согласие владельца не
распространяется на опасные операции сохранения: перезапись истории репозитория и пропуск
обязательных проверок недопустимы всегда, независимо от любого согласия.
```
@@ -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).