Files
microdao-daarion/site/foundation/User_Onboarding_And_Identity_Layer_v1/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

870 lines
29 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/foundation/User_Onboarding_And_Identity_Layer_v1/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
<title>User_Onboarding_And_Identity_Layer_v1.md - 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="#user_onboarding_and_identity_layer_v1md" 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">
User_Onboarding_And_Identity_Layer_v1.md
</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="#daarioncity-user-onboarding-identity-layer-dais" class="md-nav__link">
<span class="md-ellipsis">
DAARION.city — User Onboarding &amp; Identity Layer (DAIS)
</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="user_onboarding_and_identity_layer_v1md">User_Onboarding_And_Identity_Layer_v1.md<a class="headerlink" href="#user_onboarding_and_identity_layer_v1md" title="Permanent link">&para;</a></h1>
<h2 id="daarioncity-user-onboarding-identity-layer-dais">DAARION.city — User Onboarding &amp; Identity Layer (DAIS)<a class="headerlink" href="#daarioncity-user-onboarding-identity-layer-dais" title="Permanent link">&para;</a></h2>
<p><strong>Version:</strong> 1.0
<strong>Status:</strong> Core Spec (Foundation Update)
<strong>Scope:</strong> Реєстрація користувача, створення агентів, DAIS, wallet-логін, Orchestrator, MicroDAO</p>
<hr />
<h1 id="0">0. Мета документа<a class="headerlink" href="#0" title="Permanent link">&para;</a></h1>
<p>Цей документ описує <strong>повний процес онбордингу користувача</strong> в DAARION.city:</p>
<ul>
<li>реєстрацію → DAIS-профіль → Agent → Orchestrator → MicroDAO;</li>
<li>Email-OTP та Magic Link;</li>
<li>Web3 Wallet login та SIWE;</li>
<li>правила доступу, ролі та підвищення;</li>
<li>зберігання та синхронізацію ідентичностей;</li>
<li>формування кабінету агента;</li>
<li>перевірку токенів та прав на створення MicroDAO.</li>
</ul>
<p>Документ створено як <strong>неламке оновлення архітектури (non-breaking)</strong>.</p>
<hr />
<h1 id="1">1. Загальний огляд онбордингу<a class="headerlink" href="#1" title="Permanent link">&para;</a></h1>
<p>Онбординг DAARION.city складається з трьох рівнів:</p>
<ol>
<li>
<p><strong>DAIS Identity Layer</strong>
— email, wallet, DID, keys → єдиний цифровий профіль.</p>
</li>
<li>
<p><strong>Agent Creation Layer</strong>
— автоматичне створення агента + кабінету при першій реєстрації.</p>
</li>
<li>
<p><strong>Orchestrator → MicroDAO Layer</strong>
— підвищення агента + створення MicroDAO за умовами доступу.</p>
</li>
</ol>
<p>Це забезпечує інтуїтивний UX та жорстку архітектурну дисципліну.</p>
<hr />
<h1 id="2-dais-identity-layer">2. DAIS Identity Layer<a class="headerlink" href="#2-dais-identity-layer" title="Permanent link">&para;</a></h1>
<p>DAIS = <strong>DAARION Autonomous Identity System</strong>.
Це єдиний простір ідентифікації для людей, агентів і MicroDAO.</p>
<h2 id="21-dais-">2.1. Структура DAIS-ідентичності<a class="headerlink" href="#21-dais-" title="Permanent link">&para;</a></h2>
<p>DAIS-ідентичність містить:</p>
<ul>
<li><strong>email-identities</strong> (1..N)</li>
<li><strong>wallet-identities</strong> (EVM / SIWE)</li>
<li><strong>telegram / TON identities</strong> (майбутнє)</li>
<li><strong>DID / Matrix identity</strong></li>
<li><strong>public keys</strong> (Ed25519 / secp256k1 / X25519)</li>
<li><strong>signature domains</strong> (підписи для сервісів)</li>
<li><strong>recovery options</strong></li>
</ul>
<h2 id="22-dais">2.2. Інваріанти DAIS<a class="headerlink" href="#22-dais" title="Permanent link">&para;</a></h2>
<ol>
<li>Один користувач = одна DAIS-ідентичність.</li>
<li>DAIS-профіль може мати багато email'ів і багато wallet'ів.</li>
<li>DAIS-профіль створюється <strong>до</strong> створення агента.</li>
<li>DAIS-профіль не може бути видалений, тільки ротується/оновлюється.</li>
</ol>
<hr />
<h1 id="3">3. Реєстрація та автентифікація<a class="headerlink" href="#3" title="Permanent link">&para;</a></h1>
<p>DAARION.city підтримує два базові методи входу:</p>
<h2 id="31-email-otp-one-time-password">3.1. Email-OTP (One-Time Password)<a class="headerlink" href="#31-email-otp-one-time-password" title="Permanent link">&para;</a></h2>
<p>Флоу:</p>
<ol>
<li>Користувач вводить email.</li>
<li>Отримує одноразовий код (OTP).</li>
<li>Підтверджує код.</li>
<li>Створюється/активується DAIS-profile.</li>
<li>Створюється Agent + кабінет.</li>
</ol>
<p>Переваги:</p>
<ul>
<li>Zero-password.</li>
<li>Найменший бар'єр входу.</li>
<li>Підходить для всіх типів користувачів.</li>
</ul>
<h2 id="32-magic-link">3.2. Magic Link<a class="headerlink" href="#32-magic-link" title="Permanent link">&para;</a></h2>
<p>Флоу:</p>
<ol>
<li>Користувач вводить email.</li>
<li>Отримує магічне посилання.</li>
<li>Перехід → автоматичний вхід.</li>
<li>Створюється DAIS-profile → Agent.</li>
</ol>
<h2 id="33-web3-wallet-login-siwe">3.3. Web3 Wallet Login (SIWE)<a class="headerlink" href="#33-web3-wallet-login-siwe" title="Permanent link">&para;</a></h2>
<p>Підтримка: MetaMask, Rabby, WalletConnect.</p>
<p>Флоу:</p>
<ol>
<li>Користувач підключає EVM-гаманець.</li>
<li>Підписує SIWE-повідомлення.</li>
<li>Створюється/активується DAIS-profile.</li>
<li>Гаманець стає частиною DAIS-ідентичності.</li>
<li>Створюється Agent.</li>
</ol>
<h2 id="34-email-wallet">3.4. Синхронізація Email + Wallet<a class="headerlink" href="#34-email-wallet" title="Permanent link">&para;</a></h2>
<p>Будь-який окремий метод додає ідентичність у DAIS.
При об'єднанні email і wallet → DAIS залишається єдиною сутністю.</p>
<hr />
<h1 id="4-agent-creation-layer">4. Створення Агентів (Agent Creation Layer)<a class="headerlink" href="#4-agent-creation-layer" title="Permanent link">&para;</a></h1>
<h2 id="41-agent">4.1. Коли створюється Agent<a class="headerlink" href="#41-agent" title="Permanent link">&para;</a></h2>
<p>Agent створюється автоматично при:</p>
<ul>
<li>першому вході через email OTP,</li>
<li>або першій верифікованій SIWE-сесії,</li>
<li>або при Telegram/TON-верифікації в майбутньому.</li>
</ul>
<h2 id="42">4.2. Агент отримує:<a class="headerlink" href="#42" title="Permanent link">&para;</a></h2>
<ul>
<li><code>agent_id</code></li>
<li><code>home_microdao_id = DAARION (root)</code></li>
<li><code>home_node_id = DAARION-root-node</code></li>
<li>DAIS-прив'язку</li>
<li>Кабінет агента</li>
<li>Роль: <code>regular</code></li>
</ul>
<h2 id="43">4.3. Кабінет агента включає:<a class="headerlink" href="#43" title="Permanent link">&para;</a></h2>
<ul>
<li>Wallet overview</li>
<li>Email overview</li>
<li>Agent avatar / profile</li>
<li>Список підключених нод</li>
<li>Доступні сервіси</li>
<li>Статус до MicroDAO</li>
<li>Кнопку «Стати Оркестратором»</li>
</ul>
<hr />
<h1 id="5-orchestrator-orchestrator-promotion">5. Перехід у Orchestrator (Orchestrator Promotion)<a class="headerlink" href="#5-orchestrator-orchestrator-promotion" title="Permanent link">&para;</a></h1>
<p>Це ключовий момент.</p>
<p>Користувач <strong>не може</strong> створити MicroDAO, поки:</p>
<ul>
<li>не має агента,</li>
<li>не має оркестраторської ролі,</li>
<li>не виконав умови допуску.</li>
</ul>
<h2 id="51">5.1. Флоу переходу<a class="headerlink" href="#51" title="Permanent link">&para;</a></h2>
<ol>
<li>Користувач натискає «Стати Оркестратором».</li>
<li>Система перевіряє <strong>умови доступу</strong>.</li>
<li>Якщо всі умови виконано → підвищення агента.</li>
<li>Генерується подія <code>agent.promoted_to_orchestrator</code>.</li>
<li>Роль агента = <code>orchestrator</code>.</li>
<li>Відкривається Wizard створення MicroDAO.</li>
</ol>
<h2 id="52">5.2. Умови допуску<a class="headerlink" href="#52" title="Permanent link">&para;</a></h2>
<p>Умови встановлюються governance DAARION і можуть включати:</p>
<ul>
<li>прив'язаний Web3-гаманець;</li>
<li>наявність основного токена (DAAR / DAARION);</li>
<li>спеціальний NFT (Founder / Builder / Citizen);</li>
<li>підтверджений email (обов'язково);</li>
<li>мінімальний рівень довіри DAIS;</li>
<li>проста верифікація через Matrix/Telegram.</li>
</ul>
<h2 id="53-orchestrator">5.3. Інваріанти Orchestrator<a class="headerlink" href="#53-orchestrator" title="Permanent link">&para;</a></h2>
<ol>
<li>Кожен Orchestrator — це Agent, але не кожен Agent є Orchestrator.</li>
<li>Підвищення — це <strong>одна подія</strong> на агент (необоротна, але можна «заморозити» вручну).</li>
<li>Orchestrator може створити багато MicroDAO.</li>
</ol>
<hr />
<h1 id="6-microdao">6. Створення MicroDAO<a class="headerlink" href="#6-microdao" title="Permanent link">&para;</a></h1>
<p>Коли агент стає Orchestrator → доступний Wizard створення MicroDAO.</p>
<h2 id="61">6.1. Флоу<a class="headerlink" href="#61" title="Permanent link">&para;</a></h2>
<ol>
<li>Старт Wizard: назва, опис, цілі, аватар.</li>
<li>Прив'язка DAIS-гаманця MicroDAO.</li>
<li>Створення запису <code>microdao_id</code>.</li>
<li><code>primary_orchestrator_agent_id = цей агент</code>.</li>
<li>Ініціалізація governance.</li>
<li>Створення простору MicroDAO (канали, кімнати).</li>
<li>Генерується подія <code>microdao.created</code>.</li>
<li>Користувач переходить у кабінет MicroDAO.</li>
</ol>
<h2 id="62-microdao">6.2. Інваріанти MicroDAO в онбордингу<a class="headerlink" href="#62-microdao" title="Permanent link">&para;</a></h2>
<ol>
<li>Немає MicroDAO без Orchestrator-Agent.</li>
<li>MicroDAO створюється саме в момент запуску Wizard, а не раніше.</li>
<li>Доступ до створення MicroDAO має лише Orchestrator.</li>
</ol>
<hr />
<h1 id="7-microdao">7. Після створення MicroDAO: реєстрація нод<a class="headerlink" href="#7-microdao" title="Permanent link">&para;</a></h1>
<p>MicroDAO одразу отримує можливість:</p>
<ul>
<li>реєструвати ноди,</li>
<li>прив'язувати пристрої,</li>
<li>запускати сервісних агентів.</li>
</ul>
<p>Флоу:</p>
<ol>
<li>Orchestrator заходить у MicroDAO → Nodes.</li>
<li>Обирає «Зареєструвати Ноду».</li>
<li>Тип ноди: смартфон, ноут, сервер, IoT, GPU-кластер.</li>
<li>Автентифікація через DAIS-ключ.</li>
<li>Створюється запис <code>node_id</code>.</li>
<li>Генерується подія <code>node.registered</code>.</li>
</ol>
<hr />
<h1 id="8">8. Значення онбордингу для онтології<a class="headerlink" href="#8" title="Permanent link">&para;</a></h1>
<p>Оновлений онбординг:</p>
<ul>
<li><strong>повністю відповідає онтології</strong> Agent → MicroDAO → Node → District</li>
<li>не ламає поточний UI (кнопка «Створити MicroDAO» зберігається)</li>
<li>
<p>додає строгий порядок:</p>
</li>
<li>
<p>DAIS Identity</p>
</li>
<li>Agent</li>
<li>Orchestrator</li>
<li>MicroDAO</li>
<li>Node</li>
<li>District (опційно)</li>
</ul>
<hr />
<h1 id="9-stream-nats">9. Події Stream (NATS)<a class="headerlink" href="#9-stream-nats" title="Permanent link">&para;</a></h1>
<p>Під час онбордингу фіксуються ключові події:</p>
<ol>
<li><code>dais.identity_created</code></li>
<li><code>agent.created</code></li>
<li><code>agent.promoted_to_orchestrator</code></li>
<li><code>microdao.created</code></li>
<li><code>node.registered</code></li>
<li>(опційно) <code>microdao.promoted_to_district</code></li>
</ol>
<hr />
<h1 id="10">10. Резюме<a class="headerlink" href="#10" title="Permanent link">&para;</a></h1>
<p>Оновлений онбординг DAARION забезпечує:</p>
<ul>
<li>єдину ідентичність DAIS</li>
<li>автоматичне створення агента</li>
<li>чіткі умови доступу для Orchestrator</li>
<li>чисту модель MicroDAO</li>
<li>логічний шлях до реєстрації нод</li>
<li>сумісність з майбутнім District Layer</li>
<li>UX, що не ламає існуючих сценаріїв</li>
</ul>
<hr />
<p>Документ №2 завершено.</p>
</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>