Compare commits

...

34 Commits

Author SHA1 Message Date
4f907436a7 chore(retire): zone dissolved 2026-06-08 — round-table moved to consult-tier
Additive retire (файлы сохранены как исторический record). Multi-agent
round-table = K локальных read-only coworker-спавнов в worktree воркера
(consult-tier рантайма), не центральная зона. Несовместима с
federation-per-machine (Q9). Размотка: .workshop/.brainstorm/meeting-room-dissolve.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 12:14:20 +03:00
5f800f0d96 split: cleanup migrated artifacts (step 13 — split done)
Removed (now lives in .workshop/, see commits 4608ba9..f8f6f1a there):
- .archive/* (8 archived buffers from 2026-05-05..2026-05-07)
- .brainstorm/* (6 untracked brainstorm buffers — never tracked here, just on disk)
- .wiki/concepts/modulair-rag-brainstorm-trace.md (workshop-meta methodology trace)
- .wiki/raw/naming/* (untracked, naming research clipping)
- .wiki/raw/research/* (modulair, code-review, tokens-economy/, hermes-agent-skills/)
- .claude/skills/meeting-room-promote-brainstorm/SKILL.md (renamed → workshop-promote-brainstorm in workshop repo)

Kept: scenarios/, config/, .wiki/raw/transcripts/, .wiki/entities/, .wiki/concepts/meeting-room-architecture.md (runtime-only rewrite),
.claude/skills/{meeting-room-start-meeting,meeting-room-register-persona}/.

Promoted history of the split decision: .workshop/.wiki/concepts/meeting-room-split.md.
2026-05-08 07:00:09 +03:00
2fc99dc2a2 contract: rewrite .meeting-room/CLAUDE.md — runtime only (step 5)
Removed: .brainstorm/.archive/ semantics, promote-brainstorm trigger,
.wiki/concepts/ as workshop-domain. Added: handoff diagram with .workshop/,
pointer to workshop-architecture.md, explicit boss-mode-not-here rule.
2026-05-08 06:16:51 +03:00
4686f53283 spec: split meeting-room-architecture (runtime-only rewrite, step 4 / part B)
Boss-zone sections moved to .workshop/.wiki/concepts/workshop-architecture.md
(commit aa263fd in workshop repo). Full original spec preserved in git history
prior to this commit.

Also: log.md entries for the split event and this rewrite.

Untracked: .brainstorm/, .wiki/raw/naming/ — these are originals still here,
removal scheduled for step 13 (final split-done commit).
2026-05-08 06:16:04 +03:00
78444f9ef3 Amend tdd-criteria: anti-loophole rule 4 (test-immutability)
Post-promotion amendment captured in:
- claude-skills#tdd-criteria-skill-write description (b7819b17 in claude-skills)
- claude-skills#tdd-criteria-precommit-hook (new task d440bb52 in claude-skills)
- meeting-room .wiki/log.md amended-line

User surfaced second-order vandalism: agent rewrites failing test instead
of fixing code. Defence: tests are append-only; modification requires
[test-modify: <name>: was <literal>; is <literal>; reason: <Z>] in commit
subject + separate commit from impl changes. Rule 4 added to runtime
SKILL.md when impl-task runs; design-doc amendment text embedded in
task description for same impl session (knowledge_ingest is create-only,
overwrite blocked, so design-doc patch goes via direct git edit during impl).
2026-05-07 08:10:49 +03:00
8c76244c01 Promote tdd-criteria → claude-skills wiki + 4 tasks; archive buffer
Promoted .brainstorm/tdd-criteria.md to claude-skills/.wiki/concepts/tdd-criteria-design.md
(commits a03d2804+2ad6f4ce+5fb648d4 in claude-skills repo).

Created 4 tasks in claude-skills/.tasks/STATUS.md:
  - tdd-criteria-skill-write (ready) — write skills/tdd-criteria/SKILL.md
  - tdd-criteria-hermes-mapping (blocked by skill-write) — mapping.yaml entry
  - tdd-criteria-build-install (blocked by above two) — build.sh + install.sh
  - tdd-criteria-review (blocked-umbrella per §5) — code-review checkpoint

Lead rationale (anti-vandalism / contract-vs-artefact) and 4+4 bright-line
structure (Ironclad + Permissive accepted-risk zones) in design doc;
runtime SKILL.md is implementation task.
2026-05-07 07:04:22 +03:00
f8ecad8b40 feat(promote-brainstorm): auto-create [<topic>-review] checkpoint task
Domain-промоушен с N≥1 импл-тасок теперь дополнительно создаёт
зонтичную review-таску в target-проекте: status=blocked, blocker=
impl-slugs, description с шаблоном чек-листа (читать спеку, прогнать
тесты, сверить с acceptance criteria, findings → follow-up tasks).

Reviewer — следующая сессия в target, не имплементер. Это закрывает
дыру обнаруженную 2026-05-07 при ревью interns-repo-read-impl
(закрылся 🟢 хотя 4/5 тестов фейлят, transitive safety guard
отсутствует) — coverage-gate в using-tasks смотрит изнутри одного
агента, review-таска даёт независимую вторую пару глаз на boundary
между проектами.

CLAUDE.md правило #5 фиксирует политику: meeting-room генерирует
review-таски, но сам код-ревью не делает.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 00:25:28 +03:00
e749570e6c Promote hermes-skills-rollout → claude-skills wiki + 7 tasks; archive
Design doc: claude-skills/.wiki/concepts/hermes-skills-rollout-design.md
(commits b3dc1251 + 5ae14fd6 + 0f65e057).

Tasks created:
- claude-skills#hermes-converter-mvp (ready)
- claude-skills#hermes-flavour-mcp-setups (blocked-by hermes-converter-mvp)
- claude-skills#hermes-installer-skill (blocked-by hermes-converter-mvp)
- claude-skills#hermes-mvp-coverage (blocked-by 3 upstream)
- claude-skills#hermes-converter-ci (blocked-by hermes-mvp-coverage, deferred)
- common#tasks-close-normalize-body (ready, discipline pre-req)
- claude-skills#using-tasks-close-coverage-gate (ready, discipline pre-req
  — extended 879957d9 to also cover scope-priority at recommendation time)

Buffer archived from .brainstorm/ → .archive/2026-05-06-hermes-skills-rollout.md.
Research clippings captured at .wiki/raw/research/hermes-agent-skills/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 00:03:43 +03:00
f3cad514db Promote factory-bootstrap → factory wiki + 2 tasks; archive buffer
Wiki: factory/.wiki/concepts/factory-bootstrap.md (full design + Q1/Q6/Q8
decisions + Q2-Q5/Q7/Q9 deferred + 2026-05-06 field-test results).
Tasks: factory#factory-bootstrap-script (ready), factory#factory-l1-design
(blocked-by script). Side-task: claude-skills#project-creation-lifecycle-skill
(gap surfaced — ad-hoc project creation strands repos outside projects-meta
indexing until manual seed).

Buffer moved to .archive/2026-05-06-factory-bootstrap.md.
2026-05-06 21:23:42 +03:00
8ddcf0dd27 Brainstorm Q8: greenfield-mode (fresh-enterprise bootstrap)
Surfaced 2026-05-06 during factory-bootstrap field-test on Win11 laptop.
Decision: factory MUST support installing a fresh empty enterprise
(no existing gitea content) — not just cloning the existing one.

Three of five setup-* skills already cover greenfield (setup-wiki,
setup-tasks, project-bootstrap). Two need init-mode (projects-meta,
interns). Six root meta-repos have no templates anywhere — must add
templates/enterprise/<repo>/ skeletons. Anti-rec: do NOT bootstrap
the git-host itself — that's L0a infra, not L1 (factory).

Implementation deferred to post-v0; not blocking clone-mode v0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 15:52:43 +03:00
f00e2c8f9e Brainstorm buffer: factory-bootstrap (in progress)
Design buffer for the software-factory bootstrap discussion. Captures:
- diagnosis of current dot-folder infrastructure (.common, .organization,
  .templates, .wiki, .tasks, .meeting-room, .factory)
- decision: factory lives at ~/projects/.factory/ (option a, sibling of
  .common), gitea repo named 'factory' without leading dot
- L0a/L0b/L1/L2 architecture
- closed Q1 (Go for L1 binary), Q6 (mise + native pkg-mgr for toolchain)
- deferred Q7 (access control to v2)
- live field-test on a fresh Win11 laptop, log in
  ../.factory/L0/install-log.md (gitea repo: factory)
- resume point recorded; user paused mid-step 11b

Buffer remains active — promotion to shared wiki happens via
meeting-room-promote-brainstorm once Q2-Q5 are also closed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 11:55:33 +03:00
f927061e2e Promote interns-repo-read design to claude-skills wiki + 2 tasks
Brainstorm finalized: .archive/2026-05-05-repo-read.md (was .brainstorm/repo-read.md).
Wiki page committed to claude-skills/.wiki/concepts/interns-repo-read-design.md
(commits 340010224+b7943a3c4+93a4500768 in claude-skills repo).
Tasks created: common#interns-repo-read-impl, claude-skills#interns-repo-read-skill-updates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 23:05:51 +03:00
0adbfbb0aa feat: use ${OLLAMA_CLOUD_API_KEY} from shared secrets
Replace hardcoded API key with env var placeholder.
Key now loaded from .common/secrets/interns.env via meeting-room runner.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 20:11:28 +03:00
94a49206fb raw 2026-05-05 17:03:59 +03:00
75500e5cc5 Promote interns design to claude-skills wiki + 4 cross-project tasks
Buffer .brainstorm/interns.md → .archive/2026-05-05-interns.md after
ingesting concepts/interns-design.md into claude-skills (commits
30c329fd+035e4dd5+3deaa357) and creating 4 follow-up tasks across
claude-skills (interns-skills-mvp, ready), common (interns-mcp-mvp ready;
unify-llm-secrets blocked), and projects-meta-mcp (migrate-to-common-lib
blocked).
2026-05-05 17:02:15 +03:00
d7a7a79cba Capture interns design spec in .brainstorm
Domain spec for delegated cheap-LLM workers via local MCP server. Three
layers (config / runtime / skills), MVP catalog of two interns
(bulk_text_read + transcript_distill) on DeepSeek Flash via ollama_cloud.
Permission model mirrors project-discipline Rule 4 (per-session grant);
always-ask paths enforced server-side. Lives at .common/lib/interns-mcp/.

Target promote: claude-skills wiki + tasks via meeting-room-promote-brainstorm.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 16:16:26 +03:00
46f7ac3a0c Track .gitignore; refresh CLAUDE.md pointers
- Add .gitignore (settings.local.json)
- Drop stale "before self-promotion" pointer; keep architecture link

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:56:19 +03:00
7611f2ec3c Track scenarios/ runtime configs
Pre-existing scenarios/example-problem.md and scenarios/modulair.md were
untracked through the redesign. Per spec §3 they belong in the workspace
state alongside config/.

.claude/settings.local.json deliberately left untracked (local-only
permissions override).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:42:28 +03:00
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
3f714d1b23 Promote modulair-rag brainstorm trace to .wiki/concepts/
First real run of meeting-room-promote-brainstorm. Process trace classified
as room-meta (domain design already lives in ~/projects/.wiki/). Buffer
archived as 2026-05-05-modulair-rag.md. tasks_create skipped — target
projects (modulair-rag, meeting-room) not yet registered in projects-meta;
3 deferred actions documented in the trace itself.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:41:08 +03:00
0f76613aee Track existing modulair-rag brainstorm capture
Pre-promotion commit so the next 'git mv' to .archive/ shows as a rename.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:39:05 +03:00
5af65948a0 Smoke-test meeting-room-start-meeting on scenarios/modulair.md
Validates frontmatter parser and skeleton generation. Transcript skeleton
removed afterward — this scenario was a past artifact, not a live meeting.
Log entry kept (append-only).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:38:01 +03:00
291f8c6391 Generate persona cards from config.yaml (analyst/idea_generator/moderator/skeptic)
First end-to-end exercise of meeting-room-register-persona. Cards link back
to config/config.yaml as SoT. Also tracks config/ which was untracked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:37:19 +03:00
8764b32ee2 Add skill: meeting-room-promote-brainstorm
Closes the lifecycle loop: routes .brainstorm/<topic>.md to either local
.wiki/concepts/ (room-meta) or global wiki via projects-meta (domain),
extracts action-items into target project's .tasks, archives buffer.
Atomic-ish ordering: ingest -> tasks -> mv. Failure leaves buffer for retry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:35:29 +03:00
8059faf5a8 Add skill: meeting-room-start-meeting
Validates scenarios/<topic>.md frontmatter against config.yaml roles, creates
skeleton transcript and working buffer, appends to log. Runner invocation is
out of scope (skill prepares artifacts only).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:34:53 +03:00
f10a341afa Add skill: meeting-room-register-persona
Registers a persona in config/config.yaml (SoT) and generates the
.wiki/entities/persons/<role-id>.md card. Round-trip YAML edit, append-only
log. Only writer of entities/persons/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:34:28 +03:00
1f471afa4e Update README for redesign
Drop obsolete ' NO .wiki/.tasks внутри' rule (we now have local .wiki/ for
room-meta per spec). Point readers at CLAUDE.md and .wiki/index.md, list
v1 skills, redraw folder map.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:34:00 +03:00
9b5cf9c70b Migrate source/ to .wiki/raw/research/ and drop empty sessions/
Per redesign §3, all immutable raw material lives under .wiki/raw/. research/
holds pre-meeting clippings (was source/). transcripts/ will hold meeting
transcripts (sessions/ removed; was always empty).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:33:35 +03:00
c874ba55a6 Track existing source/ research clippings
Pre-migration commit so the next 'git mv' to .wiki/raw/research/ shows as a
rename, not delete+add.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:33:28 +03:00
26e8749ea2 Add root CLAUDE.md (workspace contract)
Codifies B+1+C+ii: domain content always to global via projects-meta, local
.wiki/ is room-meta only, no local .tasks. Lists v1 skill triggers and
project-discipline overrides (semver and local-tasks both N/A here).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:33:18 +03:00
f6b3e74cad Fix grammatical case in .wiki/{CLAUDE,overview}.md
«вику» → «вики». Spec reviewer caught the typo from Task 1; implementer
overlooked it. New commit per project-discipline (no amend).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:32:00 +03:00
390f938658 Add .wiki/ Karpathy skeleton
Local room-meta wiki: index, overview, log, schema (CLAUDE.md), and empty
raw/entities/concepts/packages/sources subtrees with .gitkeep placeholders.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:29:18 +03:00
205ba78cf9 Draft meeting-room redesign implementation plan
12-task plan across 3 phases (bootstrap → skills → e2e validation). Pairs
with spec at .brainstorm/meeting-room-redesign.md (commit 243c045). Both
files archive together in Task 11 after self-promotion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:26:12 +03:00
243c045170 Draft meeting-room redesign spec
B+1+C+ii: local .wiki/ for room-meta only, Karpathy folder layout, no local
.tasks (action items go to target projects via projects-meta), buffers move
to .archive/ after promotion. Skills v1: promote-brainstorm, start-meeting,
register-persona. Spec promotes itself once the system is in place.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:10:45 +03:00
24 changed files with 841 additions and 44 deletions

View File

@@ -0,0 +1,84 @@
---
name: meeting-room-register-persona
description: Use when user says "добавь персону", "новый агент в комнату", "register persona <role>", or wants to register a new persona for multi-agent meetings in .meeting-room. Updates config/config.yaml (single source of truth) AND generates .wiki/entities/persons/<role-id>.md. Only this skill writes to entities/persons/.
---
# meeting-room-register-persona
Регистрирует новую persona-роль в meeting-room: пишет в `config/config.yaml` (рантайм SoT) и генерирует карточку в `.wiki/entities/persons/<role-id>.md`.
## When to use
- Пользователь говорит «добавь персону», «новый агент в комнату», «register persona <role>».
- Пользователь вручную поправил `config/config.yaml` и хочет регенерировать карточку — тоже сюда.
## Inputs (collect interactively)
| Поле | Тип | Пример |
|---|---|---|
| `role-id` | snake_case, уникален в `config.yaml#roles` | `analyst` |
| `name` | display name | `Analyst` |
| `model` | строка | `glm-5.1` |
| `provider` | ключ из `config.yaml#providers` | `ollama_cloud` |
| `temperature` | число 01.5 | `0.5` |
| `tools` | строка-категория | `discussion` / `web` / `none` |
| `system_prompt` | многострочный текст | … |
Если данные уже есть в `config.yaml` (регенерация карточки) — не спрашивать, читать оттуда.
## Steps
1. **Прочитать `config/config.yaml`.** Если `roles.<role-id>` уже существует:
- Если поля совпадают со словами пользователя — это регенерация, идти к шагу 4.
- Иначе спросить: **overwrite** / **abort** / **новый id**.
2. **Записать в `config.yaml`** под ключом `roles.<role-id>` со всеми полями.
- Использовать YAML-парсер с round-trip (`ruamel.yaml` для Python, или ручной insert по структуре). **Не** перезаписывать файл `yaml.dump`-ом без round-trip — порвёт комментарии и порядок ключей.
3. **Сгенерировать `.wiki/entities/persons/<role-id>.md`:**
```markdown
---
role-id: <role-id>
model: <model>
provider: <provider>
source: config/config.yaml
---
# <name>
**Model:** <model> (<provider>), temperature <temperature>
**Tools:** <tools>
## System prompt
<первые 500 символов system_prompt>...
## Source of truth
Полное определение — в `config/config.yaml#roles.<role-id>`. Эта карточка генерируется скилом `meeting-room-register-persona`; не редактировать вручную.
```
4. **Дописать в `.wiki/log.md`:**
```
<YYYY-MM-DD> registered <role-id>
```
5. **Сообщить пользователю** созданные/обновлённые пути.
## Failure modes
- `config/config.yaml` отсутствует или невалидный YAML → abort, перечислить ошибки парсинга.
- Конфликт `role-id` без выбора пользователя → abort.
- Запись в `config.yaml` упала → abort до записи карточки (single-direction failure).
## Side effects
- Изменяет `config/config.yaml`.
- Создаёт/обновляет `.wiki/entities/persons/<role-id>.md`.
- Аппендит строку в `.wiki/log.md`.
## What NOT to do
- Не пиши в `entities/persons/` ничего, кроме как через эту последовательность.
- Не редактируй `config.yaml` без round-trip парсера.
- Не удаляй существующие роли без явной команды пользователя.

View File

@@ -0,0 +1,85 @@
---
name: meeting-room-start-meeting
description: Use when user says "запусти совещание <topic>", "start meeting <scenario>", "новое совещание <topic>", or wants to begin a multi-agent meeting from a scenarios/<topic>.md file in .meeting-room. Validates scenario frontmatter, creates skeleton transcript at .wiki/raw/transcripts/<date>-<topic>.md, opens working buffer at .brainstorm/<topic>.md, logs to .wiki/log.md.
---
# meeting-room-start-meeting
Запускает совещание из `scenarios/<topic>.md`: валидирует frontmatter, создаёт skeleton-транскрипт в `.wiki/raw/transcripts/`, заводит рабочий буфер в `.brainstorm/`, логирует в `.wiki/log.md`.
## When to use
- Пользователь говорит «запусти совещание <topic>», «start meeting <scenario>», «новое совещание <topic>».
- Пользователь указал scenario-файл и хочет подготовить артефакты под него.
## Inputs
- Путь `scenarios/<topic>.md` или просто `<topic>` (тогда искать `scenarios/<topic>.md`).
## Steps
1. **Прочитать `scenarios/<topic>.md`.** Распарсить YAML frontmatter.
2. **Валидация:**
- `name`, `problem` непустые;
- `participants` — список, все элементы существуют как ключи `roles.*` в `config/config.yaml`;
- `max_rounds` — целое (если присутствует).
- При ошибке — перечислить, не создавать ничего.
3. **Сегодняшняя дата**`<date> = YYYY-MM-DD` (UTC локального компа).
4. **Создать `.wiki/raw/transcripts/<date>-<topic>.md`** (skeleton):
```markdown
---
date: <date>
scenario: scenarios/<topic>.md
participants: [<participant1>, <participant2>, ...]
problem: |
<первая строка problem из scenario>
---
# <name> — transcript <date>
<!-- runner будет дописывать сюда. Append-only после первой записи. -->
```
5. **Создать `.brainstorm/<topic>.md`** (если ещё нет):
```markdown
# <name> — working buffer
- **Scenario:** [scenarios/<topic>.md](../scenarios/<topic>.md)
- **Transcript:** [.wiki/raw/transcripts/<date>-<topic>.md](../.wiki/raw/transcripts/<date>-<topic>.md)
- **Started:** <date>
## Заметки
<!-- здесь черновик. Промочится скилом meeting-room-promote-brainstorm. -->
```
Если файл уже существует — спросить: **append-skip**, **overwrite**, **abort**.
6. **Дописать в `.wiki/log.md`:**
```
<date> started <topic> ([<participants comma-sep>])
```
7. **Вернуть пользователю:** созданные пути и подсказку — как запустить runner (на сегодня запуск runner'а вне scope, скил готовит только артефакты).
## Failure modes
- `scenarios/<topic>.md` отсутствует → abort.
- Frontmatter невалидный → перечислить ошибки, ничего не создавать.
- Participant отсутствует в `config/config.yaml#roles` → abort с указанием отсутствующих ролей.
- `.brainstorm/<topic>.md` уже есть и пользователь выбрал abort → exit без записи в `raw/transcripts/`.
## Side effects
- Создаёт `.wiki/raw/transcripts/<date>-<topic>.md`.
- Создаёт `.brainstorm/<topic>.md` (или модифицирует с разрешения).
- Аппендит строку в `.wiki/log.md`.
## What NOT to do
- Не запускать runner — это вне scope скила.
- Не редактировать `scenarios/<topic>.md`.
- Не пытаться угадать `participants` если их нет в `config.yaml`.

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/.claude/settings.local.json

68
.wiki/CLAUDE.md Normal file
View File

@@ -0,0 +1,68 @@
# .wiki — Schema (room-meta only)
Эта `.wiki/` — локальная и узко-доменная: **только знание о том, как работает meeting-room**. Доменное содержимое из совещаний промочивается в глобальную вики через `mcp__projects-meta__knowledge_ingest`, не сюда.
## Layout (Karpathy LLM Wiki canonical)
- `index.md` — навигация
- `overview.md` — что такое meeting-room на одной странице
- `log.md` — append-only хронологический лог: `<YYYY-MM-DD> <event-type> <topic> [details]`
- `raw/research/<date>-<topic>.md` — внешние clippings, immutable
- `raw/transcripts/<date>-<topic>.md` — транскрипты совещаний, immutable
- `entities/persons/<role-id>.md` — карточки persona (генерируются скилом `meeting-room-register-persona` из `config/config.yaml`)
- `entities/projects/<proj>.md` — pointer-карточки целевых проектов
- `concepts/<topic>.md` — room-meta: методология, ретроспективы, паттерны фасилитации
- `packages/<tool>.md` — инструменты комнаты (runner, framework, schema)
- `sources/<title>.md` — внешняя литература
## Frontmatter requirements
**`entities/persons/<role-id>.md`:**
```yaml
---
role-id: analyst
model: glm-5.1
provider: ollama_cloud
source: config/config.yaml
---
```
**`raw/research/<date>-<topic>.md`:**
```yaml
---
date: 2026-05-03
source: <URL>
topic: <topic>
---
```
**`raw/transcripts/<date>-<topic>.md`:**
```yaml
---
date: 2026-05-03
scenario: scenarios/<topic>.md
participants: [moderator, skeptic, idea_generator, analyst]
problem: <one-line>
---
```
**`concepts/<topic>.md`:**
```yaml
---
date: 2026-05-05
source: .brainstorm/<topic>.md
status: promoted
type: room-meta
---
```
## Hard rules
1. **Никакого доменного содержимого** в `concepts/`. Если контент пригодился бы в чужом проекте — он не room-meta, а domain → `mcp__projects-meta__knowledge_ingest` в целевой проект.
2. `raw/` immutable: append-only, не редактируем после фиксации.
3. `entities/persons/` пишет **только** скил `meeting-room-register-persona`. Source-of-truth — `config/config.yaml`.
4. `log.md` append-only, формат строки: `<YYYY-MM-DD> <event> <topic> [details]`. Никаких удалений.

0
.wiki/concepts/.gitkeep Normal file
View File

View File

@@ -0,0 +1,145 @@
---
date: 2026-05-05
source: .brainstorm/meeting-room-redesign.md
status: promoted
type: room-meta
amended: 2026-05-08 (split-rewrite — runtime only, boss-зона выделена в .workshop/.wiki/concepts/workshop-architecture.md)
---
# Meeting-Room Architecture — promoted spec (runtime-only post-split)
> Промочено 2026-05-05 из `.brainstorm/meeting-room-redesign.md`. Spec, который комната провалидировала на самой себе: первый прогон скила `meeting-room-promote-brainstorm` сделан над этим файлом. Implementation plan архивирован отдельно — `.archive/2026-05-05-meeting-room-redesign-plan.md`.
>
> **2026-05-08 split-rewrite:** комната разделена на multi-agent runtime (`.meeting-room/`, эта зона) и single-agent boss-zone (`.workshop/`). Из текущего документа удалены boss-секции (`.brainstorm/`, `.archive/`, `promote-brainstorm`-скил, single-agent CSO в lifecycle, room-meta concepts) — они переехали в `.workshop/.wiki/concepts/workshop-architecture.md`. Полная исходная версия доступна в git-истории (см. commit перед 2026-05-08). Мотивация и протокол split'а: `.workshop/.wiki/concepts/meeting-room-split.md` (после step #12 миграции).
## 1. Контекст
`.meeting-room/` — multi-agent runtime для срежиссированных круглых столов: тематических совещаний с ролями (analyst, skeptic, idea_generator, moderator …), сценарием и транскриптом. Не код-проект.
Зона выделена под темы, которые выигрывают от **многопозиционного спора** (architect vs implementer vs PM, или иные оппозиции). Single-agent + user брэйнсторм без режиссуры — другой режим, живёт в `.workshop/`. Дистилляция транскрипт → концепт — отдельный явный handoff в `.workshop/`.
## 2. Принятые решения
| # | Развилка | Решение |
|---|---|---|
| 1 | Wiki/Tasks семантика | локальный `.wiki/` есть (room-meta), локальный `.tasks/` нет (запрещён §3 в `CLAUDE.md`) |
| 2 | Folder-миграция | Karpathy-канон: всё «сырое» в `.wiki/raw/`, скилы — в `~/projects/claude-skills/` |
| 3 | Skills v1 | `meeting-room-start-meeting`, `meeting-room-register-persona` (boss-скил `workshop-promote-brainstorm` выделен в workshop-зону) |
| 4 | Persona sync | писать в `entities/persons/` имеет право только `register-persona`; `config/config.yaml` — SoT |
| 5 | Project-discipline | master-only ✅, push-by-permission ✅, semver — N/A, локальные tasks — N/A (запрет §3) |
## 3. Целевая структура
```
.meeting-room/
├── CLAUDE.md корневой контракт зоны
├── README.md
├── scenarios/<topic>.md runtime: frontmatter сценариев multi-agent
├── config/config.yaml runtime: реестр persona (SoT)
└── .wiki/ Karpathy-canonical, room-meta only
├── CLAUDE.md wiki-схема
├── index.md
├── overview.md
├── log.md append-only хроника
├── raw/
│ ├── README.md
│ └── transcripts/<date>-<topic>.md immutable: транскрипты совещаний
├── entities/
│ ├── persons/<role-id>.md карточки персон (генерируются)
│ └── projects/<proj>.md pointer-карточки целевых проектов
└── concepts/<topic>.md room-meta: методология, ретро runtime'а
```
**Boss-артефакты (`.brainstorm/`, `.archive/`, дистилляция, методология одиночного мышления) — в `.workshop/`, не здесь.**
## 4. Lifecycle (runtime-only)
```
PRE-MEETING
user clip → .meeting-room/.wiki/raw/research/<date>-<topic>.md
(если research-материал, релевантный совещанию)
user writes → scenarios/<topic>.md (frontmatter: name, participants, problem, max_rounds)
MEETING
meeting-room- → создаёт .wiki/raw/transcripts/<date>-<topic>.md (skeleton)
start-meeting логирует в .wiki/log.md
multi-agent run → дописывает транскрипт в .wiki/raw/transcripts/<date>-<topic>.md
POST-MEETING (handoff в .workshop/)
user явно: «дистиллируй транскрипт <topic>»
→ boss создаёт .workshop/.brainstorm/<topic>-distill.md
→ workshop-promote-brainstorm дальше
```
**Без автоматического hop'а в workshop.** Транскрипт остаётся как primary артефакт runtime'а; распаковка в концепт — явный шаг человека.
## 5. Skills v1
Скилы живут в `~/projects/claude-skills/skills/`, не локально. Триггер-фразы — в SKILL.md frontmatter.
### 5.1 `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`, `participants`, `problem`).
5. Дописать в `.wiki/log.md`: `<date> started <topic> ({participants})`.
6. Вернуть пользователю созданный путь и подсказку, как запустить multi-agent runner.
**Failure modes:**
- Frontmatter невалидный → перечислить ошибки, ничего не создавать.
- `.wiki/raw/transcripts/<date>-<topic>.md` уже есть → спросить: продолжить (append-skip) или прервать.
### 5.2 `meeting-room-register-persona`
**Триггеры:** «добавь персону», «новый агент в комнату», «register persona `<role>`».
**Интерактивный сбор полей:**
- `role-id` (snake_case, уникальный)
- `name`, `model`, `provider`, `temperature`, `tools`, `system_prompt`
**Шаги:**
1. Прочитать `config/config.yaml`. Если `roles.<role-id>` существует — спросить: overwrite, abort, новый id.
2. Обновить `config.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`
Полный текст — см. `.meeting-room/CLAUDE.md`. Outline:
1. Идентичность: «multi-agent runtime для круглых столов, не код-проект».
2. Семантика артефактов (таблица).
3. Жёсткие правила: доменное содержимое — в global wiki через `projects-meta`, локальный `.wiki/concepts/` — только room-meta, локальный `.tasks/` запрещён, `entities/persons/` пишет только `register-persona`, domain-промоушен с импл-тасками авто-создаёт review-чекпоинт (но сам промоушен теперь — workshop'а, не отсюда).
4. Триггеры скилов v1 (только `start-meeting`, `register-persona`).
5. Override `project-discipline`.
6. Persona registry: SoT — `config/config.yaml`.
## 7. `.wiki/CLAUDE.md` (схема)
Karpathy-канон + 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 runtime'а (методология совещаний, ретро). Frontmatter: `date`, `source`, `status`, `type: room-meta`.
- `raw/research/<date>-<topic>.md` — внешний clipping, frontmatter: `date`, `source` (URL), `topic`.
- `raw/transcripts/<date>-<topic>.md` — транскрипт встречи, frontmatter: `date`, `scenario`, `participants`, `problem`.
- `log.md` — append-only, `<date> <event-type> <topic> [details]`.
## 8. Handoff с `.workshop/`
См. `.workshop/.wiki/concepts/workshop-architecture.md` §8. Кратко: транскрипт в `.meeting-room/.wiki/raw/transcripts/` → boss создаёт дистилляционный буфер в `.workshop/.brainstorm/<topic>-distill.md``workshop-promote-brainstorm` → нужный target. Никакой автоматизации, явный шаг человека.
## 9. Открытые вопросы (не блокируют реализацию)
- **Что писать в `entities/projects/<proj>.md`** — формат карточки утрясём после первой реальной встречи (сейчас нет данных).
- **Регистрация `.meeting-room` в `mcp__projects-meta`** — после split'а возможно понадобится для cross-project aggregation сценариев. Open вопрос из split-плана.

View File

View File

@@ -0,0 +1,27 @@
---
role-id: analyst
model: glm-5.1
provider: ollama_cloud
source: config/config.yaml
---
# Analyst
**Model:** glm-5.1 (ollama_cloud), temperature 0.5
**Tools:** discussion
## System prompt
You are an analyst participating in a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Start by expressing your position and analysis. Only AFTER
stating your view, use tools sparingly to verify specific
claims or look up a detail. Do NOT research the entire topic
before speaking — this is a discussion, not a research project.
Structure the discussion, highlight key arguments, assess risks
and benefits of each option...
## Source of truth
Полное определение — в `config/config.yaml#roles.analyst`. Эта карточка генерируется скилом `meeting-room-register-persona`; не редактировать вручную.

View File

@@ -0,0 +1,26 @@
---
role-id: idea_generator
model: deepseek-v4-flash
provider: ollama_cloud
source: config/config.yaml
---
# Idea Generator
**Model:** deepseek-v4-flash (ollama_cloud), temperature 1.0
**Tools:** web
## System prompt
You are a creative idea generator participating in a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Start by proposing your ideas directly. Only use web search
sparingly to find a specific analog or trend — do NOT research
the entire topic before speaking. This is a discussion, not
a research project.
Propose unconventional solutions, think broader than the problem...
## Source of truth
Полное определение — в `config/config.yaml#roles.idea_generator`. Эта карточка генерируется скилом `meeting-room-register-persona`; не редактировать вручную.

View File

@@ -0,0 +1,25 @@
---
role-id: moderator
model: glm-5.1
provider: ollama_cloud
source: config/config.yaml
---
# Moderator
**Model:** glm-5.1 (ollama_cloud), temperature 0.7
**Tools:** none
## System prompt
You are the moderator of a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Guide the conversation, make sure everyone speaks, summarize
intermediate results, ask clarifying questions about the problem.
Don't push your own opinion. Keep it concise and on-topic.
Always respond in Russian.
## Source of truth
Полное определение — в `config/config.yaml#roles.moderator`. Эта карточка генерируется скилом `meeting-room-register-persona`; не редактировать вручную.

View File

@@ -0,0 +1,26 @@
---
role-id: skeptic
model: qwen3.5:397b
provider: ollama_cloud
source: config/config.yaml
---
# Skeptic
**Model:** qwen3.5:397b (ollama_cloud), temperature 0.9
**Tools:** discussion
## System prompt
You are a skeptic and critic participating in a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Start by expressing your critique and counter-arguments directly.
Only use file-reading tools to verify a specific claim someone
made — do NOT browse files before speaking. This is a discussion,
not a research project.
Find weaknesses in proposals, ask hard questions...
## Source of truth
Полное определение — в `config/config.yaml#roles.skeptic`. Эта карточка генерируется скилом `meeting-room-register-persona`; не редактировать вручную.

View File

19
.wiki/index.md Normal file
View File

@@ -0,0 +1,19 @@
# Meeting-Room Wiki — index
> Knowledge about how this meeting-room itself works. Domain content lives in `~/projects/.wiki/`.
## Navigation
- [Overview](overview.md) — что такое meeting-room
- [Log](log.md) — хронология встреч, промоушенов, изменений persona
- [Schema](CLAUDE.md) — раскладка и frontmatter-требования
## Sections
- [Personas](entities/persons/) — карточки ролей (генерируются из `config/config.yaml`)
- [Projects](entities/projects/) — pointer-карточки целевых проектов
- [Concepts](concepts/) — методология, ретро, паттерны
- [Raw research](raw/research/) — clippings и внешние транскрипты
- [Raw transcripts](raw/transcripts/) — транскрипты совещаний
- [Packages](packages/) — инструменты комнаты
- [Sources](sources/) — внешняя литература

37
.wiki/log.md Normal file
View File

@@ -0,0 +1,37 @@
# Log
Append-only. Format: `<YYYY-MM-DD> <event> <topic> [details]`.
Events: `started`, `promoted`, `registered`, `archived`.
---
2026-05-05 bootstrapped meeting-room redesign (initial .wiki/ skeleton)
2026-05-05 registered analyst
2026-05-05 registered idea_generator
2026-05-05 registered moderator
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)
2026-05-05 designed interns (.brainstorm/interns.md — domain spec, target promote: claude-skills)
2026-05-05 promoted interns → claude-skills/.wiki/concepts/interns-design.md (commits 30c329fd+035e4dd5+3deaa357); tasks created: claude-skills#interns-skills-mvp (ready), common#interns-mcp-mvp (ready), projects-meta-mcp#migrate-to-common-lib (blocked), common#unify-llm-secrets (blocked)
2026-05-05 archived interns → .archive/2026-05-05-interns.md
2026-05-05 designed interns-repo-read (.brainstorm/repo-read.md — domain spec, target promote: claude-skills, parent: interns)
2026-05-05 promoted interns-repo-read → claude-skills/.wiki/concepts/interns-repo-read-design.md (commits 34001022+b7943a3c+93a45007); tasks created: common#interns-repo-read-impl (ready), claude-skills#interns-repo-read-skill-updates (ready)
2026-05-05 archived interns-repo-read → .archive/2026-05-05-repo-read.md
2026-05-06 designed factory-bootstrap (.brainstorm/factory-bootstrap.md — domain spec, target promote: factory; field-test on Win11 laptop)
2026-05-06 bootstrapped factory project (.tasks/STATUS.md + .wiki/ canonical layout, commit ecddcdf — fixed projects-meta sync indexing prerequisite)
2026-05-06 promoted factory-bootstrap → factory/.wiki/concepts/factory-bootstrap.md (commits 549fe2ea+d26da137+b79be591); tasks created: factory#factory-bootstrap-script (ready), factory#factory-l1-design (blocked-by factory-bootstrap-script); also claude-skills#project-creation-lifecycle-skill (ready, gap surfaced during this promote)
2026-05-06 archived factory-bootstrap → .archive/2026-05-06-factory-bootstrap.md
2026-05-06 designed hermes-skills-rollout (.brainstorm/hermes-skills-rollout.md — domain spec, target promote: claude-skills)
2026-05-06 promoted hermes-skills-rollout → claude-skills/.wiki/concepts/hermes-skills-rollout-design.md (commits b3dc1251+5ae14fd6+0f65e057); tasks created: claude-skills#hermes-converter-mvp (ready), claude-skills#hermes-flavour-mcp-setups (blocked), claude-skills#hermes-installer-skill (blocked), claude-skills#hermes-mvp-coverage (blocked), claude-skills#hermes-converter-ci (blocked, deferred), common#tasks-close-normalize-body (ready, discipline pre-req), claude-skills#using-tasks-close-coverage-gate (ready, discipline pre-req)
2026-05-06 archived hermes-skills-rollout → .archive/2026-05-06-hermes-skills-rollout.md
2026-05-07 designed tdd-criteria (.brainstorm/tdd-criteria.md — domain spec, target promote: claude-skills; 6-round arc with cross-project research via projects-meta)
2026-05-07 promoted tdd-criteria → claude-skills/.wiki/concepts/tdd-criteria-design.md (commits a03d2804+2ad6f4ce+5fb648d4); tasks created: claude-skills#tdd-criteria-skill-write (ready), claude-skills#tdd-criteria-hermes-mapping (blocked), claude-skills#tdd-criteria-build-install (blocked), claude-skills#tdd-criteria-review (blocked, umbrella per §5)
2026-05-07 archived tdd-criteria → .archive/2026-05-07-tdd-criteria.md
2026-05-07 amended tdd-criteria post-promotion: anti-loophole rule 4 (test-immutability + [test-modify: was X; is Y] marker + separate-commit-from-impl) added; user surfaced symmetric vandalism risk on tests after initial promotion. Patches landed: claude-skills#tdd-criteria-skill-write description updated (commit b7819b17), claude-skills#tdd-criteria-precommit-hook task created (commit d440bb52). Design-doc amendment NOT applied directly (knowledge_ingest is create-only — overwrite blocked); amendment text embedded in skill-write task description for impl session to apply via direct git edit.
2026-05-08 split meeting-room into multi-agent runtime (this zone) + .workshop/ boss-zone; remote workshop repo created at git.kzntsv.site/OpeItcLoc03/workshop.git
2026-05-08 amended meeting-room-architecture.md: split-rewrite (runtime-only); boss sections moved to .workshop/.wiki/concepts/workshop-architecture.md
2026-05-08 split-done cleanup: removed .archive/, .brainstorm/, .wiki/concepts/modulair-rag-brainstorm-trace.md, .wiki/raw/{naming,research}/, .claude/skills/meeting-room-promote-brainstorm/. All artifacts migrated to .workshop/ (commits 4608ba9..f8f6f1a in workshop repo). Promoted concept: .workshop/.wiki/concepts/meeting-room-split.md.

19
.wiki/overview.md Normal file
View File

@@ -0,0 +1,19 @@
# Meeting-Room — overview
`.meeting-room/` — кросс-проектное рабочее пространство для брейнштормов и круглых столов агентов. Не код-проект.
## Зачем
Место, где агенты из разных проектов пересекаются ради задач, которые не помещаются в один backlog. Брейнсторм-зона: артефакты вызревают здесь и потом промочиваются — либо в локальный `.wiki/concepts/` (если это знание про саму комнату), либо в глобальную вики и `.tasks/` целевого проекта (если доменное).
## Что внутри
- `scenarios/` — frontmatter-сценарии для запуска multi-agent совещания
- `config/config.yaml` — реестр persona (рантайм-конфиг)
- `.brainstorm/` — рабочий буфер: черновики, single-agent capture
- `.archive/` — буфер после промоушена
- `.wiki/` — Karpathy-style room-meta wiki (этот раздел)
## Как пользоваться
См. корневой `CLAUDE.md` — там семантика и триггер-фразы скилов.

0
.wiki/packages/.gitkeep Normal file
View File

8
.wiki/raw/README.md Normal file
View File

@@ -0,0 +1,8 @@
# raw/
Immutable, append-only. Никаких редактур после фиксации.
- `research/` — внешние clippings, pre-loaded материалы перед совещанием.
- `transcripts/` — транскрипты прошедших совещаний.
При промоушене `concepts/<topic>.md` ссылается сюда через frontmatter `source:`.

View File

0
.wiki/sources/.gitkeep Normal file
View File

76
CLAUDE.md Normal file
View File

@@ -0,0 +1,76 @@
# .meeting-room — workspace contract
> ⚠️ **RETIRED 2026-06-08.** Зона распущена. НЕ запускать `meeting-room-start-meeting` / `register-persona` и не заводить совещания здесь. Multi-agent round-table теперь — тир consult-лестницы рантайма: **K локальных read-only coworker-спавнов через SpawnAdapter в worktree воркера** (federation-native, не центральная зона). Причина: несовместимость с federation-per-machine вердиктом (`agent-orchestration-without-user` Q9) + механическое дублирование `consult-arbiter-spawn`. Решение/размотка: `.workshop/.brainstorm/meeting-room-dissolve.md`. Дизайн: общая вики `concepts/consult-tier-escalation.md`. Контракт ниже сохранён как исторический record.
`.meeting-room/` — multi-agent runtime для кросс-проектных круглых столов: тематических совещаний с ролями, сценарием, транскриптом. **Не код-проект.**
Single-agent брэйнсторм + дистилляция — это `.workshop/` (отдельная зона после split'а 2026-05-08, см. `.wiki/concepts/meeting-room-architecture.md` §1, и `.workshop/.wiki/concepts/meeting-room-split.md` после промоушена).
## Семантика артефактов
| Папка | Что |
|---|---|
| `scenarios/<topic>.md` | runtime: сценарии запуска multi-agent совещания (frontmatter: `name`, `participants`, `problem`, `max_rounds`) |
| `config/config.yaml` | runtime: реестр persona (single source of truth) |
| `.wiki/raw/research/` | immutable: внешние clippings, релевантные совещанию |
| `.wiki/raw/transcripts/` | immutable: транскрипты прошедших совещаний |
| `.wiki/entities/persons/` | карточки persona, генерируются из `config.yaml` |
| `.wiki/entities/projects/` | pointer-карточки целевых проектов |
| `.wiki/concepts/` | room-meta: методология совещаний, ретро runtime'а |
**Перед предложением tooling/архитектуры — прочитать `.wiki/raw/research/` для текущего топика** (если research-материалы для совещания загружены).
## Жёсткие правила
1. **Доменное содержимое никогда не оседает в локальном `.wiki/`** — всегда в global через `mcp__projects-meta__knowledge_ingest` в `~/projects/<proj>/.wiki/`. Промоушен делается **из `.workshop/`** на основании дистилляционного буфера (см. handoff ниже).
2. **Локальный `.wiki/concepts/` — только room-meta** (про runtime: methodology совещаний, ретро, паттерны фасилитации).
3. **Локальные `.tasks/` не создавать** — workshop-meta таски (миграции, апгрейды скилов) живут в `.workshop/.tasks/`. Если runtime'у понадобятся свои таски — открыть отдельным решением.
4. **`entities/persons/` пишет только скил `meeting-room-register-persona`.** SoT — `config/config.yaml`. Ручные правки только в `config.yaml`; регенерация карточки — снова `register-persona`.
5. **Boss-режим (single-agent + user) сюда не приезжает.** Если возник полу-структурированный диалог требующий running-record `.brainstorm/<topic>.md` — переехать в `.workshop/`. Workshop делает дистилляцию транскриптов отсюда — пользовательским явным запросом, не автоматически.
## Триггеры скилов v1
| Скил | Триггер-фразы |
|---|---|
| `meeting-room-start-meeting` | «запусти совещание `<topic>`», «start meeting `<scenario>`», «новое совещание `<topic>`» |
| `meeting-room-register-persona` | «добавь персону», «новый агент в комнату», «register persona `<role>`» |
Скил `workshop-promote-brainstorm` — в зоне `.workshop/`, не здесь. Дистилляция transcripts → концепт делается там.
## Override `project-discipline`
В этой комнате применяются:
- ✅ master-only (никаких feature-веток)
- ✅ commit freely / push by permission
**Не применяются:**
- ❌ semver-bump — нет versioned-артефактов (`SKILL.md` скилов живут в `~/projects/claude-skills/`, у них свой semver)
- ❌ локальный `.tasks/` — запрещён правилом §3
## Handoff с `.workshop/`
```
.meeting-room/.wiki/raw/transcripts/<date>-<topic>.md ← runtime артефакт
│ user явно: «дистиллируй транскрипт <topic>»
.workshop/.brainstorm/<topic>-distill.md
│ workshop-promote-brainstorm
target (workshop-meta / domain via projects-meta / skill)
```
Никакого автоматического hop'а. Multi-agent runtime производит сырьё (транскрипт), workshop производит дистилляты. Два разных режима, не смешиваются.
## Persona registry
SoT — `config/config.yaml`. Карточки `.wiki/entities/persons/<role-id>.md` — производные.
## Pointers
- Schema локальной вики: `.wiki/CLAUDE.md`
- Архитектура runtime'а: `.wiki/concepts/meeting-room-architecture.md`
- Архитектура boss-зоны: `.workshop/.wiki/concepts/workshop-architecture.md`

View File

@@ -1,57 +1,38 @@
# .meeting-room — Shared Workspace
> "Офис" для кросс-проектных совещаний агентов. Транзитная зона — не ведёт `.tasks`/`.wiki`, всё репортит в глобальный скоуп.
> ⚠️ **RETIRED 2026-06-08.** Эта зона распущена. Multi-agent round-table НЕ привязан к отдельной зоне-назначению: он переехал в consult-tier рантайма оркестрации как **K локальных read-only coworker-спавнов в worktree воркера** (тот же SpawnAdapter, что одиночный арбитр). Причина роспуска: зона была бы единственным централизованным компонентом в системе, специально сделанной federation-per-machine (`agent-orchestration-without-user` Q9), и механически дублировала `consult-arbiter-spawn`. Полная размотка: `.workshop/.brainstorm/meeting-room-dissolve.md`. Дизайн round-table: общая вики `concepts/consult-tier-escalation.md` §«Round-table тир». Файлы ниже сохранены как исторический record, не запускаются.
## Purpose
> Кросс-проектные брейнстормы и круглые столы агентов. Brainstorm-зона: room-meta лежит локально в `.wiki/`, доменное промочивается в глобальную вики и `.tasks/` целевого проекта через `projects-meta`.
Место, где агенты из разных проектов пересекаются для решения кросс-проектных задач.
## Quickstart
## Structure
- Прочитать `CLAUDE.md` — workspace contract (семантика, правила, триггеры скилов).
- Прочитать `.wiki/index.md` — навигация по локальной вики.
- Сценарии для multi-agent совещаний — в `scenarios/`.
- Реестр persona — в `config/config.yaml` (карточки в `.wiki/entities/persons/` генерируются скилом).
## Skills v1
- `meeting-room-promote-brainstorm``.brainstorm/<topic>.md` → либо локальный `.wiki/concepts/`, либо глобальная вики; action-items → `.tasks/` целевого проекта; исходник → `.archive/`.
- `meeting-room-start-meeting` — валидирует `scenarios/<topic>.md`, заводит skeleton-транскрипт и буфер.
- `meeting-room-register-persona` — добавляет роль в `config.yaml` и генерирует карточку в `.wiki/entities/persons/`.
## Folder map
```
.meeting-room/
├── .brainstorm/ # "Кабинет": обсуждение сырых идей с доверенным агентом (CSO)
├── .archive/ # "Черный ящик": история завершенных совещаний
── README.md # This file
├── CLAUDE.md ← workspace contract
├── README.md ← этот файл
── .wiki/ ← Karpathy room-meta wiki
├── scenarios/ ← runtime: сценарии запуска
├── config/ ← runtime: реестр persona
├── .brainstorm/ ← рабочий буфер
├── .archive/ ← post-promotion
└── .claude/skills/ ← локальные скилы
```
## How It Works
### .brainstorm/ — Твой инкубатор идей
**Для работы с доверенным агентом (CSO):**
1. Создай файл идеи: `idea_001_name.md`
2. Опиши свои тезисы
3. Агент дописывает вопросы/критику
4. Результат → в глобальные `.tasks` или `.wiki`
**Почему это круто:**
- Markdown = структурированный артефакт
- Версионность через Git
- Готовый материал для митингов других агентов
### .archive/ — История совещаний
По завершении сессии → архив.
В самой `.meeting-room` только **активные** обсуждения.
## Rules
-**NO** `.tasks` / `.wiki` внутри (транзитная зона)
-Все задачи → в глобальный `../.tasks/`
-Все выводы → в глобальный `../.wiki/`
- ✅ Git для версионности идей
## Integration
- **Input**: Идеи из `.brainstorm/`
- **Output**: Задачи в `.tasks/`, знания в `.wiki/`
- **Context**: Доступ ко всем проектам
## Persona Registry
Твой доверенный агент для `.brainstorm/`:
- **Role**: Chief Strategy Officer (CSO)
- **Access**: Все глобальные папки (`.wiki`, `.tasks`)
- **Job**: Обстучать идеи before линейной реализации
- **Role:** Chief Strategy Officer (CSO)
- **Job:** Обстучать идеи перед линейной реализацией.

85
config/config.yaml Normal file
View File

@@ -0,0 +1,85 @@
defaults:
framework: custom
max_rounds: 8
language: ru
workdir: ..
providers:
routerai:
api_key: ${MEETING_ROOM_ROUTERAI_API_KEY}
base_url: ${MEETING_ROOM_ROUTERAI_BASE_URL}
ollama_cloud:
api_key: ${OLLAMA_CLOUD_API_KEY}
base_url: https://ollama.com/v1
roles:
analyst:
model: glm-5.1
name: Analyst
provider: ollama_cloud
temperature: 0.5
tools: discussion
system_prompt: |
You are an analyst participating in a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Start by expressing your position and analysis. Only AFTER
stating your view, use tools sparingly to verify specific
claims or look up a detail. Do NOT research the entire topic
before speaking — this is a discussion, not a research project.
Structure the discussion, highlight key arguments, assess risks
and benefits of each option, summarize. Think logically and
systematically. Propose concrete action plans.
Always respond in Russian.
idea_generator:
model: deepseek-v4-flash
name: Idea Generator
provider: ollama_cloud
temperature: 1.0
tools: web
system_prompt: |
You are a creative idea generator participating in a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Start by proposing your ideas directly. Only use web search
sparingly to find a specific analog or trend — do NOT research
the entire topic before speaking. This is a discussion, not
a research project.
Propose unconventional solutions, think broader than the problem,
generate many options. Don't be afraid of crazy ideas — the best
solutions come from them. Build on others' ideas.
Always respond in Russian.
moderator:
model: glm-5.1
name: Moderator
provider: ollama_cloud
temperature: 0.7
tools: none
system_prompt: |
You are the moderator of a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Guide the conversation, make sure everyone speaks, summarize
intermediate results, ask clarifying questions about the problem.
Don't push your own opinion. Keep it concise and on-topic.
Always respond in Russian.
skeptic:
model: qwen3.5:397b
name: Skeptic
provider: ollama_cloud
temperature: 0.9
tools: discussion
system_prompt: |
You are a skeptic and critic participating in a group discussion.
You will be given a specific problem to discuss — do NOT ask
what the topic is, it is provided in the message below.
Start by expressing your critique and counter-arguments directly.
Only use file-reading tools to verify a specific claim someone
made — do NOT browse files before speaking. This is a discussion,
not a research project.
Find weaknesses in proposals, ask hard questions, offer
counter-arguments. Be constructive but tough. Don't agree easily.
Always respond in Russian.

View File

@@ -0,0 +1,37 @@
# Example Problem Scenario
## Context
Описание проблемы или задачи для совещания с агентами.
## Problem
Чётко сформулируй проблему:
- Что не работает?
- Что нужно улучшить?
- Какие есть ограничения?
## Goals
Чего хотим достичь:
1. Первая цель
2. Вторая цель
3. Третья цель
## Participants
Кто участвует в совещании:
- CSO (Chief Strategy Officer) — ведёт
- Эксперты из конкретных проектов
- Другие агенты по необходимости
## Expected Output
Что должно получиться в результате:
- Конкретное решение
- План действий
- Артефакты (код, документы, схемы)
## Notes
Заметки в процессе обсуждения...

48
scenarios/modulair.md Normal file
View File

@@ -0,0 +1,48 @@
---
name: "ModulAIr"
participants:
- moderator
- skeptic
- idea_generator
- analyst
max_rounds: 6
problem: |
Спроектировать AI-управляемый модуль для еврорэк на базе Pico 2 W.
Модуль — секвенсор/контроллер с 8 CV и 8 Gate выходами, входами Clock/Reset,
MIDI (USB + UART), Wi-Fi и аудиовходами для анализа.
Управляется через MCP-сервер + LightRAG (база знаний по модулям и теории музыки).
Оркестратор — Hermes Agent.
Вопросы: какой ЦАП выбрать (DAC8568?), как организовать скриптовый движок
(Teletype-стиль), как интегрировать RAG для доступа к мануалам модулей,Я за
и как обеспечить точный тайминг при Wi-Fi задержках.
---
# ModulAIr — AI EuroRack Controller
## Суть проекта
Модуль еврорэк на Pico 2 W, который работает как AI-секвенсор. Человек играет на модулях,
AI (через MCP) управляет CV/Gate выходами, опираясь на базу знаний о модулях (LightRAG)
и теорию музыки. Человек и AI ведут диалог о том, что играть и как патчить.
## Железо
- Pico 2 W (RP2350, 2 ядра, Wi-Fi, USB-C)
- 8 CV выходов (через внешний ЦАП — кандидаты: DAC8568 16-bit 8-ch, MCP4728 12-bit 4-ch)
- 8 Gate выходов
- Входы: Clock, Reset, Start/Stop, 2-4 CV для «прослушки» (ADC)
- MIDI: USB-MIDI + TRS-MIDI (UART)
- Аудиовходы: через преамп → ADC для анализа (envelope follower, pitch detection)
## Софт
- Скриптовый движок в стиле Monome Teletype / ER-101 на Pico
- MCP-сервер на компе как мост между LLM и Pico
- LightRAG как база знаний (мануалы модулей, теория музыки, исходники VCV Rack)
- Hermes Agent как оркестратор
## Ссылки на контекст
- Проект по железу: heart-and-mask
- Open-source ER-101: https://github.com/odevices/er-101
- Open-source Teletype: https://github.com/monome/teletype