Files
microdao-daarion/site/tasks/TASK_PHASE_MVP_SEED_REAL_ENTITIES/index.html
Apple ef3473db21 snapshot: NODE1 production state 2026-02-09
Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.

Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles

Excluded from snapshot: venv/, .env, data/, backups, .tgz archives

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 08:46:46 -08:00

1005 lines
30 KiB
HTML
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.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/tasks/TASK_PHASE_MVP_SEED_REAL_ENTITIES/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
<title>TASK PHASE — MVP SEED REAL ENTITIES - DAARION Documentation</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#task-phase-mvp-seed-real-entities" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
DAARION Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
TASK PHASE — MVP SEED REAL ENTITIES
</span>
</div>
</div>
</div>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
DAARION Documentation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../public/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../public/getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../public/architecture-overview/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
<span class="md-ellipsis">
DAIS & DAOS
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
Internal
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Internal
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
<span class="md-ellipsis">
Infra
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_1">
<span class="md-nav__icon md-icon"></span>
Infra
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
<span class="md-ellipsis">
Infra Automation Pack v1
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
<span class="md-ellipsis">
Monitoring Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
<span class="md-ellipsis">
Nodes Registry v0
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
<span class="md-ellipsis">
Specs
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_2">
<span class="md-nav__icon md-icon"></span>
Specs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
<span class="md-ellipsis">
Matrix Presence Aggregator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
<span class="md-ellipsis">
City Map Spec
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
<span class="md-ellipsis">
Node Join Protocol (Draft)
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1" class="md-nav__link">
<span class="md-ellipsis">
1. Мета
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-scope" class="md-nav__link">
<span class="md-ellipsis">
2. Обсяг робіт (Scope)
</span>
</a>
<nav class="md-nav" aria-label="2. Обсяг робіт (Scope)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#21" class="md-nav__link">
<span class="md-ellipsis">
2.1. Таблиці, які мають бути задіяні
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#22" class="md-nav__link">
<span class="md-ellipsis">
2.2. Кого й що потрібно створити
</span>
</a>
<nav class="md-nav" aria-label="2.2. Кого й що потрібно створити">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#dais-agents-core" class="md-nav__link">
<span class="md-ellipsis">
DAIS / Agents (core, що вже існують у концепції та/або в коді)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#microdao" class="md-nav__link">
<span class="md-ellipsis">
MicroDAO
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#district-lead" class="md-nav__link">
<span class="md-ellipsis">
District Lead прив'язки
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#agent-assignments-governance" class="md-nav__link">
<span class="md-ellipsis">
Agent Assignments / Governance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#nodes" class="md-nav__link">
<span class="md-ellipsis">
Nodes
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#3" class="md-nav__link">
<span class="md-ellipsis">
3. Реалізація
</span>
</a>
<nav class="md-nav" aria-label="3. Реалізація">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#31" class="md-nav__link">
<span class="md-ellipsis">
3.1. Формат
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#32" class="md-nav__link">
<span class="md-ellipsis">
3.2. Кроки
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#4-checklist" class="md-nav__link">
<span class="md-ellipsis">
4. Checklist для завершення фази
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#5" class="md-nav__link">
<span class="md-ellipsis">
5. Нотатки
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="task-phase-mvp-seed-real-entities">TASK PHASE — MVP SEED REAL ENTITIES<a class="headerlink" href="#task-phase-mvp-seed-real-entities" title="Permanent link">&para;</a></h1>
<p>Version: 1.0<br />
Status: ✅ COMPLETED<br />
Target: NODE1 (production DB: daarion)<br />
Completed: 2025-11-30</p>
<h2 id="1">1. Мета<a class="headerlink" href="#1" title="Permanent link">&para;</a></h2>
<p>Після FOUNDATION_UPDATE та впровадження Governance Backend API:</p>
<ul>
<li>БД має всі нові таблиці (agents, microdaos, nodes, dais_*, agent_assignments, permissions, rooms, event_outbox, incidents, …),</li>
<li>Frontend (Next.js, apps/web) ходить на <code>/api/v1/*</code> у city-service,</li>
<li>Але <strong>немає реальних даних</strong> (агентів, microDAO, прив'язок), через що:</li>
<li><code>/agents</code>, <code>/microdaos</code>, <code>/governance</code>, <code>/city</code> у проді виглядають порожніми.</li>
</ul>
<p>Ціль фази — <strong>засідити (seed)</strong> реальні агентів, microDAO, базові зв'язки та перевірити, що:</p>
<ul>
<li>на daarion.space зʼявляються:</li>
<li>реальні агенти,</li>
<li>реальні microDAO,</li>
<li>реальні districts,</li>
<li>city/district rooms,</li>
<li>Governance UI і City UI працюють з живими даними.</li>
</ul>
<hr />
<h2 id="2-scope">2. Обсяг робіт (Scope)<a class="headerlink" href="#2-scope" title="Permanent link">&para;</a></h2>
<h3 id="21">2.1. Таблиці, які мають бути задіяні<a class="headerlink" href="#21" title="Permanent link">&para;</a></h3>
<p>Не змінювати схему, лише наповнити:</p>
<ul>
<li><code>dais_identities</code></li>
<li><code>agents</code></li>
<li><code>microdaos</code></li>
<li><code>nodes</code> (тільки реальні, без вигаданих)</li>
<li><code>agent_assignments</code></li>
<li><code>permissions</code></li>
<li><code>rooms</code> (перевірити, що seed не дублює існуючі)</li>
<li>опційно: <code>event_outbox</code> (перевірити логування подій)</li>
</ul>
<h3 id="22">2.2. Кого й що потрібно створити<a class="headerlink" href="#22" title="Permanent link">&para;</a></h3>
<h4 id="dais-agents-core">DAIS / Agents (core, що вже існують у концепції та/або в коді)<a class="headerlink" href="#dais-agents-core" title="Permanent link">&para;</a></h4>
<ol>
<li>City / Root:</li>
<li><code>DAARWIZZ</code> — мер / city lead</li>
<li><code>DARIO</code> — комʼюніті / city face</li>
<li><code>DARIA</code> — support / tech help</li>
<li><code>SOUL</code> — lead агент District SOUL</li>
<li><code>Helion</code> — lead агент District ENERGYUNION</li>
<li>
<p><code>GREENFOOD</code> (ERP Agent) — lead агент District GREENFOOD</p>
</li>
<li>
<p>Інші вже згадані агенти:</p>
</li>
<li><code>CLAN</code> — orchestrator для clan-типу microDAO</li>
<li><code>DRUID</code> — лабораторія</li>
<li><code>EONARCH</code> — приватний агент</li>
<li><code>YAROMIR</code> — приватний агент</li>
</ol>
<blockquote>
<p>ВАЖЛИВО:<br />
Отримати точні назви / slug-и агентів із поточного коду/міграцій (НЕ вигадувати нові).</p>
</blockquote>
<h4 id="microdao">MicroDAO<a class="headerlink" href="#microdao" title="Permanent link">&para;</a></h4>
<p>Мінімальний набір:</p>
<ul>
<li><code>daarion</code> (root microDAO / city-level)</li>
<li><code>energyunion</code> (District — ENERGYUNION)</li>
<li><code>greenfood</code> (District — GREENFOOD)</li>
<li><code>retreat_hub</code> (District — SOUL Retreat)</li>
<li><code>clan_*</code> (якщо вже є реально створений клан microDAO)</li>
<li><code>druid_lab</code> (якщо існує)</li>
<li>інші реальні microDAO з БД, якщо вже створювались через UI раніше</li>
</ul>
<p>Поля (орієнтовно, точний список взяти з міграцій):</p>
<ul>
<li><code>id</code> / <code>slug</code></li>
<li><code>name</code></li>
<li><code>dao_type</code> (<code>root</code>, <code>district</code>, <code>standard</code>, <code>community</code>, …)</li>
<li><code>orchestrator_agent_id</code></li>
<li><code>status</code> (active)</li>
</ul>
<h4 id="district-lead">District Lead прив'язки<a class="headerlink" href="#district-lead" title="Permanent link">&para;</a></h4>
<p>У таблиці <code>microdaos</code> для:</p>
<ul>
<li><code>daarion</code><code>dao_type = 'root'</code>, orchestrator = <code>DAARWIZZ</code></li>
<li><code>energyunion</code><code>dao_type = 'district'</code>, orchestrator = <code>Helion</code></li>
<li><code>greenfood</code><code>dao_type = 'district'</code>, orchestrator = <code>GREENFOOD</code></li>
<li><code>retreat_hub</code><code>dao_type = 'district'</code>, orchestrator = <code>SOUL</code></li>
</ul>
<h4 id="agent-assignments-governance">Agent Assignments / Governance<a class="headerlink" href="#agent-assignments-governance" title="Permanent link">&para;</a></h4>
<p>У <code>agent_assignments</code> + <code>permissions</code>:</p>
<ul>
<li>DAARWIZZ:</li>
<li>scope: <code>city</code></li>
<li>role: <code>city_governance</code></li>
<li>DARIO:</li>
<li>scope: <code>city</code></li>
<li>role: <code>city_community</code></li>
<li>DARIA:</li>
<li>scope: <code>city</code></li>
<li>role: <code>city_support</code></li>
<li>Helion:</li>
<li>scope: <code>district:energyunion</code></li>
<li>role: <code>district_lead</code></li>
<li>GREENFOOD:</li>
<li>scope: <code>district:greenfood</code></li>
<li>role: <code>district_lead</code></li>
<li>SOUL:</li>
<li>scope: <code>district:retreat_hub</code></li>
<li>role: <code>district_lead</code></li>
</ul>
<p>(Точні значення enum/рядків взяти з <code>Agent_Governance_Protocol_v1.md</code> + актуальних міграцій.)</p>
<h4 id="nodes">Nodes<a class="headerlink" href="#nodes" title="Permanent link">&para;</a></h4>
<ul>
<li>Заповнювати тільки тим, що реально існує (NODE1, NODE2, якщо вони відображаються в схемі як rows у <code>nodes</code>).</li>
<li>Якщо зараз фізичні ноди ще не підʼєднані як entries у БД — цю частину можна пропустити або створити лише запис для <code>NODE1</code> (якщо вже використовується в коді).</li>
<li>Строго дотримуватись правила:<blockquote>
<p>"Жодних автосозданих нод — тільки приєднані по факту".</p>
</blockquote>
</li>
</ul>
<hr />
<h2 id="3">3. Реалізація<a class="headerlink" href="#3" title="Permanent link">&para;</a></h2>
<h3 id="31">3.1. Формат<a class="headerlink" href="#31" title="Permanent link">&para;</a></h3>
<p>Створити <strong>одну нову міграцію</strong> для seed, наприклад:</p>
<ul>
<li><code>migrations/033_mvp_seed_real_entities.sql</code></li>
</ul>
<p>Вимоги:</p>
<ul>
<li><strong>ідемпотентність</strong>:</li>
<li>використовувати <code>INSERT ... ON CONFLICT DO NOTHING</code> (якщо SQL),</li>
<li>або попередньо перевіряти існування записів.</li>
<li>НЕ змінювати схему (жодних <code>ALTER TABLE</code>), тільки <code>INSERT</code>.</li>
</ul>
<h3 id="32">3.2. Кроки<a class="headerlink" href="#32" title="Permanent link">&para;</a></h3>
<ol>
<li><strong>Проаналізувати схему</strong>:</li>
<li>переглянути останні міграції: <code>027_*</code> (FOUNDATION_UPDATE),</li>
<li>
<p>зафіксувати точні назви колонок.</p>
</li>
<li>
<p><strong>Підготувати seed для DAIS identities</strong>:</p>
</li>
<li>створити <code>dais_identities</code> для:<ul>
<li>DAARWIZZ, DARIO, DARIA, SOUL, Helion, GREENFOOD, CLAN, DRUID, EONARCH, YAROMIR.</li>
</ul>
</li>
<li>
<p>якщо emails/wallets вже є — не дублювати.</p>
</li>
<li>
<p><strong>Створити записи в <code>agents</code></strong>:</p>
</li>
<li>звʼязати кожного агента з його <code>dais_id</code>.</li>
<li>
<p>заповнити:</p>
<ul>
<li><code>display_name</code>,</li>
<li><code>slug</code>,</li>
<li><code>gov_level</code> (для city/district агентів),</li>
<li><code>status = 'active'</code>.</li>
</ul>
</li>
<li>
<p><strong>Створити записи в <code>microdaos</code></strong>:</p>
</li>
<li><code>daarion</code>, <code>energyunion</code>, <code>greenfood</code>, <code>retreat_hub</code>, інші реальні.</li>
<li>
<p>виставити <code>dao_type</code> + <code>orchestrator_agent_id</code>.</p>
</li>
<li>
<p><strong>Створити <code>agent_assignments</code></strong>:</p>
</li>
<li>
<p>згідно з переліком вище (city, districts).</p>
</li>
<li>
<p><strong>Створити <code>permissions</code></strong>:</p>
</li>
<li>
<p>мінімальний набір, щоб Governance UI коректно показував ролі (див. <code>Agent_Governance_Protocol_v1.md</code>).</p>
</li>
<li>
<p><strong>Перевірити <code>rooms</code></strong>:</p>
</li>
<li>city rooms та district rooms частково вже seeded FOUNDATION_UPDATE (city-lobby, city-square, city-news, … + rooms для GREENFOOD/ENERGYUNION/SOUL).</li>
<li>
<p>Перевірити, чи:</p>
<ul>
<li>є посилання на owner_microdao / owner_agent (якщо такі колонки є),</li>
<li>не створюються дублікати.</li>
</ul>
</li>
<li>
<p><strong>Локально прогнати міграцію</strong> (якщо можливо) або на staging.</p>
</li>
<li>
<p><strong>Запустити міграцію на NODE1</strong>:</p>
</li>
<li>
<p>через той самий механізм, що й <code>027_*</code>.</p>
</li>
<li>
<p><strong>Smoke-тести в проді</strong>:</p>
<ul>
<li>Зайти на:</li>
<li><code>/agents</code> — повинні зʼявитись DAARWIZZ, DARIO, DARIA, Helion, GREENFOOD, SOUL, CLAN, DRUID, EONARCH, YAROMIR.</li>
<li><code>/governance</code> — показує city governance agents + districts.</li>
<li><code>/city</code> — показує city rooms та привʼязаних агентів.</li>
<li><code>/district/energyunion</code>, <code>/district/greenfood</code>, <code>/district/soul</code> (коли будуть маршрути) — інформація не пуста.</li>
</ul>
</li>
</ol>
<hr />
<h2 id="4-checklist">4. Checklist для завершення фази<a class="headerlink" href="#4-checklist" title="Permanent link">&para;</a></h2>
<ul>
<li>[x] Є файл <code>migrations/033_mvp_seed_real_entities.sql</code>.</li>
<li>[x] Міграція застосована до БД <code>daarion</code> на NODE1.</li>
<li>[x] В <code>agents</code> є записи для всіх core-агентів (18 агентів).</li>
<li>[x] В <code>microdaos</code> є root + всі три District (GREENFOOD, ENERGYUNION, SOUL) + інші (9 total).</li>
<li>[x] В <code>agent_assignments</code> та <code>permissions</code> є мінімальний набір для:<ul>
<li>city governance (DAARWIZZ/DARIO/DARIA),</li>
<li>district_lead (Helion, GREENFOOD, SOUL).</li>
</ul>
</li>
<li>[x] На daarion.space:<ul>
<li><code>/governance</code> показує реальних агентів ✅,</li>
<li><code>/city</code> показує city rooms та прив'язки ✅,</li>
<li><code>/agents</code> показує 18 агентів ✅.</li>
</ul>
</li>
</ul>
<hr />
<h2 id="5">5. Нотатки<a class="headerlink" href="#5" title="Permanent link">&para;</a></h2>
<ul>
<li>Усі назви агентів, microDAO, полів таблиць — брати з існуючого коду та міграцій. </li>
<li>Не створювати вигаданих агентів, microDAO, nodes. </li>
<li>Node entries створювати <strong>лише при наявності реальних фізичних нод</strong>.</li>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
</body>
</html>