# 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: - `DAARWIZZ` — мер / city lead - `DARIO` — комʼюніті / city face - `DARIA` — support / tech help - `SOUL` — lead агент District SOUL - `Helion` — lead агент District ENERGYUNION - `GREENFOOD` (ERP Agent) — lead агент District GREENFOOD 2. Інші вже згадані агенти: - `CLAN` — orchestrator для clan-типу microDAO - `DRUID` — лабораторія - `EONARCH` — приватний агент - `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. **Проаналізувати схему**: - переглянути останні міграції: `027_*` (FOUNDATION_UPDATE), - зафіксувати точні назви колонок. 2. **Підготувати seed для DAIS identities**: - створити `dais_identities` для: - DAARWIZZ, DARIO, DARIA, SOUL, Helion, GREENFOOD, CLAN, DRUID, EONARCH, YAROMIR. - якщо emails/wallets вже є — не дублювати. 3. **Створити записи в `agents`**: - звʼязати кожного агента з його `dais_id`. - заповнити: - `display_name`, - `slug`, - `gov_level` (для city/district агентів), - `status = 'active'`. 4. **Створити записи в `microdaos`**: - `daarion`, `energyunion`, `greenfood`, `retreat_hub`, інші реальні. - виставити `dao_type` + `orchestrator_agent_id`. 5. **Створити `agent_assignments`**: - згідно з переліком вище (city, districts). 6. **Створити `permissions`**: - мінімальний набір, щоб Governance UI коректно показував ролі (див. `Agent_Governance_Protocol_v1.md`). 7. **Перевірити `rooms`**: - city rooms та district rooms частково вже seeded FOUNDATION_UPDATE (city-lobby, city-square, city-news, … + rooms для GREENFOOD/ENERGYUNION/SOUL). - Перевірити, чи: - є посилання на owner_microdao / owner_agent (якщо такі колонки є), - не створюються дублікати. 8. **Локально прогнати міграцію** (якщо можливо) або на staging. 9. **Запустити міграцію на NODE1**: - через той самий механізм, що й `027_*`. 10. **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 створювати **лише при наявності реальних фізичних нод**.