Analiza p24-infra — Mapa Procedur, Priorytetów i Automatyki

Wersja: 2026-06-27
Przeznaczenie: Dokument roboczy — przegląd strategiczny, mapa obszarów operacyjnych, inwentarz zdarzeń i mechanizmów samokontroli/samoleczenia.


1. Cele i priorytety p24-infra

Misja

p24-infra utrzymuje przy życiu platformę Ecotrans i jej ekosystem satelitarny (BrandPilot, Art Agency, personal brand). Rola: administrator systemów + oficer bezpieczeństwa + DevOps manager — działa autonomicznie, eskaluje tylko gdy brakuje autoryzacji, narzędzi lub decyzji architektonicznych.

Priorytety operacyjne (malejąco)

PrioCelDefinicja sukcesu
P1Ciągłość produkcji (Pinbox24 / bms-1)Uptime ≥ 99,5 % · żaden incydent dyskowy niezauważony > 15 min
P1Bezpieczeństwo danychŻaden sekret w git · backupy MongoDB < 26 h · SOPS na każdym sekrecie
P1Monitoring stack (vps-i1)Prometheus/Alertmanager działający · alerty dostarczane < 5 min
P2Automatyzacja n8n (bms-4)Kolejka robocza < 100 zadań · wykonania < 5 % błędów / dobę
P2Compliance EU AI ActRejestr dev_r_ai_systems aktualny · audit eu_ai_act_check zielony
P2Rotacja credentialiŻaden klucz auto_rotate=true nie przekroczył deadline
P3WAHA gateway (vps-h1)Sesja WhatsApp aktywna · brak 504 na webhookach
P3Dokumentacja (dev_r_services)Każdy aktywny element z compliance_workbook = 'yes'
P3KosztyCałkowite < 700 EUR/mies. · alerty koszt-spike < 24 h od zdarzenia

2. Utrzymanie infrastruktury

2.1 Monitorowanie

Architektura 4-warstwowa:

Warstwa 1 (ciągła, sekunda):   Prometheus → Alertmanager → email/Discord/Telegram
Warstwa 2 (co 2 h):            GitHub Actions health-check.yml → issue p24-infra-nc-alert
Warstwa 3 (co noc, 00:30 UTC): Nightly AI triage (nightly-devops-triage.yml) → P1/P2/P3 issues
Warstwa 4 (co godzinę):        Hourly triage (cron bms-4, claude agent) → auto-fix / AI-Dev / human

Co jest monitorowane:

ObszarNarzędzieAlerty
CPU / RAM / disk (vps-i1, vps-h1)node_exporterHighCPU >80 % / 5 min, HighMem >85 %, LowDisk <15 %
Kontenery DockercAdvisorContainerCrash, HighRestarts >2/h
Supabase queue depthsqueue-exporter :9200QueueDeep >1000, ExporterDown
Wolne zapytania SQLpg-stats-exporter :9201SlowQueryCount spike
Backupy Wasabibackup-exporter :9220BackupStale >26 h
Koszty SaaScost-exporter :9210CostSpike >threshold
Wiek rotacji credentialicredential-exporter :9230RotationOverdue / RotationCritical
HTTP endpointyblackbox exporterProbeDown, HighLatency
Vercel deploymentsvercel-exporterDeployFailed
Silniki AIai-workers ruleModelCallError spike
Certyfikaty TLSCaddy auto-renew + alert ruleCertExpiresIn14d (spec-12 pending)

Znane luki monitoringu (otwarte):

  • brak node_exporter na bms-1, bms-2, bms-3 → dysk i RAM tych serwerów niewidoczne w Prometheusie
  • stan sesji WAHA (nie tylko HTTP 200)
  • pass/fail nightly triage nie jako metryka Prometheus → historia gubi się przy zamknięciu issue

Zasady priorytetu alertów:

SeverityCzas odpowiedziKanał
Critical (P1)natychmiastemail Mailgun + Telegram page + GitHub issue label bug
Warning (P2)4 h grupowanieemail digest
Info (P3)digest dziennyemail

2.2 Pielęgnacja

Czynności utrzymaniowe cykliczne — kto robi / co / kiedy:

CzęstotliwośćCzynnośćNarzędzie / miejsce
Każda godzinaTriage nowych alertów, auto-fix Tier 1cron bms-4 → hourly-triage claude agent
Co noc (00:30 UTC)Pełne 11-fazowe sprawdzenie infrastrukturynightly-devops-triage.yml
Co nocBackup MongoDB (mongodump → Wasabi)backup-mongo.sh na bms-2/3
Co nocBackup Supabase + n8n + Grafanabackup-supabase.yml, n8n-backup.yml, grafana-backup.yml
Co tydzień (pon. 08:00 UTC)Audit compliance EU AI Actaudit-engine eu_ai_act_check
Co tydzieńRotacja credentiali (auto_rotate=true)credential-rotation.yml
Co tydzieńSnapshot workflow n8nn8n-workflow-snapshot.yml
Co miesiącPrzegląd kosztów SaaScost-exporter dashboard + ręczny przegląd
Co miesiącImage scan CVEimage-scan.yml, trivy-scan.yml
Co miesiącSprawdzenie restore backupverify-backup-restore.sh (⚠️ ostatni >4 mies. temu — DŁUG)
Co kwartałAudyt n8n credentiali (brak hardkodowania)n8n-secrets-audit.md
Co kwartałRotacja kluczy Wasabi + SOPSdocs/secrets-rotation-log.md
Co rokPrzegląd EU AI Act + aktualizacja rejestrudocs/eu-ai-act-compliance.md

Dyżur manualny (human-action):

  • Zatwierdzanie GitHub invitations dla nowych AI-Dev agents
  • Re-auth Claude runner OAuth po wygaśnięciu (fallback po 2 nieudanych próbach Playwright)
  • Rotacja kluczy SSH (nieczęste, planowe)

2.3 Archiwizacja

Dane długoterminowe — gdzie i jak długo:

DaneLokalizacjaRetencjaKompresja
Metryki Prometheus (raw)vps-i1 /prometheus-data/15 dni
Metryki Thanos (raw)Wasabi p24-infra/thanos/90 dnibrak
Metryki Thanos (5 min downsample)Wasabi p24-infra/thanos/180 dni
Metryki Thanos (1 h downsample)Wasabi p24-infra/thanos/365 dni
Logi kontenerówLoki (vps-i1) → Promtailkilka dni (spec 02, konfiguracja retencji TBD)
Logi serwera (wszystkie)Mezmo (LogDNA)~7 dni
MongoDB dumpWasabi p24-infra/90 dnigzip
Backupy n8n PostgreSQLWasabi p24-infra/TBD
PDF raporty fleetWasabi p24-infra/pdfs/trwale
Snapshoty workflow n8nGitHub p24-infra repotrwale (git)
Historia issues / PRGitHubtrwale
Logi rotacji credentialidocs/secrets-rotation-log.md (git)trwale

Zasada: dane operacyjne (logi, metryki high-res) mają krótką retencję. Dane audytowe i kopie zapasowe danych biznesowych — trwałe lub 90 dni minimum.

Znane braki archiwizacji:

  • retencja logów Loki niezdefiniowana (spec 02 pending)
  • brak automatycznego testu restore z Wasabi (ostatni drill >4 mies. temu → natychmiastowe działanie)

2.4 Compliance

Dwa reżimy compliance działające równolegle:

A. Infrastructure Standard (codzienny)

Każdy element w dev_r_services (Supabase) musi mieć:

  1. Workbook ops (docs/{service}-operations.md)
  2. Alert {Service}Down + {Service}HighRestarts + blackbox probe
  3. Backup automatyczny dobowy → Wasabi
  4. Procedura restore < 30 min, przetestowana
  5. RLS włączone na wszystkich tabelach Supabase (nawet backend-only)
  6. Jeśli AI-powered → wpis w dev_r_ai_systems z tier ryzyka

Audit: infra_docs_check → codziennie → tworzy issue przy luce.

B. EU AI Act (tygodniowy)

Deadline: 2026-08-02 (Annex III wchodzi w życie).

Rejestry AI:

  • dev_r_ai_systems — każdy system AI z klasyfikacją (prohibited / high-risk / limited / minimal)
  • docs/eu-ai-act-compliance.md — pełna dokumentacja zobowiązań

Trigger wysokiego ryzyka (Annex III.4 — NIE wdrażać bez pełnego checklist):

  • AI oceniający / rankingujący kierowców / pracowników
  • AI automatycznie alokujący zadania do ludzi
  • AI podejmujący decyzje o zatrudnieniu

Audit: eu_ai_act_check → każdy poniedziałek 08:00 UTC → issue na każdą lukę.

C. Secrets Compliance (ciągły)

  • Każdy sekret w SOPS (secrets/*.env.sops) — nigdy w git plain, nigdy w komentarzach
  • credential-exporter mierzy wiek rotacji → alert RotationCritical gdy przekroczono deadline
  • Log rotacji: docs/secrets-rotation-log.md — każda rotacja z potwierdzeniem synchronizacji u wszystkich konsumentów

2.5 Dokumentacja

Standard obowiązkowy przy każdej zmianie elementu infrastruktury:

  1. Zaktualizuj dev_r_services (Supabase) — compliance_workbook, workbook_url, compliance_notes
  2. Zaktualizuj lub stwórz docs/{service}-operations.md
  3. Jeśli AI-powered → zaktualizuj docs/eu-ai-act-compliance.md §4 + dev_r_ai_systems
  4. Jeśli problem może się powtórzyć → napisz playbook w docs/playbooks/<temat>.md

Hierarchia dokumentów:

docs/
├── analiza-infrastruktury.md        ← ten plik
├── infrastructure-overview.md        ← mapa techniczna (co gdzie działa)
├── infrastructure-standard.md        ← wymagania compliance każdego elementu
├── secrets-management.md             ← procedury SOPS+age
├── eu-ai-act-compliance.md           ← rejestr AI + zobowiązania regulacyjne
├── audit-engine.md                   ← spec audit-engine (living doc)
├── secrets-rotation-log.md           ← log każdej rotacji
├── {service}-operations.md           ← workbook per usługa (operacje, backup, restore)
├── servers/
│   └── {bms|vps}-operations.md       ← per serwer: stały spis kontenerów, ufw, SSH
├── playbooks/                         ← 108+ runbooków incydentowych
│   ├── static-api-key-incident-rotation.md  ← ZAWSZE czytaj pierwsze przy rotacji
│   ├── sops-windows-crlf.md          ← CRLF/BOM bug recovery
│   └── ...
└── improvements/                      ← backlog rozbudowy (15 specyfikacji P1-P3)

Zasada “Look First, Write After”:

  • Zanim naprawisz powtarzalny problem → sprawdź docs/playbooks/
  • Po naprawieniu problemu → napisz playbook zanim zamkniesz sesję

2.6 Rozbudowa

Backlog specyfikacji (priorytet P1→P3, ~14 dni roboczych łącznie):

#SpecyfikacjaPrioEstym.StatusBlokery
01Backupy + test restore dla usług stanowychP11,5 dPropozycja
02Centralne logi Loki + Promtail (retencja, Grafana)P11 dAktywny (Loki działa)
04IaC pełne (Ansible roles dla stanu VPS)P23 dPropozycjaspec 03 ✓
05Synthetic monitoring — blackbox (TCP, ICMP, TLS)P20,5 dPropozycja
06Konsolidacja health-check workflowsP20,25 dPropozycja
07Status page (Uptime Kuma)P20,5 dPropozycjaspec 05
08Image CVE scan + auto PRs (Renovate/Trivy)P21 dPropozycja
09SSH hardening (fail2ban na bms-2, no-root-login)P21 dPropozycjaspec 04
10Dashboard “co gdzie działa”P30,5 dPropozycja
11Dashboard śledzenia kosztów (Grafana)P31 dPropozycja
12Alerty wygasania certyfikatów TLSP30,25 dPropozycjaspec 05
14Wersjonowanie workflow n8n → gitP30,5 dPropozycjaspec 03 ✓
15Testy jednostkowe infra-code (dns-manager, queue-exporter)P30,5 dPropozycja

Sugerowana kolejność realizacji:

Tydzień 1:  spec-01 (backupy+restore), spec-06 (health-check konsolidacja)
Tydzień 2:  spec-05 (blackbox), spec-12 (cert alerty), spec-08 (CVE scan)
Tydzień 3:  spec-07 (status page), spec-04 (Ansible IaC)
Tydzień 4:  spec-09 (SSH hardening), spec-10/11 (dashboardy), spec-14/15 (dev quality)

3. Zdarzenia operacyjne

3.1 Zdarzenia powtarzalne — wykaz i procedury

Zdarzenia, na które mamy działający playbook i (często) automatyczną reakcję:

Obszar: Infrastruktura / Serwery

ZdarzeniePlaybookAutomatyka
Kontener Docker zatrzymany / restartingplaybooks/container-restart.md✅ Hourly Tier 1: docker restart
Dysk ≥ 85 % na vps-i1 / vps-h1playbooks/disk-cleanup.md✅ Tier 1: prune-disk.sh
Dysk ≥ 95 % — krytycznyplaybooks/disk-full-critical.md⚠️ Tier 3 (human)
OOM Kill detectedplaybooks/oom-auto-remediation.md⚠️ Alert + manual
CPU > 80 % przez > 5 minplaybooks/high-cpu.md⚠️ Alert + manual
RAM < 500 MB dostępneplaybooks/low-memory.md⚠️ Alert + manual
SSH timeout do VPSplaybooks/ssh-timeout.md⚠️ Manual
Traefik / Caddy — stale iptablesplaybooks/vps-h1-traefik-iptables-stale-rules.md⚠️ Manual

Obszar: Monitoring

ZdarzeniePlaybookAutomatyka
Prometheus target DOWNplaybooks/prometheus-target-down.md✅ Tier 2: AI-Dev SSH spawn
Prometheus config drift (reload needed)playbooks/prometheus-reload.md✅ Tier 1: curl -X POST /-/reload
Alertmanager nie doarcza mailiplaybooks/mailgun-smtp-fix.md⚠️ Manual
Grafana niedostępnaplaybooks/grafana-restart.md✅ Tier 1: docker restart
Backup exporter — brak statusuplaybooks/backup-exporter-down.md✅ Tier 1: restart
Thanos sidecar — bloki nie uploadowaneplaybooks/thanos-upload-stall.md⚠️ Manual

Obszar: Sekrety i bezpieczeństwo

ZdarzeniePlaybookAutomatyka
Credential rotacja zaplanowanadocs/secrets-rotation-log.md + playbook per typ kluczacredential-rotation.yml (auto_rotate=true)
Klucz API przypadkowo w chacie / loguplaybooks/static-api-key-incident-rotation.md⚠️ NATYCHMIAST manual
SOPS plik uszkodzony (CRLF/BOM)playbooks/sops-windows-crlf.md⚠️ Manual (canary + recovery)
Certyfikat TLS wygasającyCaddy auto-renew✅ Automatyczny (Caddy ACME)
SSH key expired / revokedplaybooks/ssh-key-rotation.md⚠️ Manual
Claude runner auth expired (OAuth)playbooks/claude-runner-reauth.md✅ Playwright automation → Tier 3 fallback

Obszar: n8n i automatyzacja

ZdarzeniePlaybookAutomatyka
n8n worker crashplaybooks/n8n-worker-restart.md✅ Tier 1: docker restart
n8n kolejka > 100 zadańplaybooks/n8n-queue-backup.md⚠️ Alert + manual
n8n execution error > 5 % / dobęplaybooks/n8n-execution-errors.md⚠️ Alert + manual
n8n API key rotacja (bms-4)playbooks/n8n/n8n-bms4-api-key-rotation.md⚠️ Manual (zero-downtime)
Dispatcher (CF Worker) 500playbooks/dispatcher-cf-worker-error.md⚠️ Manual → bug issue → Agent fallback
spawn-worker.sh exit 2playbooks/spawn-worker-exit-2.md⚠️ bash -n parse check

Obszar: MongoDB rs0

ZdarzeniePlaybookAutomatyka
PRIMARY failover (auto-election)playbooks/mongodb-primary-failover.md✅ rs0 auto-elect
Replication lag > 30 splaybooks/mongodb-replication-lag.md⚠️ Alert + manual
Arbiter disconnect (bms-4)playbooks/mongodb-arbiter-reconnect.md⚠️ Manual
MongoDB port 27017 otwarty na internetplaybooks/mongodb-ufw-lockdown.md⚠️ Manual (ufw)
Utrata hasła admin rs0playbooks/mongodb-admin-password-recovery.md⚠️ Manual (emergency)

Obszar: WAHA gateway

ZdarzeniePlaybookAutomatyka
Sesja WhatsApp rozłączonaplaybooks/waha-session-restart.mdwaha-session-restart.yml
Pairing code potrzebnywaha-pairing-code.yml✅ GH Actions manual trigger
WAHA niedostępna (HTTP 503)playbooks/waha-down.md✅ Tier 1: restart container
Webhook HMAC mismatchplaybooks/waha-hmac-mismatch.md⚠️ Manual (key check)

Obszar: Backup i odtwarzanie

ZdarzeniePlaybookAutomatyka
Backup MongoDB — niezgodność (stale alert)playbooks/mongodb-backup-stale.md⚠️ Manual
Wasabi key rotationplaybooks/wasabi-key-rotation.mdsecrets-sync.yml resync
Restore z Wasabi (drill)playbooks/verify-backup-restore.md⚠️ Manual (drill kwartalny)

3.2 Zdarzenia nowe — protokół pierwszej reakcji

Gdy zdarzenie nie pasuje do żadnego playbooku:

1. STOP  — nie próbuj naprawiać bez zrozumienia
2. OPISZ — stwórz GitHub issue w radieu/p24-infra (label: bug)
           Tytuł: "[Infra] <komponent> — <symptom>"
           Treść: co robiłeś, dokładny błąd/status HTTP, już podjęte kroki
3. DIAGNOZA — zbierz dowody (logi, metryki, stan kontenera) BEZ wyświetlania sekretów
4. WORKAROUND — użyj najbezpieczniejszego workaround, udokumentuj go w issue
5. ROOT CAUSE — po stabilizacji, znajdź przyczynę
6. FIX — wdróż poprawkę przez PR → main
7. PLAYBOOK — przed zamknięciem sesji: napisz docs/playbooks/<temat>.md
8. WERYFIKACJA — sprawdź czy stary stan się nie powtórzy (monitoring / alert)

Obszary i pierwsze kroki diagnostyczne (gdy nie ma playbooka):

Obszar zdarzeniaPierwsze 3 kroki diagnostyki
Kontener / VPSdocker ps -adocker logs --tail=100 <name>df -h
Sieć / TLScurl -v https://<endpoint> → Cloudflare dashboard → caddy reload
Supabase / DBCheck Supabase status page → pg_stat_activity → RLS policy review
n8n workflown8n execution log → docker logs n8n --tail=200 → Redis LLEN bull:*
CredentialsSprawdź wiek rotacji w SOPS → credential-exporter metryki → rotation log
GitHub ActionsCI log → runner status gh run listhealth-check.yml log
Sekret ekspozycjaSTOP czytania → docs/playbooks/static-api-key-incident-rotation.md NATYCHMIAST

Eskalacja gdy Claude nie może rozwiązać samodzielnie:

  • Brakuje autoryzacji do działania (konto zewnętrzne, OAuth flow)
  • Ryzyko utraty danych bez human review
  • Zdarzenie wymaga fizycznego dostępu
  • Nieznany stan repliki MongoDB przed rs.remove()

W tych przypadkach: Discord alert (P1/P2 webhook) + GitHub issue human-action + kontynuuj wszystko co nie blokuje.


3.3 Modyfikacja procedur — gdy playbook zawiódł

Gdy istniejący playbook okazał się błędny, niekompletny lub prowadzi do nowego problemu:

1. STOP wykonywania obecnego playbooka
2. UDOKUMENTUJ awarię procedury w komentarzu do GitHub issue:
   "Playbook <nazwa> krok N zawiódł: <dokładny efekt>"
3. OPRACUJ alternatywne podejście (bezpieczniejszy workaround)
4. Po stabilizacji — PR z poprawką playbooka:
   - Dodaj sekcję "Znane pułapki" lub "⚠️ UWAGA"
   - Zaktualizuj kroki które zawiodły
   - Dodaj "Prevention" jeśli jej brak był przyczyną
5. Jeśli playbook był używany przez automatykę Tier 1/2:
   - Dezaktywuj automatyczne wywołanie tymczasowo
   - Stwórz issue "Disable auto-trigger for <playbook>" z label: patch
   - Re-aktywuj dopiero po weryfikacji nowej wersji

Sygnały że procedura wymaga modyfikacji:

  • Playbook zakłada stan który już nie istnieje (np. stary kontener, deprecjonowane API)
  • Procedura działa ale powoduje alert “side-effect” (np. restart crashuje sesję WAHA)
  • Czas wykonania playbooka przekroczył zakładany (np. restore > 30 min)
  • Playbook jest używany jako workaround dla problemu z innym root cause

4. Samokontrola infrastruktury

Mechanizmy przez które infrastruktura sama ocenia swój stan:

4.1 Stały pomiar stanu (Prometheus)

MechanizmCo kontrolujePróg alarmowy
node_exporterCPU, RAM, dysk, I/O sieci (vps-i1, vps-h1)>80% CPU, >85% RAM, <15% dysk
cAdvisorKażdy kontener Docker (CPU throttle, restart count, pamięć)>2 restarty/h
queue-exporterGłębokość kolejek Supabase>1000 zadań
backup-exporterWiek ostatniego backupu (poll statusu JSON z Wasabi)>26 h
credential-exporterDni od ostatniej rotacji każdego kluczaOverdue / Critical per polityka
cost-exporterMiesięczne wydatki Vercel, Supabase, WasabiSpike vs. baseline
pg-stats-exporterWolne zapytania w Supabase (pg_stat_statements)Count slow_queries spike
blackbox exporterHTTP/TCP endpointy (Grafana, n8n, Traccar, WAHA)ProbeDown, >2 s latency
22 pliki reguł alertówSyntetyzują metryki w zdarzenia operacyjnePer reguła

4.2 Kontrole cykliczne AI (health cognition)

MechanizmKiedyCo sprawdza
health-check.ymlCo 2 hHTTP probe 6 endpointów + 3 GH runners
nightly-devops-triage.yml00:30 UTC11 faz: Docker state (5 serwerów), MongoDB rs0, dysk (6 serwerów), Prometheus targets, stan alertów, n8n executions, Wasabi backupy, Supabase compliance, audit failures
Hourly triage (claude agent)Co godzinęKlasyfikacja issues → Tier 1 / Tier 2 / Tier 3
prometheus-alerts-ai-triage.ymlTrigger via AlertmanagerKlasyfikacja alertu AI → co zrobić
infra_docs_check (audit-engine)Codzienniedev_r_services compliance_workbook != ‘yes’
eu_ai_act_check (audit-engine)Pon. 08:00 UTCdev_r_ai_systems luki + deadline zbliża się
cloudflare-security-check.ymlCyklicznieReguły WAF, SSL, cache
image-scan.yml / trivy-scan.ymlCo miesiącCVE w obrazach Docker
pwd-rotation-check.ymlCo tydzieńCzy rotacje credentiali nie zostały pominięte

4.3 Rejestr elementów (source of truth)

RejestrLokalizacjaCo rejestruje
dev_r_servicesSupabase (public schema)Każdy kontener / usługa SaaS / skrypt / workflow — z compliance status
dev_r_ai_systemsSupabase (public schema)Każdy system AI — risk tier, compliance checklist
dev_r_projectsSupabase (public schema)Projekty ekosystemu
dev_r_exporters_queuesSupabase (public schema)Kolejki monitorowane przez queue-exporter
docs/secrets-rotation-log.mdGitHistoria każdej rotacji credentiali
audit.actions / audit.runsSupabase (audit schema)Historia i harmonogram audytów

5. Samoleczenie infrastruktury

Mechanizmy przez które infrastruktura sama przywraca prawidłowy stan:

5.1 Automatyczne (bez interwencji)

ZdarzenieMechanizm samoleczeniaCzas reakcji
Kontener crashedDocker restart: unless-stopped policy< 30 s
Kontener crashed + Docker policy nie pomagaHourly Tier 1: docker restart <name> via SSH< 1 h
Prometheus config driftHourly Tier 1: curl -X POST /-/reload< 1 h
Dysk ≥ 85 % (vps-i1 / vps-h1)Hourly Tier 1: prune-disk.sh (stare logi, nieużywane obrazy)< 1 h
Credential overdue (auto_rotate=true)Hourly Tier 1: trigger credential-rotation.yml< 1 h
TLS certyfikat wygasa (Caddy)Caddy ACME auto-renew (30 dni przed wygaśnięciem)Automatyczny
MongoDB PRIMARY failoverrs0 auto-election (bms-2 / bms-3 z kworum bms-4)< 10 s (election)
Promtail → Loki connection dropPromtail auto-retry z backoff< 5 min
n8n queue backupRedis + n8n queue mode: retry z exponential backoffPer workflow config
GitHub Actions runner downSelf-hosted runner service claude-runner.service → systemd restart< 1 min

5.2 Wspomagane AI (Tier 2 — AI-Dev spawning)

Gdy Tier 1 nie rozwiąże problemu w ciągu ~1 h, hourly triage klasyfikuje issue jako Tier 2 i spawnuje AI-Dev workera:

TriggerAI-Dev akcjaNadzór
Prometheus scrape target DOWN > 2 hSSH spawn worker → diagnoza + fix + PRBrak (autonomiczny)
Docs compliance gap (compliance_workbook = 'no')Spawn worker → napisz workbook + PRBrak
n8n workflow error pattern (nieznany)Spawn worker → analiza + fix workflowBrak
GH Actions workflow failure (flaky)auto-fix-gh-actions.yml → AI-Dev fixBrak
Nightly triage otworzy P2 issueSpawn worker if pattern knownNadzór po PR

SLA watchdog: Jeśli AI-Dev worker nie stworzy PR w ciągu 4 h → issue relabel na human-action → Telegram page do użytkownika.

5.3 Eskalacja do człowieka (Tier 3)

Samoleczenie kończy się i eskaluje gdy:

WarunekEskalacja
Tier 1 auto-fix zawiódł 2× z rzęduDiscord Critical + human-action issue
Dysk ≥ 95 % (prune-disk.sh nie wystarczył)Telegram P1 page
OOM kill zatrzymał krytyczny kontenerDiscord + issue
MongoDB PRIMARY count = 0 (brak kworum)Telegram P1 NATYCHMIAST
Claude runner OAuth expired + Playwright fail 2×Discord + human-action: manual re-auth
AI-Dev worker bez PR > 4 hTelegram P2
Sekret wykryty w logu / chacieSTOP wszystkiego → rotation playbook

5.4 Samoleczenie — mapa przepływu

Zdarzenie
    │
    ▼
Prometheus alert / health-check issue
    │
    ▼
Hourly triage claude agent classifies
    │
    ├─── Tier 1 (auto-fix) ──────────────► SSH komenda → zamknięcie issue (resolved)
    │
    ├─── Tier 2 (AI-Dev) ───────────────► Spawn worker → diagnoza + PR → human review
    │                                      └─ > 4h bez PR → Tier 3
    │
    └─── Tier 3 (human) ────────────────► Discord/Telegram P1/P2 + human-action label
                                           └─ Człowiek interweniuje manualnie

6. Znane luki i zadania natychmiastowe

LukaSeverityAkcjaDeadline
Restore test MongoDB nie wykonany > 4 mies.KRYTYCZNAUruchom verify-backup-restore.sh na bms-2Następna sesja
node_exporter brak na bms-1/2/3WysokaAnsible role + Prometheus scrape targetTydzień 1
Nightly triage health nie jest metryką PrometheusWysokaPush gauge po każdym run → Grafana timelineTydzień 1
WAHA stan sesji niewidoczny w PrometheusWysokaCustom exporter lub blackbox TCP probeTydzień 2 (spec 05)
Brak DR runbooka (co gdy bms-1 odpada)WysokaNapisz docs/playbooks/disaster-recovery.mdTydzień 2
health-check.yml spamuje Discord przy każdym runieŚredniaTylko notyfikacje przy zmianie stanu (spec 06)Tydzień 1
n8n workflow nie wersjonowane w gitŚredniaspec 14Kwartał

Dokument wygenerowany na podstawie pełnej eksploracji repo i CLAUDE.md / memory, 2026-06-27.
Aktualizować przy każdej zmianie architektury lub nowym obszarze operacyjnym.