feat(skills): сверка mappa-* скилов с деплоем — репо догнал установленные 1.2.0/1.4.0 (интерактивный контракт wiki:2660) [skip-tdd: visual]
- mappa-task-work 1.1.0→1.2.0, mappa-delegation 1.1.0→1.2.0, mappa-knowledge 1.1.0→1.2.0, mappa-messaging 1.1.0→1.2.0, mappa-brainstorm-promote 1.3.0→1.4.0, mappa-closing-ritual 1.0.0→1.2.0
- репо нёс гибрид ae45a51 (1.1.0, следы 'карв-аут лиза'); установленные (деплой, результат #1040) чище: claim/лиз выпилены, owner=персистентный assignee, живность из session владельца
- dist/*.skill пересобраны (build.ps1); установленные уже были в этом состоянии — репо стал источником правды, совпадающим с деплоем
- сверка: claim_next/claim_expires/task_heartbeat/admin_release_lease — 0 вхождений в установленных mappa-* (подтверждено и на этом хосте)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: mappa-knowledge
|
||||
author: ours
|
||||
version: 1.1.0
|
||||
version: 1.2.0
|
||||
description: >
|
||||
Цикл работы со знаниями проекта в Mappa (Karpathy LLM Wiki, канал =
|
||||
mappa-сущности): ingest → query → lint + граф-слой для
|
||||
@@ -10,8 +10,8 @@ description: >
|
||||
«запроси вики», «проверь вики», «use project wiki», «query the wiki»,
|
||||
«что связывает X и Y», «как связаны», «путь между X и Y», «what connects
|
||||
X and Y», «что ссылается на X», «backlinks of X», «сироты», «битые ссылки»,
|
||||
«orphan pages». Wiki = сущности type=wiki (чтение — карв-аут лиза; запись —
|
||||
version+409, wiki:2660). Реляционные вопросы — через graph_* (BFS на
|
||||
«orphan pages». Wiki = сущности type=wiki (чтение — карв-аут; create —
|
||||
карв-аут, update — version+409; контракт wiki:2660). Реляционные вопросы — через graph_* (BFS на
|
||||
стороне сервиса), guarded failure-mode: одна страница и стоп, без
|
||||
многохоповых цепочек чтением. Skip для одно-страничных контентных вопросов.
|
||||
---
|
||||
@@ -25,7 +25,8 @@ query / lint) + **граф-слой** для реляционных и стру
|
||||
сущностями читают через граф (graph_*).
|
||||
|
||||
Канал — Mappa (`mcp__mappa__*`), НЕ файлы. Страница — сущность `type=wiki`
|
||||
(`wiki:N`); чтение — карв-аут, запись — version+409 (wiki:2660).
|
||||
(`wiki:N`); чтение — карв-аут; **create — карв-аут без лиза; update —
|
||||
optimistic concurrency (version+409 → retry)** (контракт wiki:2660, v0.12.0).
|
||||
Файлового `.wiki/` больше нет; `setup-wiki` умер (нечего настраивать).
|
||||
|
||||
## Когда использовать
|
||||
@@ -64,19 +65,19 @@ README/ADR (не персистентная база знаний), проект
|
||||
|
||||
| Операция | Тул | Примечание |
|
||||
|---|---|---|
|
||||
| Чтение страницы | `mcp__mappa__wiki_get(project?, slug)` | чтение — карв-аут (решение 19) |
|
||||
| Чтение страницы | `mcp__mappa__wiki_get(project?, slug)` | чтение — карв-аут |
|
||||
| Поиск страниц | `mcp__mappa__entity_search(q, type='wiki', project?, scope?, limit)` | ILIKE по body/title |
|
||||
| Создать страницу | `mcp__mappa__wiki_create(project, slug, body)` | карв-аут (wiki:2660), лиз не нужен |
|
||||
| Обновить страницу | `mcp__mappa__wiki_update(project, id, title?, body?, version)` | version+409; id — internal |
|
||||
| Создать страницу | `mcp__mappa__wiki_create(project, slug, body)` | **карв-аут без лиза** |
|
||||
| Обновить страницу | `mcp__mappa__wiki_update(project, id, title?, body?, version)` | **version-based**: конфликт → 409 → retry со свежей version из wiki_get |
|
||||
| Путь между сущностями | `mcp__mappa__graph_path({from, to})` | кратчайшая цепочка, BFS |
|
||||
| Соседи / исходящие | `mcp__mappa__graph_neighbors({id})` | рёбра узла с резолвом целей |
|
||||
| Входящие ссылки | `mcp__mappa__graph_backlinks({id})` | кто ссылается на узел |
|
||||
| Здоровье графа | `mcp__mappa__graph_stats()` | nodes/edges/components |
|
||||
|
||||
**Запись — version+409 (wiki:2660 interactive contract).** `wiki_create` —
|
||||
карв-аут (лиз не нужен); `wiki_update` несёт `version` из последнего чтения,
|
||||
конфликт → 409 → `wiki_get` заново → retry. Долгих лизов/TTL/heartbeat больше
|
||||
нет — живость владельца из session live-ingest.
|
||||
**Запись — карв-аут (create) / version-based (update), без лиза (interactive
|
||||
contract, wiki:2660).** `wiki_create` не требует claim_token; `wiki_update`
|
||||
принимает ожидаемую `version` (свежую из `wiki_get`) — конфликт → 409 →
|
||||
re-GET → retry.
|
||||
|
||||
**Рефы и id (#1037/#1028).** Публичная поверхность несёт per-type реф полным
|
||||
именем первым полем: `ref: "wiki:3"` (решение 20, конвенция #1028), `num`
|
||||
@@ -97,10 +98,11 @@ per-type рефы полными именами (`[[task:N]]`/`[[inbox:N]]`).
|
||||
3. Создай `sources/<slug>` — одну страницу-резюме на источник (~50–150 строк;
|
||||
ссылку на raw клади в frontmatter `raw_path` + `ingested:`).
|
||||
4. Для каждой затронутой страницы:
|
||||
- есть → обнови (`wiki_update(project, id, body, version)`). **Противоречия
|
||||
помечай явно** блоком `> **Противоречие:** источник A говорит X, источник B — Y`.
|
||||
- есть → обнови (`wiki_update(project, id, body, version)` — version свежая
|
||||
из `wiki_get`; 409 → re-GET → retry). **Противоречия помечай явно** блоком
|
||||
`> **Противоречие:** источник A говорит X, источник B — Y`.
|
||||
Не затирай молча.
|
||||
- нет → создай (`wiki_create`).
|
||||
- нет → создай (`wiki_create`, карв-аут).
|
||||
5. Обнови `index` (каталог: одна строка на страницу) — опционально; каталог
|
||||
по умолчанию — `entity_search` (решение 1).
|
||||
6. Отчитайся пользователю: что создано, что обновлено, какие противоречия.
|
||||
@@ -113,8 +115,9 @@ per-type рефы полными именами (`[[task:N]]`/`[[inbox:N]]`).
|
||||
|
||||
**Один ingest может затронуть 10–15 страниц. Это нормально — для того LLM и нужны.**
|
||||
|
||||
Порядок записи: все wiki-мутации одним циклом; `wiki_update` — со свежей
|
||||
`version` из чтения (409 → retry). Создание новых страниц — карв-аут.
|
||||
Порядок записи: все wiki-мутации одним циклом; create — карв-аут, update — с
|
||||
version (свежей из `wiki_get`); 409 → re-GET → retry. Лиз/claim для записи НЕ
|
||||
нужен (wiki:2660).
|
||||
|
||||
### Query — вопрос по вики
|
||||
|
||||
@@ -231,8 +234,9 @@ level/since/component/entity, retention 14d). Ручную `log`-страниц
|
||||
- **Не-ASCII слаги.** Ломают grep и кросс-платформенность. Транслитерируй.
|
||||
- **Пропущенные противоречия в lint.** Ценность вики — во вскрытых напряжениях,
|
||||
а не в ложном консенсусе.
|
||||
- **Запись — version+409 (wiki:2660).** `wiki_create` — карв-аут; `wiki_update` со свежей `version` (конфликт → 409 → retry).
|
||||
- **Держать лиз на чтение/раздумья.** Лиз — на время записи. Чтение — карв-аут.
|
||||
- **Запись без version (update).** `wiki_update` без свежей version →
|
||||
last-write-wins, риск затирания чужого; бери version из `wiki_get`, 409 → retry.
|
||||
- **Держать claim на чтение/раздумья.** Claim — на время работы; чтение — карв-аут.
|
||||
- **Реляционный вопрос чтением одной страницы.** Это тот самый 0%-recall
|
||||
провал — зови graph_*.
|
||||
- **Слаги/пути в graph-тулы.** Только internal id, и только свежие (удалённая
|
||||
@@ -244,7 +248,7 @@ level/since/component/entity, retention 14d). Ручную `log`-страниц
|
||||
|
||||
- Реляционный вопрос → читаешь страницу вместо `graph_*`.
|
||||
- Правка `sources/` или молчаливая перезапись противоречия.
|
||||
- Wiki-мутация без лиза (422) или лиз держится на чтение.
|
||||
- Wiki-мутация update без version (last-write-wins) или create с выдуманным claim.
|
||||
- Нарративный оп-лог руками.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user