Skip to content

# TASK PHASE — MVP SEED REAL ENTITIES

Version: 1.0
Status: ✅ COMPLETED
Target: NODE1 (production DB: daarion)
Completed: 2025-11-30

## 1. Мета

Після FOUNDATION_UPDATE та впровадження Governance Backend API:

- БД має всі нові таблиці (agents, microdaos, nodes, dais_*, agent_assignments, permissions, rooms, event_outbox, incidents, …),
- Frontend (Next.js, apps/web) ходить на `/api/v1/*` у city-service,
- Але немає реальних даних (агентів, microDAO, прив'язок), через що:
- `/agents`, `/microdaos`, `/governance`, `/city` у проді виглядають порожніми.

Ціль фази — засідити (seed) реальні агентів, microDAO, базові зв'язки та перевірити, що:

- на daarion.space зʼявляються:
- реальні агенти,
- реальні microDAO,
- реальні districts,
- city/district rooms,
- Governance UI і City UI працюють з живими даними.

## 2. Обсяг робіт (Scope)

### 2.1. Таблиці, які мають бути задіяні

Не змінювати схему, лише наповнити:

- `dais_identities`
- `agents`
- `microdaos`
- `nodes` (тільки реальні, без вигаданих)
- `agent_assignments`
- `permissions`
- `rooms` (перевірити, що seed не дублює існуючі)
- опційно: `event_outbox` (перевірити логування подій)

### 2.2. Кого й що потрібно створити

#### DAIS / Agents (core, що вже існують у концепції та/або в коді)

1. City / Root:
2. `DAARWIZZ` — мер / city lead
3. `DARIO` — комʼюніті / city face
4. `DARIA` — support / tech help
5. `SOUL` — lead агент District SOUL
6. `Helion` — lead агент District ENERGYUNION

7. `GREENFOOD` (ERP Agent) — lead агент District GREENFOOD

8. Інші вже згадані агенти:

9. `CLAN` — orchestrator для clan-типу microDAO
10. `DRUID` — лабораторія
11. `EONARCH` — приватний агент
12. `YAROMIR` — приватний агент

> ВАЖЛИВО:
> Отримати точні назви / slug-и агентів із поточного коду/міграцій (НЕ вигадувати нові).

#### MicroDAO

Мінімальний набір:

- `daarion` (root microDAO / city-level)
- `energyunion` (District — ENERGYUNION)
- `greenfood` (District — GREENFOOD)
- `retreat_hub` (District — SOUL Retreat)
- `clan_*` (якщо вже є реально створений клан microDAO)
- `druid_lab` (якщо існує)
- інші реальні microDAO з БД, якщо вже створювались через UI раніше

Поля (орієнтовно, точний список взяти з міграцій):

- `id` / `slug`
- `name`
- `dao_type` (`root`, `district`, `standard`, `community`, …)
- `orchestrator_agent_id`
- `status` (active)

#### District Lead прив'язки

У таблиці `microdaos` для:

- `daarion` → `dao_type = 'root'`, orchestrator = `DAARWIZZ`
- `energyunion` → `dao_type = 'district'`, orchestrator = `Helion`
- `greenfood` → `dao_type = 'district'`, orchestrator = `GREENFOOD`
- `retreat_hub` → `dao_type = 'district'`, orchestrator = `SOUL`

#### Agent Assignments / Governance

У `agent_assignments` + `permissions`:

- DAARWIZZ:
- scope: `city`
- role: `city_governance`
- DARIO:
- scope: `city`
- role: `city_community`
- DARIA:
- scope: `city`
- role: `city_support`
- Helion:
- scope: `district:energyunion`
- role: `district_lead`
- GREENFOOD:
- scope: `district:greenfood`
- role: `district_lead`
- SOUL:
- scope: `district:retreat_hub`
- role: `district_lead`

(Точні значення enum/рядків взяти з `Agent_Governance_Protocol_v1.md` + актуальних міграцій.)

#### Nodes

- Заповнювати тільки тим, що реально існує (NODE1, NODE2, якщо вони відображаються в схемі як rows у `nodes`).
- Якщо зараз фізичні ноди ще не підʼєднані як entries у БД — цю частину можна пропустити або створити лише запис для `NODE1` (якщо вже використовується в коді).
- Строго дотримуватись правила:

  > "Жодних автосозданих нод — тільки приєднані по факту".

## 3. Реалізація

### 3.1. Формат

Створити одну нову міграцію для seed, наприклад:

- `migrations/033_mvp_seed_real_entities.sql`

Вимоги:

- ідемпотентність:
- використовувати `INSERT ... ON CONFLICT DO NOTHING` (якщо SQL),
- або попередньо перевіряти існування записів.
- НЕ змінювати схему (жодних `ALTER TABLE`), тільки `INSERT`.

### 3.2. Кроки

1. Проаналізувати схему:
2. переглянути останні міграції: `027_*` (FOUNDATION_UPDATE),

3. зафіксувати точні назви колонок.

4. Підготувати seed для DAIS identities:

5. створити `dais_identities` для:
   - DAARWIZZ, DARIO, DARIA, SOUL, Helion, GREENFOOD, CLAN, DRUID, EONARCH, YAROMIR.

6. якщо emails/wallets вже є — не дублювати.

7. Створити записи в `agents`:

8. звʼязати кожного агента з його `dais_id`.

9. заповнити:

   - `display_name`,
   - `slug`,
   - `gov_level` (для city/district агентів),
   - `status = 'active'`.

10. Створити записи в `microdaos`:

11. `daarion`, `energyunion`, `greenfood`, `retreat_hub`, інші реальні.

12. виставити `dao_type` + `orchestrator_agent_id`.

13. Створити `agent_assignments`:

14. згідно з переліком вище (city, districts).

15. Створити `permissions`:

16. мінімальний набір, щоб Governance UI коректно показував ролі (див. `Agent_Governance_Protocol_v1.md`).

17. Перевірити `rooms`:

18. city rooms та district rooms частково вже seeded FOUNDATION_UPDATE (city-lobby, city-square, city-news, … + rooms для GREENFOOD/ENERGYUNION/SOUL).

19. Перевірити, чи:

    - є посилання на owner_microdao / owner_agent (якщо такі колонки є),
    - не створюються дублікати.

20. Локально прогнати міграцію (якщо можливо) або на staging.

21. Запустити міграцію на NODE1:

22. через той самий механізм, що й `027_*`.

23. Smoke-тести в проді:

    - Зайти на:
    - `/agents` — повинні зʼявитись DAARWIZZ, DARIO, DARIA, Helion, GREENFOOD, SOUL, CLAN, DRUID, EONARCH, YAROMIR.
    - `/governance` — показує city governance agents + districts.
    - `/city` — показує city rooms та привʼязаних агентів.
    - `/district/energyunion`, `/district/greenfood`, `/district/soul` (коли будуть маршрути) — інформація не пуста.

## 4. Checklist для завершення фази

- [x] Є файл `migrations/033_mvp_seed_real_entities.sql`.
- [x] Міграція застосована до БД `daarion` на NODE1.
- [x] В `agents` є записи для всіх core-агентів (18 агентів).
- [x] В `microdaos` є root + всі три District (GREENFOOD, ENERGYUNION, SOUL) + інші (9 total).
- [x] В `agent_assignments` та `permissions` є мінімальний набір для:
  - city governance (DAARWIZZ/DARIO/DARIA),
  - district_lead (Helion, GREENFOOD, SOUL).
- [x] На daarion.space:
  - `/governance` показує реальних агентів ✅,
  - `/city` показує city rooms та прив'язки ✅,
  - `/agents` показує 18 агентів ✅.

## 5. Нотатки

- Усі назви агентів, microDAO, полів таблиць — брати з існуючого коду та міграцій.
- Не створювати вигаданих агентів, microDAO, nodes.
- Node entries створювати лише при наявності реальних фізичних нод.