# Multi-Site-Audit-Test mit Audit-Walk + GT-Vergleich (Stand 2026-06-07)

## TL;DR

Engine-Run gegen 3 Real-World-Sites (Elli, Westfield Hamburg, Allianz-
Reise-Chatbot) mit GT-Vergleich. Plus #7 (Playwright-Audit-Walk in
3 Stufen) komplett deployt: Video-Recording, Akkordeon-Expansion,
DSMS-CID-Anchor.

**Test-Status:** 21/21 grün (Sprint-Tests B9/B13/B14/B15/B16 +
B17 + Elli-GT-Coverage).

**B17 Audit-Walk live:** Video + walk.json werden für jede Site zu
DSMS-IPFS hochgeladen — Reviewer können das Walk-Video Monate später
verifizieren (CID = manipulationssicherer Anker).

## #7 Audit-Walk (3 Stufen, alle deployt)

| Stufe | Inhalt | Commit |
|-------|--------|--------|
| 1 | Video-Recording + Footer-Walk | `cb4b352` |
| 2 | Akkordeon-Expansion (5 Elli-Akkordeons) | `80c4778` |
| 3 | DSMS-CID-Anchor (manipulationssicher) | `c7d2038` |

## Site-Engine-Runs

### 1. Elli (`elli.eco`) — GT vom 2026-06-06

Vorheriger Sprint (s. `2026-06-06-elli-gt-coverage-sprint.md`).
**Befund:** 12/13 GT-Lücken erkannt. UX-001 (Mobile-Reachability) ist
durch B1 Mobile-Playwright gelöst — Detection läuft real-world.

### 2. Westfield Hamburg-Überseequartier

| Detektor | Real-World | Erwartet (GT) |
|----------|-----------|---------------|
| B9 Multi-Entity | 0 Findings (Site hat nur 1 Entity — mfi GmbH) | korrekt |
| B13 Widerruf | 1 Finding (b2c_likely, MED) — Shopping-Center erkannt | korrekt |
| B14 Retention | 0 (keine Doppel-Werte) | TH-RETENTION expected, aber Text hat nur 1 Wert |
| B15 AI-Legal-Basis | 0 (iAdvize ist auf separater URL, nicht im DSE-Hauptdoc) | erwartet (real-world) |
| B16 URL-Slug-Drift | 2 Findings — impressum + dse Standard-Slugs 404 | korrekt |

**Audit-Walk:** 400 KB Video, 3 Footer-Links besucht, 0 Akkordeons
(Westfield nutzt keine `<details>` / `[aria-expanded]`).
DSMS-CID: `QmWJYfYDtBPaVxx4EwHMq6tdisjfiZUBS3aaQkoF7evmh1`.

### 3. Allianz-Reise-Chatbot (`allianz-reiseversicherung.de`)

| Detektor | Real-World | Erwartet (GT) |
|----------|-----------|---------------|
| B9 Multi-Entity | 0 Findings (Single Entity: AWP P&C S.A.) | korrekt |
| B13 Widerruf | 0 (B2C-Scope nicht erkannt — chatbot-Subpage hat keine Shop-Hints) | False-Negative bei subtle B2C |
| B14 Retention | 0 (eindeutiger 2-Mo-Wert) | korrekt |
| B15 AI-Legal-Basis | 0 (Twilio ist Chat-Infrastruktur, NICHT LLM-Vendor in KB) | korrekt — Twilio nicht in LLM-Liste |
| B16 URL-Slug-Drift | 3 Findings (impressum/dse/cookie alle 404) | korrekt |

**Audit-Walk:** 1 MB Video, 2 Footer-Links besucht, 0 Akkordeons.
DSMS-CID: `QmXFuiC4z7UHoqPpHjEeVBEonBL1baVLC1uHq8GaK9mSMM`.

## Real-World-Bugs gefunden

### B9 False-Positives bei englischen DSE-Texten

Westfield's englische Impressum hat zu vielen "X GmbH"-Erwähnungen
geführt — der Pattern matched "If mfi Immobilien Marketing GmbH",
"Discover our se", "Centre Se" usw. als angebliche Entitäten.

**Fixes (in diesem Sprint):**
- `_name_is_blocked()` strengt: min 2 Worte, mindestens eins ≥4 Chars
  und großgeschrieben (vor Legal-Form-Suffix).
- `_dedup_substring()` collapses "mfi Immobilien Marketing GmbH" und
  "Marketing GmbH" zur längeren Form.
- Cleaner: führende Lowercase-Connector-Worte ("If ", "by ",
  "according to ") werden gestrippt.

Ergebnis: Westfield-Impressum gibt jetzt 0 Findings (korrekt — single
echte Entity).

### B13 False-Negative bei subtle B2C

Allianz-Reise-Chatbot-Sub-Page hat keine Shop-Hints (Warenkorb etc.)
— B13's B2C-Scope-Detection greift nicht. **Tuning-Backlog**:
weiche Hints wie "Reiseversicherung", "Tarif", "abschließen" als
B2C-Marker ergänzen.

### B15 nicht-buggy aber GT-veraltet

Westfield's iAdvize-Disclosure ist auf separater `/germany/
privacypolicychatbot` — wir laden nur die per-Site-DSE. **Backlog**:
Discovery erweitern, separate Chatbot-Policies als zusätzliche
DSE-Quelle einbinden.

## Test-Bilanz

```
test_widerrufsbelehrung_reachability_check.py    13/13
test_impressum_multi_entity_check.py             14/14  (+3 für Fix)
test_retention_conflict_check.py                 11/11
test_ai_legal_basis_check.py                     17/17
test_url_slug_drift_check.py                     13/13
test_b17_audit_walk.py                           12/12
test_elli_gt_coverage.py                          7/7
                                                 ─────
Sprint-Tests gesamt                              87/87
```

## DSMS-Audit-Anchor

Jeder Audit-Walk wird zu IPFS hochgeladen + die CID dient als
manipulationssicherer Beweis:

```
Elli:        (alter Walk, vor Stufe 3)
Westfield:   QmWJYfYDtBPaVxx4EwHMq6tdisjfiZUBS3aaQkoF7evmh1
Allianz:     QmXFuiC4z7UHoqPpHjEeVBEonBL1baVLC1uHq8GaK9mSMM
```

Reviewer kann via `https://dsms-dev.breakpilot.ai/ipfs/{cid}` das
Video Monate später noch holen und SHA-256 vom Walk-JSON gegen den
in der Audit-Mail genannten Hash prüfen.

## Backlog (sortiert nach Wert)

1. **B13 B2C-Soft-Hints**: "Tarif buchen", "Bestellprozess",
   "Reiseversicherung abschließen" als weiche Marker. Hebt
   False-Negative bei Allianz-Reise.
2. **Separate-Doc-Discovery**: spezielle Chatbot-/AI-DSEs als
   sekundäre DSE-Quelle einbinden (Westfield-iAdvize-Lücke).
3. **API-Schema-Erweiterung**: `extra_findings` + `audit_walk` ins
   ComplianceCheck-Response-Payload aufnehmen. Aktuell nur in der
   Audit-Mail HTML, nicht in der polling-API sichtbar.
4. **Plausibility-LLM Empty-Response** (non-blocking).
5. **#18 Specialist-Agents Phase 2 (LLM)**.

## URLs

- Admin: https://admin-dev.breakpilot.ai
- Audit-Walks (intern, via consent-tester): `http://bp-compliance-consent-tester:8094/audit-walks/{walk_id}/video.webm`
- DSMS-Gateway public: `https://dsms-dev.breakpilot.ai/ipfs/{cid}`
- GT-Files: `zeroclaw/docs/ground-truth/`
