Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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. Корень трения
- Контроллер переложил коммит на владельца текстом, хотя в
claude-brainкоммит через Claude РАБОТАЕТ под одним floor-escape:enforce-router-gateне подключён (design v6 §6),enforce-criterion-gateчтит escape, стена М2 / пол М5 — тоже (см. worklog «Уроки сессии №4», commitabc3124e). Один клик владельца по опцииFLOOR-ESCAPE: bash:git commit …— и контроллер запускает РОВНО ту команду сам. - Владелец не обязан понимать синтаксис git/PowerShell. Любой механический шаг, отданный ему «вбей вот это», — источник ошибок и фрустрации («тупо выполняю работу без осознания»). Это нарушение духа CLAUDE.md §5 (говорить простым языком, не грузить программистскими действиями).
3. Вопрос владельца (дословно)
«почему ты не можешь делать [коммит] в рамках плана… я не программист, я тупо сижу выполняю механическую работу без осознания».
Справедливо. Сейчас коммит — это не шаг опечатанного плана, а отдельный ручной акт.
4. Что мозгу починить (предложения)
- Правило поведения контроллера (немедленно применимо): НИКОГДА не просить владельца
вбивать git/любую команду руками. Коммит/пуш всегда предлагать кликабельной опцией
AskUserQuestionс точной командой вFLOOR-ESCAPE: bash:…; запускать команду — контроллеру. Владельцу — только клик. (Зафиксировать в памятиfeedback+ в гайде стены.) - Коммит как шаг церемонии (движок): спроектировать путь «commit-as-plan-step» —
чтобы опечатанный план мог завершаться коммитом без выхода в терминал. Препятствия
сейчас:
enforce-criterion-gate(требует per-criterion GREEN), floor-safe правила (Bash-шаги с мутацией). Варианты: (а) явный финальный escape-шаг плана, который пол/гейт пропускают по подписи плана; (б) «зелёный сертификат» шага (produce-criterion-greens), автоматически собираемый из прогона тестов, чтобы criterion-gate пускал коммит как шаг. - Деплой (параллельная сессия Лидерры): тот же принцип — действия с понятными последствиями (деплой на прод, восстановление кэша, бэкап) оформлять кликабельными опциями с предпросмотром эффекта, а не «выполни в терминале вот это». Владелец — арбитр/кнопка, не исполнитель команд.
- Сообщение коммита через 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 минут. Ручного набора у владельца — ноль.