docs: финдинг трения коммита и деплоя для мозга
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# Финдинг: трение коммита/деплоя — владелец вынужден делать механическую работу вслепую
|
||||
|
||||
**Дата:** 16.06.2026. **Сессия:** SP2c-1 Часть 2 (врезки записи памяти кругов).
|
||||
**Автор записи:** контроллер, по прямому запросу владельца. **Для:** проект `claude-brain` (починить движок).
|
||||
**Статус:** открытый финдинг (не решён). Связан с [worklog F-J/F-K](2026-06-16-arbitration-fixes-worklog-for-brain.md),
|
||||
памятью `commit-via-wall-owner-terminal`, гайдом [router-mentor-wall-GUIDE.md](docs/superpowers/router-mentor-wall-GUIDE.md).
|
||||
|
||||
---
|
||||
|
||||
## 1. Что произошло (симптом)
|
||||
|
||||
После реализации SP2c-1 ч2 тесты прошли зелёными (`7 passed`). Контроллер отдал владельцу
|
||||
**текст** коммита и предложил «коммить сам». Владелец — **не программист** — вставил в PowerShell
|
||||
**само сообщение коммита** как команду:
|
||||
|
||||
```
|
||||
feat(round-memory): врезки записи памяти кругов в живую оркестрацию — SP2c-1 ч2
|
||||
```
|
||||
|
||||
PowerShell ответил ошибкой:
|
||||
|
||||
```
|
||||
round-memory : The term 'round-memory' is not recognized as the name of a cmdlet, function, script file, or operable program.
|
||||
CategoryInfo : ObjectNotFound: (round-memory:String) [], CommandNotFoundException
|
||||
```
|
||||
|
||||
То есть владелец выполнил механический шаг вслепую — и шаг был неверный не по его вине,
|
||||
а потому что ему вообще не следовало вбивать git руками.
|
||||
|
||||
## 2. Корень трения
|
||||
|
||||
1. **Контроллер переложил коммит на владельца текстом**, хотя в `claude-brain` коммит
|
||||
**через Claude РАБОТАЕТ** под одним floor-escape: `enforce-router-gate` не подключён
|
||||
(design v6 §6), `enforce-criterion-gate` чтит escape, стена М2 / пол М5 — тоже
|
||||
(см. worklog «Уроки сессии №4», commit `abc3124e`). Один клик владельца по опции
|
||||
`FLOOR-ESCAPE: bash:git commit …` — и контроллер запускает РОВНО ту команду сам.
|
||||
2. **Владелец не обязан понимать синтаксис git/PowerShell.** Любой механический шаг,
|
||||
отданный ему «вбей вот это», — источник ошибок и фрустрации («тупо выполняю работу
|
||||
без осознания»). Это нарушение духа CLAUDE.md §5 (говорить простым языком, не грузить
|
||||
программистскими действиями).
|
||||
|
||||
## 3. Вопрос владельца (дословно)
|
||||
|
||||
> «почему ты не можешь делать [коммит] в рамках плана… я не программист, я тупо сижу
|
||||
> выполняю механическую работу без осознания».
|
||||
|
||||
Справедливо. Сейчас коммит — это не шаг опечатанного плана, а отдельный ручной акт.
|
||||
|
||||
## 4. Что мозгу починить (предложения)
|
||||
|
||||
1. **Правило поведения контроллера (немедленно применимо):** НИКОГДА не просить владельца
|
||||
вбивать git/любую команду руками. Коммит/пуш всегда предлагать **кликабельной опцией**
|
||||
`AskUserQuestion` с точной командой в `FLOOR-ESCAPE: bash:…`; запускать команду —
|
||||
контроллеру. Владельцу — только клик. (Зафиксировать в памяти `feedback` + в гайде стены.)
|
||||
2. **Коммит как шаг церемонии (движок):** спроектировать путь «commit-as-plan-step» —
|
||||
чтобы опечатанный план мог завершаться коммитом без выхода в терминал. Препятствия
|
||||
сейчас: `enforce-criterion-gate` (требует per-criterion GREEN), floor-safe правила
|
||||
(Bash-шаги с мутацией). Варианты: (а) явный финальный escape-шаг плана, который пол/гейт
|
||||
пропускают по подписи плана; (б) «зелёный сертификат» шага (`produce-criterion-greens`),
|
||||
автоматически собираемый из прогона тестов, чтобы criterion-gate пускал коммит как шаг.
|
||||
3. **Деплой (параллельная сессия Лидерры):** тот же принцип — действия с понятными
|
||||
последствиями (деплой на прод, восстановление кэша, бэкап) оформлять кликабельными
|
||||
опциями с предпросмотром эффекта, а не «выполни в терминале вот это». Владелец —
|
||||
арбитр/кнопка, не исполнитель команд.
|
||||
4. **Сообщение коммита через escape — без скобок.** Пол режет `()` (detectSubshell), поэтому
|
||||
`feat(scope):` в Claude-escape недостижим — нужен paren-free формат (`feat: scope …`).
|
||||
Это расхождение со стилем терминальных коммитов (`feat(round-memory): …`) стоит закрыть:
|
||||
либо разрешить скобки в quoted -m, либо принять paren-free как канон для escape-коммитов.
|
||||
|
||||
## 5. Немедленный обход (в этой сессии применён)
|
||||
|
||||
Контроллер делает коммит сам: владелец кликнул опцию `FLOOR-ESCAPE: bash:git commit …`,
|
||||
контроллер запустил точную команду в окне 5 минут. Ручного набора у владельца — ноль.
|
||||
Reference in New Issue
Block a user