diff --git a/control-pipeline/INSTRUCTION-session-handover.md b/control-pipeline/INSTRUCTION-session-handover.md index ad95b40..598e01b 100644 --- a/control-pipeline/INSTRUCTION-session-handover.md +++ b/control-pipeline/INSTRUCTION-session-handover.md @@ -1,194 +1,117 @@ -# Session-Instruktionen: Master Control Qualitaet + Regulation-Source Split +# Session-Handover: MC Quality + Gap-Analyse + RAG Ingestion -**Datum:** 2026-05-06 -**Fuer:** Naechste Claude-Session -**Repo:** breakpilot-core (~/Projekte/breakpilot-core) +**Datum:** 2026-05-07 bis 2026-05-11 (5 Tage Marathon) +**Repo:** breakpilot-core + breakpilot-compliance --- -## NAECHSTER SCHRITT: 25 grosse Master Controls aufsplitten +## ERLEDIGT -### Problem +### Master Control Quality Overhaul (Core) +- **74.5% → 92.8% Accuracy** (13.588 MCs, 83.073 Members) +- Phase 0: Quality Audit mit Claude Sonnet ($3) +- Phase 1: Ontologie 31 → 74 Tokens + LLM-Prompt fix +- Phase 2: 174K Controls re-klassifiziert via Haiku (10 Batches, ~$50) +- Phase 2b: Generic Tokens gefixt (documentation/procedure → echte Themen, $7.54) +- Phase 2c: L2 Sub-Topics (2 Runden, 172K Controls, ~$32) +- Phase 2d: Bad Subtopics gefixt (stakeholder_*, $0.50) +- Phase 3: Re-Clustering K=18704 +- Phase 4: gpre2 Direct MC (13.588 MCs) +- Phase 6: Golden Dataset (20 Controls) + 8 Quality Tests (alle grün) +- **Production Sync:** MCs + Members + Hints + doc_check_controls -25 Master Controls sind zu generisch (>200 Atomic Controls pro MC). Sie basieren auf generischen Security-Domain-Keywords wie "monitoring", "encryption", "personal_data". Embedding-Clustering allein reicht nicht — die Controls handeln zwar alle von "monitoring", aber fuer unterschiedliche Regulierungen (DSGVO, NIS2, NIST, BSI etc.). +### doc_check_controls (Core → Production) +- **1.874 Controls** über 8 Dokumenttypen (DSE, Cookie, Impressum, AGB, Widerruf, DSFA, AVV, Löschkonzept) +- Jeder mit check_question + pass_criteria + fail_criteria +- Tabelle `compliance.doc_check_controls` lokal + Production -### Die 25 betroffenen MCs +### RAG Ingestion (Core) +- **126 BAuA PDFs** (TRBS/TRGS/ASR): 27.664 Chunks → `bp_compliance_ce` +- **OSHA Technical Manual** (23 Kapitel): 7.241 Chunks → `bp_compliance_ce` +- **OSHA 1910 Subpart O** (Volltext): 745 Chunks +- **EuGH C-588/21 P**: 216 Chunks +- **EU 2018/1725**: 842 Chunks → `bp_compliance` +- **CE-Obligations extrahiert:** 6.141 Obligations → `/tmp/ce_obligations_v2.json` +- Playwright-Crawler für BAuA + OSHA gebaut -| MC-ID | Name | Controls | Problem | -|-------|------|----------|---------| -| MC-8292 | monitoring | 6.157 | Alles von Video bis Vulnerability | -| MC-2260 | procedure | 4.176 | Generisch | -| MC-8302 | alerting | 3.126 | Meldepflichten aller Gesetze gemischt | -| MC-8306 | personal_data | 3.057 | DSGVO + NIS2 + AT/CH gemischt | -| MC-8312 | training | 2.572 | | -| MC-7932 | certificate_management | 2.350 | | -| MC-8317 | incident | 2.288 | | -| MC-8329 | encryption | 1.790 | | -| MC-8333 | audit_logging | 1.645 | | -| MC-8321 | policy | 1.463 | | -| MC-8325 | patch_management | 1.155 | | -| MC-8338 | network_security | 1.071 | | -| ... | (13 weitere) | 200-960 | | +### Gap-Analyse Engine (Compliance) +- **12 Regulierungen** automatisch klassifiziert (CRA, AI Act, NIS2, DSGVO, MiCA, PSD2, AML, etc.) +- **IST-Zustand Assessment:** CE-Kennzeichnung, angewandte Normen, bestehende Prozesse, IACE-Projekt-Link +- **Norm→Control Mapping:** 20 Normen → MC-Topic Coverage +- **Prioritäts-Engine:** Severity × Deadline × Dependency +- **5 Branchentemplates:** IoT, Exchange, Cobot, SaaS, Medical +- **Frontend:** 2-Step Wizard (Produkt + IST-Zustand) + Dashboard mit Ampel-Status +- **API:** 8 Endpoints unter `/sdk/v1/gap/` +- **Persistente Projekte:** Speichern + wieder öffnen +- **Getestet:** SmartFactory Gateway → 5 Regulierungen, 500 Gaps -### Loesung: Regulation-Source Split +### Tenant Document Upload API (Core) +- `POST/GET/DELETE /api/v1/tenant/documents` +- Tenant-isolierte Qdrant-Collections +- Code fertig, nicht deployed (RAG Service rebuild nötig) -Statt nur nach Embedding-Aehnlichkeit zu clustern, nach **Regulation-Quelle** aufteilen: - -``` -MC "encryption" (1.790 Controls) - → encryption_dsgvo (DSGVO Art. 32, ~200) - → encryption_nis2 (NIS2 Art. 21, ~150) - → encryption_nist (NIST SC-13, ~300) - → encryption_bsi (BSI, ~200) - → encryption_owasp (OWASP, ~100) - → encryption_other (~840) -``` - -### Script-Ansatz - -```python -# Fuer jeden der 25 grossen MCs: -# 1. Hole alle member controls mit source_citation->>'source' -# 2. Gruppiere nach source (Regulation) -# 3. Erstelle Sub-MCs pro Regulation -# 4. Controls ohne source → "general" Sub-MC -``` - -### Qualitaetsanforderung (WICHTIG!) - -**Nur "sehr gut" ist akzeptabel.** Mittlere MCs (30-100 Controls) sind bereits excellent: -- MC-1082 (data_retention_policies, 52) → perfekt koharent -- MC-5477 (austausch_von_cybersicherheitsinformationen, 5) → perfekt - -Ziel: ALLE MCs sollen diese Qualitaet haben. Kein MC >100 Controls. +### Master Controls Browser (Compliance) +- **Neue Seite** `/sdk/master-controls` — reused Control Library UI +- Sidebar-Eintrag zwischen Control Library und Provenance +- 13.588 MCs mit allen Filtern, Paginierung, Klick-Detail +- Verbindet sich mit Production-DB --- -## SESSION 03-06.05.2026 KOMPLETT ERLEDIGT +## DB-Tabellen (neu/geändert) -### Block F (Hardcoded Knowledge → DB) -- F1: regulation_registry (223 Eintraege) ✅ -- F2: action_types (34) + action_synonyms (368) ✅ -- F3: object_synonyms (320) ✅ -- F4: LLM Enrichment (+468 Synonyme via Ollama) ✅ -- F5: Validation (8 Tests, Dicts als Fallback) ✅ - -### Control Generation Pipeline -- 1.599 Rich Controls aus E-Block Chunks (~$17 Anthropic) -- 11.522 Obligations (Pass 0a, ~$4) -- 1.147 Atomic Controls (Pass 0b, ~$4.60) -- **Gesamtkosten: ~$25.60** - -### Production Sync -- 2.625 Controls + 11.522 Obligations auf Production synchronisiert -- Production: 294.027 Controls total -- Backups: lokal + production auf MacBook - -### Block G-pre (Master Controls) -- G-pre1: 144k Objects → 7.753 Gruppen (K-Means k=5000 + Sub-Cluster + Refinement) -- G-pre2: 5.329 Master Controls, 172.504+ Members -- G-pre3: Master Control API (list, stats, detail) -- **Qualitaet:** Kleine/mittlere MCs excellent, 25 grosse MCs brauchen Regulation-Source Split - -### Block G (Compliance Execution Layer) -- G1: Decision Trace (decision_traces Tabelle + 6 API Endpoints) ✅ -- G2: Compliance Commit Ledger (compliance_commits + 5 Endpoints) ✅ -- G3: Full Decision Memory (decision_events + Timeline + 4 Endpoints) ✅ -- G4: Pre-Deployment Enforcement (deployment_checks + Override + 4 Endpoints) ✅ - -### Infrastruktur -- Vault CPU-Fix committed (Marker-File + idempotente Checks) -- Pass 0a Endpoint im Core Control-Pipeline registriert -- Gitea Timezone-Fix (docker-compose.yml) -- 61 neue regulation_ids in regulation_registry -- Container-Cleanup (fewo-finance-agent, mediaanalysisd) +| Tabelle | Repo | Rows (lokal) | Rows (Production) | +|---------|------|-------------|-------------------| +| compliance.master_controls | Core | 13.588 | 13.588 | +| compliance.master_control_members | Core | 83.073 | 83.073 | +| compliance.object_ontology | Core | 74 | 74 | +| compliance.object_groups | Core | 16.683 | — | +| compliance.doc_check_controls | Core | 1.874 | 1.874 | +| compliance.gap_projects | Compliance | 1 | 0 | --- -## DB-Tabellen (alle Bloecke) +## OFFEN / NÄCHSTE SESSION -| Tabelle | Rows | Migration | -|---------|------|-----------| -| compliance.regulation_registry | 223 | 002 | -| compliance.action_types | 34 | 003 | -| compliance.action_synonyms | 368 | 003 | -| compliance.object_synonyms | 320 | 003 | -| compliance.object_groups | 7.753 | 004 | -| compliance.master_controls | 5.329 | 005 | -| compliance.master_control_members | ~170k | 005 | -| compliance.decision_traces | 0 (Schema ready) | 006 | -| compliance.compliance_commits | 0 (Schema ready) | 007 | -| compliance.decision_events | 0 (Schema ready) | 008 | -| compliance.deployment_checks | 0 (Schema ready) | 009 | - ---- - -## API Endpoints (Core Control-Pipeline, Port 8098) - -### Bestehend -- `/v1/canonical/generate/*` — Control Generation Pipeline -- `/v1/canonical/generate/run-pass0a` — Pass 0a (NEU in dieser Session) -- `/v1/canonical/generate/submit-pass0b` — Pass 0b Batch API - -### Neu (diese Session) -- `/v1/master-controls` — G-pre3: Liste, Stats, Detail -- `/v1/decision-traces` — G1: CRUD + Stats -- `/v1/controls/{id}/full-trace` — G1: Volle Kette -- `/v1/compliance-commits` — G2: Commit Ledger -- `/v1/decision-events` — G3: Lifecycle Events + Timeline -- `/v1/deployment-checks` — G4: Pre-Deploy Gate + Override - -### API-Zugriff (WICHTIG) -```bash -# Nur via Docker exec (Port 8098 blockiert durch document-crawler) -ssh macmini "/usr/local/bin/docker exec bp-core-control-pipeline curl -sf http://127.0.0.1:8098/..." -``` +1. **Orca Deploy-Fix** — Production deployed nicht automatisch (Webhook + docker pull Problem) +2. **Gap-Analyse v2 IST-Zustand** — Frontend Step 2 deployed, Backend deployed, aber Orca blockiert +3. **Tenant Document Upload** deployen (RAG Service rebuild) +4. **Compliance-Repo auf gitea pushen** — aktuell "Everything up-to-date", Orca muss manuell redeployt werden +5. **MC-Browser erweitern** — Detail-View mit Member-Controls verbessern --- ## BACKUPS (auf MacBook) -| Datei | Inhalt | Groesse | -|-------|--------|---------| -| controls_backup_20260505.csv | 1.599 neue Controls | 7.2 MB | -| obligations_backup_20260505.csv | 11.522 Obligations | 6.2 MB | -| production_backup_20260505.dump | Production komprimiert | 30 MB | -| production_backup_20260505_plain.sql | Production plain | 1.3 GB | -| local_backup_20260506.dump | Lokale DB komprimiert | ~30 MB | -| production_backup_20260506.dump | Production komprimiert | ~30 MB | +| Datei | Inhalt | +|-------|--------| +| `backup_pre_gpre3_20260510.dump` | Vor gpre3 Live-Run (171 MB) | +| `backup_session_end_20260511.dump` | Session-Ende | +| `production_backup_20260508.dump` | Production nach Phase 2 | +| `gpre0_checkpoints_backup_20260508/` | 10 Corrections-JSONs | --- -## GESTOPPTE CONTAINER +## API-Kosten (Anthropic) -```bash -# Vault: Erst nach Fix-Deploy starten (Marker-File noetig) -ssh macmini "/usr/local/bin/docker start bp-core-vault" - -# OpenSearch: Bei Bedarf -ssh macmini "/usr/local/bin/docker start bp-lehrer-opensearch" - -# fewo-finance-agent: Fremder Container, nicht starten -``` +| Phase | Modell | Kosten | +|-------|--------|--------| +| Phase 0: Quality Audit | Sonnet | $2.92 | +| Phase 0b: Quality Audit v2 | Sonnet | $5.93 | +| Phase 2: 174K Re-Klassifizierung | Haiku | ~$50 | +| Phase 2b: Generic Token Fix | Haiku | $7.54 | +| Phase 2c: Subtopics R1 | Haiku | $20.22 | +| Phase 2c: Subtopics R2 | Haiku | $12.03 | +| Phase 2d: Bad Subtopics | Haiku | ~$0.50 | +| 5K Test-Run | Sonnet | $5.32 | +| doc_check_controls | Haiku | ~$5 | +| **Gesamt** | | **~$110** | --- -## TESTS +## STRATEGISCHE ENTSCHEIDUNGEN (in Memory) -```bash -# Pipeline (454 Tests) -PYTHONPATH=control-pipeline python3 -m pytest control-pipeline/tests/ -v -``` - ---- - -## OFFENE PUNKTE FUER ANDERE SESSIONS - -1. **Qdrant API-Key** fuer Production (qdrant-dev.breakpilot.ai) ist ungueltig (401). Muss in Coolify erneuert werden. -2. **DSI-Check False Positives**: Controls mischen interne Governance mit externen DSI-Anforderungen. Fix: nur Controls mit Art. 13/14 Referenz fuer DSI-Checks nutzen. -3. **Spotlight + mediaanalysisd** auf Mac Mini deaktivieren (braucht sudo): - ```bash - sudo mdutil -a -i off - sudo launchctl disable system/com.apple.mediaanalysisd - ``` -4. **Production DB Sync** fuer neue G-Block Tabellen (decision_traces, compliance_commits, decision_events, deployment_checks) noch ausstehend — Tabellen sind leer, Schema muss auf Production deployed werden. +1. **3 Use Cases:** Gap-Analyse (Prio 1), Vendor Risk (Prio 2), Web3/Crypto als Vertikal (Prio 3) +2. **Keine Norm-Reproduktion:** Obligation Extraction statt ISO-Texte (juristisch sicher) +3. **Regulatory Ingestion Engine:** BAuA/OSHA Crawler als Vorlage für automatisierte Source-Feeds +4. **CE-Compliance Crossover:** IACE × Master Controls für Trigger-basierte Compliance-Hinweise