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:
@@ -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`).
|
||||
|
||||
## Пуш кода через стену
|
||||
|
||||
|
||||
@@ -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 (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: <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-шагов (покрытие навыком)
|
||||
|
||||
Шаги 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 <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).
|
||||
Reference in New Issue
Block a user