1ab84d8038
Создаём docs/sessions/ — координация per Pravila §15.2 (claim/check/release жизненный цикл, конфликт-резолюция). CURRENT.md содержит текущую сессию parallel-sessions-coordination + retro-claim записи для существующих активных worktrees (16 user-sessions на 2026-05-18; 2 locked agent-* worktrees исключены — не user-сессии). Backfill scope/version-claims заполнен best-effort; активные сессии обновят свой блок при возобновлении работы. +cspell-words: парсится (валидная транслитерация). Spec: docs/superpowers/specs/2026-05-18-parallel-sessions-coordination-design.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
62 lines
4.0 KiB
Markdown
62 lines
4.0 KiB
Markdown
# docs/sessions/ — координация параллельных Claude-сессий
|
|
|
|
**Источник правила:** Pravila §15.2 (раздел про CURRENT.md в конце текста §15.2).
|
|
|
|
## Назначение
|
|
|
|
`docs/sessions/CURRENT.md` — заявочный лог активных параллельных Claude-сессий проекта. Решает класс инцидентов «нормативка/MEMORY дрейфует» (см. spec — `docs/superpowers/specs/2026-05-18-parallel-sessions-coordination-design.md`).
|
|
|
|
## Когда писать в CURRENT.md
|
|
|
|
Перед **первой** нормативной правкой в сессии (правки файлов из списка §15.2 — Pravila, CLAUDE.md, Tooling, PSR_v1, MEMORY.md, Открытые_вопросы, docs/adr/*, db/schema.sql). Запись добавляется отдельным атомарным коммитом `sessions: claim <topic>` — до plan-документа и до первой содержательной правки.
|
|
|
|
## Формат записи
|
|
|
|
```
|
|
## session: YYYY-MM-DD-<topic-kebab>
|
|
- branch: <git branch --show-current>
|
|
- worktree: <git rev-parse --show-toplevel>
|
|
- started: <ISO 8601 with timezone>
|
|
- scope-files:
|
|
- <relative path> [§/раздел/строка]
|
|
- ...
|
|
- version-claims:
|
|
- <file-or-topic>: <from> → <to>
|
|
- ...
|
|
- status: in-progress | closed-<commit-sha>
|
|
- closes: <relative path к plan-документу>
|
|
```
|
|
|
|
`scope-files` — какие нормативные файлы и в каких секциях правит сессия. `version-claims` — какие новые версии (Tooling 2.X, Pravila 1.Y и т.п.) или номера (ADR-NNN) сессия резервирует.
|
|
|
|
## Жизненный цикл
|
|
|
|
- **claim** — добавить запись со `status: in-progress` + атомарный коммит `sessions: claim <topic>`.
|
|
- **check** — pre-flight перед нормативной правкой: `Read docs/sessions/CURRENT.md` + проверить пересечение `scope-files` / `version-claims` с активными записями.
|
|
- **release** — на закрытии (после push на main) изменить `status: closed-<commit-sha>` (запись остаётся в CURRENT.md — append-only-вариант).
|
|
|
|
Closed-записи переезжают в `docs/sessions/archive/YYYY-MM.md` через ≥30 дней после закрытия (ручная архивация раз в месяц, не cron).
|
|
|
|
## Конфликт-резолюция
|
|
|
|
| Тип пересечения | Реакция |
|
|
|---|---|
|
|
| Файловое пересечение (одинаковый файл, разные секции) | **soft-warn** — продолжать можно, но pre-flight fetch перед каждым коммитом обязателен (§15.2). |
|
|
| Section-пересечение (одна и та же секция §X.Y) | **hard-stop** — координация с заказчиком до начала правки. |
|
|
| Version-claim collision (две сессии заявили один номер) | **hard-stop** — кто claim'нул раньше (по `started`-timestamp), тот его и берёт. Вторая сессия сдвигается на +1. |
|
|
|
|
## Pre-flight snippet (для plan-документов и скила subagent-driven-development)
|
|
|
|
```bash
|
|
# Перед нормативной правкой:
|
|
git fetch origin && git log HEAD..origin/main --oneline
|
|
grep -A 20 'status: in-progress' docs/sessions/CURRENT.md
|
|
```
|
|
|
|
## Что мы НЕ делаем (явный YAGNI)
|
|
|
|
- Pre-commit hook на CURRENT.md — добавим только если будут зафиксированы инциденты игнорирования.
|
|
- TTL / auto-expire записей — добавим, если файл реально засорится.
|
|
- Machine-readable JSON-формат — markdown достаточен, парсится grep/sed.
|
|
- Интеграция с GitHub Issues — отдельная тема, не блокер.
|