Files
brain/2026-06-16-commit-friction-finding-for-brain.md
T
2026-06-16 16:45:07 +03:00

6.3 KiB

Финдинг: трение коммита/деплоя — владелец вынужден делать механическую работу вслепую

Дата: 16.06.2026. Сессия: SP2c-1 Часть 2 (врезки записи памяти кругов). Автор записи: контроллер, по прямому запросу владельца. Для: проект claude-brain (починить движок). Статус: открытый финдинг (не решён). Связан с worklog F-J/F-K, памятью commit-via-wall-owner-terminal, гайдом 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 минут. Ручного набора у владельца — ноль.