# Red-Team Audit Master Plan — CyberBrain26

**Autoritativní plán:** `.kilo/plans/CyberBrain26cil-031026-v2.md`  
**Datum:** 2026-10-05  
**Stav:** Schválený směr; obsahuje ověřená fakta, návrhy a hypotézy  
**Cíl:** Provest extrémně hluboký red-team audit CyberBrain26 v4.1, odhalit architektonické chyby a vyprodukovat kompletní technický balíček: audit → cílová architektura → ADR → roadmapa → risk register → backlog → testy → metriky.

---

## Shrnutí plánu

Audit se provede v pěti fázích. Každá fáze má explicitní vstupy, výstupy a acceptance criteria. Výstupem je jeden kompletní Markdown dokument (viz §Výstupní specifikace), který tvoří dvouvrstvý balíček: executive plán + technický report.

| Fáze | Název | Výstup |
|---|---|---|
| A | Static audit kódu a dokumentace | Seznam ověřených faktů, chyb, mezer |
| B | Target architektura + ADRs | Cílový stav, ADRs, rozhodovací matice |
| C | Migrační strategie | Krok za krokem, rollback, paralelizace |
| D | Master roadmapa + risk register | Quick wins, horizonty, kritická cesta |
| E | Implementační podklady | Backlog, testy, metriky, pseudokód |

---

## Fáze A — Static Audit (vstup: aktuální kód)

### A1 Zdrojový audit

Projít všechny moduly v `src/cyberbrain26/` a porovnat s deklarovaným rozsahem v README, PROJECT_STATUS.md a DECISIONS_LOG_V5.md.

**Klíčová místa k ověření:**
- `agents/orchestrator.py` — `PlannerAgent._resolve_step_count` (max_steps opraven v4.1? vyhradit proti regresi)
- `cli.py` — `pilot` sub-aplikace (odstraněno? přesunuto? je to master?)
- `orchestration/ptah_bridge.py` — retry logika (COMPLETED s `execution_attempted=False` opravena? existuje `retry_blocked`?)
- `execution_plane/secure_gateway.py` — tří `ExecutionRefused` hranice před `provider.execute` (řádek 183 potvrzen?)
- `security_plane/egress.py` — `EgressGate` je napojený na `AuthorizedExecutionService`?
- `security_plane/audit/chain.py` — bezklíčový hash řetěz, `prune_expired` nebridgí, `clear()` varuje
- `security_plane/firewall/` — `AIFirewall` je v exekuční cestě?
- `extension_layer/registry_impl.py` — `_authorize_step` v dispatcheru
- `control_plane/task_queue/__init__.py` — `retry_failed`, `retry_blocked`
- `product/` — `approvals.py`, `doctor.py` existují?

**Výstup A1:** Tabulka `{soubor:řádek} → {správa dokumentace} → {skutečnost} → {schod/rozpor}`

### A2 Bezpečnostní mezer

Ověřit stávající mezery ze SESSION_HANDOFF.md a PROJECT_STATUS.md:

| Mezera | Ověřit |
|---|---|
| Schválení není svázáno s kódem kryptograficky | `actions.py` ExecutionAuthorization.covers() |
| Prompt egress není doložen/blokován | `egress.py` + `secure_gateway.py` volání |
| `AIFirewall` není v exekuční cestě | `security_plane/firewall/__init__.py` |
| Chybí cgroup/PID/disk kvóty | `execution_plane/bubblewrap_provider.py` |
| `chmod` SQLite best-effort | `data_plane/sqlite_store.py` |
| `prune_expired` není secure erase | `security_plane/audit/chain.py` |
| `ACTION_SCOPE_MAP` postrádá 4 akce | `security_plane/actions.py` řádek 242 |

**Výstup A2:** Tabulka `{mezeira} → {stav} → {důkaz} → {dopad}`

### A3 Architektonické schody

Porovnat cílovou architekturu v `-v2.md` §3 se skutečným kódem:

| Modul (v plánu) | Existuje v kódu? | Stav |
|---|---|---|
| Kilo Adapter | Ne (zelená falešná) | `integration/ptah_bridge.py` je skeleton |
| Orchestration Bridge | Částečně | PtahBridge funguje lokálně |
| Security Plane | Ano | Kompletní, ale nedostatečná pro hostile code |
| Knowledge Plane | Šablony | `data_plane/knowledge.py` — prázdné |
| Model Intelligence | Částečně | `model_layer/` existuje, ale CLI nevolá modely |
| Execution Plane | Ano | Bubblewrap prototyp |
| Storage Adapters | Částečně | SQLite bez šifrování |
| UI | Ne | Žádné web/mobilní UI |

**Výstup A3:** Mapa architektonických schodů s Confidence level

### A4 Pilot modul

Zkontrolovat, zda `pilot/` adresář a `cli.py` pilot commands jsou ve `master` větvi:

- Najít všechny soubory v `src/cyberbrain26/pilot/`
- Ověřit, zda jsou v `git status` nebo už commitnuté
- Porovnat se SESSION_HANDOFF.md: "cron review has flagged unapproved cli.py and pilot/ modules in master for 41+ consecutive cycles"
- Ověřit rozsah ovlivnění bezpečnostní cesty

**Výstup A4:** Status pilot modulu v masteru + dopad na bezpečnost

### A5 Závislosti a vendor lock-in

Analyzovat `pyproject.toml` dependencies:
- `litellm` — největší transitive povrch, bez upper bound na většinu závislostí
- `chromadb` — volitelný, ale nevytížený
- `bubblewrap` — systémová závislost bez alternativy
- Žádný lockfile pro runtime (`requirements-dev.lock` je pouze pro CI)

**Výstup A5:** Seznam závislostí s confidence level na produkční stabilitu

---

## Fáze B — Target Architektura a ADRs (vstup: výstup A)

### B1 Cílová architektura

Navrhnout cílovou architekturu s explicitním rozlišením **co je ověřené, co je návrh, co je hypotéza**.

```
┌─────────────────────────────────────────────────────────────────────┐
│                        Vrstva 0: Uživatel                          │
│  CLI (Kilo TUI) · Web UI (FastAPI+React) · Mobilní (Telegram bot)  │
└─────────────────────────────────────────────────────────────────────┘
                            │
┌───────────────────────────▼─────────────────────────────────────────┐
│                  Vrstva 1: Orchestration                           │
│  Kilo (hlavní orchestrátor)                                        │
│    └─→ OrchestrationBridge (volaný jako nástroj)                   │
│         ├─ PlannerAgent (vlákno plánování)                         │
│         ├─ Dispatcher (výhradně delegátor)                         │
│         └─ AgentRegistry + TaskQueue (duální: in-memory + SQLite)  │
└───────────────────────────┬─────────────────────────────────────────┘
                            │
        ┌───────────────────┼───────────────────┐
        ▼                   ▼                   ▼
┌──────────────┐   ┌──────────────┐   ┌──────────────────┐
│ Vrstva 2a:   │   │ Vrstva 2b:   │   │ Vrstva 2c:       │
│ Security     │   │ Knowledge    │   │ Model Intelligence│
│ Plane        │   │ Plane        │   │                   │
│              │   │              │   │                   │
│ Identity     │   │ Ingest       │   │ Registry          │
│ Policy       │   │ Extract      │   │ Router (FreeAuto) │
│ Permission   │   │ Index (FTS5) │   │ EgressGate        │
│ Approval     │   │ Provenance   │   │ Health Checker    │
│ Audit (HMAC) │   │ Retrieval    │   │ Cache             │
│ Firewall     │   │ RAG          │   │                   │
│ EgressGate   │   │              │   │                   │
└──────┬───────┘   └──────┬───────┘   └────────┬─────────┘
       │                   │                    │
       ▼                   ▼                    ▼
┌──────────────┐   ┌──────────────┐   ┌──────────────────┐
│ Vrstva 3:    │   │ Vrstva 3:    │   │ Vrstva 3:        │
│ Execution    │   │ Storage      │   │ External         │
│ Plane        │   │              │   │ Providers        │
│              │   │ SQLite (meta)│   │                   │
│ Bubblewrap   │   │ Originals    │   │ LiteLLM/Ollama   │
│ (Linux proto)│   │ (filesystem) │   │ (allowlist only) │
│              │   │ FTS5 index   │   │                   │
│ cgroup/PID   │   │ Backups      │   │                   │
│ nsjail fallbk│   │              │   │                   │
└──────────────┘   └──────────────┘   └──────────────────┘
```

**Rozlišení [OVĚŘENO]/[NÁVRH]/[HYPOTÉZA]:**
- [OVĚŘENO] Security Plane: identity, policy, permission, approval, audit chain existují a mají testy
- [OVĚŘENO] Execution Plane: Bubblewrap prototyp existuje, není approved pro hostile code
- [NÁVRH] Cílová architektura: Brick-redesign, nové vrstvy
- [HYPOTÉZA] RAG pipeline: není implementován, přesný stack se určí v F3
- [HYPOTÉZA] FreeAuto: algoritmus výběru modelu je návrh, ne ověřený

### B2 Architektonická rozhodnutí (ADR)

| ADR | Název | Rozhodnutí |
|---|---|---|
| ADR-006 | Auditní řetěz: bezklíčový → HMAC | [NÁVRH] Přidat HMAC podpis auditního řetězu s klíčem mimo auditovaný proces |
| ADR-007 | Execution backend | [NÁVRH] Bubblewrap → nsjail/runsc pro produkční prostředí |
| ADR-008 | Model routing | [NÁVRH] LiteLLM jako proxy s lokálním Ollama fallbackem |
| ADR-009 | Knowledge index | [NÁVRH] SQLite FTS5 jako výchozí; ChromaDB/Qdrant až po F3b |
| ADR-010 | Egress kontrola | [OVĚŘENO] EgressGate existuje, rozšířit na všechny odchozí cesty |
| ADR-011 | Pilot modul v master | [NÁVRH] Odstranit pilot/ z master; přesunout do feature branch |
| ADR-012 | CLI povrch | [OVĚŘENO] Zachovat `cyberbrain run`, `plan`, `approvals`, `doctor` |

### B3 Rozhodovací matice

**Sandbox backend:**
| Kritérium | Bubblewrap | nsjail | gVisor/runsc | Firejail |
|---|---|---|---|---|
| Linux-only | Ano | Ano | Ano | Ano |
| cgroup/PID limity | Ne | Ano | Ano | Částečně |
| Network isolation | Ano | Ano | Ano | Ano |
| User namespace | Ano | Ano | Ano | Ano |
| Produkční zralost | Prototyp | Vysoká | Vysoká | Střední |
| License | MIT | Apache-2.0 | Apache-2.0 | GPL-2 |
| Doporučení | F2 prototyp | F6 produkce | F6 produkce | Ne |

**Model routing:**
| Kritérium | LiteLLM | Ollama směrovač | Vlastní |
|---|---|---|---|
| Provider coverage | 100+ | Lokální pouze | Vlastní |
| FreeAuto podpora | Ano | Ne | Ano |
| Vendor lock-in | Střední | Nízký | Nízký |
| Údržba | Komunita | Komunita | Tým |
| Doporučení | F4 cíl | Fallback | Pokud LiteLLM selže |

---

## Fáze C — Migrační strategie

### C1 Principy

1. **Žádný big-bang rewrite.** Všechno probíhá přírůstkově zaGate F0–F9.
2. **Fail-closed vždy.** Každá nová cesta musí být bezpečná před tím, než nahradí starou.
3. **Rollback na úrovni bran.** Každá změna má revertovatelný bod.
4. **Paralelizace podle nezávislosti.** Bezpečnostní vrstva a knowledge vrstva jsou nezávislé.

### C2 Migrační fáze

| Fáze | Co se mění | Závislosti | Rollback |
|---|---|---|---|
| **F0** | Baseline potvrzení; git stav vyčištěn; pilot modul odstraněn z masteru | Žádná | git revert |
| **F1** | Kilo plugin skeleton + model registry + EgressGate napojený na registry | F0 | Vypnout plugin |
| **F2** | Fix `plan --steps`; durable retry; `--scopes` rozšířen na všechny role | F0 | Revert změny v `orchestrator.py` |
| **F3a** | Ingest prototyp (soubory, PDF, OCR) + FTS5 index + provenance | F0, F1 | Vypnout ingest cron |
| **F3b–e** | Objekty, konektory, RAG | F3a | Vypnout konektory |
| **F4** | Model registry + FreeAuto + LiteLLM proxy + egress audit | F1, F3 | Vypnout FreeAuto; manuální výběr |
| **F5** | Customer discovery — ne technické | Žádné | — |
| **F6** | Runtime: nsjail/runci + cgroup + disk kvóty + klíče | F2, F4 | Revert na Bubblewrap |
| **F7** | Sync + plánované úlohy | F3, F6 | Vypnout sync |
| **F8** | Agent portfolio (nové role) | F2–F7 | Zakázat role v registry |
| **F9** | Packaging + billing + enterprise | F5, F8 | Feature flagy |

### C3 Kritická cesta

```
F0 → F1 → F2 → F3a → F3b → F4 → F6 → F8 → F9
         ↘         ↗         ↘         ↗
           F5 (paralelně)    F7 (paralelně s F8)
```

F5 (customer discovery) běží paralelně s F1–F4. Žádné F5+ ověření neblokuje technickou práci, ale technické práce blokují F5 segmentaci.

### C4 Paralelizovatelné práce

| Workstream | Závislý na | Nezávislý na |
|---|---|---|
| Pilot modul odstranění | F0 | Vše |
| `plan --steps` fix | F0 | Vše |
| FTS5 index + ingest | F3a | F1, F2 |
| Audit HMAC | F0 | Vše |
| LiteLLM proxy | F4 | F1 |
| cgroup/prace | F6 | F2 |
| Customer discovery | F5 | Nic |

---

## Fáze D — Master Roadmapa

### Horizont 30 dní (Quick wins + F0 + F1 kick-off)

| Úkol | Složitost | Akceptační kritéria | Testy |
|---|---|---|---|
| Odstranění pilot/ z masteru | 3 | `git ls-files src/cyberbrain26/pilot` = prázdné | `git grep pilot` |
| Fix `plan --steps N` | 2 | `plan --steps 5` → 5 kroků | `test_agents.py` |
| Durable retry blocked oprava | 3 | COMPLETED + `execution_attempted=False` → retry běží | `test_sqlite_persistence` |
| Audit HMAC navržen | 5 | ADR-006 zapsán | `test_audit_chain` |
| EgressGate auditován + rozšířen | 4 | Všechny odchozí cesty procházejí EgressGate | `test_egress_gate*` |
| Kilo plugin skeleton | 5 | Plugin registrován v Kilo, jeden nástroj funguje | `test_kilo_plugin_integration` |

### Horizont 60 dní (F2 + F3a + F4 start)

| Úkol | Složitost | Akceptační kritéria |
|---|---|---|---|
| `--scopes` rozšířen na všechny role | 4 | `security` role potřebuje `secrets` scope; bez něj odmítnut |
| FTS5 dokumentový ingest | 6 | 100 PDF → indexováno, fulltext search funguje |
| Provenance systém | 5 | Každý záznam má sha256, zdroj, timestamp |
| Model registry + FreeAuto návrh | 7 | 2 role mají přiřazené modely; fallback bez placeného přechodu |
| LiteLLM proxy integrace | 6 | Lokální Ollama + 1 vzdálený free provider |
| Egress audit kompletní | 5 | Každý modelový volání má digest + klasifikaci v auditu |

### Horizont 90 dní (F3b–F6 + F7)

| Úkol | Složitost | Akceptační kritéria |
|---|---|---|---|
| OCR pipeline (Tesseract) | 7 | 50 obrázků → text, confidence score, provenance |
| nsjail/runci sandbox | 8 | cgroup + PID + disk limity; fail-closed test |
| Klíče + secrets management | 6 | Bezpečné uložení, rotation, žádný plaintext v logu |
| Sync a snapshoty | 5 | 30min nečinnosti → snapshot; konflikt → schválení |
| Plánované úlohy | 5 | Cron → fronta → retry → idempotence |

---

## Fáze E — Implementační podklady

### E1 Backlog (agent-ready)

Každá položka má: `úkol → acceptance → test → metrika → rollback`.

```yaml
# Příklad backlog položky
- id: CB-001
  task: Odstranit pilot/ adresář z master větve
  layer: repository
  dependencies: []
  complexity: 3
  acceptance:
    - git ls-files src/cyberbrain26/pilot vrací prázdné
    - git grep "pilot" src/cyberbrain26/ vrací pouze reference v testech
  tests:
    - pytest tests/test_pilot_workflow_e2e.py - skip
    - ruff check src/cyberbrain26/ - no pilot imports
  rollback: git revert <commit>
  risk: low
```

### E2 Testovací strategie

**Úrovně testů:**
1. **Jednotkové** (pytest, 70 % coverage floor → postupně 80 %)
2. **Kontraktní** (Protocol compliance, `test_task_dispatcher.py`)
3. **Integrační** (F2 E2E: zadání → plán → schválení → exekuce → audit)
4. **Security** (fail-closed, approval timeout, payload tamper, sandbox escape)
5. **Zátěžové** (1000 dokumentů ingest, 100 souběžných tasků)
6. **Syntetické markery** (citlivý obsah neunikne do logu/provideru)

**Kritická pravidla:**
- Každý fail-closed scénář musí mít **pouze jeden** `pytest.raises(ExecutionRefused)`
- Audit chain test musí testovat **jak úspěšný, tak zlomený** řetěz odděleně
- `test_audit_chain` musí obsahovat 12 záměrných mutací (viz potvrzeno 5.10.2026)

### E3 Bezpečnostní model

**Základní pořadí (zachováno z v4.1):**
```
identita → scope → policy → approval → egress → execution → audit
```

**Nové prvky:**
- **HMAC audit chain**: klíč uložený v `~/.config/cyberbrain26/audit.key` (mode 0o600), nikoli ve stejné SQLite
- **EgressGate ve všech odchozích cestách**: model volání, knowledge upload, sync
- **cgroup v2** + **PID namespaces** + **disk/inode kvóty** pro F6
- **Schéma 4 SQLite**: přidá `egress_classification` sloupec do audit záznamů

### E4 Observability a recovery

**Metriky (stručné):**
| Metrika | Zdroj | Alert |
|---|---|---|
| approval_wait_seconds | AuditLog | > 120s |
| execution_refused_count | AuditLog | > 5/min |
| audit_chain_integrity | chain.verify_chain() | != ok |
| model_egress_bytes | EgressGate | Spike > 3σ |
| queue_depth | SQLiteTaskQueue | > 50 pending |
| bwrap_available | doctor check | False v produkci |

**Recovery:**
- **Crash**: SQLite WAL + durable queue → automatický restart bez ztráty
- **Zlomený audit chain**: `prune_expired()` se zastaví; operátor musí ručně potvrdit
- **Ztráta schválení**: neexistuje fallback; musí být znovu vyžádáno

### E5 Risk register

| ID | Riziko | Pravděpodobnost | Dopad | Zmírnění |
|---|---|---|---|---|
| R-01 | Audit chain bez HMAC → útočník s DB přístupem přepíše log | Vysoká | Vysoký | HMAC v F0 |
| R-02 | Bubblewrap escape → kód unikne z sandboxu | Střední | Vysoký | nsjail v F6 |
| R-03 | Modelový egress unikne citlivá data | Vysoký | Vysoký | EgressGate + klasifikace |
| R-04 | Kilo plugin ne Zachytí všechny cesty | Střední | Vysoký | F1 cesta mapování |
| R-05 | Customer discovery nezačne → produkt bez trhu | Vysoký | Kritický | F5 paralelně |
| R-06 | pilot/ v master → neprověřený kód v produkční větvi | Ověřeno | Střední | Odstranění F0 |
| R-07 | Litellm transitive deps → supply chain útok | Střední | Střední | pip-audit CI + upper bounds |
| R-08 | SQLite nešifrovaná → fyzický přístup k datům | Střední | Vysoký | SQLCipher v F6 |
| R-09 | Approval ne svázáno s kódem → code substitution | Vysoký | Vysoký | HMAC digest + ExecutionAuthorization |
| R-10 | cgroup chybí → resource exhaustion DoS | Vysoký | Středný | nsjail v F6 |

### E6 ADR shrnutí

| ADR | Název | Rozhodnutí | Důvod |
|---|---|---|---|
| ADR-006 | HMAC audit chain | Přidat HMAC | Bez klíče je řetěz jen tamper-evident |
| ADR-007 | Sandbox: nsjail | Přesunout produkci na nsjail | Bubblewrap nedostatečný pro hostile code |
| ADR-008 | Model proxy: LiteLLM | Přijmout LiteLLM | Pokrytí providerů, FreeAuto podpora |
| ADR-009 | Knowledge index: FTS5 | Zachovat SQLite FTS5 | Žádná external závislost |
| ADR-010 | EgressGate: rozšíření | Rozšířit na všechny cesty | Plán v2 vyžaduje evidovat každou cestu |
| ADR-011 | Pilot modul: odstranění | Odstranit z masteru | 41+ cyklů cron review; bezpečnostní riziko |
| ADR-012 | CLI povrch: stabilizace | Zachovat stávající + přidat audit query | Fail-closed zachován |

---

## Ověřovací strategie

### Gate F0 (baseline)

```bash
git status --short  # čistý working tree nebo jen schválené změny
pytest -q  # 369+ passed
ruff check .  # clean
mypy src/cyberbrain26  # clean
```

### Gate F2 (E2E agent tok)

```bash
# Scénář: cíl → plán → schválení → exekuce → audit
cyberbrain plan --goal "test" --steps 3
cyberbrain approvals pending  # zobrazí schválení
cyberbrain approvals approve <id>
cyberbrain run --id default --scopes python,shell
# Ověření:
# 1. AuditLog.verify_chain() → linkage_ok + integrity_ok
# 2. AuditLog.query(task_id=...) → všechny 24 eventy
# 3. EgressGate → žádný odchozí volání nebylo autorizováno
```

### Gate F3 (knowledge)

```bash
# Ingest 10 testovacích dokumentů
# Ověření:
# 1. Každý dokument má sha256, zdroj, timestamp
# 2. FTS5 search vrací správné výsledky
# 3. Změna originálu → nová verze, stará zůstává
# 4. Syntetický marker neunikne do logu
```

---

## Výstupní specifikace

Výstupem je **jeden Markdown dokument** s těmito sekcemi:

1. **Executive Summary** (max 1 strana)
   - 3–5 nejkritičtějších findingů
   - Doporučený směr v 2 větách
   - Stav [OVĚŘENO]/[NÁVRH]/[HYPOTÉZA] pro každý hlavní závěr

2. **Audit Current State**
   - Současný stav kódu (včetně evidence z A1–A5)
   - Tabulka `{komponenta} → {správa v dokumentaci} → {skutečnost} → {schod}`

3. **Target Architecture**
   - Cílová architektura (diagram Mermaid)
   - Kontrakty modulů (Protocol/TypedDict)
   - Rozlišení [OVĚŘENO]/[NÁVRH]/[HYPOTÉZA]

4. **ADRs**
   - 7–10 rozhodnutí s kontextem, alternativami, důsledky

5. **Migration Strategy**
   - Tabulka `{fáze} → {změna} → {závislosti} → {rollback}`
   - Kritická cesta
   - Paralelizovatelné práce

6. **Master Roadmap**
   - 30/60/90 denní horizonty
   - Složitost 1–10, acceptance criteria, testy, metriky

7. **Risk Register**
   - 10+ rizik s pravděpodobností, dopadem, zmírněním

8. **Agent-Ready Backlog**
   - YAML/JSON formát, každá položka implementovatelná samostatně

9. **Technology Stack**
   - Tabulka `{komponenta} → {doporučení} → {alternativa} → {license} → {důvod}`

10. **Test Strategy**
    - Úrovně testů, kritická pravidla, coverage goals

11. **Security Model**
    - Aktualizovaný bezpečnostní pořadí
    - Nové prvky (HMAC, nsjail, egress)

12. **Observability & Recovery**
    - Metriky, alerty, recovery scénáře

---

## Kritéria dokončení

- [ ] Všechny sekce výstupního dokumentu jsou vyplněny
- [ ] Každá architektonická změna má ADR
- [ ] Každé riziko má mitigaci
- [ ] Každá backlog položka má acceptance criteria a testy
- [ ] [OVĚŘENO]/[NÁVRH]/[HYPOTÉZA] je použito konzistentně
- [ ] Žádný návrh není prezentován jako ověřený fakt

---

## Závislosti na uživateli

| Otázka | Doporučení |
|---|---|
| Má pilot modul zůstat v produktu? | **Ne** — odstranit; 41+ cyklů review bez řešení |
| Jaký je target OS pro F6? | **Ubuntu 24.04 LTS** (dle D1) |
| Má se FreeAuto používat lokálně i vzdáleně? | **Ano**, s EgressGate na každou vzdálenou cestu |
| Chcete Zachovat Bubblewrap jako prototyp? | **Ano**, F2 prototyp; F6 nsjail produkce |
| Má se pilot/ přesunout do samostatné větve? | **Ano**, ne do archivu — může se stát základem F5 |
