Files
microdao-daarion/docs/tasks/TASK_PHASE_MVP_VERIFY_NO_ORPHANS.md
Apple 3e778e0f81 docs: MVP seed completed + orphan audit
- 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
2025-11-30 06:05:03 -08:00

5.0 KiB
Raw Blame History

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" записів

Якщо будь-який із запитів повертає рядки:

  1. Зробити snapshot результату (зберегти у docs/debug/orphans_YYYYMMDD.md).
  2. Для кожного типу:
    • визначити правильного owner або agent,
    • або вирішити, що запис зайвий → видалити.
  3. Створити окрему міграцію:
    • migrations/0xx_fix_orphans_YYYYMMDD.sql
    • тільки UPDATE/DELETE, без зміни схеми.

Після застосування міграції — повторно виконати всі запити з цього таску.


7. Умова завершення фази

Фаза вважається виконаною, якщо:

  • всі SQL-запити з розділів 25 повертають 0 рядків (або винятки чітко описані й задокументовані),
  • є короткий звіт у docs/debug/orphans_YYYYMMDD.md,
  • UI:
    • /nodes + detail-сторінка ноди працюють,
    • /agents + кабінети агентів працюють,
    • /microdao працює без помилок.