Risikoregister (Taktano)
Lebendes Register relevanter Risiken (Technik · Sicherheit · Datenschutz · Regulatorik) für die Zielmärkte DE · AT · CH und generell. Pflicht (CLAUDE.md §Compliance): zu Session-/PR-Beginn die relevanten Risiken sichten, neue eintragen, Status/Maßnahme pflegen; bei kritischen/regulatorisch relevanten Themen aktiv hinweisen + Optionen zeigen.
Skala: W = Wahrscheinlichkeit (1 niedrig · 2 mittel · 3 hoch) · A = Auswirkung (1 · 2 · 3) · Score = W×A (1–9; ≥6 = vorrangig). Status: offen · in Arbeit · gemindert · akzeptiert.
| ID | Risiko | Bereich | W | A | Score | Status | Maßnahme / Owner | Bezug | Letzte Prüfung |
|---|---|---|---|---|---|---|---|---|---|
| RISK-1 | DO-Blob wächst unbegrenzt (auftraege/leistungsnachweise/archivierte nie beschnitten) → DO-Storage-Limit & Ladezeit | Persistenz/Skalierung | 2 | 3 | 6 | offen | Pruning/Archiv-Auslagerung; queryable Store (D1) für Historie | OP-AUDIT-1 | 2026-06-24 |
| RISK-2 | Vergangene Wunschfrei/Bereitschaft nicht wiederherstellbar (removeAbwesenheit löscht ohne Historie) → Fairness-Historie & Audit unmöglich | Daten/Audit | 3 | 2 | 6 | offen | Append-only-Historie / Audit-Log | OP-AUDIT-1, OP-OPT-7 | 2026-06-24 |
| RISK-3 | Klartext-PII in Logs/State/URLs (DSGVO DE/AT/CH) | Datenschutz | 2 | 3 | 6 | offen | PII-Scrubbing im Logger-Wrapper; EU-Residenz; Datenminimierung (Kunde = Name + CRM-Link) | OP-LOG-1, OP-OBS-1, OP-SEC-1 | 2026-06-24 |
| RISK-4 | Supply-Chain / verwundbare (transitive) Dependencies | Sicherheit | 2 | 3 | 6 → 4 | gemindert (06-27) | SBOM (CycloneDX) + ✅ Dependabot (npm/pip/actions) + ✅ CI-Gate security-audit (npm audit prod-Deps high+ / pip-audit, blockiert PR/CI — nicht Deploy, Availability); gepinnte Actions. CodeQL ✅ aktiv via GitHub Default Setup (TS+Python automatisch, kein eigener Workflow; 06-27). Snyk = spätere Komfort-Option, nicht zwingend (Befund/Umsetzung 06-27, docs/betrieb/Compliance.md). Vuln-Assessment 07-03: 0 Prod-Runtime-Vulns (Server/Client npm audit --omit=dev = 0, pip-audit Solver grün) — alle Findings lagen in Dev-/Build-Toolchains und wurden nicht-brechend behoben: wrangler ^4.105 (Server + docs-site → undici/ws/miniflare-Highs weg), Client npm audit fix (Angular 20.3.31/vite 7.3.5) + Patch-Override http-proxy-middleware 3.0.7 (Angular pinnte exakt 3.0.5); flyctl-Action SHA-gepinnt (war letzte @master-Referenz). Akzeptierte Dev-only-Residuen (kein nicht-brechender Fix; nicht ausgeliefert): drizzle-kit→esbuild (moderate), Client babel/uuid-Ketten (low/moderate, Angular-exakt-Pins), docs-site serialize-javascript (high, aber nur Build-Cache der statischen Doku-Site, vertrauenswürdige Inputs — npm-„Fix" wäre Docusaurus-Downgrade) | OP-SBOM-1, OP-SEC-1 | 2026-07-03 |
| RISK-5 | Secret-Leak (FLY_API_TOKEN · Cloudflare · GitHub-Bot) | Secrets/CI | 1 | 3 | 3 | gemindert | Keine Secrets im Repo (GitHub-Secrets), least-privilege Deploy-Token, gepinnte Actions | OP-SEC-1 | 2026-06-24 |
| RISK-6 | Mandanten-Isolation: Cross-Tenant-Zugriff über DO-State/Broadcast/Insights | Multi-Tenancy | 2 | 3 | 6 | offen | Authz je Message, keine Fremd-State-Broadcasts, Pentest vor Mehr-Mandanten-Betrieb | OP-SEC-1, OP-AUTH-1 | 2026-06-24 |
| RISK-7 | CP-SAT-Solver (Fly.io) nicht erreichbar | Verfügbarkeit | 2 | 1 | 2 | gemindert | TS-Fallback aktiv; Solver-Status-Hinweis im Cockpit (30-s-Ping) | OP-DEPLOY-2 | 2026-06-24 |
| RISK-8 | E-Rechnungs-Pflicht DE-B2B (ab 2025) nicht erfüllt | Regulatorik (DE) | 2 | 2 | 4 | offen | SevDesk erzeugt XRechnung/ZUGFeRD (zurückgestellt, vor Produktivbetrieb) | OP-BILLING-1 | 2026-06-24 |
| RISK-9 | Zahlungs-gesteuerter Zugang sperrt fälschlich bei Sync-Ausfall | Zugang | 1 | 2 | 2 | gemindert | Bewusst fail-open + Admin-Override + Audit jedes Stufenwechsels | OP-ACCESS-1, OP-AUDIT-1 | 2026-06-24 |
| RISK-10 | Prompt-Injection / Tool-Missbrauch im In-App-Assistenten | KI/Sicherheit | 2 | 2 | 4 | in Arbeit (07-01) | Härtung gebaut: Tools nur read/simulate (Hebel kein Auto-Apply, §3), Rundenlimit je Turn (MAX_RUNDEN), Feature-Flag-Allowlist (ASSISTENT_ALLOWLIST), Feedback dormant-guarded. Offen: externe vs. interne Doku-Sicht scharf schalten (OP-DOCS-5), Eingabe-Rate-Limit je Nutzer | OP-AI-4 §5, OP-SEC-1 | 2026-07-01 |
| RISK-11 | Falsche Kosten-Stammdaten (Stundensätze/Materialpreise) → irreführende Margen/Fehlentscheidungen | Daten/Steuerung | 2 | 2 | 4 | offen | Sprechende Stammdaten-Pflege, Soll-Ist-Plausibilisierung, Audit der Änderungen (G-1/D-2) | OP-COST-1, OP-AUDIT-1 | 2026-06-25 |
| RISK-12 | Sensible Kostendaten vor verifiziertem Rollenmodell sichtbar (Marge/Sätze ohne OP-AUTH-1 A-3) | Datenschutz/Zugang | 2 | 2 | 4 | offen (interim akzeptiert) | Rollen-Gate gebaut, aber interim self-declared (A-1.5, 2026-07-26): das per-Connection-Gate (Broadcast-Filter + Schreib-Gate) hängt jetzt an der im Menü gewählten Rolle (kosten = Buchhaltung/Inhaber-Chef) statt an der entfernten E-Mail-Allowlist KOSTEN_ADMIN_EMAILS. Restrisiko: die Rolle ist selbst-deklariert → jeder hinter Cloudflare Access erreichbare Nutzer kann eine Kosten-berechtigte Rolle wählen (Zugang selbst am Edge per Access geschützt; aktuell nur Infra-/Cloud-Spend Sicht B exponiert — Sicht A Marge/Sätze noch nicht gebaut). Verifizierte Durchsetzung (Rolle aus Better-Auth-JWT-Claim) folgt mit OP-AUTH-1 A-3 | OP-COST-1, OP-AUTH-1, OP-SEC-1 | 2026-07-26 |
| RISK-13 | Etablierter Wettbewerber (branchennahes Bestandssystem / KFZ-DMS) kopiert die Veredelungs-Nische inkl. Taktung → Differenzierungsvorsprung schmilzt | Markt/Wettbewerb | 2 | 2 | 4 | offen | Vorsprung über Tiefe (CP-SAT-Taktung, „Mensch entscheidet, KI schlägt vor") + Referenzkunden/Verbands-Hebel ausbauen, bevor Nachahmer aufschließen; Roadmap auf den Burggraben fokussieren | OP-COMPETE-1, OP-MARKET-1 | 2026-06-28 |
| RISK-14 | Markt zu klein / SOM überschätzt (zu wenige Betriebe mit echtem Planungsschmerz) → Vertriebsinvestition trägt nicht | Markt/Strategie | 2 | 3 | 6 | offen | Pilot-Validierung VOR großer Vertriebsinvestition (Vorher/Nachher-Messung); TAM/SAM/SOM-Annahmen mit Verbands-/IHK-Statistik kalibrieren; Beachhead scharf halten (Folierer DE) | OP-MARKET-1, OP-COMPETE-1 | 2026-06-28 |
| RISK-15 | Assistent-Prompts/Live-State (Auftrags-/Standortdaten) verlassen die EU an den LLM-Provider → DSGVO/AVV-Pflicht | Datenschutz (DE/AT/CH) | 2 | 3 | 6 | in Arbeit (07-01) | EU-gehostetes Modell gewählt (Residenz in der EU, ASSISTENT_LLM_BASE_URL); dormant ohne Key; Datenminimierung (schmale Insight-Projektion statt Roh-State); kein Klartext-PII im Prompt. Offen: AVV mit Provider abschließen + in Compliance.md belegen, EU-Region final verifizieren | OP-AI-4, OP-LOG-1, OP-SEC-1 | 2026-07-01 |
| RISK-16 | OTel-Betriebs-Logs/-Metriken an Grafana-Cloud-Region → Telemetrie-Datentransfer (DSGVO DE/AT/CH) | Datenschutz (DE/AT/CH) | 2 | 2 | 4 → 2 | gemindert (07-02) | EU-Umstellung erfolgt: Stack auf Grafana Cloud EU (otlp-gateway-prod-eu-west-2) umgestellt (Nutzer 07-02) → Telemetrie bleibt in der EU. Zuvor kurzzeitig US-Test-Stack (nur Dev, PII-gescrubbt, keine echten Kundendaten) — abgelöst. AVV/DPA dokumentiert (07-02): als Tracker-Zeile C-18 in Compliance.md erfasst (Datenminimierung: nur PII-gescrubbte Betriebs-Telemetrie, keine Kundendaten; EU-Region belegt) — Rest-Offen (Nutzer/Legal): Grafana-Labs-Standard-DPA gegenzeichnen + ins VVT (C-10) aufnehmen, Retention dokumentieren, vor Go-Live final verifizieren. Wechsel ist code-frei via OTLP (nur OTEL_EXPORTER_OTLP_ENDPOINT/_HEADERS) | OP-OBS-1, OP-LOG-1, OP-SEC-1 | 2026-07-02 |
| RISK-18 | Self-hosted CI-Runner (OP-CI-2) führt bei einem Fork-PR fremden Code aus (Build-/Test-Skripte) → Zugriff auf den lokalen Runner-Host/das Netz der Org | Sicherheit/CI | 2 | 3 | 6 → 2 | gemindert (07-04) | Fork-Gate im Workflow: in ci.yml läuft jeder Job als runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || vars.CI_RUNNER || 'self-hosted' }} → PRs aus Forks landen immer auf GitHub-gehosteten Wegwerf-Runnern, nie auf dem self-hosted Runner. sync-pr-logs.yml weist Fork-PRs zusätzlich per Guard 2 vor dem Checkout ab. Deploy-/Schedule-Workflows (fly-deploy/docs-deploy/weekly-audit) laufen nur auf main-Push/Dispatch/Cron im eigenen Repo (kein Fremd-PR). Rest-Offen: Runner-Host härten (ephemer/isoliert, least-privilege im Org-Netz), sobald der lokale Runner produktiv trägt | OP-CI-2, OP-SEC-1 | 2026-07-04 |
| RISK-17 | Vectorize (Doku-RAG-Index) bietet keine EU-Jurisdiktions-Option (anders als R2) → Doku-Chunks (inkl. sichtbarkeit:'intern') liegen in einem global verteilten Store | Datenschutz (DE/AT/CH) | 2 | 1 | 2 | in Arbeit (07-02, akzeptiert) | Aktiviert (Nutzer-Entscheidung 07-02, überstimmt die frühere Zurückstellung): RAG live geschaltet — Index taktano-doku self-provisioniert + Embeddings-Push via scripts/push-doku-index.mjs (CI deploy + docs-deploy). Exposure gering + by design begrenzt: nur Doku-Inhalte + Metadaten, kein PII, keine Kunden-/Tenant-Daten; Frage-Embeddings über das EU-Modell (RISK-15/C-17), nur der Vektor geht an Vectorize. Compliance-Nachzug erledigt: Zeile C-19 in Compliance.md (Residenz + AVV-Scope C-10). Offen (wiederkehrend): prüfen, ob CF EU-Jurisdiktion für Vectorize anbietet (dann pinnen); bei sensibleren Index-Inhalten (Tenant-Doku) neu bewerten | OP-DOCS-2, OP-AI-4, OP-SEC-1, C-19 | 2026-07-02 |
| RISK-19 | Akquise-/Orga-Tool (OP-VERTRIEB-2) — falls Standard-CRM/Marketing-Tool (z. B. Hubspot) statt Eigenbau gewählt wird: Lead-Kontaktdaten fremder Betriebe (kein Taktano-Mandantendatum) landen bei einem externen Anbieter → AVV-/EU-Residenz-Pflicht (DSGVO DE/AT/CH), noch nicht geprüft | Datenschutz (DE/AT/CH) | 2 | 2 | 4 | offen | Vor Tool-Entscheidung klären (Teil der Build-vs-Buy-Prüfung OP-VERTRIEB-2 selbst): EU-Residenz/AVV-Fähigkeit des gewählten Anbieters, Datenminimierung (nur Kontakt-/Call-Status-Daten, keine weiteren PII), VVT-Eintrag (C-10) bei Go-Live | OP-VERTRIEB-2 | 2026-07-11 |
Review-Rhythmus
- Je Session/PR: betroffene Risiken sichten; neue Risiken aus dem Change eintragen; Score/Status aktualisieren.
- Vorrangig behandeln: Score ≥ 6. Bei neuen kritischen/regulatorischen Themen für DE/AT/CH sofort flaggen + Optionen aufzeigen (CLAUDE.md §Compliance) und hier eintragen.
- Verknüpfung: Maßnahmen hängen an den OPs in
ops/<ID>.md(Single Source der Umsetzung, →Offene-Punkte.md); dieses Register bündelt die Risiko-Sicht.
↩ Zurück zur Doku-Landkarte · Lesepfade · Register (alle OPs)