Ratify D39.88: zone sessions commit their own zone only, never others, with pathspec commit protocol written into root guardrails, frontend prompt and platform readme
This commit is contained in:
parent
a258b03156
commit
2b166b7e2e
5 changed files with 57 additions and 13 deletions
24
CLAUDE.md
24
CLAUDE.md
|
|
@ -13,13 +13,13 @@ Go-бэкенд издательского художественного пер
|
|||
|
||||
## Роли сессий и зоны (НЕ править чужую зону)
|
||||
|
||||
| Роль | Зона записи | Всё остальное |
|
||||
|---|---|---|
|
||||
| **Бэкенд** | `backend/` | читать можно; расхождения — пингом оркестратору в `docs/PROGRESS.md` |
|
||||
| **Полигон (eval)** | `eval/` + `docs/experiments/` | то же |
|
||||
| **Оркестратор** | `docs/` (architecture/research/PROGRESS), ревью чужого кода read-only | ратифицирует решения, пишет хендофф-промты |
|
||||
| **Фронт** | `frontend/` | то же; продуктовые требования — `docs/product-requirements.md`, НЕ из памяти |
|
||||
| **Платформа** | `platform/` (SaaS control plane: пользователи/квоты/очередь/HTTP; движок дёргает процессами, D39.81) | то же |
|
||||
| Роль | Зона записи | Коммитит сама? | Всё остальное |
|
||||
|---|---|---|---|
|
||||
| **Бэкенд** | `backend/` | нет — лендит оркестратор | читать можно; расхождения — пингом оркестратору в `docs/PROGRESS.md` |
|
||||
| **Полигон (eval)** | `eval/` + `docs/experiments/` | только пре-рег фризы | то же |
|
||||
| **Оркестратор** | `docs/` (architecture/research/PROGRESS) + корневые онбординг-доки, ревью чужого кода read-only | да | ратифицирует решения, пишет хендофф-промты |
|
||||
| **Фронт** | `frontend/` | **ДА — только свою зону** (D39.88) | то же; продуктовые требования — `docs/product-requirements.md`, НЕ из памяти |
|
||||
| **Платформа** | `platform/` (SaaS control plane: пользователи/квоты/очередь/HTTP; движок дёргает процессами, D39.81) | **ДА — только свою зону** (D39.88) | то же |
|
||||
|
||||
Координация — журнал `docs/PROGRESS.md` (секции «Бэкенд»/«Полигон»/«Память»/«Голос и состояние»/«Ридер-IDE»; сверху CURRENT-STATE). Записывай туда краткие итоги своей сессии. Закрытые хроники вынесены в слайсы `docs/archive/PROGRESS-*.md` — НЕ читать при онбординге, только по конкретной ссылке. Параллельные сессии — норма: чужие незакоммиченные файлы в дереве не трогать; сессия считается ЖИВОЙ, пока владелец не сказал обратное.
|
||||
|
||||
|
|
@ -42,7 +42,15 @@ Go-бэкенд издательского художественного пер
|
|||
- Дисциплина: не верь заголовкам — грунтуй выводы `file:line`/цитатой; спорное верифицируй адверсариально (author≠reviewer); эмпирика на PD-классике из претрейна считается предварительной до вебновелл-среза.
|
||||
- **Общность движка (владелец 24.07):** Go-логика НЕ ветвится по паре/книге; пара-данные → `internal/lang`+`configs/langpacks/`, книго-каноны → сид/brief (данные); книжный термин в общем пар-слое = утечка. Тест-данные пары легитимны. Норматив (только больные места): `docs/architecture/12-go-style-notes.md`. Ревью-вопрос по умолчанию: «заработает ли на паре, которой в репо ещё НЕТ, без правки Go?»
|
||||
- **Мандат самопроверки в промтах сессий (обязателен, решение владельца 12.07):** промты полигон-сессий — и вообще любых пишущих код / запросы к моделям — ДОЛЖНЫ явно требовать ревью ИСПОЛНЕНИЕМ: своего кода + сформированных запросов к моделям + полученных результатов. Полигон регулярно ошибается/багует, и это искажает эксперименты (D37: заявленные «0 ошибок» = 36 ошибок+биллинг, «13 катастроф» = ~5–6 при оверфлаге судьи; exp13 +10% бюджета). Бэкенд-промты — явный бэкенд-ревью после кода (обычно отрабатывает по опыту, но требовать явно). Пост-хок адверсариальная верификация оркестратора при лендинге — второй рубеж, НЕ замена самопроверки.
|
||||
- **Git-координация мультисессий:** НИКАКИХ `reset --hard`, перезаписей истории (amend/rebase несвежих коммитов) и `checkout` поверх грязного дерева, пока возможны незакоммиченные правки параллельных сессий — сначала `git status` и опознание ЧУЖИХ изменений; чужое не трогать; history-rewrite — только по согласованию через оркестратора при чистом дереве (урок 09.07: rewrite оркестратора стёр незакоммиченные правки полигона).
|
||||
- **Git-координация мультисессий (решение владельца 02.08, D39.88 — «свою часть пусть коммитит, чужую не трогает НИКОГДА»):**
|
||||
- **Коммить только пути СВОЕЙ зоны.** Право коммита есть у оркестратора и у зонных сессий фронта/платформы (в своей зоне); бэкенд и полигон по-прежнему не коммитят — лендит оркестратор (исключение: пре-рег фризы полигона).
|
||||
- **Форма коммита — ТОЛЬКО с явным списком путей: `git commit -- <путь> <путь>`.** Причина механическая и это корень обоих инцидентов 02.08: голый `git commit` уносит **ВЕСЬ индекс**, включая чужие застейдженные файлы, и чужая работа уезжает под твоим сообщением. Pathspec-форма индекс не трогает.
|
||||
- **НИКОГДА `git add -A` / `git add .` / `git commit -a`** — только явные пути.
|
||||
- **Перед каждым коммитом:** `git status` (опознать ЧУЖОЕ) и `git diff --cached --name-only`. Увидел в индексе путь вне своей зоны — **не коммить его и не «прибирать»**: снимай не чужое из индекса, а свою задачу — коммить pathspec-формой.
|
||||
- **Не оставляй свои файлы застейдженными** между операциями: пока они в индексе, их может унести чужой коммит (этим оркестратор №10 сам подставился дважды). Стейдж и коммит — одной командой.
|
||||
- **НИКАКИХ `reset --hard`, перезаписей истории (amend/rebase несвежих коммитов) и `checkout` поверх грязного дерева**, пока возможны незакоммиченные правки параллельных сессий; history-rewrite — только по согласованию через оркестратора при чистом дереве (урок 09.07: rewrite оркестратора стёр незакоммиченные правки полигона).
|
||||
- **Чужое уже уехало в твой коммит?** Историю НЕ переписывать — сообщить владельцу/оркестратору; содержимое при этом цело, теряется только атрибуция.
|
||||
- Никогда не коммитить: `START_PROMT.MD` (файл владельца) · `.claude/settings.local.json` · книгу и производные (живут в `~/books`, вне git).
|
||||
|
||||
## Онбординг новой сессии (порядок чтения)
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
# Журнал решений оркестратора — контракт D1–D39.87 (развязки 04.07 · пакеты 09–10.07 · приёмка/качество-первым/пивот/эмпирика 11–12.07 · арх-ресет+стройка пере-прогонного стека 13–19.07)
|
||||
# Журнал решений оркестратора — контракт D1–D39.88 (развязки 04.07 · пакеты 09–10.07 · приёмка/качество-первым/пивот/эмпирика 11–12.07 · арх-ресет+стройка пере-прогонного стека 13–19.07)
|
||||
|
||||
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Читая контракт целиком, держи под рукой, что чем перекрыто:
|
||||
> ⚠ **Навигация (актуализация 01.08):** карта ниже детально покрывает D1–D39.28; решения D39.29+ живут хронологически в теле файла, **свежая голова — С ХВОСТА** (новые ноты аппендятся вниз). Сводка текущей головы и очередь — CURRENT-STATE в `../PROGRESS.md`.
|
||||
|
|
@ -1281,3 +1281,13 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
|
|||
**Обязанность, унаследованная от D39.86 п.2:** санкция (б) тем же диффом приводит в соответствие доккомменты эхо-гейта (`config/models.go:440-448`, `llm/capability.go:52-58`), которые утверждают инвариант «echo-prone провайдер держит thinking на дефолте провайдера» — после (б) тот же провод легален через `stages[].reasoning` и запрещён через `model.extra_body`, и защита перестаёт быть полной. Гардрейл «thinking у DeepSeek не выключать» при этом НЕ ослабляется и остаётся в силе: (б) — уровень эффорта, а не тумблер.
|
||||
|
||||
**Выдан промт** `docs/BACKEND_EFFORT_HANDLE_SESSION_PROMPT.md`: работа A (ручка, $0 + проба банка на `low` ≤$0.10 — этот замер не делал НИКТО, `low` у бэнк-ролей открытый вопрос) · работа B (экран целевого языка, $0, вердикт-двигающая ⇒ дизайн и пинг ДО кода) · работа C (добивка холодного прогона ≤$5 — закрывает строку 16 «полная цена холодного старта включая редактуру» и ВПЕРВЫЕ даёт данные по осям голоса для строки 13б, потому что редакторская волна не гонялась ни разу). **Промт холодно аудирован 4-линзовым воркфлоу с независимым арбитражем ДО выдачи** (норма D39.83): **3 блокера и 15 major вправлены** — несуществующая на момент написания ссылка на этот самый блок · платная проба, буквально уводившая прогон в ЗАМОРОЖЕННЫЙ эталон coldrun-a (он держит денежный базлайн строки 16) · та же ловушка хеш-оси на пути repair (`repairCheckpointExists`, `repair.go:350`, чей доккоммент декларирует зеркальность) · область работы B, буквально накрывавшая бэнк-роли и repair, чьи ответы законно НЕ в целевой письменности (100% ложных флагов) · негодный носитель данных для экрана · молчащие суб-бюджеты (`gates.terminology.budget_usd: 0.05`, `escalation.budget_usd: 0.10`), которые связывают РАНЬШЕ потолка $5 · незапрещённая правка вердикт-несущих `capabilities` в `models.yaml` · порядок «B заморожена ДО первого платного вызова C» (иначе сдвиг `classifierVersion` осиротит чекпойнты C1) · пропущенная в промте обязанность про доккомменты гейта · отсутствие явной инструкции переставить ручку ЧЕРНОВИКА в стенде (буквальное прочтение оставляло draft на `"off"` и воспроизвело бы стену 0/9 за $5). Строка 74 → «в работе»; закрывается приёмкой этого пака (02.08.2026, оркестратор №10). ✅
|
||||
|
||||
## D39.88 — Коммит-права зонных сессий: фронт и платформа коммитят СВОЁ, чужое не трогают никогда; git-протокол переведён в механику (02.08)
|
||||
|
||||
Закрывает норму-вопрос, открытый D39.84 п.8 («промт S0 велит фронт-сессии коммитить самой — против нормы «сессии не коммитят»; до слова владельца действует старая норма»). **Решение владельца дословно: «Свою часть пусть коммитит. Чужую не трогает никогда. Надо ему явно это прописать. То же самое и для платформы».** Ратифицировано: **право коммита у зонных сессий фронта и платформы ЕСТЬ — строго на пути своей зоны** (`frontend/`, `platform/`); бэкенд и полигон по-прежнему не коммитят, лендит оркестратор (исключение прежнее — пре-рег фризы полигона).
|
||||
|
||||
**Повод — два живых инцидента 02.08, и они вскрыли, что декларативной нормы мало.** Коммиты фронт-сессии `e9a6bb2` и `b98afb5` дважды унесли под своим сообщением застейдженную работу оркестратора (архивный `git mv` промта coldrun-b; затем все четыре дока лендинга D39.86/D39.87). Содержимое цело — проверено `git show HEAD:` по каждому файлу — потеряна только атрибуция; история НЕ переписывалась (запрет при живых параллельных сессиях, урок 09.07; владелец санкционировал рерайт постфактум, оркестратор от него отказался — переписывать общий `main` под активно коммитящей сессией дороже выигранной косметики, оба хеша названы в PROGRESS, археология не рвётся). **Корень инцидента — не дисциплина, а механика: голый `git commit` уносит ВЕСЬ индекс.** Обе стороны виноваты симметрично: сессия коммитила без pathspec, оркестратор держал файлы застейдженными между операциями.
|
||||
|
||||
**Поэтому норма записана как ПРОТОКОЛ, а не как призыв** (канон — `CLAUDE.md` §Гардрейлы, «Git-координация мультисессий»): коммит ТОЛЬКО с явным списком путей `git commit -- <пути>` (pathspec-форма чужой индекс не трогает) · **никогда** `git add -A` / `git add .` / `git commit -a` · перед каждым коммитом `git status` + `git diff --cached --name-only`, и чужой путь в индексе не «прибирать», а обойти pathspec-формой · свои файлы не держать застейдженными между шагами (стейдж и коммит одной командой) · `reset --hard`/amend/rebase несвежих коммитов/checkout поверх грязного дерева — запрещены · чужое уехало в твой коммит → историю НЕ переписывать, сообщить владельцу · не коммитить `START_PROMT.MD` и `.claude/settings.local.json`.
|
||||
|
||||
**Носители (правило обязано доехать до сессии, а не только до канона):** `CLAUDE.md` — таблица зон получила колонку «Коммитит сама?» + протокол в гардрейлах · `frontend/docs/FRONTEND_SESSION_PROMPT.md` — раздел «Коммит-права и git-протокол» перед первым коммитом (правка чужой зоны сделана оркестратором по прямому указанию владельца «надо ему явно это прописать»; прежняя формулировка §«Кто ты и твоя зона» несла только общий запрет и не давала механики) · `platform/README.md` — то же плюс ревью-гард модулей D39.85, потому что отдельного промта платформы ещё нет, а правило нужно ДО первой строки кода. ⚠ Фронт-сессия на момент ратификации ЖИВАЯ: правило доедет до неё только РЕЛЕЕМ владельца — бегущая сессия файл промта не перечитывает (норма хендофф-промтов п.4) (02.08.2026, оркестратор №10). ✅
|
||||
|
|
|
|||
|
|
@ -31,9 +31,22 @@
|
|||
|
||||
## Кто ты и твоя зона
|
||||
|
||||
Ты фронтенд-сессия. **Зона записи — только `frontend/`.** `backend/`, `platform/`, `docs/`, `eval/` — read-only; расхождения и вопросы — пингом владельцу, не правкой чужой зоны. Параллельные сессии в проекте — норма: перед любой git-операцией `git status`, чужие незакоммиченные файлы не трогать, никаких `reset --hard` и перезаписи истории.
|
||||
Ты фронтенд-сессия. **Зона записи — только `frontend/`.** `backend/`, `platform/`, `docs/`, `eval/` — read-only; расхождения и вопросы — пингом владельцу, не правкой чужой зоны.
|
||||
|
||||
Общие правила проекта — в `CLAUDE.md` в корне. Коммиты: английский, одно предложение ≤30 слов, без Co-Authored-By.
|
||||
### ⚠ Коммит-права и git-протокол (решение владельца 02.08, D39.88 — читать ДО первого коммита)
|
||||
|
||||
**Право коммита у тебя ЕСТЬ — но ровно на свою зону: «свою часть коммить, чужую не трогать НИКОГДА».**
|
||||
|
||||
1. **Коммить только пути внутри `frontend/`.** Ничего за её пределами — ни `docs/`, ни `backend/`, ни `platform/`, ни корневых файлов, ни `.gitignore`. Нужна правка вне зоны — пинг владельцу, её сделает оркестратор.
|
||||
2. **Форма коммита — ТОЛЬКО с явным списком путей:** `git commit -- frontend/<файл> frontend/<файл>`. Это не стилистика, а механика: **голый `git commit` уносит ВЕСЬ индекс**, включая файлы, застейдженные параллельной сессией, — и чужая работа уезжает под твоим сообщением. Так уже произошло ДВАЖДЫ 02.08 (`e9a6bb2`, `b98afb5` унесли доки оркестратора). Pathspec-форма чужой индекс не трогает.
|
||||
3. **НИКОГДА `git add -A`, `git add .`, `git commit -a`.** Только явные пути.
|
||||
4. **Перед каждым коммитом:** `git status` (опознать чужое) → `git diff --cached --name-only`. Увидел в индексе чужой путь — **не «прибирай» его**, просто коммить pathspec-формой, и он останется на месте.
|
||||
5. **Не оставляй свои файлы застейдженными** между шагами: пока они в индексе, их может унести чужой коммит. Стейдж и коммит — одной командой.
|
||||
6. **НИКАКИХ** `reset --hard`, `amend`/`rebase` несвежих коммитов, `checkout` поверх грязного дерева, перезаписи истории. Параллельные сессии — норма, их незакоммиченные файлы не трогать.
|
||||
7. **Чужое всё-таки уехало в твой коммит?** Историю НЕ переписывать — сообщить владельцу; содержимое цело, теряется только атрибуция.
|
||||
8. Никогда не коммитить: `START_PROMT.MD` (файл владельца), `.claude/settings.local.json`.
|
||||
|
||||
Общие правила проекта — в `CLAUDE.md` в корне (там же эта норма в каноническом виде). Коммиты: английский, одно предложение ≤30 слов, без Co-Authored-By.
|
||||
|
||||
## Что за продукт
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,19 @@
|
|||
|
||||
Зона записи новой сессии «Платформа». Пусто: заведено под будущий сервис, кода ещё нет.
|
||||
|
||||
## ⚠ Коммит-права и git-протокол (решение владельца 02.08, D39.88 — читать ДО первого коммита)
|
||||
|
||||
**Право коммита у платформенной сессии ЕСТЬ — но ровно на свою зону: «свою часть коммить, чужую не трогать НИКОГДА».** Канон — `../CLAUDE.md`, §Гардрейлы; сюда вынесено, потому что отдельного промта платформы ещё нет, а правило нужно ДО первой строки кода.
|
||||
|
||||
1. **Коммить только пути внутри `platform/`.** Ничего за её пределами — ни `docs/`, ни `backend/`, ни `frontend/`, ни корневых файлов. Нужна правка вне зоны — пинг владельцу, её сделает оркестратор.
|
||||
2. **Форма коммита — ТОЛЬКО с явным списком путей:** `git commit -- platform/<файл>`. Механика, не стилистика: **голый `git commit` уносит ВЕСЬ индекс**, включая чужие застейдженные файлы, и чужая работа уезжает под твоим сообщением (02.08 это случилось дважды — `e9a6bb2`, `b98afb5`).
|
||||
3. **НИКОГДА `git add -A`, `git add .`, `git commit -a`.**
|
||||
4. **Перед каждым коммитом:** `git status` → `git diff --cached --name-only`; чужой путь в индексе не «прибирать», а обойти pathspec-формой.
|
||||
5. Свои файлы не держать застейдженными между шагами — стейдж и коммит одной командой.
|
||||
6. **НИКАКИХ** `reset --hard`, `amend`/`rebase` несвежих коммитов, перезаписи истории; чужие незакоммиченные файлы не трогать.
|
||||
7. Чужое уехало в твой коммит — историю НЕ переписывать, сообщить владельцу.
|
||||
8. ⚠ Ревью-гард модулей (D39.85): путь Go-модуля платформы **никогда** не вкладывать под путь движка — иначе он получит доступ к `backend/internal/*` по правилу префикса.
|
||||
|
||||
## Что здесь будет
|
||||
|
||||
Сервис между фронтом и движком перевода. Всё, что относится к ПОЛЬЗОВАТЕЛЯМ и не относится
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue