Files
microdao-daarion/site/checklists/DEPLOY_VERIFICATION_CHECKLIST_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

1667 lines
51 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/checklists/DEPLOY_VERIFICATION_CHECKLIST_v1/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
<title>DEPLOY_VERIFICATION_CHECKLIST_v1 - 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="#deploy_verification_checklist_v1" 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">
DEPLOY_VERIFICATION_CHECKLIST_v1
</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="#i-node-registry-node-cabinet" class="md-nav__link">
<span class="md-ellipsis">
I. Node Registry / Node Cabinet
</span>
</a>
<nav class="md-nav" aria-label="I. Node Registry / Node Cabinet">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-node_registry" class="md-nav__link">
<span class="md-ellipsis">
1. Чи всі ноди зареєстровані в node_registry?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-post-internalnodesregister-or-update" class="md-nav__link">
<span class="md-ellipsis">
2. Чи працює POST /internal/nodes/register-or-update?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-apiv1nodes" class="md-nav__link">
<span class="md-ellipsis">
3. Чи показує /api/v1/nodes правильну кількість нод?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#4-ui-api" class="md-nav__link">
<span class="md-ellipsis">
4. Чи зникли ноди з UI після оновлення? Чи це помилка API чи реальний стан?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#5-last_heartbeat" class="md-nav__link">
<span class="md-ellipsis">
5. Чи у всіх нод є свіжий last_heartbeat?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ii-node-metrics-gpucpuramdisk" class="md-nav__link">
<span class="md-ellipsis">
II. Node Metrics (GPU/CPU/RAM/Disk)
</span>
</a>
<nav class="md-nav" aria-label="II. Node Metrics (GPU/CPU/RAM/Disk)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#6-internalnodeidmetricscurrent" class="md-nav__link">
<span class="md-ellipsis">
6. Чи повертає /internal/node/{id}/metrics/current:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#7" class="md-nav__link">
<span class="md-ellipsis">
7. Чи метрики не “обнулилися” після деплою?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#8-node-cabinet-node_cache" class="md-nav__link">
<span class="md-ellipsis">
8. Чи не зникли агенти в Node Cabinet через порожній node_cache?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#iii-node-core-agents-8-daos" class="md-nav__link">
<span class="md-ellipsis">
III. Node Core Agents (8 агентів DAOS)
</span>
</a>
<nav class="md-nav" aria-label="III. Node Core Agents (8 агентів DAOS)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#9" class="md-nav__link">
<span class="md-ellipsis">
9. Чи існують:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#10-node_id" class="md-nav__link">
<span class="md-ellipsis">
10. Чи всі вони мають node_id?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#11-public_slug-ui" class="md-nav__link">
<span class="md-ellipsis">
11. Чи всі мають public_slug → UI кабінет відкривається?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#12-system-prompts-core-safety" class="md-nav__link">
<span class="md-ellipsis">
12. Чи всі мають System Prompts (core обов’язково, де треба — safety)?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#13-nodesnodeid" class="md-nav__link">
<span class="md-ellipsis">
13. Чи видно їх у /nodes/{nodeId} у відповідних секціях?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#iv-dagi-router-dagi-audit" class="md-nav__link">
<span class="md-ellipsis">
IV. DAGI Router / DAGI Audit
</span>
</a>
<nav class="md-nav" aria-label="IV. DAGI Router / DAGI Audit">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#14-internalnodeiddagi-routeragents" class="md-nav__link">
<span class="md-ellipsis">
14. Чи працює /internal/node/{id}/dagi-router/agents?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#15-router_total-1-system_total-1" class="md-nav__link">
<span class="md-ellipsis">
15. Чи є router_total &gt;= 1 і system_total &gt;= 1?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#16-dagi-agent-autosync" class="md-nav__link">
<span class="md-ellipsis">
16. Чи працює DAGI-agent autosync?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#17-phantomstale-20" class="md-nav__link">
<span class="md-ellipsis">
17. Чи phantom/stale ≤ 20 (або інший поріг)?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#18-post-dagi-auditrun" class="md-nav__link">
<span class="md-ellipsis">
18. Чи запускається POST /dagi-audit/run без помилок?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#19-dagi-router-agent-healthz" class="md-nav__link">
<span class="md-ellipsis">
19. Чи DAGI Router Agent бачить сервіс у /healthz?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#v-swapper-service-models" class="md-nav__link">
<span class="md-ellipsis">
V. Swapper Service / Models
</span>
</a>
<nav class="md-nav" aria-label="V. Swapper Service / Models">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#20-swapper-healthz" class="md-nav__link">
<span class="md-ellipsis">
20. Чи Swapper відповідає на /healthz?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#21-apimodels" class="md-nav__link">
<span class="md-ellipsis">
21. Чи моделі завантажені (/api/models)?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#22" class="md-nav__link">
<span class="md-ellipsis">
22. Чи мінімальний набір моделей присутній?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#23-vram-usage-restart" class="md-nav__link">
<span class="md-ellipsis">
23. Чи VRAM usage коректний після restart?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#24-swapper-agent-pullunload" class="md-nav__link">
<span class="md-ellipsis">
24. Чи Swapper Agent може робити pull/unload моделей?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#vi-multimodal-stack" class="md-nav__link">
<span class="md-ellipsis">
VI. Multimodal Stack (повний)
</span>
</a>
<nav class="md-nav" aria-label="VI. Multimodal Stack (повний)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#25" class="md-nav__link">
<span class="md-ellipsis">
25. Чи працюють:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#26-multimodal-agent-prompts" class="md-nav__link">
<span class="md-ellipsis">
26. Чи Multimodal Agent має prompts з повним переліком функцій?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#27-healthz-sttocrvlm" class="md-nav__link">
<span class="md-ellipsis">
27. Чи healthz STT/OCR/VLM сервісів працюють?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#vii-microdao-districts-rooms" class="md-nav__link">
<span class="md-ellipsis">
VII. MicroDAO / Districts / Rooms
</span>
</a>
<nav class="md-nav" aria-label="VII. MicroDAO / Districts / Rooms">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#28" class="md-nav__link">
<span class="md-ellipsis">
28. Чи працюють:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#29-district-portal-leadcore-agents" class="md-nav__link">
<span class="md-ellipsis">
29. Чи District Portal показує lead/core agents?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#30-microdao-agents-section-badgesroles" class="md-nav__link">
<span class="md-ellipsis">
30. Чи MicroDAO Agents Section відображає badges/roles?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#31-rooms-operationstreasuryevents" class="md-nav__link">
<span class="md-ellipsis">
31. Чи всі rooms відображаються (operations/treasury/events/...)?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#viii-agents-system-prompts-mvp" class="md-nav__link">
<span class="md-ellipsis">
VIII. Agents System Prompts MVP
</span>
</a>
<nav class="md-nav" aria-label="VIII. Agents System Prompts MVP">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#32-core-core-prompts" class="md-nav__link">
<span class="md-ellipsis">
32. Чи всі core-агенти Міста мають core prompts:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#33-ui-system-prompts" class="md-nav__link">
<span class="md-ellipsis">
33. Чи працює UI вкладка “System Prompts”?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#34-getput-apiv1agentsidprompts" class="md-nav__link">
<span class="md-ellipsis">
34. Чи GET/PUT /api/v1/agents/{id}/prompts працює без помилок?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#35-dagi-router-prompts-runtime" class="md-nav__link">
<span class="md-ellipsis">
35. Чи DAGI Router правильно підтягує prompts при runtime?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ix-node-self-healing" class="md-nav__link">
<span class="md-ellipsis">
IX. Node Self-Healing
</span>
</a>
<nav class="md-nav" aria-label="IX. Node Self-Healing">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#36-node-guardian" class="md-nav__link">
<span class="md-ellipsis">
36. Чи Node Guardian запускає перевірки?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#37-self-healing-event-nats" class="md-nav__link">
<span class="md-ellipsis">
37. Чи Self-healing event-и пишуться в NATS?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#38-dagi-router-agent" class="md-nav__link">
<span class="md-ellipsis">
38. Чи DAGI Router Agent може:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#39-swapper-agent" class="md-nav__link">
<span class="md-ellipsis">
39. Чи Swapper Agent може:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#40-multimodal-agent" class="md-nav__link">
<span class="md-ellipsis">
40. Чи Multimodal Agent може:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#x-api-health-smoke-tests-invariants" class="md-nav__link">
<span class="md-ellipsis">
X. API Health / Smoke Tests / Invariants
</span>
</a>
<nav class="md-nav" aria-label="X. API Health / Smoke Tests / Invariants">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#41-healthz-200" class="md-nav__link">
<span class="md-ellipsis">
41. Чи /healthz → 200?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#42-check-invariantspy" class="md-nav__link">
<span class="md-ellipsis">
42. Чи проходить check-invariants.py без помилок?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#43-smoke-pytest-teststest_infra_smokepy" class="md-nav__link">
<span class="md-ellipsis">
43. Чи smoke-тести (pytest tests/test_infra_smoke.py) проходять?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#44-select-from-migrations" class="md-nav__link">
<span class="md-ellipsis">
44. Чи всі міграції застосовані (SELECT * FROM migrations)?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#45-seed-" class="md-nav__link">
<span class="md-ellipsis">
45. Чи seed-и не перезаписали агентів неправильно?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#xi-frontend" class="md-nav__link">
<span class="md-ellipsis">
XI. Frontend
</span>
</a>
<nav class="md-nav" aria-label="XI. Frontend">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#46-npm-run-build" class="md-nav__link">
<span class="md-ellipsis">
46. Чи всі сторінки збираються (npm run build)?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#47-nodes-0" class="md-nav__link">
<span class="md-ellipsis">
47. Чи /nodes не падає і не показує "0" нод помилково?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#48-dagi-router-card" class="md-nav__link">
<span class="md-ellipsis">
48. Чи DAGI Router Card працює?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#49-node-cabinet-78-core-" class="md-nav__link">
<span class="md-ellipsis">
49. Чи Node Cabinet показує всі 78 core-агентів?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#50-agents-page-agentsslug-daos-" class="md-nav__link">
<span class="md-ellipsis">
50. Чи Agents Page (/agents/:slug) працює для всіх DAOS-нодових агентів?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#xii-nats" class="md-nav__link">
<span class="md-ellipsis">
XII. NATS
</span>
</a>
<nav class="md-nav" aria-label="XII. NATS">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#51-nats-jetstream" class="md-nav__link">
<span class="md-ellipsis">
51. Чи NATS JetStream працює?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#52-subscriptions-dagiswappernode-agents" class="md-nav__link">
<span class="md-ellipsis">
52. Чи всі subscriptions DAGI/Swapper/Node Agents активні?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#53-flood-reconnections" class="md-nav__link">
<span class="md-ellipsis">
53. Чи немає flood / reconnections?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#54-nats-dropped-messages" class="md-nav__link">
<span class="md-ellipsis">
54. Чи логи NATS не показують dropped messages?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#xiii-docker-services" class="md-nav__link">
<span class="md-ellipsis">
XIII. Docker / Services
</span>
</a>
<nav class="md-nav" aria-label="XIII. Docker / Services">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#55-docker-ps-filter-health" class="md-nav__link">
<span class="md-ellipsis">
55. Чи всі контейнери здорові (docker ps --filter health)?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#56-healthcheck-docker-compose" class="md-nav__link">
<span class="md-ellipsis">
56. Чи healthcheck-и в docker-compose коректно налаштовані?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#57-old-images-dangling-images" class="md-nav__link">
<span class="md-ellipsis">
57. Чи немає old images / dangling images?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#58-env-" class="md-nav__link">
<span class="md-ellipsis">
58. Чи env-файли актуальні й не перезаписані?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#xiv-critical-security" class="md-nav__link">
<span class="md-ellipsis">
XIV. Critical Security
</span>
</a>
<nav class="md-nav" aria-label="XIV. Critical Security">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#59-sentinel-agent" class="md-nav__link">
<span class="md-ellipsis">
59. Чи Sentinel Agent запущений?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#60-api-keys-env" class="md-nav__link">
<span class="md-ellipsis">
60. Чи ключові токени/API-keys присутні в ENV і валідні?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#61" class="md-nav__link">
<span class="md-ellipsis">
61. Чи немає відкритих небезпечних портів?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#62-safety-prompts" class="md-nav__link">
<span class="md-ellipsis">
62. Чи агенти не втратили свої safety prompts?
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#xv" class="md-nav__link">
<span class="md-ellipsis">
XV. Післядеплойні інваріанти
</span>
</a>
<nav class="md-nav" aria-label="XV. Післядеплойні інваріанти">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#63-510" class="md-nav__link">
<span class="md-ellipsis">
63. Чи стан системи стабільний через 510 хвилин після деплою?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#64" class="md-nav__link">
<span class="md-ellipsis">
64. Чи немає самоперезапусків контейнерів?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#65-node-guardian" class="md-nav__link">
<span class="md-ellipsis">
65. Чи Node Guardian не шле тривоги?
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="deploy_verification_checklist_v1">DEPLOY_VERIFICATION_CHECKLIST_v1<a class="headerlink" href="#deploy_verification_checklist_v1" title="Permanent link">&para;</a></h1>
<p>Цей список питань потрібно ставити перед кожним деплоєм, щоб гарантувати, що жодна з останніх ~30+ розробок не зламається і що весь ланцюг <em>Нода → Агенти → DAGI → microdao → UI</em> залишається консистентним.</p>
<hr />
<h2 id="i-node-registry-node-cabinet">I. <strong>Node Registry / Node Cabinet</strong><a class="headerlink" href="#i-node-registry-node-cabinet" title="Permanent link">&para;</a></h2>
<h3 id="1-node_registry">1. Чи всі ноди зареєстровані в <code>node_registry</code>?<a class="headerlink" href="#1-node_registry" title="Permanent link">&para;</a></h3>
<h3 id="2-post-internalnodesregister-or-update">2. Чи працює <code>POST /internal/nodes/register-or-update</code>?<a class="headerlink" href="#2-post-internalnodesregister-or-update" title="Permanent link">&para;</a></h3>
<h3 id="3-apiv1nodes">3. Чи показує <code>/api/v1/nodes</code> правильну кількість нод?<a class="headerlink" href="#3-apiv1nodes" title="Permanent link">&para;</a></h3>
<h3 id="4-ui-api">4. Чи зникли ноди з UI після оновлення? Чи це помилка API чи реальний стан?<a class="headerlink" href="#4-ui-api" title="Permanent link">&para;</a></h3>
<h3 id="5-last_heartbeat">5. Чи у всіх нод є свіжий <code>last_heartbeat</code>?<a class="headerlink" href="#5-last_heartbeat" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="ii-node-metrics-gpucpuramdisk">II. <strong>Node Metrics (GPU/CPU/RAM/Disk)</strong><a class="headerlink" href="#ii-node-metrics-gpucpuramdisk" title="Permanent link">&para;</a></h2>
<h3 id="6-internalnodeidmetricscurrent">6. Чи повертає <code>/internal/node/{id}/metrics/current</code>:<a class="headerlink" href="#6-internalnodeidmetricscurrent" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>GPU модель</p>
</li>
<li>
<p>GPU memory total/free</p>
</li>
<li>
<p>CPU load</p>
</li>
<li>
<p>RAM usage</p>
</li>
<li>
<p>Disk usage</p>
</li>
</ul>
<h3 id="7">7. Чи метрики не “обнулилися” після деплою?<a class="headerlink" href="#7" title="Permanent link">&para;</a></h3>
<h3 id="8-node-cabinet-node_cache">8. Чи не зникли агенти в Node Cabinet через порожній <code>node_cache</code>?<a class="headerlink" href="#8-node-cabinet-node_cache" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="iii-node-core-agents-8-daos">III. <strong>Node Core Agents (8 агентів DAOS)</strong><a class="headerlink" href="#iii-node-core-agents-8-daos" title="Permanent link">&para;</a></h2>
<p>Для кожної ноди:</p>
<h3 id="9">9. Чи існують:<a class="headerlink" href="#9" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>Node Guardian</p>
</li>
<li>
<p>Node Steward</p>
</li>
<li>
<p>DAGI Router Agent</p>
</li>
<li>
<p>Swapper Agent</p>
</li>
<li>
<p>Multimodal Agent</p>
</li>
<li>
<p>Tools &amp; Planner Agent</p>
</li>
<li>
<p>Security/Sentinel Agent</p>
</li>
<li>
<p>Archivist Agent (якщо увімкнено)</p>
</li>
</ul>
<h3 id="10-node_id">10. Чи всі вони мають <code>node_id</code>?<a class="headerlink" href="#10-node_id" title="Permanent link">&para;</a></h3>
<h3 id="11-public_slug-ui">11. Чи всі мають <code>public_slug</code> → UI кабінет відкривається?<a class="headerlink" href="#11-public_slug-ui" title="Permanent link">&para;</a></h3>
<h3 id="12-system-prompts-core-safety">12. Чи всі мають System Prompts (<code>core</code> обов’язково, де треба — <code>safety</code>)?<a class="headerlink" href="#12-system-prompts-core-safety" title="Permanent link">&para;</a></h3>
<h3 id="13-nodesnodeid">13. Чи видно їх у <code>/nodes/{nodeId}</code> у відповідних секціях?<a class="headerlink" href="#13-nodesnodeid" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="iv-dagi-router-dagi-audit">IV. <strong>DAGI Router / DAGI Audit</strong><a class="headerlink" href="#iv-dagi-router-dagi-audit" title="Permanent link">&para;</a></h2>
<h3 id="14-internalnodeiddagi-routeragents">14. Чи працює <code>/internal/node/{id}/dagi-router/agents</code>?<a class="headerlink" href="#14-internalnodeiddagi-routeragents" title="Permanent link">&para;</a></h3>
<h3 id="15-router_total-1-system_total-1">15. Чи є <code>router_total &gt;= 1</code> і <code>system_total &gt;= 1</code>?<a class="headerlink" href="#15-router_total-1-system_total-1" title="Permanent link">&para;</a></h3>
<h3 id="16-dagi-agent-autosync">16. Чи працює DAGI-agent autosync?<a class="headerlink" href="#16-dagi-agent-autosync" title="Permanent link">&para;</a></h3>
<h3 id="17-phantomstale-20">17. Чи phantom/stale ≤ 20 (або інший поріг)?<a class="headerlink" href="#17-phantomstale-20" title="Permanent link">&para;</a></h3>
<h3 id="18-post-dagi-auditrun">18. Чи запускається <code>POST /dagi-audit/run</code> без помилок?<a class="headerlink" href="#18-post-dagi-auditrun" title="Permanent link">&para;</a></h3>
<h3 id="19-dagi-router-agent-healthz">19. Чи DAGI Router Agent бачить сервіс у <code>/healthz</code>?<a class="headerlink" href="#19-dagi-router-agent-healthz" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="v-swapper-service-models">V. <strong>Swapper Service / Models</strong><a class="headerlink" href="#v-swapper-service-models" title="Permanent link">&para;</a></h2>
<h3 id="20-swapper-healthz">20. Чи Swapper відповідає на <code>/healthz</code>?<a class="headerlink" href="#20-swapper-healthz" title="Permanent link">&para;</a></h3>
<h3 id="21-apimodels">21. Чи моделі завантажені (<code>/api/models</code>)?<a class="headerlink" href="#21-apimodels" title="Permanent link">&para;</a></h3>
<h3 id="22">22. Чи мінімальний набір моделей присутній?<a class="headerlink" href="#22" title="Permanent link">&para;</a></h3>
<h3 id="23-vram-usage-restart">23. Чи VRAM usage коректний після restart?<a class="headerlink" href="#23-vram-usage-restart" title="Permanent link">&para;</a></h3>
<h3 id="24-swapper-agent-pullunload">24. Чи Swapper Agent може робити pull/unload моделей?<a class="headerlink" href="#24-swapper-agent-pullunload" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="vi-multimodal-stack">VI. <strong>Multimodal Stack (повний)</strong><a class="headerlink" href="#vi-multimodal-stack" title="Permanent link">&para;</a></h2>
<p>Для кожної ноди:</p>
<h3 id="25">25. Чи працюють:<a class="headerlink" href="#25" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>STT (Speech-to-Text)?</p>
</li>
<li>
<p>TTS?</p>
</li>
<li>
<p>OCR?</p>
</li>
<li>
<p>Image Understanding?</p>
</li>
<li>
<p>Document parsing (PDF/DOCX)?</p>
</li>
<li>
<p>Embeddings?</p>
</li>
<li>
<p>Keyframe Extraction (відео)?</p>
</li>
</ul>
<h3 id="26-multimodal-agent-prompts">26. Чи Multimodal Agent має prompts з повним переліком функцій?<a class="headerlink" href="#26-multimodal-agent-prompts" title="Permanent link">&para;</a></h3>
<h3 id="27-healthz-sttocrvlm">27. Чи healthz STT/OCR/VLM сервісів працюють?<a class="headerlink" href="#27-healthz-sttocrvlm" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="vii-microdao-districts-rooms">VII. <strong>MicroDAO / Districts / Rooms</strong><a class="headerlink" href="#vii-microdao-districts-rooms" title="Permanent link">&para;</a></h2>
<h3 id="28">28. Чи працюють:<a class="headerlink" href="#28" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>GET <code>/api/v1/districts</code></p>
</li>
<li>
<p>GET <code>/api/v1/districts/{slug}</code></p>
</li>
<li>
<p>GET <code>/city/microdao/{slug}/rooms</code></p>
</li>
<li>
<p>GET <code>/city/microdao/{slug}/agents</code></p>
</li>
</ul>
<h3 id="29-district-portal-leadcore-agents">29. Чи District Portal показує lead/core agents?<a class="headerlink" href="#29-district-portal-leadcore-agents" title="Permanent link">&para;</a></h3>
<h3 id="30-microdao-agents-section-badgesroles">30. Чи MicroDAO Agents Section відображає badges/roles?<a class="headerlink" href="#30-microdao-agents-section-badgesroles" title="Permanent link">&para;</a></h3>
<h3 id="31-rooms-operationstreasuryevents">31. Чи всі rooms відображаються (operations/treasury/events/...)?<a class="headerlink" href="#31-rooms-operationstreasuryevents" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="viii-agents-system-prompts-mvp">VIII. <strong>Agents System Prompts MVP</strong><a class="headerlink" href="#viii-agents-system-prompts-mvp" title="Permanent link">&para;</a></h2>
<h3 id="32-core-core-prompts">32. Чи всі core-агенти Міста мають <code>core</code> prompts:<a class="headerlink" href="#32-core-core-prompts" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>DAARWIZZ</p>
</li>
<li>
<p>DARIA</p>
</li>
<li>
<p>DARIO</p>
</li>
<li>
<p>SOUL</p>
</li>
<li>
<p>Spirit</p>
</li>
<li>
<p>Logic</p>
</li>
<li>
<p>Helion</p>
</li>
<li>
<p>GREENFOOD ERP</p>
</li>
</ul>
<h3 id="33-ui-system-prompts">33. Чи працює UI вкладка “System Prompts”?<a class="headerlink" href="#33-ui-system-prompts" title="Permanent link">&para;</a></h3>
<h3 id="34-getput-apiv1agentsidprompts">34. Чи <code>GET/PUT /api/v1/agents/{id}/prompts</code> працює без помилок?<a class="headerlink" href="#34-getput-apiv1agentsidprompts" title="Permanent link">&para;</a></h3>
<h3 id="35-dagi-router-prompts-runtime">35. Чи DAGI Router правильно підтягує prompts при runtime?<a class="headerlink" href="#35-dagi-router-prompts-runtime" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="ix-node-self-healing">IX. <strong>Node Self-Healing</strong><a class="headerlink" href="#ix-node-self-healing" title="Permanent link">&para;</a></h2>
<h3 id="36-node-guardian">36. Чи Node Guardian запускає перевірки?<a class="headerlink" href="#36-node-guardian" title="Permanent link">&para;</a></h3>
<h3 id="37-self-healing-event-nats">37. Чи Self-healing event-и пишуться в NATS?<a class="headerlink" href="#37-self-healing-event-nats" title="Permanent link">&para;</a></h3>
<h3 id="38-dagi-router-agent">38. Чи DAGI Router Agent може:<a class="headerlink" href="#38-dagi-router-agent" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>перезапустити router</p>
</li>
<li>
<p>запустити audit</p>
</li>
<li>
<p>синхронізувати phantom/stale</p>
</li>
</ul>
<h3 id="39-swapper-agent">39. Чи Swapper Agent може:<a class="headerlink" href="#39-swapper-agent" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>відновити моделі</p>
</li>
<li>
<p>зробити pull</p>
</li>
<li>
<p>очистити кеш</p>
</li>
</ul>
<h3 id="40-multimodal-agent">40. Чи Multimodal Agent може:<a class="headerlink" href="#40-multimodal-agent" title="Permanent link">&para;</a></h3>
<ul>
<li>
<p>перезапустити STT/OCR</p>
</li>
<li>
<p>перейти на fallback модель</p>
</li>
</ul>
<hr />
<h2 id="x-api-health-smoke-tests-invariants">X. <strong>API Health / Smoke Tests / Invariants</strong><a class="headerlink" href="#x-api-health-smoke-tests-invariants" title="Permanent link">&para;</a></h2>
<h3 id="41-healthz-200">41. Чи <code>/healthz</code> → 200?<a class="headerlink" href="#41-healthz-200" title="Permanent link">&para;</a></h3>
<h3 id="42-check-invariantspy">42. Чи проходить <code>check-invariants.py</code> без помилок?<a class="headerlink" href="#42-check-invariantspy" title="Permanent link">&para;</a></h3>
<h3 id="43-smoke-pytest-teststest_infra_smokepy">43. Чи smoke-тести (<code>pytest tests/test_infra_smoke.py</code>) проходять?<a class="headerlink" href="#43-smoke-pytest-teststest_infra_smokepy" title="Permanent link">&para;</a></h3>
<h3 id="44-select-from-migrations">44. Чи всі міграції застосовані (<code>SELECT * FROM migrations</code>)?<a class="headerlink" href="#44-select-from-migrations" title="Permanent link">&para;</a></h3>
<h3 id="45-seed-">45. Чи seed-и не перезаписали агентів неправильно?<a class="headerlink" href="#45-seed-" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="xi-frontend">XI. <strong>Frontend</strong><a class="headerlink" href="#xi-frontend" title="Permanent link">&para;</a></h2>
<h3 id="46-npm-run-build">46. Чи всі сторінки збираються (<code>npm run build</code>)?<a class="headerlink" href="#46-npm-run-build" title="Permanent link">&para;</a></h3>
<h3 id="47-nodes-0">47. Чи <code>/nodes</code> не падає і не показує "0" нод помилково?<a class="headerlink" href="#47-nodes-0" title="Permanent link">&para;</a></h3>
<h3 id="48-dagi-router-card">48. Чи DAGI Router Card працює?<a class="headerlink" href="#48-dagi-router-card" title="Permanent link">&para;</a></h3>
<h3 id="49-node-cabinet-78-core-">49. Чи Node Cabinet показує всі 78 core-агентів?<a class="headerlink" href="#49-node-cabinet-78-core-" title="Permanent link">&para;</a></h3>
<h3 id="50-agents-page-agentsslug-daos-">50. Чи Agents Page (<code>/agents/:slug</code>) працює для всіх DAOS-нодових агентів?<a class="headerlink" href="#50-agents-page-agentsslug-daos-" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="xii-nats">XII. <strong>NATS</strong><a class="headerlink" href="#xii-nats" title="Permanent link">&para;</a></h2>
<h3 id="51-nats-jetstream">51. Чи NATS JetStream працює?<a class="headerlink" href="#51-nats-jetstream" title="Permanent link">&para;</a></h3>
<h3 id="52-subscriptions-dagiswappernode-agents">52. Чи всі subscriptions DAGI/Swapper/Node Agents активні?<a class="headerlink" href="#52-subscriptions-dagiswappernode-agents" title="Permanent link">&para;</a></h3>
<h3 id="53-flood-reconnections">53. Чи немає flood / reconnections?<a class="headerlink" href="#53-flood-reconnections" title="Permanent link">&para;</a></h3>
<h3 id="54-nats-dropped-messages">54. Чи логи NATS не показують dropped messages?<a class="headerlink" href="#54-nats-dropped-messages" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="xiii-docker-services">XIII. <strong>Docker / Services</strong><a class="headerlink" href="#xiii-docker-services" title="Permanent link">&para;</a></h2>
<h3 id="55-docker-ps-filter-health">55. Чи всі контейнери здорові (<code>docker ps --filter health</code>)?<a class="headerlink" href="#55-docker-ps-filter-health" title="Permanent link">&para;</a></h3>
<h3 id="56-healthcheck-docker-compose">56. Чи healthcheck-и в docker-compose коректно налаштовані?<a class="headerlink" href="#56-healthcheck-docker-compose" title="Permanent link">&para;</a></h3>
<h3 id="57-old-images-dangling-images">57. Чи немає old images / dangling images?<a class="headerlink" href="#57-old-images-dangling-images" title="Permanent link">&para;</a></h3>
<h3 id="58-env-">58. Чи env-файли актуальні й не перезаписані?<a class="headerlink" href="#58-env-" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="xiv-critical-security">XIV. <strong>Critical Security</strong><a class="headerlink" href="#xiv-critical-security" title="Permanent link">&para;</a></h2>
<h3 id="59-sentinel-agent">59. Чи Sentinel Agent запущений?<a class="headerlink" href="#59-sentinel-agent" title="Permanent link">&para;</a></h3>
<h3 id="60-api-keys-env">60. Чи ключові токени/API-keys присутні в ENV і валідні?<a class="headerlink" href="#60-api-keys-env" title="Permanent link">&para;</a></h3>
<h3 id="61">61. Чи немає відкритих небезпечних портів?<a class="headerlink" href="#61" title="Permanent link">&para;</a></h3>
<h3 id="62-safety-prompts">62. Чи агенти не втратили свої safety prompts?<a class="headerlink" href="#62-safety-prompts" title="Permanent link">&para;</a></h3>
<hr />
<h2 id="xv">XV. <strong>Післядеплойні інваріанти</strong><a class="headerlink" href="#xv" title="Permanent link">&para;</a></h2>
<h3 id="63-510">63. Чи стан системи стабільний через 510 хвилин після деплою?<a class="headerlink" href="#63-510" title="Permanent link">&para;</a></h3>
<h3 id="64">64. Чи немає самоперезапусків контейнерів?<a class="headerlink" href="#64" title="Permanent link">&para;</a></h3>
<h3 id="65-node-guardian">65. Чи Node Guardian не шле тривоги?<a class="headerlink" href="#65-node-guardian" title="Permanent link">&para;</a></h3>
</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>