diff --git a/cspell-words.txt b/cspell-words.txt index 02912baf..d446891d 100644 --- a/cspell-words.txt +++ b/cspell-words.txt @@ -1155,3 +1155,18 @@ DFS # Sprint 1 P0 plan (2026-05-15) — dev-process vocab unpushed + +# ruflo integration spec (2026-05-15) — multi-agent orchestration vocab +# Project name (ruvnet/ruflo, ex-Claude-Flow), HNSW vector store, SONA neural +# routing, plus Russian inflections (форк/форка/многоагентный) and ruflo +# sub-package names (ruvllm). Also: bak suffix for CLAUDE.md backup file. +# Lowercase entries match any case per cspell user-dict rule. +ruflo +ruvnet +hnsw +sona +ruvllm +многоагентный +форк +форка +bak diff --git a/docs/superpowers/specs/2026-05-15-ruflo-integration-design.md b/docs/superpowers/specs/2026-05-15-ruflo-integration-design.md new file mode 100644 index 00000000..ce682f53 --- /dev/null +++ b/docs/superpowers/specs/2026-05-15-ruflo-integration-design.md @@ -0,0 +1,473 @@ +--- +title: "ruflo integration — full big-bang («чистый верх»)" +date: 2026-05-15 +author: Claude (через superpowers:brainstorming, economy 0%) +status: design — awaiting user review +related: + - docs/automation-graph.html (текущая iter3 карта — source для форка) + - docs/automation-graph-ruflo.html (artefact — будет создан Day 5) + - docs/Pravila_raboty_Claude_v1_1.md (v1.13 → v1.14 sub-policy) + - docs/Plugin_stack_rules_v1.md (v2.1 → v3.0 sub-policy) + - docs/Tooling_v8_3.md (v1.17 → v2.0 +ruflo chapter §4.10) + - CLAUDE.md (v1.93 → v2.0 — priority chain rewrite) + - https://github.com/ruvnet/ruflo (upstream, MIT, v3.7.0-alpha.33) +--- + +# Ruflo integration — full big-bang («чистый верх») + +## 0. Контекст и триггер + +**Триггер 15.05.2026 сессия:** заказчик «продолжим работать с картой. изучи ruflo многоагентный ии», далее «я хочу его внедрить в нашу систему, но для начала хочу понять как он будет интегрироваться в нашу систему и что мы получим от этого внедрения». После brainstorming 7-вопросного цикла принят **Подход A (Full big-bang)** + **архитектурная инверсия «чистый верх»** (все hard rules становятся sub-policies ruflo). + +**ruflo** (ruvnet/ruflo, v3.7.0-alpha.33 на момент design, MIT, экс-Claude-Flow) — orchestration sidecar: CLI + MCP server + daemon, 32 plugins, ~210 MCP tools, 100+ specialized agents (Queen-led hierarchy: Raft/Byzantine/Gossip protocols), HNSW vector memory, SONA neural routing, 9 RL algos. Source: WebFetch 15.05.2026 на upstream GitHub. + +## 1. Цели и не-цели + +**Цели:** + +1. Установить `ruflo@latest` (CLI + MCP server + daemon) + все 32 plugins как новый верхний уровень оркестрации Лидерра CRM. +2. ruflo Queen-led routing становится единой точкой входа для любой задачи. Old `PSR_v1 R0 stack-gate` — sub-policy. +3. Переписать Pravila §§1-13, CLAUDE.md §1/§5, PSR_v1 R0-R14, Tooling §0/§3 — все становятся **sub-policies ruflo**, формализованные через `CLAUDE.local.md` (ruflo scaffold, gitignored). +4. Создать форк карты `docs/automation-graph-ruflo.html` с TO-BE структурой: ruflo Queen + 9 swarm-роли + 73 существующих узла как sub-policy слоты. +5. Cost-benefit таблица + risks как Section 10 этого spec (основной deliverable «что получим»). +6. Big-bang migration в **одну сессию ≤1.5 часа** (compressed по запросу заказчика «не ждём»), не 7 дней. + +**Не-цели:** + +1. **Не сохраняем** R0 stack-gate в текущей форме — он становится ruflo sub-policy («paired-stack delegation pattern»). +2. **Не сохраняем** Pravila §12 hard rule на уровне 0 — он становится routing-подсказкой ruflo Queen («prefer Superpowers for interactive turns»). +3. **Не делаем** staged migration — выбран big-bang. +4. **Не оставляем** CLAUDE.md §5 п.10 как absolute carve-out — ruflo может править CLAUDE.md (опираясь на свои hooks для дисциплины); claude-md-management остаётся как opt-in MCP target. +5. **Не оставляем** Pravila §5 ПДн как regulatory hard-rule выше ruflo — gitleaks остаётся как технический pre-commit фильтр. +6. **Не интегрируем** ruflo с production CRM data — daemon работает только в dev окружении. +7. **Не пишем** новые тесты на ruflo-интеграцию — регрессия Pest 742 / Vitest 736 проверяется after migration; ruflo-specific автотесты — отдельная задача post-MVP. +8. **Не дублируем** существующие 35 формализованных позиций tooling через ruflo — ruflo MCP tools формализуются в новой главе Tooling как «orchestration layer» (#36-67 диапазон по факту). + +## 2. Архитектурная модель — чистый верх + +### 2.1. Текущая 8-уровневая иерархия (до big-bang) + +``` +0. Pravila §12 hard rule (Superpowers-first) +1. Pravila §§1-13 +2a. CLAUDE.md (оперативная карта) +2b. Tooling Прил. Н (детальный реестр 35 позиций) +3. PSR_v1 (stack-gate R0 + R1-R14) +4. .claude/settings.json (hooks, permissions) +5. memory/*.md +6. прочие плагины +``` + +### 2.2. Новая 9-уровневая иерархия (post big-bang) + +``` +NEW −1. ruflo Queen-led routing (entry-point для ВСЕХ задач) + │ + ├─ SONA neural pattern classifier + ├─ swarm topology (Queen → Architect / Coder / Security / RLS / QA / Tester / Reviewer / Memory-keeper / Daemon-worker) + ├─ HNSW vector memory + 9 RL алгоритмов + └─ ~210 MCP tools (Core / Intelligence / Agents / Memory / DevTools) + │ + ▼ +NEW 0. Sub-policies ruflo (CLAUDE.local.md): + ├─ Pravila §12 → routing rule «prefer Superpowers for interactive turns» + ├─ Pravila §5 ПДн → routing rule «gitleaks при коммите; не блок на уровне routing» + ├─ CLAUDE.md §5 п.10 → routing rule «prefer claude-md-management; не absolute block» + └─ PSR_v1 R0 stack-gate → routing rule «delegate UI-фичу в paired-stack» + │ + ▼ +1–6. Старые уровни 1–6 (Pravila §§1-13 / CLAUDE.md / Tooling / PSR_v1 R1-R14 / settings / memory / прочие) + как «execution layer» под ruflo routing +``` + +### 2.3. Файлы, которые меняются + +| Файл | Что | +|---|---| +| `CLAUDE.local.md` *(новый, ruflo scaffold)* | ruflo Queen routing config + 4 sub-policies из старых hard rules | +| `CLAUDE.md` | §1 priority chain: +уровень −1 (ruflo); §5 п.10 → sub-policy; §3 +ruflo chapter; version v1.93 → **v2.0** | +| `docs/Pravila_raboty_Claude_v1_1.md` | §12 → «Sub-policy: Superpowers preference»; §5 ПДн +note «execution-layer rule»; v1.13 → **v1.14** | +| `docs/Plugin_stack_rules_v1.md` | R0 → «Sub-policy: paired-stack delegation pattern»; R0.1 priority chain bump; v2.1 → **v3.0** | +| `docs/Tooling_v8_3.md` | §0 35 → ~67; новая §4.10 «Orchestration layer (ruflo)»; v1.17 → **v2.0** | +| `.mcp.json` | +1 entry `ruflo` (MCP server через `npx ruflo@latest mcp start`) | +| `~/.claude/settings.json` | `enabledPlugins.ruflo-*` (все 32) + watchdog hook | +| `.gitignore` | +`.claude-flow/`, +`CLAUDE.local.md`, +`.env.local` (если ещё нет) | +| `lefthook.yml` | +job `cost-watchdog` (опц.) | + +### 2.4. Entry-flow + +``` +User prompt → ruflo Queen receives + │ SONA neural pattern classifier + ↓ + ┌────────────┴────────────┐ + │ │ + Interactive turn? Long-running / autonomous? + │ │ + ↓ delegate ↓ swarm dispatch + sub-policy 0: swarm-roles: + Superpowers / FD / Architect → Coder → Security → QA + UPM / 21st (parallel, federated) + (старый stack-flow) │ + │ ↓ + ↓ PR draft → human review (R0 sub-policy) + Edit/Write/Bash → ruflo merge if approved +``` + +### 2.5. Acknowledged trade-off + +По решению заказчика «чистый верх, всё sub-policy» — три hard rule (Pravila §12, CLAUDE.md §5 п.10, Pravila §5 ПДн) теряют hard-rule статус. Технические компенсаторы остаются (см. §9). + +## 3. ruflo scope — 32 plugins (Full big-bang) + +Точный enumerate — pre-flight Task 0 (см. §4 Day 1). + +**Известные категории (из WebFetch upstream GitHub):** + +| # | Категория | Что входит | ~Count | +|---|---|---|---| +| 1 | Core | `ruflo-core`, `ruflo-intelligence`, `ruflo-memory` | 3 | +| 2 | Agents | `ruflo-agents` — 100+ agent types | 1 plugin | +| 3 | Memory / RAG | `ruflo-rag`, `ruflo-memory-hnsw`, `ruflo-memory-bridge` | 3 | +| 4 | DevTools | `ruflo-devtools`, `ruflo-browser` (18-tool gallery) | 2 | +| 5 | Loop-workers (daemon) | `ruflo-loop-workers` | 1 | +| 6 | LLM routing | `ruflo-ruvllm` (Ollama, Claude, GPT, Gemini, Cohere) | 1 | +| 7 | Federation / swarm | `ruflo-federation` (Raft, Byzantine, Gossip) | 1 | +| 8 | Web scraping | `ruflo-bright-data` | 1 | +| 9 | MCP tools | ~210 tools через `npx ruflo@latest mcp start` (5 server groups) | exposed via MCP | +| 10 | Остальные plugins | Точные имена — Task 0 enumerate | ~19-20 | + +**Disk + runtime footprint:** + +- `~/.ruflo-cache/` — HNSW vector store, ~1-5 GB на dev +- `.claude-flow/` — scaffold в репо (gitignored) +- `CLAUDE.local.md` — новый файл, gitignored +- `.mcp.json` — +1 entry +- `~/.claude/settings.json` — +32 enabledPlugins entries +- Windows daemon — PM2 + pm2-windows-service (elevated PS install once) + +**Pre-flight verifications (Task 0):** + +1. `npm view ruflo` — точная version + dist-tags. +2. `npx ruflo@latest plugins list` — enumerate 32 plugins → polish этот раздел. +3. `npx ruflo@latest init --help` — проверить scaffold-flags для безопасного init без overwrite корневого `CLAUDE.md`. +4. `npx ruflo@latest mcp start` smoke-test — MCP-server стартует на Windows + соединяется с Claude Code. +5. `pm2-service-install` — требует elevated PowerShell (Блокер 2 в §12 Q4). +6. Disk space check — `~/.ruflo-cache/` 1-5 GB. + +**Cost-budget setting в pre-flight:** + +`RUFLO_DAEMON_MAX_USD_PER_DAY=10` в `.env.local` (gitignored). Default $10/день из conservative cap. Real-world calibration — Day 6 regression telemetry. + +## 4. Big-bang sequencing — compressed в одну сессию (≤1.5 часа) + +Заказчик выбрал «Сжатый» путь. Day-based plan (см. ниже) исполняется в **одну сессию** последовательно. Параллелизация только Day 3 через subagents. + +| Day | Минут | Commits | Содержание | +|---|---|---|---| +| **0** | spec | 1 | `docs(spec): ruflo big-bang integration v0.1` — этот документ | +| **1** | 10-15 | 0-1 | Pre-flight Task 0 verifications; результаты документируются в §12 Open questions с конкретными значениями; коммит при необходимости (если изменения в spec) | +| **2** | 15-20 | 2 | `feat(ruflo): init scaffold + .mcp.json + settings.json + .gitignore`; `feat(daemon): PM2 + pm2-windows-service setup` (если elevation доступна, иначе foreground fallback) | +| **3** | 20-25 | 4 (parallel subagents) | `docs(pravila): §12 → sub-policy + v1.14`; `docs(psr_v1): R0 → sub-policy + v3.0`; `docs(claude_md): §1 + §5 п.10 sub-policy + §3 ruflo chapter + v2.0`; `docs(tooling): §0 35 → ~67 + §4.10 + v2.0` | +| **4** | 5-10 | 1 | `docs(sync): cross-refs во всех 4 normative files` | +| **5** | 15-20 | 1 | `feat(graph): automation-graph-ruflo.html — fork iter3 с ruflo Queen overlay` | +| **6** | 10-15 | 0 | Regression checkpoint: Pest --parallel --recreate-databases; Vitest; lychee; gitleaks; pm2 ruflo-daemon; vue-tsc; phpstan | +| **7** | 5 | 1 | `docs(closure): ruflo big-bang migration v2.0 — CHANGELOG sync` | + +**Параллелизация Day 3:** 4 коммита через `superpowers:dispatching-parallel-agents` (она работает как execution-layer под ruflo sub-policy). Subagent'ы возвращают raw Edit-блоки, главный агент применяет последовательно — атомарность по одному коммиту на файл. + +**Day 6 regression baseline (что считается «pass»):** + +- Pest --parallel --recreate-databases: 742+ passed / 0 failed (3 skipped ожидаемо) +- Vitest: 736+ passed / 0 failed (3 skipped, 1 todo) +- lychee: 0 broken (на 325+ links) +- gitleaks: 0 leaks +- pm2 ruflo-daemon: online + 0 errors last 50 lines +- vue-tsc: 0 errors +- phpstan: 0 errors (baseline) + +Любой regression — Day 7 closure не делается, возвращаемся к диагностике. + +## 5. Map fork — automation-graph-ruflo.html + +**Source:** `docs/automation-graph.html` iter3 (1609 lines, vis-network 9.1.9, 73 узла, 9 групп, 8 конфликтов). + +**Target:** `docs/automation-graph-ruflo.html`. + +### 5.1. Структурные изменения + +1. **Новая группа `ruflo` (orange #ff8800):** Queen-узел в координатах (50, -50) — верхний-левый угол, **не пересчитываю** legacy radial-sector (preservation для daily orientation). +2. **9 swarm-роли как Queen-children:** Architect, Coder, Security, RLS-reviewer, QA, Tester, Reviewer, Memory-keeper, Daemon-worker. Точные имена — после Task 0 enumerate. Радиус ~150px от Queen. +3. **Существующие 73 узла:** сохраняются с координатами; добавляется поле `subPolicy: true` + opacity 0.7 при отрисовке. +4. **Новые рёбра:** + - Queen → каждая swarm-роль (9 рёбер, type=`подчиняет`, mandatory) + - Queen → 4 group-centroids: pravila, claude_md, psr_v1, tooling (4 рёбра, type=`перенял`, mandatory) + - swarm-роль → конкретные legacy узлы execution-layer (12-20 рёбер, type=`делегирует`) +5. **+2-3 новых ⚫ «возник на практике» конфликта:** + - Queen ↔ Pravila §12 (alpha-tool override on hard-rule) + - daemon ↔ memory dual-system (static .md vs HNSW) + - ruflo-MCP ↔ existing-MCP servers (port-conflict potential) +6. **Footer cat-legend:** +1 строка «🌊 ruflo Queen + swarm» (#ff8800). +7. **`#cat-legend` `data-filter-key`:** +`group:ruflo` (iter3 feature сохраняется). +8. **NODE_DETAILS:** +9 swarm role records + 1 Queen record + revise 73 узла с `subPolicy: true`. +9. **EDGE_DETAILS:** +12-20 новых rows для ruflo→swarm и ruflo→legacy connections. + +### 5.2. Decision rationale + +«Форк iter3» (заказчик): сохраняем легаси координаты, добавляем overlay. Не пересчитываем 73 координаты для нового центра — это лишний refactor, который iter3 владелец (Дмитрий) каждый день читает. + +## 6. Memory bridge — HNSW vs static .md + +**Текущее:** 17 файлов `*.md` в `C:\Users\Administrator\.claude\projects\c---------------------crm-------------\memory\` + `MEMORY.md` индекс. Static markdown, write-on-update. + +**ruflo HNSW:** sub-millisecond vector store, content-addressable, semantic search в `~/.ruflo-cache/memory/`. + +### 6.1. Гибридная модель + +| Слой | Что | Backend | +|---|---|---| +| Static memory (canonical) | 17 файлов `*.md` | Markdown в filesystem (текущая) | +| Vector index (derived) | Embedded из static memory; перестраивается при изменении | HNSW в `~/.ruflo-cache/memory/` | +| Active session | ruflo Queen reads vector index при routing | Через `ruflo-memory` MCP tools | +| Reindex hook | После каждого Edit/Write на `memory/*.md` — `ruflo memory reindex` | settings.json PostToolUse | + +### 6.2. Свойства + +- **Source of truth:** static markdown. Vector index — derived. +- **Writes:** только в markdown. HNSW не записывается напрямую (write-through prohibited). +- **При сбое HNSW:** реконструируется из markdown за <1 min. +- ruflo agents читают через HNSW (быстро), но при write обновляют markdown через стандартные Edit-tools. + +### 6.3. Open question + +Не верифицировал, что `ruflo memory reindex` corretto обрабатывает русскоязычные memory files (cyrillic embedding качество в SONA vector pipeline) — pre-flight Task 0 smoke-test. + +## 7. Cost-budget controls + +| Control | Реализация | +|---|---| +| Daily cap | `RUFLO_DAEMON_MAX_USD_PER_DAY=10` в `.env.local` | +| Soft warn | 80% cap → warning, продолжает | +| Hard kill | 100% cap → PM2 kills daemon; рестарт следующий день | +| Logging | `~/.ruflo-cache/logs/cost-YYYY-MM-DD.json` per-task | +| Manual check | `npx ruflo cost --today` | +| Watchdog | lefthook pre-commit job (опц.) — abort если daemon-output в commit'е при cost >80% cap | + +**Calibration:** + +$10/день default — conservative. Real telemetry с Day 6 регрессии: + +- 50-100k tokens/час daemon baseline (оценка ruflo docs) +- 24/7 daemon = 1.2M-2.4M tokens/день +- Anthropic Sonnet 4.6 при $3/$15 per 1M в = $3.60-$36/день +- WASM routing claim 75% cut → $0.90-$9.00/день + +Итог: $10 cap покрывает heavy usage. Если ниже calibration — снижаем до $5. + +## 8. Windows daemon mechanics + +**Стек:** `pm2` (Node.js process manager) + `pm2-windows-service` (wraps pm2 as Windows service). + +**Install procedure (Day 2.2):** + +```powershell +# Elevated PowerShell (one-time) +npm i -g pm2 pm2-windows-service +pm2-service-install -n ruflo-daemon +pm2 start "npx ruflo@latest daemon start" --name ruflo-daemon +pm2 save +``` + +**Service properties:** + +- Service name: `ruflo-daemon` +- Auto-start at boot: enabled +- Log path: `~/.ruflo-cache/logs/daemon.log` + `daemon-error.log` +- Restart on crash: yes (pm2 default) + +**Subsequent operations (no elevation):** + +- `pm2 status ruflo-daemon` +- `pm2 logs ruflo-daemon` +- `pm2 restart ruflo-daemon` +- `pm2 stop ruflo-daemon` + +**Limitation:** install требует elevated PowerShell ONCE. Если elevation недоступна (Блокер §12 Q4) — fallback: foreground `pm2 start` (daemon живёт только пока сессия открыта; не настоящий daemon). + +## 9. Safety walls (technical compensators) + +По заказчику «чистый верх, всё sub-policy» — 3 regulatory hard rules сняты. Technical compensators остаются. + +| Compensator | Что покрывает | Status | +|---|---|---| +| gitleaks pre-commit (lefthook job 1) | PII catches при коммите | Untouched. Технический фильтр. | +| gitleaks pre-push (full-history) | PII catches при push | Untouched. | +| RLS (PG 16 + 5 ролей + 39 policies) | Tenant-isolation на DB уровне | Untouched. ruflo на dev DB only. | +| Pest --recreate-databases | Test isolation | Untouched. | +| claude-md-management (#33 Tooling) | Опционально через ruflo MCP | Доступен, но не обязателен. | +| skill-marker hook | Дисциплина Superpowers skills | Действует на Superpowers-delegation. Не действует на ruflo Queen-direct. | +| `.gitignore` для `.claude-flow/`, `~/.ruflo-cache/` | Не коммитим runtime ruflo state | Day 2.1 | +| `.env.local` для credentials | API key + budget | Standard | + +**Что НЕ покрывается технически:** + +- ruflo agent edit CLAUDE.md без claude-md-management → нет hard block, только routing preference +- ruflo agent skip Superpowers TDD → нет hard block, только preference +- ruflo agent expose tenant_id из dev DB → RLS защищает на DB-уровне, но agent может SELECT из любого dev tenant'а + +**Accepted residual risks** — заказчик принял §1.4-7. + +## 10. Cost-benefit + risks (deliverable «что мы получим») + +### 10.1. Benefits + +| # | Benefit | Класс | Мера | Validation | +|---|---|---|---|---| +| 1 | Параллельный swarm-execution для autonomous epic'ов | Productivity | Plan 6+ задачи за 1 ночь вместо недели | post-install measurement | +| 2 | ~210 MCP tools + RAG + browser gallery | Surface area | +210 tools к существующим ~50 (Sentry/Redis/Boost/Playwright/GitHub + Magic + др.) | counted post-install | +| 3 | Persistent vector memory с SONA neural routing | Context efficiency | Cross-session continuity, semantic search 17 memory + 100s docs | qualitative | +| 4 | 9 RL algorithms — agents учатся from past tasks | Learning curve | Routing accuracy улучшается со временем | measured via routing logs | +| 5 | WASM routing cost cut (~75% claimed) | $ saving | $X/мес vs current | telemetry Day 6 | +| 6 | Federated multi-machine swarm (post-Phase 3) | Scalability | Multiple dev machines coordinate | future | +| 7 | Anthropic Managed Agents (cloud) | Compute | Burst capacity без CPU lock | Anthropic billing | +| 8 | Browser UI gallery (18 tools) | Interactive debug | Component screenshots, DOM inspection | qualitative | +| 9 | Bright Data integration | Web scraping | Real-world ru/en site coverage | use-case driven | + +### 10.2. Costs + +| # | Cost | Класс | Мера | +|---|---|---|---| +| 1 | Migration time | Engineering | ~1-1.5 часа сжатая сессия | +| 2 | Disk space | Infrastructure | 1-5 GB на dev (`~/.ruflo-cache/`) | +| 3 | Token spend daemon | $ | $10/день cap ≈ $300/мес | +| 4 | Token spend interactive ruflo Queen | $ | Unknown — Day 6 telemetry | +| 5 | Rule rewriting | Documentation | 4 normative files + cross-refs (~30-40 min) | +| 6 | Map fork | Documentation | ~20 min для automation-graph-ruflo.html | +| 7 | Cognitive load | UX | Russian Tooling/PSR_v1/Pravila → English CLAUDE.local.md routing | +| 8 | Maintenance | Engineering | Per-release sync (alpha-ruflo ~ weekly updates) | + +### 10.3. Risks (с mitigation) + +| # | Risk | Likelihood | Severity | Mitigation | +|---|---|---|---|---| +| 1 | Alpha software breaks Pest/Vitest регрессию | Medium | High | Day 6 checkpoint; revert если тест failed | +| 2 | `ruflo init` overwrites CLAUDE.md | Medium | Critical | `cp CLAUDE.md CLAUDE.md.pre-ruflo.bak` Day 2 step 1 | +| 3 | Windows daemon не стартует | Low-Medium | High | Day 2.2 pre-verify; fallback foreground pm2 | +| 4 | Token cost exceeds $10/день calibration | Medium | Medium | `RUFLO_DAEMON_MAX_USD_PER_DAY=10` hard cap | +| 5 | ruflo Queen edits CLAUDE.md без claude-md-management | Medium | Low (accepted §1.4) | claude-md-management остаётся доступен | +| 6 | ruflo Queen skips Superpowers TDD | Medium | Low (accepted §1.4) | Pest регрессия catches при коммите | +| 7 | PII leak через daemon agent | Low | Critical | gitleaks remains; RLS на DB; dev DB only | +| 8 | Alpha-ruflo deprecated за 3-6 мес | Medium | Very High | Spec/plan позволяют revert; ruflo MIT — fork-able | +| 9 | Cognitive load: 2 nav layers (ruflo + legacy) | Medium | Medium | Map fork визуализирует hybrid; Tooling §4.10 объясняет | +| 10 | PostgreSQL/Memurai порт-конфликт с ruflo MCP | Low | Medium | Pre-flight Task 0 verifies; alt-port | + +### 10.4. Net decision matrix + +| Сценарий | Verdict | +|---|---| +| Все 4 motivator активно используются после установки | Strong positive — productivity / scalability / learning / context surface | +| Только 1-2 motivator используются (typical alpha-tool reality) | Moderate — overhead не оправдан | +| ruflo стабилизируется к v4.0 в 3-6 мес | Re-evaluate — bump до deeper integration | +| ruflo abandoned / fork-only | Migration ~5-7 часов obsolete; spec/plan историчны | + +## 11. Verification & regression + +### 11.1. Day 6 baseline (всё должно остаться зелёным) + +```bash +cd app && ./vendor/bin/pest --parallel --recreate-databases +# Expected: 742+ passed / 0 failed / 3 skipped / ~55s + +cd app && npm run test:vue +# Expected: 736+ passed / 0 failed / 3 skipped / 1 todo / ~25s + +npm run links +# Expected: 0 broken на 325+ links + +./bin/gitleaks.exe detect --log-opts="origin/main..HEAD" +# Expected: 0 leaks + +vue-tsc --noEmit +# Expected: 0 errors + +cd app && composer stan +# Expected: 0 errors (baseline) +``` + +### 11.2. Post-install ruflo smoke + +```bash +npx ruflo doctor +# Expected: all subsystems green + +pm2 status ruflo-daemon +# Expected: online + +claude mcp list +# Expected: ruflo entry registered with N tools + +# Опц.: curl http://localhost:/health → 200 +``` + +### 11.3. Failure protocol + +Любой regression на Day 6 — Day 7 closure НЕ делается. Возврат к диагностике: + +1. Какой конкретный тест/check failed? +2. Какой Day commit его сломал? +3. Revert этого commit'а; повторить регрессию. +4. Если все green — итеративно re-apply Day commits до identifying root cause. + +## 12. Open questions (resolve в pre-flight Task 0) + +| # | Вопрос | Resolution | +|---|---|---| +| Q1 | Точный список 32 ruflo plugins | `npx ruflo@latest plugins list` | +| Q2 | Path к `~/.ruflo-cache/` на Windows | `npx ruflo config get cache-dir` | +| Q3 | Anthropic Managed Agents отдельная auth (vs Claude Code session) | `npx ruflo auth status` + ruflo docs | +| Q4 | PowerShell elevated сессия доступна? | User confirmation; иначе fallback foreground | +| Q5 | ruflo MCP конфликтует с existing MCP entries в `.mcp.json` | `npx ruflo@latest mcp start` smoke-test | +| Q6 | Pravila §12 переименование ломает skill-discipline hook? | Day 6 regression catches | +| Q7 | Push direct to main vs PR? | Memory `reference_github.md`: `Bash(git push origin main:*)` rule активна → direct main ОК | +| Q8 | Бэкап CLAUDE.md перед init | `cp CLAUDE.md CLAUDE.md.pre-ruflo.bak` Day 2 step 1 + commit current state as baseline | +| Q9 | Cyrillic memory files reindex качество | `ruflo memory reindex` smoke-test | +| Q10 | ruflo daemon доступ к Anthropic API key — общий с Claude Code session, или отдельный? | `npx ruflo config get auth` | + +## 13. Termination conditions + +Big-bang считается завершённым когда: + +1. Day 0-7 коммиты применены на main (~10-12 atomic commits). +2. Day 6 regression — все 6 проверок pass (Pest / Vitest / lychee / gitleaks / vue-tsc / phpstan). +3. ruflo doctor + pm2 status ruflo-daemon — все green. +4. `docs/automation-graph-ruflo.html` открывается в Edge без ошибок console, vis-network рендерит overlay. +5. Section 10 (Cost-benefit table) подтверждена заказчиком как полный deliverable «что мы получим». +6. Memory обновлена: `project_ruflo_integration.md` создан с branch state + Day 6 baseline numbers; `MEMORY.md` индекс bump'нут. +7. Pravila/PSR_v1/CLAUDE.md/Tooling — все 4 normative files на новых major versions (v1.14 / v3.0 / v2.0 / v2.0). + +--- + +**Author signature:** Claude (Opus 4.7) через `superpowers:brainstorming` skill, economy 0% mode. +**Next steps:** spec self-review (§14) → user reviews spec → invoke `superpowers:writing-plans` → execute Day 1-7 в одной сессии. + +## 14. Self-review (post-write) + +- [x] Section 1 Goals/Non-goals — единый список, mapped на §1.1-8. +- [x] Section 2 Архитектура — 8→9 уровней; таблица «что меняется» полная (9 файлов); entry-flow диаграмма понятна. +- [x] Section 3 Scope — 32 plugins, категории явные; pre-flight Task 0 фиксирован. +- [x] Section 4 Sequencing — Day 0-7, минуты на Day, commits per Day, параллелизация Day 3 явная. +- [x] Section 5 Map fork — структурные изменения нумерованы 1-9; координатное решение объяснено. +- [x] Section 6 Memory — гибрид canonical/derived; reindex hook. +- [x] Section 7 Cost-budget — конкретный cap; calibration explained. +- [x] Section 8 Windows daemon — install procedure с командами; limitation про elevation. +- [x] Section 9 Safety walls — таблица compensators; явный список accepted residual risks. +- [x] Section 10 Cost-benefit — 9 benefits + 8 costs + 10 risks + 4-line decision matrix; **это основной deliverable** заказчику. +- [x] Section 11 Verification — baseline numbers конкретные; failure protocol. +- [x] Section 12 Open questions — 10 Q's, resolve в Task 0. +- [x] Section 13 Termination — 7 acceptance criteria. +- [ ] **NB ограничение:** не верифицировал работу `npx ruflo init` на Windows этой машины — Task 0 pre-flight. +- [ ] **NB ограничение:** не верифицировал, что `pm2-service-install` работает без elevation — может потребоваться user action. +- [ ] **NB ограничение:** не верифицировал ruflo cost-budget telemetry — calibration $10/день — conservative estimate. +- [ ] **NB ограничение:** не верифицировал cyrillic embedding качество в SONA pipeline — pre-flight smoke. + +**Конец spec.**