0b19c86fed
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
74 lines
6.3 KiB
Markdown
74 lines
6.3 KiB
Markdown
# Финдинг: трение коммита/деплоя — владелец вынужден делать механическую работу вслепую
|
|
|
|
**Дата:** 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 минут. Ручного набора у владельца — ноль.
|