# Cron Quality Gate Implementation Plan — CyberBrain26-v4

**Datum:** 2026-10-21  
**Stav:** Plán připravený k implementaci  
**Zdroj:** Deep web research — vybrána Možnost F (vlastní skript + crontab)  
**Řetězení:** identity → policy → permission → approval → sandbox → audit  
**Typ:** [OVĚŘENO] dle schváleného vlastníkova směru (CyberBrain26cil-031026-v2)

## Vstupní analýza

V deep web research byly identifikovány 6 možností konfigurace pro automatické kvalitní brány (quality gate) spouštěné přes cron:

| Možnost | Název | Klíčová vlastnost | Vybráno? |
|---------|-------|-------------------|----------|
| A | Python Quality Gate Skill | ruff → pytest → mypy → bandit, deterministické pořadí | Ne |
| B | PyGate / quick-gate-python | Jedno deterministické rozhodnutí, auto-repair, JSON výstup | Ne |
| C | pytest-coverage-gate | Pouze coverage brána s baseline, ne lint/type-check | Ne |
| D | Python Guardian | Pět nástrojů v jednom kroku, navrženo pro GitHub Actions | Ne |
| E | python-quality-stack | Univerzální command runner, vyžaduje uv | Ne |
| F | Vlastní skript + crontab | Zachovává existující .kilo/logs/cron_reviews.log, žádné nové závislosti | **ANO** |

**Vybrána možnost F** protože:
1. Zachovává stávající `.kilo/logs/cron_reviews.log` a VERDICT formát
2. Kompatibilní s existujícím `.vscode/monitor.py` (sledování VERDICT)
3. Žádné nové externí závisnosti (ruff, pytest, mypy již jsou nainstalovány)
4. Plná kontrola nad příkazy, intervalem a výstupním formátem
5. Souhlasí s existujícím modelem scout/overseer role, který běží každých 13 minut

## Cíl implementace

Vytvořit systémový cron job, který každých 13 minut provádí:
1. **Ruff** — lint + formatting kontrola
2. **Mypy** — statická typová kontrola (`src/cyberbrain26`)
3. **Pytest** — testovací sada s coverage (floor 60%)

Výsledek zapisuje do `.kilo/logs/cron_reviews.log` ve stejném formátu jako stávající scout/overseer role (`=== <čas> ===` a `VERDICT: ...`).

## Součásti plánu

### Součást 1: Skript `scripts/cron-quality-gate.sh`

**Cesta:** `/home/oem/CyberBrain26-v4/scripts/cron-quality-gate.sh`  
**Přístupová práva:** `0o755`  
**Interpret:** `#!/bin/bash`

Skript provede:
1. Ověří, že pracovní adresář existuje a je zapisovatelný
2. Vytvoří/adresář `.kilo/logs/` pokud neexistuje
3. Spustí `ruff check . --output-format=grouped` → zapíše VERDICT
4. Spustí `ruff format --check .` → zapíše VERDICT
5. Spustí `python3 -m mypy src/cyberbrain26 --ignore-missing-imports --show-error-codes` → zapíše VERDICT
6. Spustí `python3 -m pytest -q --cov=src --cov-report=term-missing --cov-fail-under=60` → zapíše shrnutí + VERDICT
7. Zapíše celkové VERDICT: `ALL_GREEN` nebo `ESCALATE <počet chyb>`
8. Vrací kód 0 (neverfail) — chyby jsou logovány, ne aby bránily systému v běhu

Skript je zpětně kompatibilní se stávajícím logem (podobná struktura záznamů).

### Součást 2: Crontab instalace

**Příkaz:** `crontab -e` → přidat řádek:
```
*/13 * * * * /home/oem/CyberBrain26-v4/scripts/cron-quality-gate.sh >> /home/oem/CyberBrain26-v4/.kilo/logs/cron_reviews.log 2>&1
```

**Odůvodnění crontab před systemd timerem:** Crontab je dostupný v systému, nevyžaduje instalační příkaz ani konfiguraci systemd, a je reversibilní (`crontab -r` odstraní).

### Součást 3: Ověření po instalaci

1. Spustit skript ručně: `/home/oem/CyberBrain26-v4/scripts/cron-quality-gate.sh`
2. Zkontrolovat `.kilo/logs/cron_reviews.log` — má přibýt nový blok `=== <čas> ===` s VERDICT řádky
3. Spustit `.vscode/monitor.py` (krátkodobě) — má vypsat `VERDICT: CRON ALIVE` nebo `CRON FROZEN`
4. Počkat na první automatický běh (maximálně 13 minut) a ověřit, že log přibyl další blok

## Brány a kritéria dokončení

**Gate 1 — Implementace:** Skript existuje, je spustitelný, prochází ručním testem bez chyb, loguje do `.kilo/logs/cron_reviews.log`.  
**Gate 2 — Provoz:** Crontab je nainstalovaný, skript se spouští automaticky každých 13 minut, log přibývá, VERDICT je čitelný monitor.py.  
**Gate 3 — Nezávislé posouzení:** Bezpečnostní tvrzení (fail-closed, audit) vyžadují nezávislou revizi mimo tento plán.

## Bezpečnostní dopad

- Skript spouští pouze lokální příkazy (ruff, pytest, mypy) — žádný síťový provoz, žádné cloudové API
- Výstup jde pouze do lokálního logu `.kilo/logs/cron_reviews.log`
- Chyby v bráně neblokují systém (exit 0), chyby jsou zaznamenány v logu jako `ESCALATE`
- Výchozí chování: fail-open pro provoz (skript selže tiše), ale fail-closed pro logické kvalitní kontroly (chyba je zaznamenána)

## Reversibilita

- Odstranění crontabu: `crontab -r` (nebo editace a smazání řádku)
- Odstranění skriptu: `rm scripts/cron-quality-gate.sh`
- Žádné změny v `src/`, `tests/`, `pyproject.toml`, ani `.kilo/kilo.jsonc`

## Další kroky

Po schválení tohoto plánu vlastníkovo implementátor:
1. Vytvoří `scripts/cron-quality-gate.sh` podle Součásti 1
2. Nainstaluje crontab podle Součásti 2
3. Provede ověření podle Součásti 3
4. Vrátí zprávu se résultatem brány 1 a brány 2
