fix(using-wiki): v2.1.0 — оп-лог автоматический (таблица logs, ратификация 2026-08-24), log-страница и ручной каталог убраны; каталог = entity_search (#983)

This commit is contained in:
2026-08-24 17:48:01 +03:00
parent c53ed66ba5
commit 46724e2c88
2 changed files with 35 additions and 27 deletions

BIN
dist/using-wiki.skill vendored

Binary file not shown.

View File

@@ -1,7 +1,7 @@
--- ---
name: using-wiki name: using-wiki
author: ours author: ours
version: 2.0.0 version: 2.1.0
description: > description: >
Policy skill for working with the project wiki in Mappa (Karpathy LLM Wiki Policy skill for working with the project wiki in Mappa (Karpathy LLM Wiki
pattern, channel = mappa-сущности, решения 14/15 спеки mappa). Use when the pattern, channel = mappa-сущности, решения 14/15 спеки mappa). Use when the
@@ -36,7 +36,9 @@ Body = frontmatter + markdown как есть (content-модель сохран
Файловый `.wiki/` в репозиториях — легаси: источник истины — сервис. Файловый `.wiki/` в репозиториях — легаси: источник истины — сервис.
Если вики проекта пуста (нет сущностей) — **ничего настраивать не надо** Если вики проекта пуста (нет сущностей) — **ничего настраивать не надо**
(setup-wiki умер): первый ingest сам создаёт `CLAUDE`, `index`, `log` (см. Ingest). (setup-wiki умер): первый ingest сам создаёт `CLAUDE` (+ опционально `index`);
оп-лог вести не нужно — сервис пишет его в таблицу `logs` автоматически
(решение 12, ратификация 2026-08-24).
## MCP-поверхность ## MCP-поверхность
@@ -76,7 +78,8 @@ Body = frontmatter + markdown как есть (content-модель сохран
3. Только потом действуй. 3. Только потом действуй.
Если `CLAUDE` нет — вики либо новая, либо неухоженная: не импровизируй Если `CLAUDE` нет — вики либо новая, либо неухоженная: не импровизируй
структуру, создай `CLAUDE`/`index`/`log` при первом ingest (см. ниже). структуру, создай `CLAUDE` при первом ingest (см. ниже). Каталог — через
`entity_search` (решение 1); `index`-страница опциональна (для ориентации).
## Три операции ## Три операции
@@ -91,9 +94,14 @@ Body = frontmatter + markdown как есть (content-модель сохран
помечай явно** блоком `> **Противоречие:** источник A говорит X, источник B — Y`. помечай явно** блоком `> **Противоречие:** источник A говорит X, источник B — Y`.
Не затирай молча. Не затирай молча.
- нет → создай (`wiki_create`). - нет → создай (`wiki_create`).
5. Обнови `index` (каталог: одна строка на страницу). 5. Обнови `index` (каталог: одна строка на страницу) — опционально; каталог
6. Допиши одну строку в `log` (формат ниже). по умолчанию — `entity_search` (решение 1).
7. Отчитайся пользователю: что создано, что обновлено, какие противоречия. 6. Отчитайся пользователю: что создано, что обновлено, какие противоречия.
**Оп-лог — автоматический.** Каждая write-операция уже пишется сервисом в
таблицу `logs` (component=тип сущности, message=slug+operation; смотреть —
`mcp__mappa__admin_logs`). Ручную `log`-страницу НЕ веди — это дубль,
аудит-след живёт в сервисе (решение 12, ратификация 2026-08-24).
**Один ingest может затронуть 1015 страниц. Это нормально — для того LLM и нужны.** **Один ingest может затронуть 1015 страниц. Это нормально — для того LLM и нужны.**
@@ -109,7 +117,8 @@ Body = frontmatter + markdown как есть (content-модель сохран
3. **Компаундируй вики.** Если ответ — реальный синтез (сравнение, анализ, 3. **Компаундируй вики.** Если ответ — реальный синтез (сравнение, анализ,
новая связь) — спроси пользователя: «Сохранить как страницу wiki?» Хорошие новая связь) — спроси пользователя: «Сохранить как страницу wiki?» Хорошие
вопросы становятся страницами в `concepts/`. вопросы становятся страницами в `concepts/`.
4. Допиши строку в `log`.
Оп-лог в query — автоматический (logs-таблица); строку вручную не дописывай.
### Lint — «проверь вики» ### Lint — «проверь вики»
@@ -123,7 +132,7 @@ Body = frontmatter + markdown как есть (content-модель сохран
- **Пустые/TODO-секции.** - **Пустые/TODO-секции.**
Отчёт — панч-лист. Ничего не удаляй автоматически. Отчёт — панч-лист. Ничего не удаляй автоматически.
Допиши строку в `log` с итогом. Оп-лог в lint — автоматический (logs-таблица); строку вручную не дописывай.
## Форматы страниц (ОБЯЗАТЕЛЬНО) ## Форматы страниц (ОБЯЗАТЕЛЬНО)
@@ -150,30 +159,28 @@ updated: 2026-08-24
- `entities/<name>`, `concepts/<name>`, `packages/<name>`, `sources/<slug>`, - `entities/<name>`, `concepts/<name>`, `packages/<name>`, `sources/<slug>`,
`contradictions/<slug>`, `open-questions/<slug>`. `contradictions/<slug>`, `open-questions/<slug>`.
### `log` — append-only, grep-parseable ### Оп-лог — таблица `logs`, не страница
Каждая запись **обязана** начинаться с: File-based `log.md` мёртв (решение 12/15, ратификация 2026-08-24). Сервис пишет
оп-лог сам при каждой write-операции: `mcp__mappa__admin_logs` (фильтры
level/since/component/entity, retention 14d). Ручную `log`-страницу не заводи,
не дописывай, не парси.
``` ### `index` — каталог через поиск
## [YYYY-MM-DD] <operation> | <short description>
```
Операции: `ingest`, `query`, `lint`, `refactor`, `decision`, `init`. Каталог = `entity_search(q, type='wiki', project)` (решение 1). `index`-страница
Парсится: `entity_search(q="## [", type="wiki", project=…)` по сущности `log`. — опциональная опора для ориентации: одна строка на страницу
`- [Title](concepts/foo.md) — hook.`, секции по типам. Обновляй только если
### `index` страница уже существует; не плоди каталог-дубли.
Каталог, не нарратив. Одна строка на страницу: `- [Title](concepts/foo.md) — hook.`
Секции по типам. Обновляется на каждом ingest.
## Quick reference ## Quick reference
| Ситуация | Что трогаем | | Ситуация | Что трогаем |
|---|---| |---|---|
| Ingest одного документа | `sources/<slug>` (новая) + 315 entities/concepts/packages + `index` + `log` | | Ingest одного документа | `sources/<slug>` (новая) + 315 entities/concepts/packages (+ опционально `index`) |
| Query | (чтение) + возможно новая страница + `log` | | Query | (чтение) + возможно новая страница |
| Lint | (чтение) + `log` | | Lint | (чтение) |
| Новая вики проекта | первый ingest создаёт `CLAUDE`/`index`/`log` + контент | | Новая вики проекта | первый ingest создаёт `CLAUDE` (+ опционально `index`); оп-лог — автоматический |
## Частые ошибки ## Частые ошибки
@@ -181,10 +188,11 @@ updated: 2026-08-24
- **Дамп сырья в `sources/`.** Резюме — это резюме. Ссылайся на raw, не копируй. - **Дамп сырья в `sources/`.** Резюме — это резюме. Ссылайся на raw, не копируй.
- **Молчаливые перезаписи.** Новый источник противоречит странице — пометь - **Молчаливые перезаписи.** Новый источник противоречит странице — пометь
блоком `> **Противоречие:**`; не затирай. блоком `> **Противоречие:**`; не затирай.
- **Нарративный `log`.** «Сегодня я добавил…» — неверно. Формат: - **Нарративный оп-лог.** Не веди его руками: сервис пишет logs сам (admin.logs).
`## [YYYY-MM-DD] ingest | <что>`. «Сегодня я добавил…» — даже вручную писать не надо.
- **Не-ASCII слаги.** Ломают grep и кросс-платформенность. Транслитерируй. - **Не-ASCII слаги.** Ломают grep и кросс-платформенность. Транслитерируй.
- **Забытый `index`.** Страницы без записи в каталоге невидимы для будущих query. - **Забытый `index`.** Страницы без записи в каталоге невидимы для будущих query
(если index-страница ведётся; дефолтный каталог — entity_search).
- **Пропущенные противоречия в lint.** Ценность вики — в вскрытых напряжениях, - **Пропущенные противоречия в lint.** Ценность вики — в вскрытых напряжениях,
а не в ложном консенсусе. а не в ложном консенсусе.
- **Запись без лиза.** Wiki-мутации без `claim_token` → 422 busy; не пытайся - **Запись без лиза.** Wiki-мутации без `claim_token` → 422 busy; не пытайся