- TASK_PHASE_MVP_SEED_REAL_ENTITIES: marked as completed - TASK_PHASE_MVP_VERIFY_NO_ORPHANS: orphan verification task - orphans_20251130.md: audit report with fixes applied Fixes applied on NODE1: - 13 governance agents now have DAIS identity - 4 test agents now have home_microdao_id - All 18 agents, 9 microDAOs, 23 rooms verified
5.0 KiB
5.0 KiB
TASK PHASE — MVP VERIFY NO ORPHANS
Version: 1.0
Target DB: daarion (NODE1)
Goal: гарантувати, що в системі немає "безхозних" нод, агентів і microDAO.
1. Контекст
Після FOUNDATION_UPDATE, нових District Protocols і seed-міграцій:
- додано нові таблиці (
agents,microdaos,nodes,agent_assignments,permissions,rooms,dais_*, …), - оновлено онтологію: не може існувати:
- нода без microDAO/агента-відповідального,
- агент без прив'язки до microDAO (окрім city-агентів),
- microDAO без оркестратора.
Цей таск — чистий аудит БД через SQL.
2. Перевірка нод (nodes)
2.1. Ноди без owner_microdao
-- Nodes without owning microDAO
SELECT node_id, name, kind, microdao_id
FROM nodes
WHERE microdao_id IS NULL;
Очікування:
- 0 рядків (якщо є винятки — зафіксувати явно в коментарях до таблиці/коду).
2.2. Ноди без відповідального агента (node guardian/steward)
-- Nodes without guardian agent (based on current schema)
SELECT n.node_id, n.name
FROM nodes n
LEFT JOIN agents a ON a.node_id = n.node_id AND a.is_node_guardian = true
WHERE a.id IS NULL;
Очікування:
- 0 рядків або явний список нод, де керує сам root-microDAO.
3. Перевірка агентів (agents)
3.1. Агенти без microDAO (крім city-агентів)
-- Agents without owning microDAO (excluding city-level agents)
SELECT id, display_name, kind, home_microdao_id, gov_level
FROM agents
WHERE home_microdao_id IS NULL
AND gov_level NOT IN ('city_governance')
AND id NOT IN ('daarwizz', 'dario', 'daria', 'spirit', 'logic', 'energia');
Очікування:
- 0 рядків (усі агенти, окрім city-level, повинні мати home_microdao_id).
3.2. Агенти без DAIS-ідентичності
-- Agents without DAIS identity
SELECT a.id, a.display_name
FROM agents a
WHERE a.dais_identity_id IS NULL
AND a.gov_level IN ('city_governance', 'district_lead', 'orchestrator', 'core_team');
Очікування:
- 0 рядків для governance/lead агентів.
4. Перевірка microDAO (microdaos)
4.1. microDAO без оркестратора
-- MicroDAO without orchestrator agent
SELECT id, slug, name, dao_type, orchestrator_agent_id
FROM microdaos
WHERE orchestrator_agent_id IS NULL;
Очікування:
- 0 рядків (кожне microDAO має мати orchestrator_agent_id).
4.2. Orchestrator не існує в agents
-- Orchestrator agent must exist in agents table
SELECT m.id, m.slug, m.name, m.orchestrator_agent_id
FROM microdaos m
LEFT JOIN agents a ON m.orchestrator_agent_id = a.id
WHERE a.id IS NULL AND m.orchestrator_agent_id IS NOT NULL;
Очікування:
- 0 рядків.
5. Перевірка rooms (кімнат)
5.1. Кімнати без owner
-- Rooms without any owner
SELECT id, name, owner_type, owner_id, type
FROM rooms
WHERE owner_id IS NULL OR owner_id = '';
Очікування:
- 0 рядків (усі кімнати мають належати city, microDAO, district, або агенту).
5.2. Кімнати без primary_agent
-- District/City rooms without primary agent
SELECT id, name, type, space_scope, primary_agent_id
FROM rooms
WHERE type IN ('city-room', 'district-room', 'front-room')
AND (primary_agent_id IS NULL OR primary_agent_id = '');
Очікування:
- 0 рядків.
6. Дії при виявленні "orphan" записів
Якщо будь-який із запитів повертає рядки:
- Зробити snapshot результату (зберегти у
docs/debug/orphans_YYYYMMDD.md). - Для кожного типу:
- визначити правильного owner або agent,
- або вирішити, що запис зайвий → видалити.
- Створити окрему міграцію:
migrations/0xx_fix_orphans_YYYYMMDD.sql- тільки
UPDATE/DELETE, без зміни схеми.
Після застосування міграції — повторно виконати всі запити з цього таску.
7. Умова завершення фази
Фаза вважається виконаною, якщо:
- всі SQL-запити з розділів 2–5 повертають 0 рядків (або винятки чітко описані й задокументовані),
- є короткий звіт у
docs/debug/orphans_YYYYMMDD.md, - UI:
/nodes+ detail-сторінка ноди працюють,/agents+ кабінети агентів працюють,/microdaoпрацює без помилок.