# 07. Roadmapa — realny plan etapami (MVP → dalej) **Zasada:** najpierw to, co **bezpieczne i darmowe** (audyt read-only), potem dopiero edycje. PLAN-first: każdą fazę zaczynamy od krótkiego planu i „OK, rób". **Pierwotna wersja (Opus):** commit `091f79a` (2026-06-14). **Stan implementacji (etapy MACIUS):** [`../docs/06_ROADMAPA_FUZJI.md`](../docs/06_ROADMAPA_FUZJI.md). **Legenda statusu punktów:** ✅ zrobione · 🟡 częściowo · ⬜ brak · 🔄 zmiana po ADR (świadoma) Pilot/wzór: **Kebabkiller Studio** (pierwszy host). Nie przebudowujemy go — tylko instalujemy Symbionta. --- ## Mapowanie faz → etapy MACIUS | Faza (wizja, plan Opusa) | Etap MACIUS | Uwaga | |--------------------------|-------------|--------| | Faza 0 — szkielet + tożsamość | Etap 2 | 🟡 luki W5 — patrz checklist poniżej | | Faza 1 — audyt read-only | Etap 3 | 🟡 MVP bez pełnego ESLint/tsc/gitleaks | | Faza 2 — naprawy przez PR | Etap 4 | ✅ | | Faza 3 — bramka LLM | Etap 5 | ✅ | | Faza 4 — wielohost | Etap 6 | 🟡 brak adaptera Python | | Faza 5 — deploy + rollback | Etap 7B | 🟡 dry-run GHA; brak realnego VPS | | *(poza oryginałem Opusa)* Silnik agenta | Etap 7A | ✅ zamrożony do domknięcia Etapu 8 | | *(poza oryginałem Opusa)* Shotgun Swarm | Etap 7A.1 | ✅ zamrożony do domknięcia Etapu 8 | | **Domknięcie wizji Opusa** | **Etap 8** | ⬜ **TERAZ** — patrz `06_ROADMAPA` | --- ## Faza 0 — Szkielet Rdzenia + tożsamość (fundament) **Cel (Opus):** Rdzeń stoi, host Kebabkiller zarejestrowany, panel pokazuje „połączono". **Cel (fakty):** rdzeń na `:8787`, kebabkiller linked — **bez dostępu z telefonu przez publiczny URL**. | # | Punkt (plan Opus `091f79a`) | Status | Fakty / uwagi | |---|----------------------------|--------|---------------| | 0.1 | Wybór silnika (OpenHands / Cline / Aider SDK) | 🔄 | ADR-0004: komponenty **gema0** jako silnik — decyzja po audycie | | 0.2 | Panel **PWA** + auth + rejestr hostów (**SQLite**) + audit log | 🟡 | Panel HTML + `SYMBIONT_API_TOKEN` + ndjson log; **brak PWA, brak SQLite** | | 0.3 | Schemat `symbiont.identity.json` (`symbiont/identity@1`) | ✅ | `symbiont/schemas/`, walidacja zod | | 0.4 | Moduł **`@symbiont/host`** (npm) — rejestracja Kebabkiller | 🟡 | Zamiast pakietu npm: `symbiont.identity.json` + MCP stdio + `symbiont init` | | 0.5 | **Done:** z telefonu i laptopa jeden URL, host „połączony" | ⬜ | Tylko `http://127.0.0.1:8787` — **Etap 8.2** (VPS + HTTPS) | --- ## Faza 1 — Darmowy audyt (MVP, read-only) ⭐ **Cel (Opus):** „darmowy mistrz audytów plików" end-to-end, zero ryzyka, **z telefonu**. | # | Punkt (plan Opus) | Status | Fakty / uwagi | |---|-------------------|--------|---------------| | 1.1 | MCP: `list_files`, `read_file`, **`run_audit`** | 🟡 | `kebabkiller/symbiont-mcp/` — tylko list + read; audyt w rdzeniu, nie w MCP | | 1.2 | Silnik: rg + **tree-sitter** + **ESLint/tsc** + **gitleaks** + **npm audit** | 🟡 | rg + workspaceIndexer + secrets scan; **bez** pełnego ESLint/tsc/gitleaks/npm audit | | 1.3 | Panel: audyt → raport — **bez LLM = 0 zł** | ✅ | `POST /api/hosts/:id/audit`, SSE | | 1.4 | Opcjonalnie: LLM streszcza raport | ✅ | `POST /api/audits/:id/summarize` | | 1.5 | **Done:** audyt z telefonu, koszt 0 zł | ⬜ | Audyt OK lokalnie; telefon = **Etap 8.2** | --- ## Faza 2 — Bezpieczne naprawy przez PR **Cel (Opus):** diff → PR, produkcja nietknięta. | # | Punkt (plan Opus) | Status | Fakty / uwagi | |---|-------------------|--------|---------------| | 2.1 | worktree + diff-only + allowlista + PreToolUse | ✅ | `symbiont/src/engine/fix/`, `policy/` | | 2.2 | CI przed akceptacją; PR; brak auto-merge | ✅ | mechanical gate + `gh pr create` | | 2.3 | Panel: naprawa → diff → PR → status CI | ✅ | panel + API fix | | 2.4 | `capabilities.edit_via_pr = true` (Kebabkiller) | ✅ | włączone po sesji #6 | | 2.5 | **Done:** literówka → PR, main nietknięty | ✅ | PR #1, #2 zmergowane | --- ## Faza 3 — Bramka LLM + strażnik kosztów | # | Punkt (plan Opus) | Status | Fakty / uwagi | |---|-------------------|--------|---------------| | 3.1 | Failover Groq → Gemini → OpenRouter → Ollama | ✅ | `symbiont/src/engine/llm/` | | 3.2 | Strażnik kosztów, liczniki, alerty | ✅ | costGuardian; mock tylko dla summarize | | 3.3 | **Done:** ~0 zł, brak 429 | ✅ | misje wymagają realnego providera | --- ## Faza 4 — Wielohost + adaptery **Cel (Opus):** drugi program w < 30 min, ten sam panel. | # | Punkt (plan Opus) | Status | Fakty / uwagi | |---|-------------------|--------|---------------| | 4.1 | Adapter **Python** (`symbiont-host`) lub sidecar MCP | ⬜ | Tylko Node MCP + szablony init | | 4.2 | `symbiont init` + generacja tożsamości | 🟡 | Kod ✅; **brak walidacji na obcym repo** — **Etap 8.3** | | 4.3 | Panel: przełącznik hostów | ✅ | 3 seed hosty w panelu | | 4.4 | **Done:** drugi program < 30 min | ⬜ | Seed `gema0-apex` w repo; **nie** nowy program właściciela | --- ## Faza 5 — Deploy + rollback (opcjonalnie) **Cel (Opus):** canary + auto-rollback **z metryk** na prod. | # | Punkt (plan Opus) | Status | Fakty / uwagi | |---|-------------------|--------|---------------| | 5.1 | `capabilities.deploy` + canary + rollback z metryk | 🟡 | ADR-0006: GHA adapter, dry-run; **brak canary/metryk** | | 5.2 | Bramki auth/migracji/billingu | ✅ | `deployGate.mjs` | | 5.3 | **Done:** PR → deploy → rollback | 🟡 | Smoke GHA OK; **brak realnego VPS** — **Etap 8.4** | --- ## Rozszerzenia poza planem Opusa (zamrożone do Etapu 8) > Te etapy **nie były** w pierwotnej roadmapie `091f79a`. Zrobione; **nie rozwijamy** (7A.2, większy swarm) > dopóki Etap 8 nie domknie luk z Faz 0–5. | Etap | Zakres | Status | |------|--------|--------| | 7A | Oraculum → worktree → Phantom VM → PR (ADR-0005) | ✅ | | 7A.1 | Shotgun Swarm `swarmSize` 1–5 | ✅ | | 7A.2 | peer context, prompty APEX | ⬜ **ZAMROŻONE** — po Etapie 8 | --- ## Etap 8 — domknięcie wizji Opusa (kolejność obowiązkowa) Szczegóły: [`../docs/06_ROADMAPA_FUZJI.md`](../docs/06_ROADMAPA_FUZJI.md) sekcja Etap 8. 1. **8.1** Checklist dogfood (kebabkiller, single-agent, bez swarm) 2. **8.2** VPS + HTTPS + dostęp z telefonu (W5) 3. **8.3** `symbiont init` na **obcym** programie (W7) 4. **8.4** Realny deploy staging (nie tylko dry-run) 5. **8.5** (opcjonalnie) rozszerzenie audytu: ESLint/tsc/gitleaks per host --- ## Kolejność wartości (dlaczego tak — bez zmian) 1. **Faza 1 (audyt)** — zerowe ryzyko, natychmiastowa wartość. 2. **Faza 2 (PR)** — naprawy bez dotykania prod. 3. Reszta — skalowanie; **Etap 8** domyka luki z Faz 0–5 zanim wrócimy do 7A.2. ## Co świadomie odkładamy - Auto-merge — **nigdy** (patrz `05`). - Ciężki sandbox GPU — niepotrzebny do audytu. - Sequencer-UI gema0 jako panel Symbionta — **nie**. - RAM workspace / studio APEX — **nie** (worktree, ADR-0005). - **7A.2** peer context / prompty swarm — po **Etapie 8**. - Pierwotnie Opus: „gotowy open-source SDK zamiast własnego silnika" — **zmienione świadomie** ADR-0004 (gema0 jako silnik); nie cofamy, ale **nie dokładamy** kolejnych warstw gema0 przed Etapem 8.