Приложение D. Файлы памяти: структура и шаблоны¶
Память — это папка с файлами под git. Узел знания — файл с YAML-шапкой (frontmatter) и текстом. Ссылки между узлами пишутся только полями шапки; ссылка на несуществующий node_id роняет проверку целостности.
Где что лежит¶
Названия слоёв в тексте методологии (раздел 14) — концептуальные. В стартовом репозитории poh-cortex они реализованы так:
| Слой в тексте | В poh-cortex |
Заметка |
|---|---|---|
rules/ladder.md |
GROUND/SCHEMA/ladder.yaml |
Лестница |
rules/gates.md |
GROUND/SCHEMA/gates.yaml |
Гейты |
rules/decay.md |
GROUND/SCHEMA/profiles.yaml |
Сроки годности |
| — | GROUND/SCHEMA/checks.yaml |
Жёсткость проверок: error / warn / off |
| — | GROUND/SCHEMA/agents.yaml |
Классы агентов, зоны записи, never_delegated |
| — | GROUND/SCHEMA/nodes.yaml, edges.yaml |
Типы узлов, обязательные поля, рёбра |
nexus/ |
GROUND/NEXUS/<slug>/ + _registry.yaml |
Нексус — папка, узел — файл |
evidence/ |
GROUND/DECIDE/evidence/ |
Только добавление |
bets/ |
GROUND/DECIDE/bets/ |
Ставки |
decisions/ |
GROUND/DECIDE/decisions/ |
Решения и калибровки |
log/ |
GROUND/DECIDE/log/ |
Наблюдения без артефакта; на CP не влияют |
inbox.md |
GROUND/_intake/inbox.md, _intake/hermes/, _intake/chats/ |
Единственная зона записи сборщиков |
| — | GROUND/PULSE/{summaries,daybook,radar}/ |
Операционный след: встречи, дни, радары |
| — | GROUND/_index/packs/<профиль>.md |
Производный срез памяти под профиль |
| хребет OKR | ROADMAP/kr-epic-map.md |
KR → ставка → эпик |
Узел¶
Обязательные поля: nexus, node_id (латиница, нижний регистр, стабилен навсегда), node_type, kind (normative | empirical), owner, sources (непустой; пустой источник — «workslop»), updated, ripeness (вычисляется командой refresh).
Поля смысла: cp (2–9), confidence (производное), change_rate, scope (org | team:<имя> | product:<имя> | personal), captured_by (human, claude-code, skill:<имя>, hermes:<бот>), ttl_days, status (draft | accepted | rejected — запись агента остаётся черновиком до приёмки), shared_with, aliases, disputed, contradicts, outcome, stage, non_critical.
Тип узла определяет дополнительные обязательные поля: у dependency обязательны ещё owner и channel. Всего в каталоге типов 38: каркас, ось ценности, хребет (цель, KR, эпик, задача), корпоративные (система, интеграция, зависимость, процесс), люди и решения (человек, решение, риск, ставка, артефакт), операционка (эпизод, дневник, чат, канал).
Ставка¶
Шаблон лежит в GROUND/DECIDE/bets/_template.md.
node_id: bet-…
node_type: bet
owner: <человек>
gate: commit # ключ из gates.yaml
stage: 4 # 1 идея · 2 потребность · 3 ценность · 4 решение · 5 онбординг · 6 бизнес-модель
threshold: 6
due: 2026-11-15
cp: 3
cp_history: ["w1:2", "w3:3"]
scope: team:платформа
impact_metric: "что должно измениться и на чём измеряется"
window: "когда результат нужен потребителю и почему"
satisfies: <KR>
depends_on: [<узлы>]
non_critical: [] # зависимости, не держащие потолок; причина — в «Слабом звене»
sources: [<файлы из evidence/>]
tracker: [KEY-1, KEY-2] # ключи задач; jira — синоним
outcome: met | missed # заполняется при закрытии, вход калибровки
Тело: «Что должно быть правдой» (одно утверждение), «Слабое звено», «Что поднимет ступень» (минимальный артефакт: не поторопить, а получить), «Решение на гейте» (убить / донасытить / дать дату). Ставок на квартал — три–семь; меньше трёх — декомпозиция поверхностная. Для типа bet схема требует gate, due, cp.
stage выбирается по риску: потребность принёс потребитель — входите сразу на стадию 4 (раздел 10).
Артефакт (evidence)¶
Лежит в GROUND/DECIDE/evidence/ГГГГ-ММ-ДД-описание.md, неизменяем.
node_id: ev-…
date: 2026-09-17 # дата самого артефакта, не записи
author: <кто сказал>
authority: <владелец объекта, если не автор>
channel: email # email | ticket | mr | ci | demo | oral | chat
ladder: 3
scope: "на каком объёме подтверждено"
link: <permalink> # нужен человеку, не агенту
affects: <ставка или узел>
Разделы тела: «Цитата» и «Что это доказывает» (и чего не доказывает). Схема требует author, channel, scope, link.
Решение¶
GROUND/DECIDE/decisions/ГГГГ-ММ-ДД-….md: owner (человек, не агент), about, cp_at_decision, weeks_before_due («это и есть мера управляемости»), outcome. Разделы: что решили; на основании какого числа; какие варианты предлагались; чем закончилось. Пишите и неудачные решения: ранняя снятая дата сильнее героически вытянутого срока (П7).
Наблюдение¶
GROUND/DECIDE/log/ГГГГ-ММ.md — таблица «дата / узел или ставка / наблюдение». На уверенность не влияет. Сюда пишут человек и бот-наблюдатель.
Запись очереди¶
Три строки на запись; сюда вы кладёте цитату, а не дайджест переписки:
2026-09-17 | Петров, владелец системы «Расчёты» | slack: <permalink>
"объём подтвердим к концу недели, схему отдадим после"
Для крупной записи — файл с шапкой captured_by, date, author, authority (не владелец — ступень не выше 2), channel (устное и чат — потолок 3), link, about.
Эпизод встречи¶
GROUND/PULSE/summaries/ГГГГ-ММ-ДД-тема.md: «Решения», «Изменения контекста», «Открытые вопросы». Эпизод сам узлы не обновляет: решение попадает в память, когда узел правится явно и эпизод добавляется в его sources.
Кто может писать куда¶
| Класс | Куда пишет | Режим |
|---|---|---|
| Человек | Всё | — |
Детерминированный (claude-code, cortex) |
GROUND/NEXUS/**, DECIDE/**, PULSE/**, _intake/**, _index/**, ROADMAP/** |
Показывает, что запишет, и ждёт подтверждения. SCHEMA/ намеренно исключён |
| Куратор | NEXUS, PULSE |
Только добавление |
| Сборщик (боты Hermes, шлюз мессенджеров) | _intake/**, DECIDE/log/** |
Только добавление |
Всё, что пишет агент, остаётся status: draft, пока человек не примет его командой приёмки. Никогда не делегируется: обещания наружу; изменение SCHEMA/**; отправка сообщений от имени человека; переговоры о датах и ёмкости; запись в NEXUS и DECIDE без подтверждения.
Защита линейки — договорная
Защита по полю captured_by самодекларируемая. Реальная защита лестницы от правки агентом на уровнях 0–1 — это исключение SCHEMA/ из зон записи и ваша дисциплина; технической блокировки (CODEOWNERS, защита веток) стоит ждать с уровня 2 (уровни зрелости).