# 06. Roadmapa fuzji — etapy od audytu do MVP **Zasada:** najpierw **fakty** (audyt), potem **decyzja** (ADR), potem **najbezpieczniejszy** kawałek produktu (darmowy audyt read-only), dopiero później edycje i deploy. PLAN-first. --- ## Etap 0 — Audyt gema0 (fundament) ⭐ ✅ - [x] Odpal twardy audyt wg [04_AUDYT_GEMA0.md](04_AUDYT_GEMA0.md) (prompt: `../prompts/PROMPT_AUDYT_GEMA0.md`). - [x] Raport w `audyty/AUDYT_GEMA0_2026-06-15.md` (z werdyktem ♻️/🔧/🧪/🗑️ per komponent). - **Done:** mamy fakty: co reużyć, co odrzucić, mapowanie na W1–W7. ## Etap 1 — Decyzja o wariancie fuzji ✅ - [x] Zestaw gema0 × marzenie (na bazie audytu `audyty/AUDYT_GEMA0_2026-06-15.md`). - [x] Wybrany **wariant A** z [05_PRODUKT_DOCELOWY.md](05_PRODUKT_DOCELOWY.md) — gema0 jako silnik Symbionta. - [x] ADR: [`../decyzje/ADR-0004-wariant-fuzji-A-gema0-jako-silnik.md`](../decyzje/ADR-0004-wariant-fuzji-A-gema0-jako-silnik.md). - **Done:** jeden zatwierdzony kierunek, udokumentowany. ## Etap 2 — Szkielet macius (produkt) + tożsamość ✅ - [x] Załóż `macius/symbiont/` (kod produktu) — osobno od `gema0/`/`kebabkiller/`. - [x] Wybór silnika agenta + stacku Rdzenia → `symbiont/docs/STACK.md` (Node/Express + migracja gema0). - [x] Schemat `symbiont.identity.json` + rejestr hostów → `symbiont/schemas/`, API `/api/hosts`. - [x] Pierwszy host: **kebabkiller-studio** w panelu (`kebabkiller/symbiont.identity.json`). - [x] Plan migracji ♻️ z gema0 → `symbiont/docs/PLAN_MIGRACJI_GEMA0.md`. - **Done:** Rdzeń stoi na `:8787`, kebabkiller zarejestrowany (status `linked`). ## Etap 3 — Darmowy audyt read-only (MVP, zero ryzyka) ⭐ ✅ - [x] Serwer MCP hosta: `list_files`/`read_file` (`kebabkiller/symbiont-mcp/server.mjs`). - [x] Silnik audytu (rg/AST/lint/secrets) — **bez LLM = 0 zł** (`symbiont/src/engine/audit/`). - [x] Panel: uruchom audyt → raport, SSE postępu (`POST /api/hosts/:id/audit`). - [x] Audit log (ndjson) + CLI `npm run audit:kebabkiller`. - **Done:** dogfood kebabkiller — 73 pliki, raport w `audyty/AUDYT_kebabkiller-studio_*.json`. ## Etap 4 — Bezpieczne naprawy przez PR ✅ - [x] Tor: worktree → diff-only → CI → PR → rollback ([`../wizja-symbiont/05_BEZPIECZENSTWO.md`](../wizja-symbiont/05_BEZPIECZENSTWO.md)). - [x] byteGrafter + applyTextReplace + policy gate + change-log ndjson. - [x] API + panel + CLI; integracja `gh pr create` (wymaga `gh auth`). - [x] `repo.url` = macius GitHub; **`edit_via_pr: true`** na kebabkiller (panel + CLI fix/misje). - **Done:** dogfood docs-only w worktree; PR #1 zmergowany; `gh auth` + `gh pr create` działają. ## Etap 5 — Bramka LLM + strażnik kosztów - [x] Failover Groq→Gemini→OpenRouter→Ollama→mock; domyślnie tylko free; liczniki/alerty. - [x] Opcjonalne `POST /api/audits/:id/summarize` + panel „Podsumuj AI". - **Done:** stabilne ~0 zł; audyt bez LLM; fix bez LLM. ## Etap 6 — Wielohost + adaptery ✅ - [x] Kreator `symbiont init`; drugi host innym stackiem (`gema0-apex`); trzeci `symbiont-core-staging`. - **Done:** trzy hosty w panelu, przełącznik hostów, `mergeBundledHostSeeds()`. ## Etap 7A — Silnik agenta (orchestrator) ✅ - [x] ADR-0005: worktree zamiast RAM workspace gema0. - [x] Migracja: `phantomVM`, `oraculum`, `agent/` (orchestrator zdekompozycjonowany). - [x] `missionRunner` → worktree → CI → PR; 1 agent + Phantom VM. - [x] API `POST /api/hosts/:id/missions` + panel + CLI `npm run mission:kebabkiller`. - [x] `npm test` 26/26 pass; wersja `0.6.0` *(historyczny snapshot — aktualnie 37/37, v0.7.1)*. - **Done:** misja agenta end-to-end (Oraculum planuje → agent wykonuje → PR). ## Etap 7B — Deploy + rollback ✅ - [x] ADR-0006: adapter `github_actions`, dry-run domyślnie. - [x] Host seed `symbiont-core-staging` (`capabilities.deploy=true`). - [x] Workflow `.github/workflows/symbiont-deploy-staging.yml`. - [x] API deploy + rollback; panel; CLI `npm run deploy:staging`. - [x] `npm test` 30/30 pass; wersja `0.7.0` *(historyczny snapshot — aktualnie 37/37, v0.7.1)*. - **Done:** tor deploy staging z bramkami ryzyka + rollback; live smoke na GitHub Actions OK. ## Etap 7A.1 — Shotgun Swarm ✅ - [x] `shotgunSwarm.mjs` — równoległe agenty, Promise.any + Phantom VM. - [x] `swarmSize` w manifeście Oraculum (1–5; domyślnie 1 = single agent). - [x] Konfig: `SYMBIONT_MISSION_SWARM_SIZE`, `SYMBIONT_MISSION_SWARM_MAX`. - [x] Dogfood misji kebabkiller → [PR #2](https://github.com/DamianMalenta/macius/pull/2). - [x] Panel fix + `node --use-system-ca` (TLS Groq na Windows). - [x] `npm test` 37/37 pass; wersja `0.7.1`. - **Done:** opcjonalny rój 3–5 agentów na misję; MVP single-agent nadal domyślny. > **Uwaga:** Etapy **7A / 7A.1** nie były w pierwotnej roadmapie Opusa (`091f79a`, Etapy 0–6). > Są zamrożone — **bez 7A.2** i bez nowych migracji gema0 — do zamknięcia **Etapu 8**. --- ## Etap 8 — Domknięcie wizji Opusa (W5, W7, prod-like) ⭐ **TERAZ** **Cel:** domknąć luki z pierwotnej [`../wizja-symbiont/07_ROADMAPA.md`](../wizja-symbiont/07_ROADMAPA.md) (checklist plan vs done). **Zero nowych featów silnika** (7A.2, swarm, peer context) do czasu ✅ poniżej. **Zasada:** jeden pod-etap na sesję; PLAN → „OK, rób" → test → handoff. ### 8.1 — Checklist dogfood (kebabkiller, single-agent) - [ ] Udokumentowany cykl: audyt → fix (docs) → misja (1 agent, `swarmSize=1`) → PR → merge ręczny. - [ ] Powtórzyć cykl **2×**; zapisać wyniki i padnięcia w `docs/` (np. `DOGFOOD_CHECKLIST.md`). - [ ] `npm test` zielone po każdej iteracji. - **Done:** powtarzalny tor bez „magicznych" kroków tylko na localhost. ### 8.2 — Rdzeń na VPS + HTTPS (W5) - [ ] Mały VPS (1 vCPU / 1–2 GB); Symbiont za reverse proxy (HTTPS). - [ ] `SYMBIONT_API_TOKEN` + helmet; **brak** wystawiania bez auth. - [ ] Panel i audyt kebabkiller **z telefonu** (ten sam publiczny URL). - **Done:** spełniony punkt Opusa Faza 0.5 i Faza 1.5 („z telefonu i laptopa"). ### 8.3 — `symbiont init` na obcym programie (W7) - [ ] Wybrać repo **poza** kebabkiller/gema0/seedy macius. - [ ] `npm run init -- --target … --apply --register` → audyt z panelu. - [ ] Czas podpięcia < 30 min (kryterium Fazy 4 Opusa). - **Done:** W7 zweryfikowane na realnym trzecim programie, nie tylko seed JSON. ### 8.4 — Realny deploy staging - [ ] Deploy **live** (nie tylko dry-run) na staging VPS lub docelowy host. - [ ] Rollback przetestowany end-to-end po deploy. - [ ] Bramki deployGate nadal aktywne (auth/migracje). - **Done:** Faza 5 Opusa poza samą symulacją GitHub Actions. ### 8.5 — Audyt rozszerzony (opcjonalnie, po 8.1–8.4) - [ ] Per host (flaga w tożsamości): ESLint / `tsc` / gitleaks / `npm audit` — co ma sens dla stacku. - [ ] MCP `run_audit` jako opcjonalne narzęcie hosta (jeśli warto). - **Done:** silniejszy audyt bez psucia domyślnego 0 zł MVP. ### Zamrożone do po Etapie 8 - Etap **7A.2** — peer context, prompty swarm gema0 - Adapter **Python** (`symbiont-host`) — tylko jeśli realny host Python wymaga - Pakiet npm **`@symbiont/host`** — tylko jeśli init okaże się niewystarczający (8.3) --- ## Kolejność wartości (dlaczego tak) 1. **Audyt** daje fakty przy zerowym ryzyku. 2. **MVP = darmowy audyt read-only** daje od razu wartość bez ryzyka dla kodu. 3. Naprawy/koszty/wielohost = skalowanie. ## Powiązanie z lejkiem Symbiont Etapy 2–6 + **8** są rozwinięte w [`../wizja-symbiont/07_ROADMAPA.md`](../wizja-symbiont/07_ROADMAPA.md) (checklist plan Opus vs status). Macius spina je z **konkretem gema0** i prowadzi pracę agentów. **Pierwotna roadmapa Opusa (Etap 0–6):** commit `091f79a`. Rozszerzenia 7A/7A.1 poza nią — zamrożone do Etapu 8.