Files
discussions/.archive/2026-05-05-meeting-room-redesign.md
vitya 091b5f2d02 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>
2026-05-05 14:41:56 +03:00

18 KiB
Raw Blame History

date, topic, status, type, promotes_to
date topic status type promotes_to
2026-05-05 meeting-room-redesign draft room-meta .wiki/concepts/meeting-room-architecture.md

Meeting-Room Redesign — design spec

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.mdproject-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 (12 абзаца).
  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.mdmodulair-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).