# Loop 4: Datenqualitäts- und Vergleichsklassifikation

> **Nachträglich erstellt am 2026-08-12** aus Merge-Commits, PR-Beschreibungen
> und `program-status.md`. Nicht rekonstruierbare Felder sind als solche
> markiert.

## Metadaten

- Datum: 2026-08-08 (D15–D17, R-03) · 2026-08-10 (Abschluss)
- PRs und Merge-Commits: #461 `8d9a04b` (D15/D16/D17) · #462 `c17e2ac` (R-03) · #463 `eb5fc3c` (Evidenzliste bilingual, Kais-Befund 10.08.) · #465 `b7bc974` (Abschluss: abgeleitete Vergleichbarkeits-Ampel + Reviewstatus)
- Agent: Aria
- Requirements: CLS-003, DIF-005, DQ-015, DQ-016, DQ-017, FOR-002, DOC-001, TST-002

## Scope

PO-Linie vom 08.08. (TG 9970/9971): **weiche Befunde statt harter Gates —
Mensch entscheidet, System liefert Evidenz.** D15 melden-nie-blockieren, D16
„flexibel, Befund", D17 Make-or-Buy-Indiz statt Entscheidung, R-03
deklarierbar + Evidenz, `undetermined` zulässig. Das System rät nie.

## Implementierung

- **D16** (`identity_mismatch`): `compareQafPair` vergleicht Identitätsfelder
  (partNumber/supplier/requestVersion/changeIndex) alt↔neu; je Abweichung ein
  PlausibilityIssue mit beiden Werten als Evidenz; Paarung läuft weiter.
- **D15** (`filename_mismatch`): Dateiname enthält Inhalt-Sachnummer nicht —
  niedrigschwelliger Befund, konservativ gegen Falsch-Positive.
- **D17** (`make_or_buy_indication`): Anteils-Verschiebung
  Material-/Fertigungskosten an totalProductionCosts über Named-Config-Schwelle
  → „Fertigungstiefen-Indiz — Analyse erforderlich".
- **R-03**: `comparison_mode`-Deklaration (Typ-Liste + `undetermined`),
  Server-Action, V2-Header zeigt Deklaration + Evidenzliste.
- **Abschluss (#465)**: Kopf-Ampel wird aus persistierten Identitäts-Befunden
  **abgeleitet** (`deriveComparability`, jede Stufe mit Begründung) statt hart
  „ungeprüft"; „Einordnung ausstehend"-Reviewstatus sichtbar.

## Tests und Gates

D15/D16/D17: Modultests + je eine Mutations-Probe (PR #461).
Ampel-Ableitung: Positiv-, Negativ- und Gegenprobe im Test, Mutations-Probe im
PR dokumentiert (#465). Gates je PR grün (Suite, typecheck, build,
portability).

## Exit-Kriterien

| Kriterium | Status | Evidenz |
|---|---|---|
| kein produktiver Vergleich ohne begründeten Vergleichstyp | erfüllt | R-03-Deklaration + Evidenzliste; nie deklariert = sichtbar „Vergleichsart nicht bestimmt" |
| unbestimmte Einordnung hat sichtbaren Reviewstatus | erfüllt | „Einordnung ausstehend"-Status; abgeleitete Ampel mit Begründung je Stufe |
| neue Regeln mit Positiv-, Negativ-, Mutations- und Gegenproben | erfüllt | #461/#465 (siehe oben) |

## Bekannte Grenzen

- D15-Frequenz am lebenden Objekt beurteilen: PO-seitig offen.
- Migration #120 operator-applied ausstehend; die Seite degradiert bis dahin
  ehrlich (benannter Zustand statt Fehlverhalten).
- RTM-Abweichung dokumentiert: die Baseline-Matrix führte DQ-015/016/017 und
  CLS-003 als „Fehlt" — umgesetzt 08.08., Baseline konventionsgemäß nicht
  umgeschrieben.

## Verifier-Entscheidung

Review je PR vor Merge (inkl. Kais-Live-Befund 10.08. → #463). Separates
Verifier-Dokument: nicht rekonstruierbar.

## Nächster Loop

Loop 5 Teil 1 (#467) am 10.08.
