Files
wiki/memory/ontology/RULES.md
2026-04-18 15:40:01 +03:00

198 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Онтология — Правила ведения
> Эти правила **обязательны** для всех агентов. Невыполнение = нарушение.
---
## 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-slug>/
├── PROJECT.md
├── docs/
├── journal/
├── assets/
├── meta/
└── TASKS/
├── backlog/
├── active/
├── blocked/
├── done/
└── archive/
```
### Task
```text
tasks/<project-slug>/TASKS/<status>/<task-id>/
├── 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_