# Онтология — Правила ведения > Эти правила **обязательны** для всех агентов. Невыполнение = нарушение. --- ## 1. Когда использовать онтологию **Обязательно** при: - Работе с проектами (создание, обновление, закрытие) - Работе с задачами (создание, изменение статуса, удаление) - Распределении работ между агентами - Проверке зависимостей между задачами - Планировании новых активностей **Онтология — единственный источник истины** о проектах и задачах. Не держать информацию в голове, в daily notes или в MEMORY.md — только в онтологии. --- ## 1.1 Строгая иерархия проекта и задачи - **Task без Project не существует.** - Каждый `Project` — это отдельный контейнер с собственной документацией. - Каждая `Task` обязана принадлежать одному `Project`. - Если работа не укладывается в существующий проект, сначала создаётся новый `Project`, затем задачи внутри него. - У `Task` есть уникальный идентификатор и отдельная папка внутри папки проекта. - У `Project` есть общая документация на уровне всей папки проекта. - Человеческое имя объекта хранится в `name` / `title`; машинный `id` остаётся внутренним и не должен быть частью читаемого названия в документации и папках. --- ## 2. Правила записи ( Stream — curator) ### 2.1 Стрим — единственный writer - Все изменения в онтологию вносит **только Стрим** - Другие агенты (Dev, Legal, Feda) **не пишут напрямую** - Запросы на изменения → `sessions_send` → Стрим → проверка → внесение ### 2.2 Изменения — только с подтверждения Славы - Любое изменение (создание, удаление, обновление сущности) → **только после ОК Славы** - Исключение: мелкие правки по типу "обновить статус на done" если Слава сам сказал - Спорные вопросы → Слава решает ### 2.3 Принцип одного источника - Информация о проекте/задаче должна быть **только в онтологии** - Не дублировать в MEMORY.md, daily notes, TZ файлах - Исключение: MEMORY.md содержит только **ссылки** на онтологию --- ## 3. Атрибуты сущностей ### Project | Поле | Тип | Обязательно | Описание | |------|-----|-------------|----------| | `name` | string | ✅ | Человеческое название проекта | | `status` | enum | ✅ | planning, active, paused, completed, archived | | `folder` | string | ✅ | Папка проекта: `tasks/{project-slug}/` | | `doc_path` | string | ✅ | Главный файл проекта, обычно `PROJECT.md` | | `description` | string | — | Краткое описание | | `start_date` | date | — | Дата старта | | `end_date` | date | — | Дата окончания | ### Task | Поле | Тип | Обязательно | Описание | |------|-----|-------------|----------| | `title` | string | ✅ | Человеческое название задачи | | `project` | string | ✅ | ID проекта | | `folder` | string | ✅ | Папка задачи внутри проекта | | `doc_path` | string | ✅ | Главный файл задачи, обычно `TASK.md` | | `assignee` | string | — | Исполнитель | | `status` | enum | ✅ | open, in_progress, done, blocked, cancelled | | `priority` | enum | — | high, medium, low, urgent | | `description` | string | — | Детали задачи | --- ## 4. Жизненный цикл ### Создание проекта 1. Слава/агент предлагает → обсуждаем 2. Слава соглашается → Стрим создаёт в онтологии 3. Привязываем `folder` и `doc_path` 4. Создаём структуру `tasks/{project}/` ### Создание задачи 1. Предложение → описание → assignee → приоритет 2. Слава ОК → Стрим создаёт 3. Task привязывается к Project 4. Назначаем `folder` и `doc_path` ### Обновление статуса 1. Кто-то сообщает (Слава, агент, результат работы) 2. Стрим проверяет → обновляет в онтологии 3. Если задача done → проверяем есть ли зависимые ### Закрытие проекта 1. Все задачи done 2. Слава подтверждает → status → done 3. Description обновить с датой закрытия --- ## 5. Проверки (автоматически) При каждом запросе涉及 проектов/задач: - [ ] Данные взяты из онтологии - [ ] Статусы актуальны - [ ] Нет конфликтующих задач - [ ] Assignee соответствует При планировании: - [ ] Проверены зависимости - [ ] Нет блокирующих задач - [ ] Учтены приоритеты --- ## 6. Недопустимо - ❌ Создавать задачи минуя онтологию - ❌ Держать важные данные только в MEMORY.md - ❌ Изменять онтологию без ведома Славы - ❌ Другим агентам писать напрямую - ❌ Удалять сущности без подтверждения --- ## 7. Файлы онтологии ``` memory/ontology/ ├── schema.yaml — схема типов и полей (обязательна валидация) ├── graph.jsonl — сами сущности и связи └── RULES.md — этот файл ``` Ontology skill reference: ``` skills/ontology/references/schema.md ``` Ontology script: ``` skills/ontology/scripts/ontology.py ``` --- ## 8. Исключения Всё что **не относится** к проектам/задачам — в MEMORY.md или daily notes: - Личные заметки о Славе - Пароли/ключи (только .env) - Техническая документация (TZ, PROJECT.md) - Архивные данные --- ## 9. Стандарт структуры папок ### Project ```text tasks// ├── PROJECT.md ├── docs/ ├── journal/ ├── assets/ ├── meta/ └── TASKS/ ├── backlog/ ├── active/ ├── blocked/ ├── done/ └── archive/ ``` ### Task ```text tasks//TASKS/// ├── TASK.md ├── context.md ├── report.md └── attachments/ ``` ### Правило путей - `Project.folder` — папка проекта, всегда читаемый slug. - `Project.doc_path` — главный документ проекта. - `Task.folder` — папка задачи внутри папки проекта, всегда читаемый slug. - `Task.doc_path` — главный документ задачи. - `Task` всегда связан с `Project` и живёт внутри его структуры. - В именах папок и документов не использовать внутренние `id` как часть человекочитаемого названия; внутренний `id` хранится только в онтологии. --- _Обновлено: 2026-04-09_