Arc OS — Roadmap

Native-first AI Office. Команди агентів Claude Code + CLI-First архітектура + канали. 70+ endpoints, SQLite SSOT, Sage Worker + бенчмарки + Marketplace Discovery + Knowledge Harvester. Останнє оновлення: 2026-06-11 (#429 P0 NFR-PERF-002 hardening DONE ✅ — concurrency gate для bcrypt обмежує хвостову латентність auth-шляху під навантаженням credential-stuffing; задеплоєно та перевірено на проді. Phase 82 SEO Foundation COMPLETE ✅ — meta/OG/JSON-LD, Docs SSG на 295 сторінок із hreflang, prerender лендингу, llms.txt + content-signals. Phase 81 Spotlight Tours + єдиний onboarding-чекліст COMPLETE ✅. Phase 78 COMPLETE ✅ — Notes Knowledge Collections: нотатки в стилі NotebookLM на проєкт із вибором джерел, inline-перейменуванням, аліасами S1/S2, захистом від галюцинацій, створенням задач через tool-use із чату. Phase 76 FULLY COMPLETE ✅. Phase 73 COMPLETE 9/9 ✅. Phase 71 RAG DONE ✅. Phase 62 Voice Input DONE ✅. Phase 70 Cloud Chat Routing DONE ✅. Phase 69 Cloud Repo Model DONE ✅.)

Таймлайн фаз

timeline
    title Arc OS — From Native Birth to Public Beta
    section Foundation (Feb 2026)
        18 : Native Birth + Phaser
        19 : Rich Integration
        20 : Federated Bots
    section Intelligence (Mar 2026)
        21 : Binary Evals + Context Router + Learnings
        22 : CRM Dashboard
        24-26 : Dual Agent + Dynamic Workers
        28-30 : Auto-ingest + Knowledge Harvester
    section Marketplace (Apr 2026)
        32-35 : Knowledge Dashboard + Live Terminal
        36 : Cloud PM + NotebookLM Bridge
        38 : ARC CLI compiled
        40 : Sage + A/B + Marketplace Discovery
    section Hardening (Apr 2026)
        41 : UI Refresh + Context Rail
        42 : Multi-tenancy + Loopback bind
        44 : Analytics + Docs Coverage 95%
        45 : Zero-Knowledge E2EE
    section Architecture (Late Apr 2026)
        47 : Timeline + Issues Redesign
        48 : Decomposition 10779→373 LOC + Worker lazy lifecycle
        49 : Doc-coverage pre-push hook
    section Beta (May 2026)
        50 : Trial Credits
        51 : Stripe Billing Stage 1
        52.1 : F&F Invite Codes + beta plan
        53 : Sentinel hardening (2×P0 + 13×P1 + P2)
        54 : Onboarding Engagement Layer
        55 : Cosmic Editorial login + Magic Link
        56 : AI Interop / Project Context Export
        57 : Platform Settings UI
        58 : Header / UserDropdown UX
        59 : Localization Expansion (8 locales)
        60 : Standard Cloud (Docker per user)
        61 : Arc Help AI assistant
        63 : UI/UX Consolidation + Token Usage
        64 : Security & Compliance (GDPR + WCAG)

Де ми зараз: Phase 82 DONE ✅ (2026-06-11) — SEO Foundation (#458): meta/OG/Twitter/JSON-LD/canonical + sitemap.xml + robots.txt (#459); Docs SSG — 295 статичних HTML-сторінок, 8 локалей, hreflang (#460); prerender лендингу для ботів/no-JS + FAQPage JSON-LD (#461); GEO llms.txt + Content-Signal search=yes, ai-input=yes, ai-train=no, вимкнено CF managed robots.txt (#462). Follow-ups: #464 OG-зображення, #465 чесна 404. Phase 81 DONE ✅ (2026-06-11) — Spotlight Tours (#431/#446: driver.js, 3 тури, i18n UA+RU, ланцюжок EN fallback) + єдиний onboarding-чекліст (#457: кроки plan/workers/issue/bot/cli, міні-тури "Show me where", передача тур→чекліст). Phase 79 DONE ✅ (Project Admin Worker). Phase 77 DONE ✅ (CEO Worker). Phase 78 DONE ✅ (Notes; 78.11 project-aware чат #447 + paste-to-source #448 закрито 2026-06-10/11). #429 DONE ✅ (2026-06-11) — P0 NFR-PERF-002: concurrency gate withBcryptSlot (4 активних / 24 у черзі / overflow→503) у shared/auth.ts обмежує хвостову латентність auth-шляху під розподіленим credential stuffing (6-ядерний VPS, 20c p99 1709ms→752ms; виправлено хибну причину "bcrypt блокує event loop" — bcrypt працює в thread pool, без cross-endpoint stall). Задеплоєно main 55a74e41, master перезапущено, перевірено наживо.

Далі: (1) закрити хвіст QA/NFR hardening із циклу навантажувального тестування 2026-06-09 — повторно прогнати TC-PERF-LOAD-002 (NFR-PERF-003) + TC-PERF-LOAD-004 (NFR-PERF-004) із записаним cleanup probe, та розібрати відкриті traceability-баги (#246 P1 GDPR export 500; #242/#243/#254/#266 P2); потім (2) наступна фічева фаза Phase 75 — ⚠️ колізія нумерації в цьому документі: Project Collaboration (#150, P1) та Odoo CRM Integration (~Q1 2027) обидві позначені як "Phase 75". Потрібен renumber від CEO перед стартом будь-якої з них.


Phase 18: The Native Birth (COMPLETE)

18.0 — Repository Bootstrap (DONE)

18.1 — Agent Teams Foundation

18.2 — Telegram Native Channel

18.3 — Arc OS Bridge MCP Server

18.4 — Visual Restoration (Phaser Frontend)

18.5 — VPS Deployment & 24/7


Phase 19: Rich Integration (COMPLETE)

19.1 — Delta State Polling (DONE)

19.2 — Context Bar & Canvas Theme (DONE)

19.3 — Lifecycle Hooks (DONE)

19.4 — Library / NotebookLM Integration (DONE)

19.5 — CLI Operation Skills (DONE)

Phase 20: Federated Bot Architecture (COMPLETE)

Архітектурний документ: docs/architecture/PHASE_20_FEDERATION.md Рішення: Federation (Master + Children) замість Single Bot + Switcher.

20.1 — Master Bot Foundation (DONE)

20.2 — Child Bot Protocol (DONE)

20.3 — Onboarding Engine (DONE)

20.4 — Skill Library & Project Removal (DONE)

20.5 — Phantom-Ready Infrastructure (DONE)


Phase 21: Arc OS Command Interface (COMPLETE)

Telegram стає повноцінним інтерактивним дашбордом з inline-клавіатурами, керуванням підпроцесами та CRM-лінками (заглушки).

21.0 — Tactical UI Layer (DONE)


21.5 — Evolutionary Intelligence (DONE)


Phase 22: Bun CRM & Observability Hub (COMPLETE)

Архітектура: docs/planning/phase-22-bun-crm.md | Бекенд: docs/architecture/crm-backend.md Технічний борг: docs/backlog/technical-debt.md (7 пунктів, 2 вирішено)

22.0 — CRM REST API (DONE)

22.1 — Real-time Observability (DONE)

22.2 — Unified Command Center (DONE)

22.3 — Metrics Charts, WebSocket Terminal & Power Controls (DONE)


Phase 24: Dual-Agent Flow & CRM Enhancement (COMPLETE)

Архітектурний документ: docs/architecture/dual-agent-flow.md Тема: Slate & Silver (темний glassmorphism)

24.5 — Dual-Agent Flow (DONE)


Phase 25: Tech Debt Resolution + Local Gateway Foundation (COMPLETE)

Технічний борг: docs/backlog/technical-debt.md (6/7 вирішено) Bridge: директорія bridge/

25.0 — Tech Debt Sweep (DONE)

25.1 — Bridge CLI Foundation (DONE)

25.2 — VPS API Extensions (DONE)


25.3 — Security Hardening (DONE)


Phase 23: The Local Gateway — Hybrid Workspace (SUPERSEDED фазами 25/38)

⚠️ SUPERSEDED — Основні результати поглинуто Phase 25 (Bridge CLI + API Foundation) та Phase 38 (скомпільований бінарник ARC CLI). Документацію Phase 23.2 розбито на 4 OS-специфічні гайди (2026-05-14). Решта підпунктів (23.2 локальні evals, 23.3 інтеграція з CRM) не в активному roadmap. Чернетка архітектури: docs/planning/local-gateway.md (v3 — розділення Body/Brain) Кодова назва: "Activate Local Power"

Розробник підключає свій локальний IDE до Arc OS VPS. Код живе локально; інтелект доставляється через Bridge CLI + конфіг-директорію .citadel/.

23.1 — Bridge CLI + API Foundation (DONE → Phase 25)

23.2 — Local Intelligence (PLANNED)

23.3 — CRM Integration (PLANNED)

23.4 — Distribution & Polish (PLANNED)


Phase 26: Dynamic Workers (COMPLETE)

Архітектура: config/workers_registry.json + docs/architecture/dual-agent-flow.md Тема: заміна хардкоду бінарної пари Consultant/Developer на розширюваний реєстр воркерів.

26.0 — Stage 1: Worker Registry Foundation (DONE)

26.1 — Stage 2: Dynamic Grid Activation (DONE)


Phase 27: Knowledge Base & Wiki (COMPLETE)

CRM дашборд отримує read-only переглядач wiki для виводу Knowledge Archivist.

27.0 — Wiki Viewer (DONE)


Phase 28: Auto-Ingest Watcher (COMPLETE)

Фоновий file watcher автоматично запускає Knowledge Archivist, коли нові файли з'являються в raw/.

28.0 — Auto-Ingest Watcher (DONE)


Phase 29: i18n — EN/UK Internationalization (COMPLETE)

Повна інтернаціоналізація CRM фронтенду з @lingui/react v5.

29.0 — i18n Infrastructure + Full Translation (DONE)


Phase 30: Onboarding Wizard (COMPLETE)

30.0 — Self-Service Workspace Creation (DONE)

Phase 31: Web Authentication (COMPLETE)

31.0 — Session Auth + Multi-Tenancy (DONE)

31.5 — ARC CLI + Knowledge MCP (DONE)

Phase 32: Knowledge Dashboard (COMPLETE)

32.0 — Reports, Skills, Wiki, NotebookLM (DONE)

32.1 — UI Hotfixes + Create Project Button (DONE)

Phase 33: Multi-Tenant Project Creation (COMPLETE)

33.0 — Account-Level Keys + Lightweight Modal (DONE)

Phase 34: Autonomous Project Manager (COMPLETE)

34.1 — Local Issue Tracking (DONE)

34.2 — Wiki Sync Tool (DONE)

34.3 — Roadmap Engine (DONE)

34.7 — Init Injection (DONE)

Phase 35: Live Terminal Sync (COMPLETE)

35.1 — Backend Log Ingest (DONE)

35.2 — arc-cli Stdout Interceptor (DONE)

35.3 — Frontend Live Terminal (DONE)


Phase 36: Cloud Project Manager (COMPLETE)

36.1 — Backend SSE Chat Endpoint (DONE)

36.2 — Frontend Cloud PM Chat (DONE)

36.3 — NotebookLM Bridge (DONE)

36.6 — Neural Skill Generator Wizard (DONE)

36.7 — Neural Memory Sidebar (DONE)


Phase 37: SSO & Social Auth (COMPLETE)

OAuth-інтеграція для входу через Google та GitHub.

37.0 — OAuth Google + GitHub (DONE)


Phase 38: CLI-First Architecture (COMPLETE)

Заміна MCP-інструментів на CLI-підкоманди. Скорочення токенів на 85%.

38.0 — MCP → CLI Migration (DONE)

38.1 — SKILL.md Standard (DONE)

38.2 — Artifact Bridge (DONE)

38.8 — Admin Whitelist (DONE)


Phase 39: Mobile Responsive Dashboard + Workspace Hub (COMPLETE)

Повна мобільна адаптація CRM Dashboard + життєвий цикл Workspace + Live Memory Cycle.

39.0 — Responsive Layout (DONE)

39.3 — Workspace Hub & Lifecycle Management (DONE)

39.4 — Live Memory Cycle (DONE)


Phase 40: Tabula Rasa — SQLite SSOT + Protocol System (COMPLETE)

Ядерне знесення legacy JSON → SQLite single source of truth. Трирівнева система протоколів. Централізований WorkspaceSelector. Персистентна історія чату.

40.0 — SQLite Migration (DONE)

40.7 — Three-Level Protocol System (DONE)

40.8 — Centralized WorkspaceSelector & Health Monitor (DONE)

40.10 — Persistent Chat History / Immortal Chat (DONE)


Phase 40.11: Evolutionary Skill System + Sage Worker + Data-Driven Approvals (COMPLETE)

Навички в БД. Автономне покращення через Sage (Haiku). Сліпі A/B-бенчмарки перед затвердженням CEO.

40.11 — Evolutionary Skill System (DONE)

40.11c — Sage Worker (Autonomous Skill Improvement) (DONE)

40.11d — Data-Driven Approvals (Benchmarks) (DONE)


Phase 40.12: Marketplace Discovery (COMPLETE)

Пошук, аналіз та встановлення community-навичок із claudemarketplaces.com прямо у Skill Evolution Center.

Бекенд — shared/sage.ts

Бекенд — shared/crm-routes.ts (3 нові хендлери + 3 маршрути)

Фронтенд — SkillEvolution.jsx

i18n


Phase 40.12.1: Smart Rank — Compatibility Sorting & Quick Scan Cache (COMPLETE)

Пакетний скоринг сумісності для marketplace-навичок. Сортування за релевантністю, сумісністю чи популярністю.

Бекенд — shared/sage.ts + shared/crm-routes.ts

Фронтенд — SkillEvolution.jsx (DiscoveryTab)

i18n


Phase 40.13: Autonomous Knowledge Harvester (COMPLETE)

Проактивне виявлення навичок. Gap Detector спрацьовує при нульових збігах context-router. Нічне пакетне сканування. UI пропозицій у вкладці Discovery.

Бекенд — shared/harvester.ts (новий модуль)

Нічне пакетне сканування — scripts/nightly-improve.ts

API (2 нові endpoints)

Фронтенд

i18n


Phase 40.14: CRM Roadmap & Issues UI (COMPLETE)

Фронтенд-сторінки для Roadmap та Issues — раніше були лише плейсхолдерами в сайдбарі. Самовідновлюваний backend-скаффолдинг.

Бекенд

Фронтенд — Roadmap.jsx (~220 рядків)

Фронтенд — Issues.jsx (~310 рядків)

App.jsx

i18n


Phase 40.15: Lucide React Icons (COMPLETE)

Заміна всіх Unicode/emoji іконок на SVG-іконки Lucide React для консистентної, theme-aware, масштабованої іконографії.

Зміни

Збережено (свідомо)

Конвенція розмірів іконок


Phase 40.16: Per-Worker Telegram Bot Token UI (COMPLETE)

Воркери можуть підключати/відключати індивідуальні токени Telegram-ботів із форми Worker Studio.

Зміни

Бекенд


Phase 40.17: Knowledge Graph + Open in Obsidian (COMPLETE)

Canvas-візуалізація графа знань (нуль залежностей) + інтеграція з протоколом Obsidian.

Задача #006: Open in Obsidian

Задача #007: Knowledge Graph

Бекенд:

Фронтенд:

Сайдбар:

i18n


Phase 40.18: Deploy Safety — DB SSOT for Ownership (COMPLETE)

Постійний фікс зникнення проєктів після деплою (git pull перезаписує owner_id у bot_registry.json).

Проблема

bot_registry.json відстежується в git, але owner_id додається в рантаймі під час створення проєкту. Кожен git pull перезаписує файл, втрачаючи дані власності. handleGetProjects фільтрує за owner_id, тож усі проєкти стають невидимими.

Рішення — 3 рівні захисту

Рівень Що Коли
DB SSOT handleGetProjects + isProjectOwner спершу перевіряють projectQueries.findByName(), реєстр як fallback Кожен API-виклик
Deploy backup vps-sync.sh бекапить реєстр перед git pull, відновлює поля owner_id після Кожен деплой
Startup enrichment Master bot заповнює відсутні owner_id із БД при завантаженні Кожен рестарт

Змінені файли


Phase 40.19: Auth Completion — Full Login Form (DONE)

Завершення всіх методів автентифікації в LoginOverlay. Google OAuth, скидання пароля, верифікація email.

40.19a — Google OAuth Credentials (DONE) — задача #6

40.19b — Telegram OTP Login (REMOVED) — задача #7

40.19c — Password Reset Flow (DONE) — задача #8

40.19d — Email Verification (DONE) — задача #9

40.19e — Email Delivery Infrastructure (DONE)


Phase 41: UI Refresh — Vercel Redesign Adaptation (COMPLETE)

Поетапна міграція концепцій Vercel-згенерованого Next.js редизайну (arc_web_design_vercel/) у наявний стек React+Lingui+Vite. Кожен етап — самостійний shipable-інкремент.

41.1 — Design Tokens (задача #10) — DONE

41.2 — Worker Selector Pills (задача #11) — DONE

41.3 — Chat Message Bubbles + Action Bar (задача #12) — DONE

41.4 — Chat Composer Refresh (задача #13) — DONE

41.5 — Sidebar Badge Counters + Recent Activity (задача #14) — DONE

41.6 — TopBar Search with ⌘K (задача #15) — DONE

41.7 — Context Rail (задача #16) — DONE

41.8 — Pinned Notes Feature (задача #17) — DONE


Phase 42: Security Hardening — Sentinel Audit 2026-04-23 (COMPLETE)

Довідка: docs/security/audit-2026-04-23.md (3 критичні + 2 серйозні + дрібні знахідки). Розблоковує multi-user продакшн. Вердикт після патчів: GREEN.

42.1 — Multi-tenancy: SSE owner_id guard (SEC-1, задача #6) — DONE

42.2 — Multi-tenancy: WS terminal guard + admin-only interactive (SEC-2, задача #7) — DONE

42.3 — Multi-tenancy: CLI/MCP block guard (SEC-3, задача #8) — DONE

42.4 — Bun.serve bind to 127.0.0.1 (SEC-4, задача #9) — DONE

42.5 — chat/save project_name validation (SEC-5, задача #10) — DONE

42.6 — Minor hardening (SEC-6, задача #11) — DONE

42.7 — Sentinel re-audit remediation — DONE

42.8 — Hotfix SEC-REG1 (extractChatId browser EventSource) — DONE

42.9 — SSRF hotfix + relay hardening (SEC-NEW1..3) — DONE

Live-перевірка на проді:

Атака Очікувано Фактично
http://127.0.0.1:19210/... відхилити 400 "Only https URLs allowed" ✅
http://claudemarketplaces.com/ відхилити схему 400 ✅
/api/internal/bridges із X-Forwarded-For відхилити 403 ✅
https://claudemarketplaces.com/ дозволити 200 ✅
https://claudemarketplaces.com.evil.com/ відхилити 403 "Domain not allowed" ✅

Вердикт 3-го повторного аудиту Sentinel: 🟢 GREEN. Усі 12 патчів перевірено на проді.

42.10 — Redirect-based SSRF close-out (SEC-NEW4, P3) — DONE

42.11 — Sentinel 4th pass: Non-blocker hardening — DONE

42.12 — Worker identity + model wiring — DONE

Phase 42 FINAL SIGN-OFF

Метрика Значення
Знайдено проблем безпеки за 5 проходів аудиту 16
Виправлено 16
Security-борг (блокер) 0
Вердикт 🟢 GREEN — Multi-user ready

Phase 43: UI/UX Audit Implementation (COMPLETE)

Довідка: docs/design/ui-ux-audit-2026-04-23.md (Vanguard deep dive, прохід #2) Створено 21 задачу (#13–#33), усі закрито. Оцінка повторного аудиту: A- (95/100).

43.1 — Accessibility (WCAG 2.1 Level A) — DONE

43.2 — Navigation & Layout Cleanup — DONE

43.3 — Design System & Architecture — DONE

43.4 — UX Improvements — DONE

43.5 — Documented / Deferred — DONE

43.6 — Re-audit Polish (Phase 43.1) — DONE

Повторний аудит дизайнера: A- (95/100). Знайдено й виправлено 2 дрібні прогалини:


Phase 44: Analytics Page Redesign (COMPLETE)

Довідка: docs/design/analytics-page-redesign-2026-04-24.md Перетворення статичної сторінки метрик на actionable intelligence dashboard.

44.1 — DB Migration & Backend (задачі #47-#48) — DONE

44.2 — Frontend Components (задачі #49-#50) — DONE

44.3 — Polish & i18n (задача #51) — DONE

44.4 — Token Economy Benchmark + Optimization — DONE

Дата: 2026-04-27
Звіти: docs/benchmarks/token-economy-2026-04-27.md, optimization-results-2026-04-27.md
Інфраструктура: benchmarks/token-economy/ (перевикористовуваний A/B test suite)

Phase A — Базовий бенчмарк:

Phase B — Оптимізація (Option C - Hybrid):

Фінальні результати:

Стратегічна перемога:

Активи:


Phase 44.6: Workspace Redesign — Evolution (COMPLETE)

Довідка: docs/design/prototype/WEB_REDESIGN_ANALYSIS.md Дизайн-система warm clay + status dots + ActionBar + slash-підказки. На основі професійного дизайн-хендофу (Variant A - Workspace Evolution).

44.6.1 — Centralized Design System (задача #6) — DONE

P0 CRITICAL — Single source of truth для дизайн-токенів

Файли: design-system.css (300+ рядків, повністю задокументовано) Імпорт в index.html, заміна хардкод-кольорів у всіх компонентах

44.6.2 — Worker Status Dots with Glow (задача #7) — DONE

P0 CRITICAL — Візуальна ясність статусу

Заблоковано: #6

44.6.3 — ActionBar Component (задача #8) — DONE

P0 CRITICAL — Керування оркестрацією кількох воркерів

Файли: Workspace.jsx (футер), components/ActionBar.jsx Бекенд: можуть знадобитися API endpoints pause/resume

Заблоковано: #6

44.6.4 — Slash Command Hints (задача #9) — DONE

P1 HIGH — UX автодоповнення

Файли: Workspace.jsx (композер ~1668-1700) Заблоковано: #6

44.6.5 — A/B Test: Warm Clay vs Teal (задача #10) — PENDING

P1 HIGH — Валідація користувачами

Файли: config/features.json, hooks/useAccentColor.js

Вплив: Сучасна тепла дизайн-система, покращений multi-worker UX, професійний polish. Оцінка: 2-3 тижні загалом (5-7 днів активної роботи)


Phase 45: Zero-Knowledge E2EE Architecture (DONE ✅)

"Ми не можемо прочитати ваші дані, навіть якби хотіли" — шифрування at-rest для приватності користувачів. Гібридний підхід: клієнтський крипто-фундамент + серверне at-rest шифрування.

45.1 — E2EE Foundation (задача #16) — DONE ✅ (2026-04-28)

P0 CRITICAL — Клієнтський фундамент шифрування

45.2 — API Key Encryption (задача #17) — DONE ✅ (2026-04-28)

P0 CRITICAL — Серверне vault-шифрування для API-ключів

45.3 — Chat Message Encryption (задача #18) — DONE ✅ (2026-04-28)

P0 CRITICAL — At-rest шифрування повідомлень чату в SQLite

45.4 — Recovery Keys & Backup (задача #19) — DONE ✅ (2026-04-28)

P1 HIGH — Відновлення та комплаєнс

45.5 — Security Hardening (задача #20) — DONE ✅ (2026-04-28)

P1 HIGH — Defense-in-depth

45.6 — Advanced Features — PLANNED

P2 MEDIUM — Nice-to-have

Вплив: Zero-knowledge архітектура. Сервер зберігає лише зашифровані blob-и, не може дешифрувати дані користувача.


Phase 44.5: Documentation Coverage Expansion (COMPLETE)

Покриття документації: 65% → ~95%. Вісім нових публічних документів, оновлений індекс, розширені thinking-підказки Workspace. Дата аудиту: 2026-04-27.

44.5.1 — Documentation Audit & Gap Analysis (DONE)

44.5.2 — New Public Documentation (DONE)

Вісім нових документів у docs/public/:

44.5.3 — Index & Navigation Update (DONE)

44.5.4 — Workspace Thinking Tips (DONE)


Phase 46: Parallel Worker Execution (COMPLETE)

Кожен воркер = окремий процес. Більше жодного глобального м'ютекса isProcessing, який блокує всі воркери. Consultant, Developer, Sentinel тощо працюють конкурентно у власних tmux-сесіях.

46.1 — Registry Schema Evolution (задача #57) — DONE

P0 CRITICALexecution_mode: "parallel" + масив workers[] у bot_registry.json

46.2 — Worker Spawn Utility (задача #58) — DONE

P0 CRITICALshared/worker-spawn.ts

46.3 — Worker-Specific Inbox Routing (задача #59) — DONE

P0 CRITICAL — Завжди маршрутизувати до crm_inbox_{worker_id}.jsonl

46.4 — Watchdog Multi-Worker (задача #60) — DONE

P1 HIGH — Health checks на кожен процес воркера

46.5 — Restart API Per-Worker (задача #61) — DONE

P1 HIGH — Гранулярний контроль рестарту

46.6 — Telegram Routing + /status (задача #62) — DONE

P1 HIGH — Токен головного бота → consultant; агрегований статус

46.7 — Activate for arc-v2 (задача #63) — DONE

P0 CRITICAL — Увімкнути перемикач

Вплив: Справжнє конкурентне виконання воркерів. Більше жодних черг — надсилайте повідомлення Developer та Consultant одночасно.


Phase 47: Timeline Observability — DAW for AI Teams (COMPLETE ✓)

Довідка: docs/design/prototype/WEB_REDESIGN_ANALYSIS.md (Variant B) Метафора Logic Pro — воркери як доріжки, події як кліпи на спільному таймлайні. Інновація: Унікальна IP, жоден інший інструмент оркестрації AI не має такого виду.

47.1 — Message Timestamps (задача #10) — COMPLETE ✓

P1 HIGH — Фундамент бекенду

Зроблено:

Файли: shared/migrations/013_timeline_timestamps.ts, shared/db.ts, shared/crm-routes.ts, master-bot/api-server.ts, shared/cli-routes.ts Завершено: 2026-04-27 Розблоковує: #11

47.2 — Timeline Events Table (задача #11) — COMPLETE ✓

P1 HIGH — Шар зберігання подій

Зроблено:

Файли: shared/migrations/014_timeline_events.ts, shared/db.ts, shared/crm-routes.ts Завершено: 2026-04-27 Розблоковує: #12

47.3 — Timeline Frontend Components (задача #12) — COMPLETE ✓

P1 HIGH — UI у стилі DAW

Зроблено:

Фічі:

Файли: frontend/src/crm/pages/TimelinePage.jsx, components/timeline/*, shared/crm-routes.ts Завершено: 2026-04-27 Розблоковує: #13

47.4 — Feature Flag & Route (задача #13) — COMPLETE ✓

P1 HIGH — Opt-in бета

Зроблено:

Рішення: Поки що пропустити складність feature flag. Timeline достатньо стабільний для публічної бети з індикатором BETA.

Файли: frontend/src/crm/App.jsx, components/Sidebar.jsx, locales/uk/messages.po Завершено: 2026-04-27 Розблоковує: #15

47.5 — Documentation (задача #15) — COMPLETE ✓

P1 HIGH — Оновити всю документацію

Зроблено:

47.6 — Color Themes & Pastel Palette — COMPLETE ✓

P2 MEDIUM — Кольорові теми на вибір користувача

Зроблено:

Кольорові палітри:

Файли: frontend/src/crm/components/ThemeSelector.jsx, AccountSettingsDialog.jsx, App.jsx, styles/design-system.css Завершено: 2026-04-28 Розблоковує: #17 (Phase 47.7)

47.7 — Custom Theme Builder + Gemini UX — COMPLETE ✓

P2 MEDIUM — Користувацькі кольорові теми + сучасні чат-бульбашки

Зроблено:

Технічне:

Файли: frontend/src/crm/components/ThemeSelector.jsx, styles/globals.css Завершено: 2026-04-28

47.8 — Issues Redesign (Variant B Hybrid) — COMPLETE ✓

P1 HIGH — Керування задачами за фазами

Зроблено:

Дерево компонентів:

IssuesRedesign
├── Header (search, status filters, issue count)
├── PhaseGroup[] (collapsible)
│   ├── PhaseHeader (name, progress bar, X/Y count, expand icon)
│   └── IssueTable (table rows sorted by ID desc)
│       └── IssueRow (clickable, P0 pulse)
└── DetailPanel (slide-in, backdrop blur, escape to close)
    ├── Header (ID, priority badge, status icon, labels)
    ├── Description (ReactMarkdown)
    ├── Activity timeline (colored borders, icons, timestamps)
    └── Footer (Close/Reopen button, created/updated times)

Фічі:

Файли: frontend/src/crm/pages/IssuesRedesign.jsx, frontend/src/crm/App.jsx Завершено: 2026-04-28

47.9 — Favicon Redesign + Branding Cleanup — COMPLETE ✓

P2 MEDIUM — Polish брендової ідентичності

Зроблено:

Файли: frontend/public/favicon.svg, AppFooter.jsx, TopHeader.jsx, LoginOverlay.jsx, OnboardingWizard.jsx Завершено: 2026-04-28

47.10 — Resizable Worker Panels — COMPLETE ✓

P2 MEDIUM — UX polish

Зроблено:

Файли: frontend/src/crm/pages/Workspace.jsx Завершено: 2026-04-28

47.11 — Token Error Banner + CLI Promo — COMPLETE ✓

P1 HIGH — Промоція моделі підписки

Зроблено:

Файли: utils/apiErrors.js, components/TokenErrorBanner.jsx, components/CliSubscriptionTip.jsx, ChatThread.jsx Завершено: 2026-04-28

47.12 — Slim Gemini-Style Footer — COMPLETE ✓

P3 LOW — Trust + polish навігації

Зроблено:

Файли: components/AppFooter.jsx, layouts/CrmMainLayout.jsx Завершено: 2026-04-28

47.13 — Easter Eggs (1 of N) — COMPLETE ✓

P3 LOW — Delight-фічі

Зроблено:

Файли: components/brand/EasterEggLogo.jsx, TopHeader.jsx, docs/easter-eggs.md Завершено: 2026-04-28

47.14 — Easter Eggs (5 more) — COMPLETE ✓

P3 LOW — Delight-фічі (продовження)

Зроблено:

Файли: utils/eggs.js, components/EasterEggManager.jsx, components/brand/EasterEggLogo.jsx, pages/Workspace.jsx, pages/workspace/ChatThread.jsx, App.jsx Завершено: 2026-04-28

47.15 — Per-mode Theme Presets + Custom Colors — COMPLETE ✓

P1 HIGH — Кастомізований користувачем інтерфейс

Зроблено:

Файли: components/brand/ThemeAwareLogo.jsx, components/ThemeSelector.jsx, styles/design-system.css, App.jsx, components/LoginOverlay.jsx, components/OnboardingWizard.jsx, components/brand/EasterEggLogo.jsx Завершено: 2026-04-28 Задеплоєно: 2026-04-28

47.16 — Issue Detail Wizard with Inline Editing — COMPLETE ✓

P1 HIGH — Редагування задач без виходу зі списку

Зроблено:

Файли: pages/IssuesRedesign.jsx, shared/cli-routes.ts Завершено: 2026-04-28 Закриває Phase 47

Use Cases (Timeline):

Вплив: Унікальна observability-фіча. Тільки desktop (1440px+), експериментальна бета. Оцінка: 3-4 тижні (15-20 днів активної роботи)


Phase 48: Architecture Decomposition — Logical Service Boundaries (P0 COMPLETE)

Від моноліту до логічної архітектури. Три монолітні файли (10,779 рядків) розбиті на 30 доменних модулів (373 рядки в dispatcher'ах). Задеплоєно: 2026-04-28. Zero behavioral changes — чистий рефакторинг з backwards-compat re-exports.

Before / After

graph LR
    subgraph "Before (10,779 LOC)"
      M1[crm-routes.ts<br/>6,181 LOC<br/>~120 handlers]
      M2[api-server.ts<br/>1,464 LOC]
      M3[Workspace.jsx<br/>~3,134 LOC]
    end

    subgraph "After (373 LOC dispatchers + modules)"
      R[router.ts<br/>512 LOC dispatch]
      AS[api-server.ts<br/>196 LOC]
      WP[Workspace.jsx<br/>168 LOC orchestrator]

      subgraph "shared/routes 17 modules"
        S1[projects · files · workers · skills · chat]
        S2[wiki · sage · onboarding · pins · docs]
        S3[learnings · specs · restart · system · analytics]
      end

      subgraph "master-bot/routes 4 modules"
        B1[auth · internal · cli · websocket]
      end

      subgraph "pages/workspace 9 modules"
        W1[ChatThread · Composer · TerminalPanel · CloudPmPanel]
        W2[WorkerSelector · WorkerStudio · ThinkingTips]
        W3[QuickActionBar · useSSEStream]
      end
    end

    M1 -.refactor.-> R
    R --> S1 & S2 & S3
    M2 -.refactor.-> AS
    AS --> B1
    M3 -.refactor.-> WP
    WP --> W1 & W2 & W3

Чистий результат: кожен модуль ≤900 LOC, single responsibility. Hot-reload швидший, code-review менший, поверхня конфліктів вужча.

48.1 — Decompose crm-routes.ts (задача #16) — DONE ✅

6181 → 9 рядків (re-export shim). 17 доменних модулів у shared/routes/:

shared/routes/
  ├── _utils.ts     (343)  — types, safePath, isValidProjectName, extractChatId, canAccessProject, cachedReadJson
  ├── router.ts     (512)  — routeCrmRequest() dispatch table, re-exports
  ├── projects.ts   (723)  — handleGetProjects, handleGetProjectDetails, handleGetLogs, handleGetMetrics, handleGetChatHistory
  ├── files.ts      (381)  — 8 file handlers (CRUD + upload + git clone)
  ├── workers.ts    (636)  — worker CRUD, active role, message posting, TG token management
  ├── skills.ts     (665)  — 18 skill handlers (global CRUD, evolution, forks, generate)
  ├── chat.ts       (862)  — SSE streams, Cloud PM chat, terminal log ingest, routeSseRequest
  ├── wiki.ts       (258)  — wiki tree, knowledge graph, file read/save/download
  ├── sage.ts       (757)  — marketplace scout, Sage analysis, benchmarks
  ├── onboarding.ts (601)  — project creation, onboarding setup, directory/config generation
  ├── system.ts     (182)  — system handlers
  ├── pins.ts        (80)  — pin CRUD
  ├── learnings.ts  (111)  — learnings get/post, bridge heartbeat
  ├── docs.ts       (131)  — docs tree/file
  ├── specs.ts      (113)  — spec approve/reject
  ├── restart.ts     (78)  — worker restart
  └── analytics.ts   (10)  — analytics stub

48.2 — Decompose api-server.ts (задача #17) — DONE ✅

1464 → 196 рядків. 4 route-модулі у master-bot/routes/:

master-bot/
  ├── api-server.ts      (196)  — Bun.serve() thin dispatcher + in-memory state
  └── routes/
      ├── auth.ts        (562)  — /api/auth/* (register, login, OAuth, 2FA, device code, rate limiters)
      ├── internal.ts    (282)  — /api/internal/* (chat/save, bridge-event, relay) + binary downloads
      ├── cli.ts         (293)  — /api/cli/* + /api/mcp/* (ARC CLI integration)
      └── websocket.ts   (303)  — WebSocket upgrade + handlers (terminal, event-stream, local-bridge)

48.3 — Decompose child-bot/bot.ts (задача #19) — DONE ✅

1952 → 1047 рядків. 4 модулі:

child-bot/
  ├── bot.ts            (1047) — config, init, message handler, main loop
  ├── claude-runner.ts   (763) — subprocess management, retry logic, worker dispatch
  ├── telegram.ts        (149) — Telegram API (send, typing, callbacks)
  ├── workers.ts         (139) — worker registry, thread management, hot reload
  └── inbox.ts           (124) — CRM inbox processing, attachment handling

48.4 — Frontend Workspace Decomposition (задача #18) — DONE ✅

3134 → 168 рядків. 9 компонентів у frontend/src/crm/pages/workspace/:

frontend/src/crm/pages/
  ├── Workspace.jsx          (168)  — layout shell + state orchestration
  └── workspace/
      ├── ChatThread.jsx     (899)  — sendMessage, CopyButton, ChatPanelView, fetchChatHistory
      ├── Composer.jsx       (447)  — ModelSelector, ToolsMenu, MicButton, useFileAttach, AttachmentChips
      ├── WorkerStudio.jsx   (557)  — WorkerForm, WorkerStudioModal, WORKER_TOOL_OPTIONS
      ├── TerminalPanel.jsx  (384)  — TerminalPanelView (xterm.js, tool icons, rich logs)
      ├── CloudPmPanel.jsx   (244)  — CloudPmPanelView (Cloud PM chat panel)
      ├── WorkerSelector.jsx (197)  — WorkerSelectorBar, WORKER_TONES, workerTone, loadActiveWorkers
      ├── ThinkingTips.jsx   (147)  — spinner + rotating tips with doc links
      ├── useSSEStream.js    (150)  — SSE connection + message parsing hook
      └── QuickActionBar.jsx  (77)  — footer action bar (/btw, Pause, Stop, Approve)

48.5 — Event-Driven Inbox via fs.watch — DONE ✅ (2026-04-28)

P1 HIGH — Замінити 500ms file polling на instant delivery без додаткових залежностей.

Рішення: після порівняння Redis/RabbitMQ/Kafka обрано native fs.watch() (Linux inotify через Bun). Усі три брокери — overkill для single-VPS, 10KB/msg, 1-to-1 per-worker FIFO use case. Файлова durability вже забезпечує необхідні гарантії; єдина проблема була latency 500ms polling.

Реалізація (child-bot/inbox.ts + child-bot/bot.ts):

Результат: latency 500ms→~5ms (100x), zero new dependencies, повна сумісність з існуючим JSONL форматом.

48.6 — Worker Lazy Lifecycle (idle-kill + wake-up) — DONE ✅ (2026-04-28)

P1 HIGH — Capacity scaling без додавання hardware або Docker split.

Замість оригінального плану (Docker Compose split) проведено capacity analysis: VPS bottleneck = RAM від idle worker bot.ts процесів (~85MB кожен × 6 workers per project = ~510MB idle per user). Container split не вирішує цю проблему — це той самий код.

Рішення: worker self-idle-shutdown після 10 хв тиші + wake-up on demand при першому повідомленні через CRM.

Компоненти:

Результат:

48.6.1 — Single-mode wake-up parity (закриває #20) — DONE ✅ (2026-04-30)

Wake-up logic при іділ-kill існував лише для parallel-mode проєктів. Single-mode (більшість user-створених через CRM) повертав NO_BOT_RUNNING 503 на ~30s до того, як watchdog рестартує.

Фікс:

48.7 (перейменовано) — Service Entry Points & Docker Compose (задача #21) — BACKLOG

P2 MEDIUM — Незалежні процеси для кожного сервісу. Відкладено: реальний bottleneck вирішено в 48.6 без архітектурного перекройка.

48.7 — Auth Gateway & Shared Types (задача #22) — BACKLOG

P2 MEDIUM — Централізована авторизація + типи

Результат: 12,731 → 1,420 рядків у dispatcher'ах. 34 доменних модулі, всі ≤900 рядків. Задеплоєно 2026-04-28. Виконання (затверджено PO): P0 (#16, #17, #18) + P1 (#19) — DONE. P2 (#20-#22) — backlog.


Phase 49: Doc Enforcement & GitHub Integration (COMPLETE)

Виключити людський фактор з documentation discipline. CEO втомився нагадувати воркерам оновлювати docs після кожного push'а — переходимо на system-level enforcement.

49.1 — Pre-push doc coverage hook — DONE ✅ (2026-04-28)

P1 HIGH — Negative safety net.

49.2 — arc wrapup CLI helper — DONE ✅ (2026-04-28)

P1 HIGH — Positive workflow assist (доповнення до negative gate 49.1).

49.2.1 — arc wrapup --from-summary для research-driven роботи — DONE ✅ (2026-04-28)

P1 HIGH — Закриває blind spot: research/decisions/findings без code commits.

49.3 — GitHub Light integration — DONE ✅ (2026-04-28)

P1 MEDIUM — Webhooks → Telegram-сповіщення (UI-сайдбар відкладено до 49.3.1).

Компоненти:

Підтримувані події: push, pull_request, workflow_run, issues (покриття 95%).

Безпека: timing-safe перевірка HMAC-SHA256, 32-байтові hex-секрети, тиха відмова при невалідному підписі, rate limit 100/хв, payload макс 50KB.

Воркфлоу налаштування:

  1. arc github link <project> <owner/repo> → CLI друкує webhook URL + секрет + покрокову інструкцію
  2. CEO вставляє URL/секрет у GitHub Settings → Webhooks
  3. GitHub надсилає події → master сповіщає власника проєкту через Telegram

49.3.1 — GitHub UI sidebar feed — DONE ✅ (2026-04-28)

P1 MEDIUM — Візуалізація подій GitHub поряд із чатом.

49.3.2 — Public guides for Phase 49 features — DONE ✅ (2026-04-28)

P2 LOW — Self-serve документація для воркерів та зовнішніх читачів.

49.4 — GitHub Medium (BACKLOG, P2)

49.5 — GitHub Heavy (BACKLOG, P2)


Phase 50: Registration Conversion Lift (COMPLETE)

Конверсія 4% → ціль 9.5% (+138%). Аудит: docs/design/REGISTRATION_UX_AUDIT.md. 3 P0-блокери відвантажено атомарно за PO Plan A.

50.1 — Auth gate removal + trial credits scaffolding (Stage 1) — DONE ✅ (2026-04-28)

P0 CRITICAL — Задачі #17 + #18, бекенд. Frontend-банер + трекінг токенів — Stage 2.

Зміни auth (задача #17):

Скаффолдинг trial credits (задача #18):

В очікуванні (Stage 2):

Блокер для Stage 2: PLATFORM_ANTHROPIC_KEY має бути у vault. Спершу відвантажити Stage 1, щоб зняття auth gate потрапило в продакшн; trial credits лишаються скаффолдингом, доки vault-ключ не додано.

50.1 — Stage 2 (token tracking + UI banner) — DONE ✅ (2026-04-28)

P0 CRITICAL — Trial credits повністю наживо.

Результат: повний trial-онбординг наживо. Новий email/password користувач: signup → дашборд ✓ → верифікація email → видано trial → створення проєкту (пропуск API-ключа) → trial_mode=1 → воркери стартують із PLATFORM_ANTHROPIC_KEY → токени декрементуються на кожен виклик Claude → банер показує використання в реальному часі.

OAuth-користувачі повністю пропускають крок верифікації (верифіковано провайдером) і отримують trial при реєстрації.

50.2 — Wizard 5→3 steps (задача #19) — DONE ✅ (2026-04-28)

P0 CRITICAL — Зменшує кумулятивний відтік 69% під час онбордингу.

Старий флоу (5 кроків, 5-8 хвилин):

  1. Welcome (ім'я + роль)
  2. Project (назва, ніша, тон, файли, URL)
  3. Пресет команди
  4. API Keys (БЛОКЕР — обов'язково)
  5. Integrations

Новий флоу (3 кроки, ~50 секунд):

  1. Quick Start — лише ім'я + projectName (злиті 1+2, ~30с)
  2. API Keys — опційно з trial fallback (пропуск = 100K trial credits, ~10с)
  3. Integrations — Local Bridge / Telegram (без змін, ~10с)

Відкладені поля → дашборд:

Файл: frontend/src/crm/components/OnboardingWizard.jsx — новий компонент StepQuickStart, StepApiKeys оновлено: дозволяє порожній ключ із підказкою trial-режиму, прибрано StepWelcome/StepProject/StepTeam з render path (функції поки збережені, tree-shake або видалення пізніше).

Результат: час до першого проєкту 5-8 хв → ~50с. Разом із #17 (без email gate) та #18 (trial credits): конверсія 4% → прогнозовано 9.5%.

50.2.1 — Quick Start ReferenceError fix (закриває #25) — DONE ✅ (2026-04-30)

handleCreateProject (shared/routes/onboarding.ts:631) посилався на out-of-scope ownerChatId у фінальному виклику logActivity — змінна в цьому scope називається chatId. Catch-блок перетворював ReferenceError на 500 з error: "ownerChatId is not defined", що проявлялося червоним банером під сіткою Team Preset і блокувало все створення проєктів через Quick Start. Фікс на один символ: ownerChatId → chatId. Побічний ефект: аудит-рядок project_created нарешті записує актора (Phase 50.4 обіцяла це для всіх викликів logActivity, але пропустила цей).

50.3 — Roadmap Redesign (Variant A) — DONE ✅ (2026-04-28)

P1 HIGH — Замінює плаский список фаз таблицею в стилі Linear.

Довідка: ARC OS Mob App-handoff/arc-os-mob-app/project/redesign-arc-os-roadmap.html (Variant A).

Зроблено:

Файли: frontend/src/crm/pages/RoadmapRedesign.jsx, App.jsx, locales/uk/messages.po

Відкрито: Варіанти B (дошка Now/Next/Later) та C (Gantt + деталі) відкладено — відвантажувати лише якщо PO-сигнал вимагатиме stakeholder/planning view. Variant A покриває ~80% щоденних потреб воркфлоу PO + dev.

Followup (того ж дня): рядки підфаз у розгорнутому батьку тепер теж клікабельні — chevron перемикає inline-тіло + drill-down метаданих на підфазу (відкрита лише одна за раз на батька). Виправляє скаргу користувача, що під-рядки виглядали клікабельними, але нічого не робили.


Phase 50.4 — Audit Trail + OAuth Last-Login (DONE ✅)

GitHub-задачі #16 (P0) + #17 (P1) — виявлені Ludus під час research-аудиту гейміфікації.

gh #16 — поле actor у logActivity() порожнє у всіх callsites:

gh #17 — OAuth-флоу не оновлює users.last_login:

Обидва баги — швидкі фікси (~30 хв разом), але розблоковують майбутню роботу з телеметрією.


Phase 51: Stripe Billing — Stage 1 (DB + middleware + status) — DONE ✅ (2026-04-29)

Задача #20 (P0). Атомарний фундамент: схема БД, middleware лімітів плану, endpoint статусу. Stripe SDK = Stage 2.

Модель ціноутворення (OR-семантика лімітів):

План Ціна Проєкти Воркери
Free $0 1 5
Min $4.99/міс 5 OR 25 разом OR-семантика
Max $11.99/міс 20 OR 150 разом OR-семантика

Trial credits — уже наживо (Phase 50.1), одноразово на email, ніколи не поповнюються апгрейдом. Платформена плата покриває лише інфраструктуру; користувачі приносять власний Anthropic-ключ (або Local Bridge безкоштовно).

Компоненти Stage 1:

Поза Stage 1 (пізніше):

Acceptance для Stage 1 (перевірено): наявні користувачі отримують авто-створений Free-рядок при першому виклику billing/status; створення нового проєкту користувачем із 1+ проєктами повертає HTTP 402 з {error: "plan_limit_reached", reason, current, limit, plan, message}; те саме для створення воркера; endpoint статусу повертає коректний знімок використання.


Phase 52: Friends & Family Beta Launch (DONE ✅)

Публічний запуск відкладено, доки F&F-валідація не пройде критерії успіху. 10-20 користувачів × 1 місяць = реальний сигнал перед активацією Stripe. За мета-рев'ю PO/Sentinel: інвайт-коди (не whitelist), гібридний туторіал (sample + тур на 5 кроків, не повний у стилі Notion), підтримка 24/7, lifetime-знижка 50% як стимул.

Критерії успіху (мають бути досягнуті перед публічним запуском)

Протокол тріажу фідбеку

Рекрутинг + каденція + стимул

Підфази

52.1.1 — Documentation Overhaul (P0/P1) — DONE ✅ (2026-05-04)

52.1 UK debt closure (#32, #33, #34) — DONE ✅ (2026-05-17)

52.1.5 — Video walkthrough scripts (P2) — DONE ✅ (2026-05-06)

52.1.4 — Bulk UK translation pass (P1) — DONE ✅ (2026-05-05)

52.1.3 — Docs UX Polish (P1) — DONE ✅ (2026-05-05)

52.1.2 — overview.md How-It-Works clarity (P2) — DONE ✅ (2026-05-04)

52.1 — Invite Codes + Feedback Channel (P0, 1 день) — DONE ✅ (2026-04-29)

52.1.1 — beta plan tier для F&F-тестерів (закриває #20) — DONE ✅ (2026-04-30)

52.2 — Sample Project + Onboarding Tour (P0, 0.5 дня)

52.3 — Funnel Analytics (P0, 1 день)

52.5 — Doc Cleanup (P2, 0.5 дня)

52.6 — Uptime Monitoring (P1, 0.5 дня)

52.7 — Buffer Day (P0, 0.5 дня)

Разом: 5 днів до F&F-ready.


Phase 53: Post-F&F Notifications (DONE ✅)

Mobile UX gap: коли CEO працює через CRM/CLI/bridge, per-worker TG-боти мовчать, бо child-bot/telegram.ts жорстко блокує всі tgSend у workspace mode (інакше відповіді з CRM протікали б у TG-чат). Phase 53 додає паралельний events-only канал, що обходить gate — пінги, ніколи не дублює розмову.

53.11.1 — Bot Creation Wizard (закриває #48) — DONE ✅ (2026-05-10)

53.11 — Multi-Worker TG UX Overhaul (задачі #48, #49) — IN PROGRESS (2026-05-10)

53.21 — Sentinel P2 batch 2 (trial-tenant + feedback gate + Docker pin) — DONE ✅ (2026-05-12, закриває #107 #108 #109)

53.20 — Sentinel P2 fast-wins batch — DONE ✅ (2026-05-12, закриває #104 #105 #106)

53.19 — mTLS CF Authenticated Origin Pulls — ACTIVATED IN PROD ✅ (2026-06-01, #96 закрито)

Stage 2 deploy 2026-06-01: CF dashboard Global toggle ON → CF_MTLS_ENABLE=1 bash scripts/vps-sync.sh успішно → nginx ssl_verify_client on активний. Перевірка: CA=OK, directives=1, https://arc-os.co/api/master/health HTTP/2 200, прямий TLS handshake по IP показує Request CERT (13) — запити без сертифіката вмирають до HTTP. Defense-in-depth Layer 3 поверх geo lockdown тепер наживо. CA закінчується 2029-11-01 → задача-нагадування про ротацію #318.

Підготовка в репо (оригінальне приземлення Phase 53.19, 2026-05-11):

53.18.2 — Secret rotation runbook + script для #103 — DONE ✅ (2026-05-11)

53.18.1 — Wrapper-script fix для витоку секретів — DONE ✅ (2026-05-11)

53.18 — tmux -e flag refactor: закрити витік секретів через /proc/cmdline (закриває #102) — SUPERSEDED через 53.18.1 (2026-05-11)

53.16.1 — Завершення міграції Sprint 2 P1-14 + виявлено tmux secret-leak P0 — DONE ✅ / IN PROGRESS (2026-05-11)

53.17.5 — mTLS Authenticated Origin Pulls (Stage 0 prep, чекає дії користувача в CF dashboard) — IN PROGRESS (2026-05-11, #96)

53.17.2 + 53.17.4 — Репо SSOT для sshd_config + fail2ban + UFW docs + server_tokens off — DONE ✅ (2026-05-11, закриває #93 #95)

53.17 — Sentinel pentest follow-up: CF lockdown + child-bot loopback + repo SSOT (закриває #91) — DONE ✅ (2026-05-11)

53.16 — Sentinel Sprint 2: 13 × P1 — DONE ✅ (2026-05-10, закриває #68-80)

53.15.1 — Довіра до Cloudflare CF-Connecting-IP для rate-limit — DONE ✅ (2026-05-10)

53.15 — Sentinel Sprint 1: 5×P0 + редагування PII — DONE ✅ (2026-05-10, закриває #62-67)

53.14 — Міграція issues.json у SQLite (project_issues) — DONE ✅ (2026-05-10, закриває #53)

53.13 — Кореневий tsconfig.json + tsc --noEmit у pre-push та CI (закриває #44) — DONE ✅ (2026-05-10)

53.12.1 — preserve-auto-append.sh: авто-перенумерація при колізії id (закриває #54) — DONE ✅ (2026-05-10)

53.12 — Deploy hygiene: структурний merge для auto-append SSOT файлів (закриває #51) — DONE ✅ (2026-05-10)

53.10 — Інформативні TG notify hooks (закриває #47) — DONE ✅ (2026-05-10)

53.7 — CI/CD foundation (закриває #43, #44, #45, #46) — DONE ✅ (2026-05-07)

53.7.1 — Глобальний Stop hook для non-citadel CWD — DONE ✅ (2026-05-07)

53.6 — Фікс дрейфу коду проєктів (закриває #42) — DONE ✅ (2026-05-07)

53.4 — Фікси надійності TG-ботів воркерів (закриває #41) — DONE ✅ (2026-05-07)

53.5 — Бейдж BETA + in-app feedback widget — DONE ✅ (2026-05-07)

53.3b — Zero-touch через наявну інфраструктуру arc CLI — DONE ✅ (2026-05-07)

53.3a — Hook читає ~/.arc/credentials.json (без танців із shell-rc) — DONE ✅ (2026-05-07)

53.2.1 — Повне оновлення README — DONE ✅ (2026-05-07)

53.2 — Локальний Claude Code Stop hook → /notify endpoint — DONE ✅ (2026-05-07)

53.1 — Per-worker TG event notifications — DONE ✅ (2026-05-07)


Phase 54: Onboarding Engagement Layer (DONE ✅)

Phase 50 вирішила "signup → дашборд" (3-кроковий візард, trial credits, без email gate). Phase 53.11 вирішила налаштування ботів на воркера (#48). Phase 54 закриває решту прогалини: "дашборд → перша успішна AI-команда". Ставка на CLI — кожен крок чекліста завершується перевіркою через arc <command>.

User journey після Phase 50: користувач потрапляє в порожній Workspace, пресет-воркери існують, але немає ясного шляху до першої цінності. Phase 54 додає постійний згортуваний 5-етапний чекліст (1 Workers → 2 Install CLI → 3 First skill → 4 Telegram bot → 5 First issue) з auto-verify polling, кнопкою replay та CLI-командою arc tour для hardcore-користувачів.

54.1 — Schema + telemetry foundation (задача #56, P0) — DONE ✅

54.2 — Checklist UI + кнопка replay (задача #57, P0) — DONE ✅

54.3 — CLI-first етап із командою arc tour (задача #58, P0) — DONE ✅

54.4 — Skill generator wizard (задача #59, P1) — DONE ✅

54.5 — Empty states + віджет завершеності профілю (задача #60, P1) — DONE ✅

54.6 — Funnel analytics (задача #61, P2) — DONE ✅

Архітектурні інваріанти (збережено):

Оцінка трудомісткості: ~8.5 днів разом. MVP (54.1-54.3) = 5 днів.

Послідовність: 54.1 → 54.2 → 54.3 (критичний шлях); 54.4, 54.5 паралельно після 54.1; 54.6 останнє (потребує повних funnel-даних).

Phase 54 follow-up — Welcome feature tour (задача #114) — DONE ✅

Phase 54 follow-up — Issue discipline enforcement (задача #115) — DONE ✅

Phase 54 follow-up — commit-msg hook, що вимагає #<id> (задача #116) — DONE ✅

Phase 54 follow-up — PostToolUse auto-log hook (задача #125) — DONE ✅

Phase 54 follow-up — ROADMAP gate на closes-#N (задача #127) — DONE ✅

Phase 54 follow-up — Scope-drift watcher (задача #126) — DONE ✅

Phase 54 follow-up — Ретроспективна реконструкція задач (задача #117) — DONE ✅


Phase 55: Login Page Redesign — Cosmic Editorial (PLANNED)

Замінити поточний статичний LoginOverlay.jsx (593 LOC) + LoginBackdrop.jsx (98 LOC) хендофом Claude Design "Variant A — Cosmic Editorial": анімована планета (terminator-as-ARC), зоряне поле + супутники, glassmorphism CosmicCard з повним state machine, editorial-сторона з headline + слайдером можливостей + tickertape agent-chatter. Підтягує екран логіна до бренд-планки Phase 47/47.8 (Timeline/IssuesRedesign).

Source bundle: arc-os-login-page/project/parts/*.jsx (Sign-in.html + 5 jsx parts, ~2.1k LOC дизайн-коду). Документ аналізу: designs/login-redesign-analysis-2026-05-10.md. Оригінальний промпт: designs/login-redesign-prompt-2026-05-10.md.

55.1 — Зачистка дизайнерських тогглів перед merge (задача #82, P0) — DONE ✅ (2026-05-13)

55.2 — Анімований космічний фон (задача #83, P1) — DONE ✅ (2026-05-13)

55.3 — Форма CosmicCard (задача #84, P1) — DONE ✅ (2026-05-13)

55.4 — Editorial-сторона (задача #85, P1) — DONE ✅ (2026-05-13)

55.5 — Magic-link флоу (задача #86, P2) — DONE ✅ (2026-05-13)

55.6 — 2FA / TOTP — BLOCKED на дизайні Sentinel (задача #87, P2) — STILL BLOCKED

55.7 — Мобільні + responsive breakpoints (задача #88, P2) — DONE ✅ (2026-05-13)

55.8 — Аудит A11y + i18n + reduced-motion (задача #89, P1) — DONE ✅ (2026-05-13)

55.9 — Анімація успіху + відлік редиректу (задача #90, P2) — DONE ✅ (2026-05-13)

55.10 — QA-фікси проти канонічного дизайну (задача #110, P1) — DONE ✅ (2026-05-13) QA-прохід Sentinel виявив 5 розбіжностей deploy-vs-design у CosmicCard.jsx + EditorialPanel.jsx:

Архітектурні інваріанти (збережено):

Оцінка трудомісткості: ~6д MVP (55.1-55.4 + 55.7-55.9; піднято з 5д після re-export фону 2026-05-13), +1д на magic-link (55.5), +2-3д на 2FA після розблокування (55.6). Разом з усіма підфазами: ~8-9д.

Послідовність: 55.1 (P0 gate) → паралельно: 55.2, 55.3, 55.4 → 55.7, 55.8 → 55.9 (audit gate); 55.5 паралельно будь-коли; 55.6 відкладено.

Задачі: #82 (P0), #83-#85 (P1), #86 (P2), #87 (P2 blocked), #88 (P2), #89 (P1), #90 (P2).


Phase 56: AI Interop Layer — Project Context Export (PLANNED)

Power-user фіча на тезі "OS for AI Teams": дати власникам проєктів передавати повний санітизований знімок проєкту будь-якому зовнішньому AI (Gemini, ChatGPT, Perplexity, Claude.ai) без copy-paste театру. Валідований pain point — вручну будувалося двічі для product-owner сесій до рішення продуктизувати.

Інверсія Phase 54. Де 54 онбордить користувача в Arc OS, 56 допомагає користувачу винести контекст Arc OS в інший AI-інструмент. Обидві розширюють поверхню user empowerment навколо власних даних проєкту.

Скоуп: вхід у TopHeader + Project Settings → вкладка Export → 3-кроковий модал (секції → обов'язковий secret scan → preview & download). Вихід — один .md файл з назвою <project>-context-<date>.md.

Приватність — це ставка, а не післядумка. Дірявий експорт = юридична + довірча катастрофа. Багаторівневий сканер (regex + ентропія + контекстні евристики), авто-редагування критичних знахідок, примус користувача переглянути кожну high/medium знахідку, обов'язковий чекбокс підтвердження перед завантаженням.

56.1 — Модуль secret scanner (задача #97, P0) — DONE ✅ (2026-05-13)

56.2 — Export endpoint + рендерер секцій (задача #98, P0) — DONE ✅ (2026-05-13)

56.3 — Модал Project Context Export (задача #99, P0) — DONE ✅ (2026-05-13)

MVP COMPLETE — 56.1 + 56.2 + 56.3 відвантажують повний owner-driven export-флоу end-to-end (secret-scanner → endpoint → модал).

56.4 — Settings + audit log (задача #100, P1) — DONE ✅ (2026-05-13)

56.5 — Telemetry + alerts (задача #101, P2) — DONE ✅ (2026-05-13)

56.4 — Settings tab + audit log (задача #100, P1) — PLANNED

56.5 — Telemetry + алерти витоку секретів (задача #101, P2) — PLANNED

Архітектурні інваріанти (збережено):

Оцінка трудомісткості: ~3.5 дня. MVP (56.1-56.3) = 2.5 дня. Settings tab + telemetry додають 1 день. Послідовність: 56.1 (фундамент, блокує все) → 56.2 → 56.3 (точка відвантаження MVP) → 56.4 + 56.5 паралельно після MVP.

Задачі: #97 (P0), #98 (P0), #99 (P0), #100 (P1), #101 (P2).


Phase 57: Platform Settings UI (follow-up Sentinel #103, DONE ✅)

Закриває вектор витоку за #103: ротація платформених секретів (ключі Anthropic / OAuth / TG / Resend) більше не потребує воркфлоу ssh + редагування .env + вставка в чат. Super-admin клікає "Rotate" у CRM UI → нове значення атомарно лягає у vault.json → прив'язані боти рестартують → пишеться audit-рядок.

Мотивація. Sentinel #103 (2026-05-13) — випадковий bash -x на start-child-bot.sh надрукував повний .env в історію розмови. Наступна спроба ротації повторно злила 3 із 5 свіжих токенів через chat-paste. Корінна причина — воркфлоу, а не людська помилка: кожен канал, який людина використовує для ротації (shell, редактор, AI-чат), є логуючою поверхнею. Єдиний безпечний канал — UI password input — значення ніколи не ехається, ніколи не персиститься у scrollback, ніколи не копіюється через історію буфера обміну.

Архітектура. Бекенд = тонка оболонка над наявним AES-256-GCM API shared/vault.ts + нова append-only таблиця platform_audit_log + гейт requireAdmin з Phase 53.15. Фронтенд = сітка карток на керований ключ, rotate-модал із password-input, шухляда audit log. Hot-reload через detached Bun.spawn(["nohup", "bash", "-c", "tmux kill-session ... && bash start-*.sh"]), щоб рестарт master не вбивав власну відповідь.

57.1 — Backend MVP (Stage 1, DONE ✅ 2026-05-15, коміт 6171d32)

57.2 — Frontend (Stage 2, DONE ✅ 2026-05-15)

57.3 — Hot-reload інтеграція (Stage 3, DONE ✅ 2026-05-15, коміт 444a101)shared/auth.ts loadOAuthConfig() читає getSecret() на кожен виклик; restartTargets очищено для GitHub/Google/Resend (RESEND уже hot-reload через shared/email.ts:47). Після ротації наступний запит читає нове значення з vault — без рестарту master, без обірваних з'єднань. Ключі ANTHROPIC + Telegram лишаються restart-required (споживаються при spawn child-бота / ініціалізації TG long-poll через env).

57.3.1 — UI polish (DONE ✅ 2026-05-15, коміт 56191b0) — фідбек "картки однією купою, без контексту": сітку відрефакторено на 4 категоризовані секції (Anthropic / OAuth Providers / Telegram Bots / Transactional Email) із заголовком + іконкою + підказкою + лічильником елементів. Кожна картка отримує згортувану панель довідки (перемикач через іконку Info) зі структурованим контекстом: USED IN (файли/флоу, що читають ключ), GET NEW VALUE FROM (deeplink на SaaS-дашборд), EFFECT AFTER ROTATE (миттєво vs restart-required + крайні випадки), RISK IF LEAKED (масштаб ураження компрометації). Бекендовий MANAGED_KEYS отримує 5 нових полів (category / usedIn / getFromUrl / effectAfterRotate / riskIfLeaked); list-відповідь їх прокидає. Новий компонент HelpRow для рядків із лейблами всередині панелі.

57.3.2 — UK i18n каталог (DONE ✅ 2026-05-15, коміт 6747331)lingui extract виявив 66 відсутніх UK-рядків після відвантаження Phase 57 (текст Platform Settings не перекладався при додаванні). Батч-переклад 65 за один прохід (1 внутрішній плейсхолдер пропущено): 35 із Platform Settings + 11 із FeedbackWidget + 6 BotCreationWizard + 4 DocsSearch + 6 relative-time/onboarding/banner + 3 лейбли таксономії. Скомпільовані каталоги + vite build чисто. Follow-up фікс (коміт 6970849): початковий коміт пропустив скомпільовані .ts каталоги — застейджено лише .po. Згідно з нотаткою CLAUDE.md (коментар у .gitignore): "Docker build skips lingui compile due to issue #23 — .ts must be committed alongside .po". Файли .ts перекомічено для розблокування проду.

57.3.3 — Повна локалізація бекенду (DONE ✅ 2026-05-16, Option B) — фідбек: лейбли карток / описи / вміст довідкових панелей (Used in, Get new value from, Effect after rotate, Risk if leaked) були TypeScript-літералами бекенду в MANAGED_KEYS, lingui-макроси не можуть витягувати динамічні рядки. Workaround: додано реєстр _PLATFORM_BACKEND_I18N усередині PlatformSettings.jsx — явні виклики msg\…`для кожного бекенд-рядка, тож Babel-екстрактор lingui підбирає їх уmessages.po. Render використовує _(item.label)черезuseLingui()._для резолюції в рантаймі. Підказки CATEGORIES теж конвертовано вmsg`…`. Витягнуто 70 нових msgid; 69 перекладено на UK за один прохід (1 внутрішній плейсхолдер). Бекенд shared/routes/platform.ts` без змін — тримає EN як SSOT, фронтенд обробляє переклад. Дисципліна дрейфу: будь-яке нове поле MANAGED_KEYS має дзеркалити рядки в реєстрі.

57.3.4 — Фікс мапи MessageDescriptor (DONE ✅ 2026-05-16, коміт 5e9e929) — UK-переклади не застосовувалися в рантаймі попри наявність у каталозі: lingui compile генерує короткі hash-msgid (напр. 8lt1P5 → "Anthropic — Platform Inference") для зменшення бандла, тож lookup _(plainBackendString) промахується (каталог ключований hash'ем, не вихідним текстом). Фікс: побудувати PLATFORM_I18N = new Map(descriptors.map(d => [d.message, d])), щоб render міг _(MAP.get(item.label)) — дескриптор несе свій hash-id як .id, lingui знаходить запис каталогу. Новий хелпер tx(_, source) робить map lookup + fallback на вихідний рядок при промаху. Оновлено всі 8 render call sites.

57.4 — Використати для живої ротації (Stage 4) — повторити ротацію #103 через новий UI. Audit log записує дії. Старі токени відкликано в SaaS-дашбордах.

Задачі: #103 (P0 — ротація секретів, OPEN до завершення Stage 4), #102 (P0 — tmux-витік закрито).


Phase 58: Header / UserDropdown UX (DONE ✅ 2026-05-16)

UX-рефакторинг за патерном Claude.ai: пігулка користувача внизу ліворуч замість кластера Docs/Help/Lang/Theme/Avatar угорі праворуч. Чистить TopHeader і дає меню користувача єдиний виявлюваний дім.

58.1 — Пігулка користувача внизу ліворуч (DONE)UserDropdown.jsx переписано як fixed-пігулку внизу ліворуч viewport (ширина 240px, над 28px AppFooter). Поповер відкривається вгору. Нове 3-рівневе меню: account (Profile/Bridge/Billing/Subscriptions) → роздільник → app (Docs/Replay onboarding/Language/Theme) → роздільник → Logout. Lang і Theme — inline-перемикачі з лейблом поточного значення.

58.2 — Чистка TopHeader (DONE) — викинуто кнопку Docs, меню Help, LangSwitcher, ThemeToggle, UserDropdown із правої зони. Права зона тепер порожня; ліва зона (гамбургер + лого + BETA + перемикач проєктів + глобальна навігація) володіє всім header-баром. Прибрано невикористані імпорти + стан helpOpen + replay-хендлер + onboarding-проп.

58.3 — Нижній відступ Sidebar (DONE)Sidebar.jsx додає paddingBottom: 60px на overlay та inline aside, щоб скрол навігації проєкту не заїжджав під fixed-пігулку. Overflow inline aside змінено hiddenhidden auto для збереження вертикального скролу.

CrmMainLayout.jsx тепер рендерить <UserDropdown onOpenDocs onboarding /> як fixed-сусіда і перестає передавати onboarding у TopHeader. 4 файли, +342/-330 LOC, vite build зелений.

58.1.1 — Onboarding modal wizard + per-step підказки (DONE ✅ 2026-05-16) — фідбек користувача: inline OnboardingChecklist на Workspace з'їдав забагато місця, а абстрактні лейбли кроків на кшталт "Confirm your workers" не давали жодної підказки що клікати. Фікс із двох частин:

Файли: 5 (1 НОВИЙ, 4 змінені). Build vite ✓ 8.63с.


Phase 59: Localization Expansion — 6 нових локалей (DONE ✅ — 59.1-59.4 завершені)

Arc OS сьогодні шипиться в EN + UK (438 рядків, lingui v5). Phase 59 додає 6 локалей паралельно: DE (німецька), ES (іспанська), PL (польська), RU (російська), pt-BR (португальська Бразилія), FR (французька). Стратегія — AI-only переклад із in-app beta-feedback loop — без платних людських перекладачів наперед. RU явно включена за рішенням CEO 2026-05-16 (перекриття рекомендації PO пропустити; обґрунтування: російськомовна dev-діаспора велика, бренд лишається глобальним інструментом, не політично-вирівняним, future-proofing).

Gating-передумова (НЕ всередині скоупу Phase 59): спершу має закритися UK-борг — задачі #32 (людська вичитка 17 AI-перекладених UK-документів), #33 (переклад 6 deep-architecture symlink-документів), #34 (10 відео-walkthrough). Реплікація неперевіреного пайплайна на 6 локалей = 6× борг неперевіреного контенту.

Мови назавжди поза скоупом (не відкладені — інша інженерна категорія):

59.1 — Lingui-інфра + глосарій + конвенції тону (задача #119, P0) — DONE ✅ (2026-05-17)

59.2 — AI-пайплайн перекладу + UI-рядки × 6 (задача #120, P0) — DONE ✅ (2026-05-17)

59.3 — Переклад публічної документації × 6 (задача #121, P0) — DONE ✅ (2026-05-18, 216/216 файлів)

59.4 — Translation feedback widget + per-locale review dashboard (задача #122, P1) — DONE ✅ (2026-05-21)

59.5 — UI visual regression × 6 локалей (задача #123, P1) — PLANNED

59.6 — Аналітика мов + browser auto-detect + polish перемикача (задача #124, P2) — PARTIALLY DONE (2026-05-18)

Архітектурні інваріанти (збережено):

Оцінка трудомісткості: ~8.5-9.5 днів. MVP (59.1-59.3) = 6-7 днів, P1+P2 polish додає ~2.5 дня.

Послідовність: 59.1 (фундамент) → 59.2 + 59.3 паралельно (UI-рядки + документація) → 59.4 + 59.5 + 59.6 паралельно.

Задачі: #119 (P0), #120 (P0), #121 (P0), #122 (P1), #123 (P1), #124 (P2).


Технологічний стек

Шар Технологія
Brain Сесії Claude Code (Agent Teams)
CRM API Bun HTTP-сервер на Master Bot (:19210) — 62+ REST endpoints + SSE + WebSocket + Cloud PM chat + Sage Worker + Marketplace Scout + Knowledge Graph, JWT + OAuth auth
Proxy Nginx (:18888) — статичний фронтенд, reverse proxy API/SSE/WS
ARC CLI Скомпільований Bun-бінарник — 8 cloud-підкоманд (skill, report, kb, learnings, issue, issues, wiki, roadmap) + memory refresh/fetch-artifact
Frontend React CRM (responsive, mobile-first) + Phaser 3.80 (геймифікований офіс) + термінал xterm.js + @lingui/react i18n (EN/UK)
Commands Федеровані Telegram-боти (Master + Children)
Auth JWT (HMAC-SHA256) + OAuth (Google, GitHub) + реєстрація email/пароль
State SQLite SSOT (shared/db.ts, WAL mode) + JSON лише для інфраструктури (bot_registry, heartbeat)
Intelligence Binary Evals + Context Router + Learnings + Karpathy Loop + Sage Worker (Haiku) + A/B Benchmarks + Marketplace Scout
Secrets AES-256-GCM vault (shared/vault.ts)
Logging JSONL structured (shared/logger.ts) → /var/log/citadel/
Resilience Самовідновлюваний watchdog (master-bot/watchdog.ts)
NotebookLM Bridge Python FastAPI (:19213) — семантичний пошук через notebooklm-py + авто-синхронізація
Memory 3 рівні: Hot (JSON) / Warm (GitHub) / Cold (семантичний пошук NotebookLM)
Deploy Docker Compose, Nginx, Contabo VPS

Legacy-міграція

Компонент Рядків у v1 Заміна у v2
FastAPI backend ~3,000 Сесія Claude Code
telegram_bridge.py ~2,800 Офіційний плагін Channel
hybrid_engine.py ~1,000 Нативне виконання Claude
bridge_processor.sh ~500 Усунено
database.py ~700 JSON state-файли
WebSocketManager.js ~200 StatePoller.js (SSE)
Разом ~11,321 ~3,700

Скорочення кодової бази на 67%.


Security Hardening — окремі задачі (2026-05)

#130 — Auth IP Logging (DONE ✅ 2026-05-19, коміт 79cb1cb)

Append-only таблиця auth_events (міграція 027) фіксує IP + auth-події для всіх кінцевих флоу автентифікації: signup, login, OAuth (Google/GitHub), magic-link, device_code_approve. Окремо від platform_audit_log (адмінські vault-мутації).

#132 — TG notify-stop.sh неправильний контент (DONE ✅ 2026-05-19, коміт 2eb362c)

Виправлено race condition у Stop hook: tac | head -n 1 повертав перший рядок виводу попереднього багаторядкового ходу, якщо JSONL ще не скинувся. Фікс: jq -rRs + last (читає всі рядки, бере хронологічно найновіший assistant-запис) + sleep 0.5 перед читанням.


Phase 60: Standard Cloud — Docker container per user (DONE ✅, 2026-05-20, задача #129)

Security hardening SEC-60 (#152, 2026-05-21): C1 StrictHostKeyChecking=yes + hetzner_known_hosts, C2 per-container network arc-net-{id}, H3 static GitHub fingerprint у Dockerfile. DONE ✅

Security hardening SEC-60 Phase 2 (#154, 2026-05-22): H1 WS idleTimeout=120s, H5 git clone timeout 60s, C3 ARC_TOKEN через docker exec (не в docker inspect). DONE ✅

Security hardening SEC-60 Phase 3 (#155, 2026-05-22): H2 docker logs --since 1h (запобігання memory pressure). DONE ✅

Security hardening SEC-60 Phase 4 (#156, 2026-05-22): C4 виділений користувач arcapi на Hetzner (лише група docker, без root/sudo) + docker-only SSH wrapper (не-docker команди заборонені) + окремий ключ hetzner_arcapi. DONE ✅

Bug fix #157 (2026-05-22): ізоляція навичок між проєктами — колонка owner_project у skills_global, backfill навичок plasthetica-*, listForProject фільтрує за власником. Виправлено крос-проєктний витік навичок. DONE ✅

Core job-to-be-done: "Закрив ноут — воркер живе." Розробник може продовжити роботу з Telegram або будь-якого пристрою без перезапуску сесії.

Проблема

Claude Code зараз прив'язаний до локальної машини. Закрив ноут — воркер помер. Втрачається контекст, сесія, прогрес.

Рішення

Кожен користувач отримує ізольований Docker container на центральному сервері Arc OS:

Use case (головний)

23:00 — попрацював локально, воркер закоммітив feature
Закрив ноут
08:00 — Telegram: "продовжуємо?"
Воркер: "Вчора закоммітили auth middleware, залишились тести. Починаю."
Воркер продовжує на VPS поки ти п'єш каву

Що будуємо

Задача Завдання Статус
#134 Hetzner arc-cloud-prod (CPX32, Helsinki, 157.180.44.232) + Cloud Waitlist DONE
#135 Dockerfile.worker (ubuntu:22.04 + Bun + Claude CLI + arc binary) DONE
#136 Provisioning API + міграція 028 managed_containers DONE
#137 Claude Code auth UI (web terminal) DONE
#138 GitHub SSH key setup UI DONE
#139 WebSocket proxy CRM → container DONE
#140 /continue в Telegram (SSH-aware) DONE
#141 Container lifecycle — idle suspend + wake on message + crontab DONE
#142 Stripe Billing Stage 2 — BillingPage UI + Checkout + Portal (pending EU entity) DONE

Відвантажено 2026-05-20:

#135 / #136 відвантажено (2026-05-19):

Ціноутворення

Не входить → Phase 61 (Enterprise)


Phase 61.1: Arc Help — вкладка AI-асистента у FeedbackWidget (DONE ✅ 2026-05-21, задачі #146/#147/#151/#153)

Phase 61: Enterprise Cloud — dedicated VPS per client (PLANNED, задача #133)

Гейтінг: не починати поки Phase 60 не має 10+ платних користувачів. Реалізувати після того як Stripe billing протестований з реальними підписками.

Коли потрібен

Рішення

Окремий Hetzner VPS per enterprise клієнт, провіжнінг через Hetzner Cloud API:

Ціноутворення (орієнтовно)

Stack


Phase 63: UI/UX Consolidation + Token Usage Tracking (DONE ✅, 2026-05-21, задача #148)

Контекст

UI/UX аудит виявив кілька критичних проблем: UserDropdown внизу-ліво не помітний на малих екранах, OnboardingProgressPill конфліктував з іншими іконками хедера, воркер-кольори використовували Tailwind chart-токени замість семантичних ролей. Паралельно реалізовано токен-трекінг для видимості витрат клієнтів.

Доставлено

Phase 63.1 — Header UX (задача #148)

Phase 63.2 — Worker semantic colors

Phase 63.3 — Token Usage Tracking

Phase 63.4 — BillingPage Redesign

Файли

Phase 63.5: UI Polish — Tooltips, Icon Fix, Drag Resize (DONE ✅, 2026-05-21)

Доставлено

HoverTip — новий shared компонент

Sidebar — tooltips на всіх пунктах меню

WorkerSelector — tooltips на воркер-таблетках

WorkspaceSelector — виправлено іконку

FeedbackWidget (Arc Help) — drag-resize замість expand

Файли



Phase 64 — Security & Compliance Sprint (DONE ✅, 2026-05-23)

Мета: Закрити security/legal беклог Sentinel (#161–#175).

Sprint 1 (відвантажено)

Sprint 2 (відвантажено)

Sprint 3 (відвантажено)

Бонус

Відкладено (потребує реєстрації компанії)


Підтримується Rick (Orchestrator). Оновлюється після завершення кожної фази.

Phase 55.x: Login Cosmic Backdrop — Color Picker (DONE ✅, 2026-05-26, задача #200)

feat(login): cosmic background palette picker


Phase 65: Plata by mono — Recurring Billing (DONE ✅, 2026-05-26, задача #202)

Замінено Stripe (так і не активований) на Plata by mono — інтернет-еквайринг monobank. Перший реальний платіжний флоу для Arc OS.

Ціни (UAH):

Phase 66: Tech Debt Cleanup Sprint (DONE ✅, 2026-05-26)

Архітектурна чистка після Phase 65, керована аудитом Nexus Product Owner (docs/roadmap-analysis-2026-05-26.md).

Вплив: -776 LOC нетто, 333/333 тестів проходять, поверхні дрейфу схеми не лишилося, point-in-time recovery доступне з добовою гранулярністю.

Phase 67: Security & Bug Fix Sprint (DONE ✅, 2026-05-28)

P1 security та compliance багфікси:

#87: 2FA / TOTP Full Implementation (DONE ✅, 2026-05-29)

Розблоковано з Phase 55 (було BLOCKED на дизайні Sentinel — реалізував Developer).

Companion: сторінка Channels (DONE ✅, 2026-06-01, #299)

Companion: візуали pitch-deck (DONE ✅, 2026-06-01, #312 + #313)

Phase 69: Cloud Repo Model — GitHub bot org для авто-керованих репозиторіїв (DONE ✅ 2026-06-04, #341/#344/#347 deferred)

Закриває прогалину "де живе мій код у Cloud?". Кожен Arc-проєкт отримує приватний GitHub-репозиторій під arc-os-platform (bot org), невидимо керований через GitHub App. Local Bridge авто-комітить при збереженні; користувач виконує arc push для публікації. Cloud-контейнер клонує всі репозиторії проєктів користувача при провіжинінгу, пушить snapshot при паузі. Зовнішні репозиторії досі додаються за URL або через GitHub OAuth.

Parent: #337. Під-задачі: #338 (67.1 bot org bootstrap), #339 (69.2 авто-створення репо), #340 (69.3 container bootstrap + lifecycle), #341 (69.4 Bridge sync + arc CLI), #342 (69.5 панель Repos у CRM + OAuth), #343 (69.6 backfill), #344 (69.7 docs).

Повна специфікація: docs/architecture/PHASE_69_CLOUD_REPO_MODEL.md.

Рішення зафіксовані (CEO call 2026-06-03)

Статус підфаз

Phase 70: Chat ↔ Cloud Container Routing (DONE ✅ 2026-06-04)

Воркери працюють усередині Hetzner-контейнера користувача, не на master. Кожне чат-повідомлення для cloud-plan користувачів маршрутизується через docker exec --workdir /workspace/<slug> із bash login wrapper, щоб env ANTHROPIC_API_KEY завантажувався коректно. Хуки pause/wake із Phase 69.3 відправляють роботу назад у bot-org репозиторії; неперервність сесії через паузу використовує volume mount .claude/projects. Пігулка в CRM-хедері показує статус Cloud або Cloud · asleep.

Parent: #350. Під-задачі: #351 (рішення про маршрутизацію у worker-spawn), #357 (docs Phase 70 у 8 локалях).

Що відвантажено

Статус підфаз

Побічні ефекти

Phase 62: Voice Input Mode (DONE ✅)

CEO підтвердив 2026-06-05: L1 (Web Speech API native, Chrome/Edge) + L2 (self-hosted whisper.cpp на Contabo), послідовно. Без OpenAI-залежності — whisper.cpp працює на нашому VPS; байти аудіо ніколи не покидають Contabo. Hetzner worker-контейнери лишаються чистими (аудіо-шлях = Browser → Contabo → текст → Phase 70 маршрутизує за планом користувача). Специфікація: designs/phase-62-voice-input-2026-05-21.md.

Parent: #149 (закрито). Усі 5 під-задач відвантажено: #370 (62.1), #371 (62.2), #372 (62.3), #373 (62.4), #374 (62.5). #149.3 + #149.7 deferred за scope-рішенням CEO.

Що відвантажено (L1 COMPLETE)

Що відвантажено (L2 backend)

Що відвантажено (L2 frontend — закриває Phase 62)

Phase 71: Self-Hosted RAG — Cohere + sqlite-vec (DONE ✅)

Заміна services/notebooklm-bridge/ (Python FastAPI + Playwright auth + Google NotebookLM із 90% збоїв синхронізації + стелею 326 джерел Plus-тарифу) на provider-agnostic embeddings на sqlite-vec. Воркери запитують семантичний контекст проєкту через Cohere embed-multilingual-v3.0 (1024-dim float32), збережений у vec0 virtual table всередині наявного SQLite SSOT. Працює з будь-яким LLM (узгоджується з #293 multi-model стратегією).

Parent: #321 (спочатку відкладено за project_rag_decision_2026-06-02.md, REVERSED — un-deferred і відвантажено). Під-задачі: #358 (vault-запис + проба Platform Settings), #359 (встановлення sqlite-vec + міграція 049).

Чому un-deferred

Що відвантажено

Усі підфази відвантажено ✅

Усі 10 під-задач (#358–#367) закрито 2026-06-05. Повний soak-звіт: docs/architecture/PHASE_71_SOAK_2026-06-05.md. Архітектурний документ: docs/public/architecture/rag-architecture.md.

Phase 73: Meeting Transcription + Analysis (DONE ✅ — 9/9 під-задач)

Завантаження аудіо/відео зустрічі → транскрипція Groq whisper-large-v3 + Claude vision на кадрах зміни сцени + Claude summary → авто-вбудовується у RAG проєкту + лінк на задачу проєкту. Пряма кнопка завантаження на сторінці Transcripts. Місячна стеля на план (Starter=60 хв, Starter Cloud=300 хв). Фіча обмежена платними планами.

Parent: #379. Під-задачі #377/#378/#379/#380/#381/#382/#383/#384/#385.

Рішення CEO (D1-D6)

Що відвантажено

Phase 76: Project Channels — 1 бот на проєкт + Telegram Topics (DONE ✅ — 2026-06-06)

Крос-платформна абстракція каналів: один бот на проєкт замість одного бота на воркера. Telegram Supergroup + Topics для маршрутизації на воркера. Фундамент для Discord/Slack.

#314: Worker Cards UX — Edit-іконка + чистка Preview drawer (DONE ✅ — 2026-06-07)

#346: UI Atoms Library — впровадження Badge/Tag/Avatar (DONE ✅ — 2026-06-07)

Впровадження атомів Design System v2: inline color/style патерни винесені у перевикористовувані примітиви по всьому CRM.

Phase 78: Notes — Knowledge Collections (DONE ✅ 2026-06-08)

Нотатки в стилі NotebookLM на проєкт. Нота = колекція джерел (відео, аудіо, YouTube, веб, PDF, DOCX, TXT, зображення) з єдиним RAG-індексом і чатом. Прив'язується до задач — воркер бачить ноти коли бере issue в роботу.

Parent: #394 (закрито). Усі 10 під-задач відвантажено: #395–#404.

Що відвантажено

Ключова архітектура

Phase 77: CEO Worker — Cross-Project Global Assistant ✅ DONE 2026-06-09 (#393)

Один CEO воркер на акаунт. Не прив'язаний до жодного проєкту — бачить всі проєкти юзера через інструменти. Стратегічна роль: аналіз, планування, cross-project огляд.

Відвантажено:

Phase 75: Odoo CRM Integration (PLANNED, спочатку була Phase 70)

Воркери Arc OS стають повноцінними співробітниками всередині наявного Odoo клієнта — записи hr.employee, користувачі з правами, виконавці задач, учасники чату Discuss. Тригериться З Odoo, розмова ВСЕРЕДИНІ Odoo Discuss. Користувач ніколи не покидає Odoo-воркфлоу. Перенумеровано з Phase 70 (яка стала Cloud Chat Routing) за комітом 515f382.

Parent: #345 (P3 watchlist).

Стратегічне позиціонування

Референсна архітектура (валідована)

Патерн "Automated Bookkeeping Landscape": Odoo = System of Record · Claude Agents = Execution Layer · Human = Oversight. 8 спеціалізованих агентів (Revenue/AP/Payroll/Bank-Recon/Accruals/Reconciliation/Consolidation/Reporting). Та сама модель, що й наша спеціалізація воркерів. Див. docs/strategy/crm-integration-vision.md + docs/strategy/assets/odoo-claude-agents-bookkeeping-example.png.

Підфази (заплановано, не розпочато)

Жорсткі передумови (НЕ починаємо доки все не зелене)

Реалістичний старт Phase 75: ~Q1 2027

Спочатку проєктувалося на вересень-жовтень 2026 як Phase 70, але слот Phase 70 зайняв Cloud Chat Routing, і передумови зсунулися праворуч.

Специфікації