KI-Safety-Review: Confirmation-Review-Lauf (2026-09-09)

# KI-Safety-Review: Confirmation-Review-Lauf (2026-09-09)

## Entscheidungen
- **Option B: komplett lokal** — kein Dokumentinhalt über Cloud-APIs. Scaffolding (Skripte/Prompts) ist content-frei; alles, was Dokumente liest, läuft über lokales Ollama.
- **Steuerung vom Laptop, GPU bleibt Workhorse:** Runs werden vom Laptop aus gefahren, Ollama-Server läuft auf dem Workhorse — **verifiziert: bindet auf 0.0.0.0:11434, OLLAMA_CONTEXT_LENGTH=16384**. Laptop-Endpoint: `http://192.168.1.187:11434`. LAN-intern, kein Cloud-Kontakt, kein VPN nötig.
- Modellbestand Workhorse (Stand 09.09., /api/tags): qwen3-coder:30b (18,6 GB, Referenz), qwen2.5-coder:14b (bester Review-Assistent), glm4:9b (dritte Meinung), qwen3-embedding (falls Coverage-/Duplikat-Checks wanted).
- **Kein git** in ai-safety-review (wie gehabt).

## Architektur
```
Laptop (Steuerung + Inhalte)          Workhorse (GPU-Server)
confirmation/                         Ollama 0.0.0.0:11434
├── templates/     (IA-Vorlage,       Modelle: qwen3-coder:30b,
│                   CR-Template)      qwen2.5-coder:14b, glm4:9b
├── checks/        (1 .md pro Guidance-Eintrag)
├── inbox/         (aktuelle IA)
├── prompts/       (content-frei)
├── scripts/       (content-frei; OLLAMA_BASE_URL env)
└── results/<lauf>/
```
- `run-checks.sh` nimmt `OLLAMA_BASE_URL` als env (Default `http://192.168.1.187:11434`) — kein localhost-Hardcoding wie im alten `run-review.sh`.
- Alles bleibt im LAN: Dokumente + Befunde verlassen Laptop/Workhorse nicht.

## Vereinfachtes Design
- **Guidance-Einträge des CR-Templates (= Checks) als einzelne .md-Dateien** — kein Template-Parsing.
- **IA passt komplett in den Kontext** (ctx 16384 ist ohnehin Ollama-Default auf dem Workhorse) → **kein Slicing**. Pro Lauf: komplette IA + **genau ein Kriterium** = Experiment-Hauptbefund-Muster („klein+fokussiert schlägt groß").

## Ablauf pro Check
1. Input: komplette IA (inbox/) + ein Check (checks/check-NN.md)
2. Prompt: criterion-review (erzwungenes Befund-Format: `###`, referenzierte IDs aus der IA, Confidence, keine fabrizierten IDs)
3. Output: results/<lauf>/<modell>/check-NN.md
4. Danach: check-ids.py (deterministisch: referenzierte IDs existieren, Rating-Vokabular, Vollständigkeit), score-confirmation.py (Abgleich) — läuft CPU-only, direkt auf dem Laptop

## Prompts
1. **criterion-review** (Kern): IA + 1 Check → Befunde zu genau diesem Kriterium, ID-für-ID, hartes Verbot erfundener IDs
2. **guidance-consistency**: prüft die (teils verwirrende) Guidance auf Selbstwiderspruch/Konflikt mit dem IA-Vorlagen-Schema — Template-Kritik ist legitimer Befund
3. **check-ids.py** (ohne LLM): deterministischer Verifizierer gegen Halluzination

## Reihenfolge (wichtig!)
1. **Jan füllt das CR-Template zuerst selbst aus** → Ground-Truth, keine Anchoring-Effekte
2. KI-Runs vom Laptop (checks × Modelle)
3. Abgleich → Fundtiefe-Spalte in die Score-Matrix (erste echte Ground-Truth-Daten des Experiments)
4. Zusammenfassung im Joplin + infra#2-Kommentar (nur Aggregate, keine Zitate)

## Datenschutz-Regel
Lokale Ollama-Modelle only (LAN). Die IA geht NICHT in die kw-37-API-Runde (OpenRouter) — zu recognisable. Anonymisierung greift dort nur für Corpus-Beispiele.

## Offen
- [ ] Erreichbarkeit vom Laptop testen: `curl http://192.168.1.187:11434/api/tags`
- [ ] Dokumentformat der IA (md/xlsx/docx?) → ggf. Konvertierungsschritt vor inbox/
- [ ] Guidance-Einträge als checks/*.md extrahieren (manuell oder lokaler Helper-Prompt)
- [ ] Scaffold auf dem Laptop bauen (content-frei): Prompts + run-checks.sh + check-ids.py + cleanup.sh
- [ ] ggf. GPU-Kollisionscheck auf Workhorse (ComfyUI/holdem), falls 30b-Läufe haken

id: b7c4be3dd2a24f59a74052edad2814d7
parent_id: 86f1e0f3538341dfaa58cc3357e03343
created_time: 2026-09-09T09:25:29.835Z
updated_time: 2026-09-09T09:30:07.475Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: 
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1788945929835
user_created_time: 2026-09-09T09:25:29.835Z
user_updated_time: 2026-09-09T09:30:07.475Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
is_locked: 0
extracted_resource_ids: 
type_: 1