diff --git a/2026-06-16-commit-friction-finding-for-brain.md b/2026-06-16-commit-friction-finding-for-brain.md new file mode 100644 index 0000000..e4221cc --- /dev/null +++ b/2026-06-16-commit-friction-finding-for-brain.md @@ -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 минут. Ручного набора у владельца — ноль.