Self-promote redesign spec; archive implementation plan
Final closure: redesign spec lives at .wiki/concepts/meeting-room-architecture.md; both spec and plan archived under .archive/2026-05-05-*. Buffer .brainstorm/ back to empty. System bootstrapped on its own artifacts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
231
.wiki/concepts/meeting-room-architecture.md
Normal file
231
.wiki/concepts/meeting-room-architecture.md
Normal file
@@ -0,0 +1,231 @@
|
||||
---
|
||||
date: 2026-05-05
|
||||
source: .brainstorm/meeting-room-redesign.md
|
||||
status: promoted
|
||||
type: room-meta
|
||||
---
|
||||
|
||||
# Meeting-Room Architecture — promoted spec
|
||||
|
||||
> Промочено 2026-05-05 из `.brainstorm/meeting-room-redesign.md`. Spec, который комната провалидировала на самой себе: первый прогон скила `meeting-room-promote-brainstorm` сделан именно над этим файлом. Implementation plan архивирован отдельно — `.archive/2026-05-05-meeting-room-redesign-plan.md`.
|
||||
|
||||
## 1. Контекст
|
||||
|
||||
`.meeting-room/` сейчас объявлена транзитной зоной (`README.md`: «❌ NO `.tasks`/`.wiki` внутри»). На практике:
|
||||
|
||||
- В `.brainstorm/modulair-rag.md` уже копится содержательный артефакт прошедшей сессии — ему некуда уехать кроме `.archive/` или ручного копирования в глобал.
|
||||
- Реестр персон (`config/config.yaml`) — операционный конфиг без человекочитаемого вики-слоя.
|
||||
- Два типа сырья (pre-loaded research в `source/` и транскрипты в `sessions/`) разнесены по плоским папкам без общей семантики.
|
||||
- В памяти `MEMORY.md` есть открытый todo `project_extend_discipline_for_meeting_room.md` — `project-discipline` молчит про brainstorm-workspace.
|
||||
|
||||
Цель редизайна — достроить комнату как **«микро-проект про методологию совещаний»** без превращения её в полноценный проект с локальным backlog. Опереться на Karpathy LLM Wiki pattern для структуры знаний и на `projects-meta` для связи с глобальным скоупом.
|
||||
|
||||
## 2. Принятые решения
|
||||
|
||||
| # | Развилка | Решение |
|
||||
|---|---|---|
|
||||
| 1 | Wiki/Tasks семантика | **B**: локальный `.wiki/` есть, локальных `.tasks/` нет |
|
||||
| 2 | Folder-миграция | **1 (чистый Karpathy)**: всё «сырое» централизовано в `.wiki/raw/` |
|
||||
| 3 | Промоушен | **C**: локальный `.wiki/concepts/` зарезервирован под room-meta; доменное идёт сразу в глобал, без hop |
|
||||
| 4 | Судьба буфера после промоушена | **(ii)**: `.brainstorm/<topic>.md` → `.archive/<date>-<topic>.md` |
|
||||
| 5 | Skill v1 | `promote-brainstorm`, `start-meeting`, `register-persona` |
|
||||
| 6 | Persona sync | **α**: писать в обе стороны имеет право только `register-persona`; `config.yaml` — SoT |
|
||||
| 7 | Project-discipline | master-only ✅, push-by-permission ✅, semver — N/A, локальные tasks — N/A |
|
||||
| 8 | Spec этого редизайна | живёт здесь, после сборки промоутим своей же системой в `.wiki/concepts/meeting-room-architecture.md` |
|
||||
|
||||
## 3. Целевая структура
|
||||
|
||||
```
|
||||
.meeting-room/
|
||||
├── CLAUDE.md ← корневой контракт работы в комнате (см. §6)
|
||||
├── README.md ← обновлённый, ссылка на CLAUDE.md и .wiki/
|
||||
│
|
||||
├── .wiki/ ← Karpathy-canonical, room-meta only
|
||||
│ ├── CLAUDE.md ← вики-схема (см. §7)
|
||||
│ ├── index.md ← навигация
|
||||
│ ├── overview.md ← что такое meeting-room
|
||||
│ ├── log.md ← хронологический лог: meetings, promotions, persona changes
|
||||
│ ├── raw/
|
||||
│ │ ├── README.md
|
||||
│ │ ├── research/ ← бывший source/: pre-loaded clippings, транскрипты внешних чатов
|
||||
│ │ └── transcripts/ ← бывший sessions/: транскрипты прошедших совещаний
|
||||
│ ├── entities/
|
||||
│ │ ├── persons/ ← карточки persona (генерируются из config.yaml)
|
||||
│ │ └── projects/ ← pointer-карточки для целевых проектов (modulair-rag, books, …)
|
||||
│ ├── concepts/ ← room-meta: методология, ретроспективы, паттерны
|
||||
│ ├── packages/ ← инструменты комнаты (runner, framework, schema)
|
||||
│ └── sources/ ← внешняя литература (Karpathy gist, фасилитация, multi-agent)
|
||||
│
|
||||
├── scenarios/ ← runtime: frontmatter-сценарии для запуска multi-agent
|
||||
├── config/ ← runtime: config.yaml — single source of truth для persona
|
||||
├── .brainstorm/ ← рабочий буфер: черновики, single-agent capture
|
||||
├── .archive/ ← post-promotion: исходники из .brainstorm/, старые сценарии
|
||||
└── .claude/ ← локальные скилы и settings.local.json
|
||||
└── skills/
|
||||
├── meeting-room/
|
||||
│ ├── promote-brainstorm/SKILL.md
|
||||
│ ├── start-meeting/SKILL.md
|
||||
│ └── register-persona/SKILL.md
|
||||
```
|
||||
|
||||
**Различие `.wiki/raw/` ↔ `.brainstorm/`:** raw — immutable, append-only, сырое. `.brainstorm/` — рабочий, редактируемый, чистится промоушеном.
|
||||
|
||||
**Различие `.wiki/concepts/` ↔ `~/projects/.wiki/concepts/`:** локальный — только про **то, как комната работает**. Глобал — доменное содержимое, рождённое в комнате.
|
||||
|
||||
## 4. Lifecycle
|
||||
|
||||
```
|
||||
PRE-MEETING
|
||||
user clip → .wiki/raw/research/<date>-<topic>.md
|
||||
user writes → scenarios/<topic>.md (frontmatter: name, participants, problem)
|
||||
|
||||
MEETING
|
||||
start-meeting <s> → создаёт .wiki/raw/transcripts/<date>-<topic>.md (skeleton)
|
||||
создаёт .brainstorm/<topic>.md (shell)
|
||||
логирует в .wiki/log.md
|
||||
multi-agent run → дописывает транскрипт в .wiki/raw/transcripts/<date>-<topic>.md
|
||||
single-agent CSO → ведёт активный диалог в .brainstorm/<topic>.md
|
||||
|
||||
POST-MEETING
|
||||
promote-brainstorm → парсит .brainstorm/<topic>.md
|
||||
спрашивает: room-meta или domain?
|
||||
room-meta → .wiki/concepts/<topic>.md
|
||||
domain → ~/projects/<proj>/.wiki/concepts/<topic>.md
|
||||
via mcp__projects-meta__knowledge_ingest
|
||||
парсит action-items, создаёт в .tasks/ target-проекта
|
||||
via mcp__projects-meta__tasks_create
|
||||
git mv .brainstorm/<topic>.md → .archive/<date>-<topic>.md
|
||||
логирует в .wiki/log.md
|
||||
```
|
||||
|
||||
## 5. Skills v1
|
||||
|
||||
Каждый скил живёт в `.claude/skills/meeting-room/<name>/SKILL.md`. Триггер-фразы — в frontmatter `description`, чтобы автодиспетчер их подхватывал.
|
||||
|
||||
### 5.1 `meeting-room:promote-brainstorm`
|
||||
|
||||
**Триггеры:** «промоутни брейнсторм», «finalize `<topic>`», «выкати в вики», «promote `<topic>`».
|
||||
|
||||
**Аргумент:** путь к файлу `.brainstorm/<topic>.md` или topic-name.
|
||||
|
||||
**Интерактивные шаги:**
|
||||
1. Прочитать файл, показать summary (1–2 абзаца).
|
||||
2. Спросить: **room-meta** или **domain**?
|
||||
3. Если domain — спросить целевой проект; валидация `~/projects/<proj>/` существует и виден `projects-meta`.
|
||||
4. Распарсить action-items (checkbox `- [ ]`, секции «TODO», «следующие шаги», «next steps»). Показать список, дать отредактировать.
|
||||
|
||||
**Действия (в порядке, atomic-ish):**
|
||||
1. **Промоушен контента:**
|
||||
- room-meta: `Write` → `.wiki/concepts/<topic>.md` с frontmatter (`date`, `source: .brainstorm/<topic>.md`, `status: promoted`).
|
||||
- domain: `mcp__projects-meta__knowledge_ingest` с target-проектом и контентом.
|
||||
2. **Создание тасок:** для каждого action-item — `mcp__projects-meta__tasks_create` с target-проектом, title, description.
|
||||
3. **Архивация:** `git mv .brainstorm/<topic>.md .archive/<YYYY-MM-DD>-<topic>.md`.
|
||||
4. **Лог:** дописать строку в `.wiki/log.md`: `<date> promoted <topic> → <destination>; created N tasks in <proj>`.
|
||||
|
||||
**Failure modes:**
|
||||
- Целевой проект не найден / `projects-meta` недоступен → abort до любых записей.
|
||||
- Промоушен прошёл, `tasks_create` упал на N-м экшене → продолжить, в логе зафиксировать частичный успех; `.brainstorm/` **не** перемещать пока пользователь не подтвердит.
|
||||
- Файла `.brainstorm/<topic>.md` нет → abort, ничего не делать.
|
||||
|
||||
### 5.2 `meeting-room:start-meeting`
|
||||
|
||||
**Триггеры:** «запусти совещание `<topic>`», «start meeting `<scenario>`», «новое совещание `<topic>`».
|
||||
|
||||
**Аргумент:** путь `scenarios/<topic>.md` или topic-name.
|
||||
|
||||
**Шаги:**
|
||||
1. Прочитать `scenarios/<topic>.md`, распарсить YAML frontmatter.
|
||||
2. Валидация:
|
||||
- `name`, `problem` непустые;
|
||||
- все `participants` присутствуют как роли в `config/config.yaml`;
|
||||
- `max_rounds` — целое (если есть).
|
||||
3. Сегодняшняя дата → `<date> = YYYY-MM-DD`.
|
||||
4. Создать `.wiki/raw/transcripts/<date>-<topic>.md` со скелетом (frontmatter: `date`, `scenario: scenarios/<topic>.md`, `participants`, `problem`).
|
||||
5. Создать `.brainstorm/<topic>.md` со skeleton (заголовок, ссылки на сценарий и транскрипт).
|
||||
6. Дописать в `.wiki/log.md`: `<date> started <topic> ({participants})`.
|
||||
7. Вернуть пользователю созданные пути и подсказку, как запустить multi-agent runner.
|
||||
|
||||
**Failure modes:**
|
||||
- Frontmatter невалидный → перечислить ошибки, ничего не создавать.
|
||||
- `.brainstorm/<topic>.md` уже есть → спросить: продолжить (append-skip) или прервать.
|
||||
|
||||
### 5.3 `meeting-room:register-persona`
|
||||
|
||||
**Триггеры:** «добавь персону», «новый агент в комнату», «register persona `<role>`».
|
||||
|
||||
**Интерактивный сбор полей:**
|
||||
- `role-id` (snake_case, уникальный)
|
||||
- `name` (display)
|
||||
- `model`, `provider`, `temperature`, `tools`, `system_prompt`
|
||||
|
||||
**Шаги:**
|
||||
1. Прочитать `config/config.yaml`. Если `roles.<role-id>` существует — спросить: overwrite, abort, новый id.
|
||||
2. Обновить `config.yaml`, **сохраняя YAML-форматирование** (использовать YAML-парсер с round-trip — иначе комментарии и порядок ключей побьются).
|
||||
3. Сгенерировать `.wiki/entities/persons/<role-id>.md` с frontmatter (`role-id`, `model`, `provider`, `source: config/config.yaml`) и body — summary поведения роли, цитата `system_prompt`, ссылка на `config.yaml`.
|
||||
4. Дописать в `.wiki/log.md`: `<date> registered persona <role-id>`.
|
||||
|
||||
**Sync-правило (α):** все автоматические записи в `entities/persons/` идут только через этот скил. Ручные правки разрешены только в `config.yaml`; для пере-генерации карточки — снова `register-persona <role>` (он определит, что роль уже есть, и пере-сгенерирует).
|
||||
|
||||
## 6. Корневой `CLAUDE.md`
|
||||
|
||||
Содержание (outline):
|
||||
|
||||
1. **Идентичность:** «Это `.meeting-room` — workspace для кросс-проектных брейнштормов и круглых столов. Не код-проект.»
|
||||
2. **Семантика артефактов** (короткая шпаргалка из §3 + §4).
|
||||
3. **Жёсткие правила:**
|
||||
- Доменное содержимое **никогда** не оседает в локальном `.wiki/` — всегда в глобал через `projects-meta`.
|
||||
- Локальный `.wiki/` — только room-meta (методология, persona-карточки, лог встреч, ретро).
|
||||
- Локальные `.tasks/` **не создавать** — экшены идут в `.tasks/` целевого проекта через `projects-meta__tasks_create`.
|
||||
- Перед любым предложением tooling/архитектуры — прочитать `.wiki/raw/research/` для текущего топика (закрепляет `feedback_read_source_transcripts.md` из памяти).
|
||||
4. **Триггеры скилов v1:** перечень фраз → скил.
|
||||
5. **Override `project-discipline`:**
|
||||
- master-only ✅
|
||||
- commit freely / push by permission ✅
|
||||
- semver-bump — N/A (нет versioned-артефактов в комнате)
|
||||
- локальные `.tasks/` — N/A (запрещены §6.3)
|
||||
6. **Persona registry:** SoT — `config/config.yaml`. Карточки `.wiki/entities/persons/` — производное, пишется только скилом `register-persona`.
|
||||
|
||||
## 7. `.wiki/CLAUDE.md` (схема)
|
||||
|
||||
Karpathy-канон от `setup-wiki` + meeting-room-специфика:
|
||||
|
||||
- `entities/persons/<role-id>.md` — frontmatter обязателен (`role-id`, `model`, `provider`, `source`); body — summary и цитата system_prompt.
|
||||
- `entities/projects/<proj>.md` — pointer-карточка к глобальному проекту (минимум: путь, краткая роль в контексте комнаты, ссылки на встречи где он фигурировал).
|
||||
- `concepts/<topic>.md` — room-meta: методология, ретро. Frontmatter: `date`, `source: .brainstorm/<topic>.md` (или `.archive/...`).
|
||||
- `raw/research/<date>-<topic>.md` — внешний clipping. Frontmatter: `date`, `source` (URL), `topic`.
|
||||
- `raw/transcripts/<date>-<topic>.md` — транскрипт встречи. Frontmatter: `date`, `scenario`, `participants`.
|
||||
- `log.md` — append-only, формат: `<date> <event-type> <topic> [details]`.
|
||||
|
||||
## 8. Migration plan
|
||||
|
||||
### 8.1 Существующие папки
|
||||
|
||||
| Источник | Назначение | Способ |
|
||||
|---|---|---|
|
||||
| `source/2026-05-03-modulair.md` | `.wiki/raw/research/2026-05-03-modulair.md` | `git mv` |
|
||||
| `source/2026-05-03-code-review.md` | `.wiki/raw/research/2026-05-03-code-review.md` | `git mv` |
|
||||
| `sessions/` (пусто) | `.wiki/raw/transcripts/` (пусто) | создать новую |
|
||||
| `.archive/` (пусто) | остаётся `.archive/` | без изменений |
|
||||
| `scenarios/` | остаётся `scenarios/` | без изменений |
|
||||
| `config/` | остаётся `config/` | без изменений |
|
||||
| `.brainstorm/modulair-rag.md` | особый кейс — см. §8.2 | через `promote-brainstorm` (первый прогон) |
|
||||
| `README.md` | обновить: ссылки на `CLAUDE.md`, `.wiki/`, удалить устаревшее правило «❌ NO `.wiki` внутри» | edit |
|
||||
|
||||
### 8.2 `modulair-rag.md` — особый кейс
|
||||
|
||||
Содержимое — process trace прошедшей single-agent сессии. Финальный design уже лежит в `~/projects/.wiki/concepts/modulair-rag-design.md` (упомянут в шапке самого файла). То есть **доменный layer уже промочен**, что осталось в `.brainstorm/` — это методологический след: «как развивался брейнсторм, какие развилки выбрали, что отвергнуто и почему».
|
||||
|
||||
Это room-meta. Назначение при промоушене — `.wiki/concepts/modulair-rag-brainstorm-trace.md` (или похожее имя). Тасок не порождает (всё доменное уже зафиксировано). Исходник → `.archive/2026-05-05-modulair-rag.md`.
|
||||
|
||||
Использовать как первый end-to-end тест `promote-brainstorm`.
|
||||
|
||||
### 8.3 Spec этого редизайна
|
||||
|
||||
После сборки структуры и v1-скилов — прогнать `meeting-room:promote-brainstorm` на самом этом файле. Назначение: `.wiki/concepts/meeting-room-architecture.md`. Тасок не порождает (план реализации идёт через `writing-plans` отдельно). Исходник → `.archive/2026-05-05-meeting-room-redesign.md`.
|
||||
|
||||
## 9. Открытые вопросы (не блокируют реализацию)
|
||||
|
||||
- **Имя файла промо для `modulair-rag.md`** — `modulair-rag-brainstorm-trace.md` рабочая идея, финальное при первом прогоне.
|
||||
- **Парсер action-items в `promote-brainstorm`** — начнём с regex по `- [ ]` и явным секциям; LLM-парсер только если regex окажется недостаточным.
|
||||
- **Что писать в `entities/projects/<proj>.md`** — формат карточки утрясём после первой реальной встречи post-redesign (сейчас нет данных).
|
||||
- **Расширение `project-discipline` для brainstorm-workspaces** — после стабилизации этой комнаты подать как PR в сам `project-discipline` (закрытие memory-todo `project_extend_discipline_for_meeting_room.md`).
|
||||
@@ -13,3 +13,5 @@ Events: `started`, `promoted`, `registered`, `archived`.
|
||||
2026-05-05 registered skeptic
|
||||
2026-05-05 started modulair ([moderator, skeptic, idea_generator, analyst])
|
||||
2026-05-05 promoted modulair-rag → .wiki/concepts/modulair-rag-brainstorm-trace.md (tasks_create skipped: target projects modulair-rag/meeting-room not yet registered in projects-meta; 3 actions deferred in trace)
|
||||
2026-05-05 promoted meeting-room-redesign → .wiki/concepts/meeting-room-architecture.md (no tasks; plan executed during this same session — implementation plan archived separately as 2026-05-05-meeting-room-redesign-plan.md)
|
||||
2026-05-05 archived meeting-room-redesign-plan (post-execution)
|
||||
|
||||
Reference in New Issue
Block a user