# M7 - Arbeitspakete

## Geltungsbereich

Dieses Dokument beschreibt ausschließlich die Arbeitspakete für den definierten Meilenstein **M7 – Fehlerbehandlung, Retry-Logik, Logging und betriebliche Robustheit**.

Die Meilensteine **M1**, **M2**, **M3**, **M4**, **M5** und **M6** werden als vollständig umgesetzt vorausgesetzt.

Die Arbeitspakete sind bewusst so geschnitten, dass:

- **KI 1** daraus je Arbeitspaket einen klaren Einzel-Prompt ableiten kann,
- **KI 2** genau dieses eine Arbeitspaket in **einem Durchgang** vollständig umsetzen kann,
- nach **jedem** Arbeitspaket wieder ein **fehlerfreier, buildbarer Stand** vorliegt.

Die Reihenfolge der Arbeitspakete ist verbindlich.

## Zusätzliche Schnittregeln für die KI-Bearbeitung

- Pro Arbeitspaket nur die **minimal notwendigen Querschnitte** durch Domain, Application, Adapter und Bootstrap ändern.
- Keine Annahmen treffen, die nicht durch dieses Dokument oder die verbindlichen Spezifikationen gedeckt sind.
- Kein Vorgriff auf **M8+**.
- Kein Umbau bestehender M1–M6-Strukturen ohne direkten M7-Bezug.
- Neue Typen, Entscheidungsregeln, Konfigurationswerte, Repository-Erweiterungen und Adapter so schneiden, dass sie aus einem einzelnen Arbeitspaket heraus **klar benennbar, testbar und reviewbar** sind.
- M7 schärft und vervollständigt die bereits vorhandene Fehler- und Statussemantik aus M3–M6, erfindet sie aber nicht stillschweigend neu.
- M7 muss vorhandene M4–M6-Datenbestände **weiterhin lesen und korrekt fortschreiben** können.
- Jeder positive M7-Zwischenstand muss bereits einen **robusten, wiederholt ausführbaren Task-Scheduler-Lauf** liefern, auch wenn der Retry-, Logging- und Exit-Code-Endstand erst mit späteren Arbeitspaketen vollständig erreicht wird.
- Ein Arbeitspaket darf nur dann auf Repository- oder Persistenzfähigkeiten aufbauen, wenn diese entweder bereits aus M1–M6 vorhanden sind oder im unmittelbar vorhergehenden Arbeitspaket explizit hergestellt wurden.

## Explizit nicht Bestandteil von M7

- neue KI-Funktionalität oder Prompt-Evolution jenseits der robusten Weiterverwendung des M5-Stands
- neue fachliche Benennungsregeln über M5/M6 hinaus
- neue Dateisystem-Funktionalität jenseits des M6-Zielkopiepfads und des in M7 konkret geforderten technischen Sofort-Wiederholversuchs
- Reporting-, Statistik- oder Monitoring-Funktionen
- Web-UI, REST-API oder Benutzerinteraktion
- OCR, Inhaltsänderung von PDFs oder manuelle Nachbearbeitung
- abschließender Gesamt-Feinschliff, großflächige Refactorings oder generelle Qualitätskampagnen aus **M8**

## Verbindliche M7-Regeln für **alle** Arbeitspakete

### 1. M7 schließt die Betriebslücke zwischen M6 und dem finalen Zielbild

M6 liefert den vollständigen Erfolgspfad, aber noch nicht die vollständige betriebliche Robustheit des Endstands. Ab M7 gilt daher verbindlich:

- `SUCCESS` bleibt der echte terminale Enderfolg.
- `FAILED_FINAL` bleibt der terminale Endfehler.
- `FAILED_RETRYABLE` darf nur solange bestehen bleiben, wie **mindestens ein weiterer Scheduler-Lauf fachlich zulässig** ist.
- `SKIPPED_ALREADY_PROCESSED` und `SKIPPED_FINAL_FAILURE` bleiben reine historisierte Skip-Ergebnisse und verändern selbst keine Fehlerzähler.
- Dokumentbezogene Fehler dürfen den Gesamtbatch nicht unnötig abbrechen.

### 2. Vollständige Retry-Regel für deterministische Inhaltsfehler

Ab M7 gilt die vollständige fachliche Regel über spätere Läufe hinweg:

- deterministische Inhaltsfehler erhalten **genau einen** späteren Wiederholungsversuch,
- der **erste** historisierte deterministische Inhaltsfehler eines Fingerprints führt zu `FAILED_RETRYABLE`,
- der **zweite** historisierte deterministische Inhaltsfehler desselben Fingerprints führt zu `FAILED_FINAL`.

Für M7 sind mindestens alle bereits aus M3–M6 konkret erzeugbaren deterministischen Inhaltsfehler in diesen Regelrahmen einzuordnen, insbesondere:

- kein brauchbarer Text,
- Seitenlimit überschritten,
- fachlich unbrauchbarer oder generischer Titel,
- vorhandenes, aber unbrauchbares KI-Datum.

Bereits vorhandene oder künftig im bestehenden Fachmodell erzeugte Mehrdeutigkeitsfälle laufen in denselben deterministischen Inhaltsfehler-Rahmen und erzeugen **kein** unsicheres Ergebnis.

### 3. Vollständige Retry-Regel für transiente technische Fehler

Ab M7 gilt für dokumentbezogene technische Fehler nach erfolgreicher Fingerprint-Ermittlung:

- sie laufen über den **Transientfehlerzähler**,
- sie bleiben nur bis zum konfigurierten Grenzwert retryable,
- nach Ausschöpfen der zulässigen transienten Fehlversuche wird der Dokumentstatus `FAILED_FINAL`.

Für die M7-Implementierung ist `max.retries.transient` verbindlich als **maximal zulässige Anzahl historisierter transienter Fehlversuche pro Fingerprint** zu interpretieren. Der Fehlversuch, der diesen Grenzwert erreicht, finalisiert den Dokumentstatus.

Zusätzlich gilt:

- `max.retries.transient` ist ein **ganzzahliger Wert >= 1**.
- Der Wert `0` ist **ungültige Startkonfiguration**.
- Beispiel: `1` bedeutet, dass bereits der **erste** historisierte transiente Fehlversuch finalisiert.
- Beispiel: `2` bedeutet, dass der **erste** historisierte transiente Fehlversuch retryable bleibt und der **zweite** finalisiert.

### 4. Technischer Sofort-Wiederholversuch ist strikt auf den Zielkopierpfad begrenzt

Der in der Zielarchitektur vorgesehene technische Sofort-Wiederholversuch wird in M7 exakt wie folgt umgesetzt:

- **genau ein** zusätzlicher technischer Schreibversuch innerhalb desselben Dokumentlaufs,
- ausschließlich für Fehler beim physischen Zielkopierpfad aus M6,
- **kein** erneuter KI-Aufruf,
- **keine** erneute fachliche Titel-/Datumsableitung,
- **keine** Ausweitung auf Prompt-Laden, KI-HTTP, SQLite oder sonstige Adapter.

Der Sofort-Wiederholversuch ist ein technischer Mechanismus innerhalb desselben Laufs und **kein** zusätzlicher fachlicher Retry-Lauf im Sinne der laufübergreifenden Retry-Regeln.

### 5. Skip-Semantik des Endstands

Ab M7 gilt vollständig:

- `SUCCESS` wird in späteren Läufen **nicht erneut verarbeitet**, sondern mit `SKIPPED_ALREADY_PROCESSED` historisiert.
- `FAILED_FINAL` wird in späteren Läufen **nicht erneut verarbeitet**, sondern mit `SKIPPED_FINAL_FAILURE` historisiert.
- `FAILED_RETRYABLE`, `READY_FOR_AI` und `PROPOSAL_READY` bleiben verarbeitbar, soweit der jeweilige Dokumentzustand dies fachlich zulässt.
- Ein nach M6 noch offenes `PROPOSAL_READY` darf in M7 weiterhin sauber bis zum echten Enderfolg finalisiert werden.

### 6. Logging-Mindestumfang des Endstands

Das Logging muss ab M7 mindestens folgende Informationen nachvollziehbar liefern:

- Laufstart,
- Laufende,
- Lauf-ID,
- erkannte Quelldatei,
- Überspringen bereits erfolgreicher Dateien,
- Überspringen final fehlgeschlagener Dateien,
- erzeugter Zielname,
- Retry-Entscheidung,
- Fehler mit Klassifikation.

Die Logs müssen so geschnitten werden, dass dokumentbezogene Entscheidungen pro Fingerprint bzw. Kandidat nachvollziehbar bleiben, ohne zusätzliche Infrastrukturtypen in Domain oder Application zu ziehen.

Zusätzlich gilt für die Korrelation:

- sobald ein Fingerprint erfolgreich bestimmt wurde, müssen dokumentbezogene Logeinträge diesen Fingerprint oder eine daraus eindeutig ableitbare Referenz enthalten,
- solange noch kein Fingerprint vorliegt, erfolgt die Korrelation mindestens über Lauf-ID und erkannte Quelldatei bzw. Kandidatenbezug,
- M7 führt hierfür **keine** neue Persistenz-Wahrheit und **keine** zusätzliche Tracking-Ebene ein.

### 7. Sensibilitätsregel für KI-Inhalte im Logging

Ab M7 gilt verbindlich:

- die vollständige KI-Rohantwort bleibt in **SQLite** speicherbar,
- die vollständige KI-Rohantwort wird **standardmäßig nicht** ins Log geschrieben,
- `reasoning` wird ebenfalls **standardmäßig nicht** vollständig ins Log geschrieben,
- die Ausgabe sensibler KI-Inhalte ist nur über eine **explizite Konfiguration** zulässig,
- M7 führt hierfür einen klar dokumentierten, booleschen Konfigurationswert ein,
- der Default muss auf **sicher/nicht loggen** stehen.

Als sensible KI-Inhalte gelten in M7 mindestens:

- vollständige KI-Rohantwort,
- vollständiges KI-`reasoning`.

### 8. Exit-Code-Endsemantik

Ab M7 ist das Exit-Code-Verhalten final:

- `0`, wenn der Lauf technisch ordnungsgemäß durchgeführt wurde, auch wenn einzelne Dokumente fachlich oder transient fehlgeschlagen sind,
- `1` nur bei harten Start-, Bootstrap-, Verdrahtungs-, Konfigurations- oder Initialisierungsfehlern.

Dokumentbezogene Fehler dürfen **nicht** als harte Startfehler fehlmodelliert werden.

### 9. Konfigurationsvalidierung des Endstands

M7 vervollständigt die Startvalidierung insbesondere für:

- `max.retries.transient`,
- M7-relevante Logging-Konfiguration,
- bestehende M1–M6-Startparameter, soweit sie für einen robusten Batch-Lauf weiterhin zwingend sind.

Ungültige M7-Startkonfiguration verhindert den Laufbeginn und führt zu **Exit-Code 1**.

### 10. Keine zweite Wahrheitsquelle für Fehler- und Retry-Entscheidungen

M7 nutzt weiterhin die bestehende Kombination aus:

- Dokument-Stammsatz für Gesamtstatus und Zähler,
- Versuchshistorie für einzelne Versuchsdaten und Nachvollziehbarkeit.

M7 führt **keine** parallele, dritte Wahrheitsquelle für Retry-Zustände, Logging-Entscheidungen oder Fehlerhistorien ein.

---

## AP-001 M7-Kernobjekte, vollständige Fehlersemantik und Retry-/Logging-Verträge präzisieren

### Voraussetzung
Keine. Dieses Arbeitspaket ist der M7-Startpunkt.

### Ziel
Die M7-relevanten Typen, vollständigen Fehler- und Retry-Bedeutungen, Logging-bezogenen Entscheidungsobjekte und technischen Grenzen werden eindeutig eingeführt, damit spätere Arbeitspakete ohne Interpretationsspielraum implementiert werden können.

### Muss umgesetzt werden
- Neue M7-relevante Kernobjekte bzw. Application-nahe Typen anlegen, insbesondere für:
  - vollständige Retry-Entscheidung,
  - Ausschöpfungszustand eines Retry-Rahmens,
  - technische Sofort-Wiederholungsentscheidung für den Zielkopierpfad,
  - dokumentbezogene Fehlerklassifikation des Endstands,
  - Logging-Ereignis bzw. Logging-relevante Dokumententscheidung,
  - Sensitivitätsentscheidung für KI-Inhalte im Logging.
- Die bestehende Status- und Fehlersemantik in JavaDoc und ggf. `package-info` so schärfen, dass klar ist:
  - wann `FAILED_RETRYABLE` noch zulässig ist,
  - wann ein Dokumentstatus wegen ausgeschöpfter Retry-Regeln in `FAILED_FINAL` übergeht,
  - dass der technische Sofort-Wiederholversuch **nicht** zum laufübergreifenden Retry-Zähler gehört,
  - dass dokumentbezogene Fehler den Gesamtbatch nicht zu Exit-Code 1 eskalieren.
- Application-seitige Verträge definieren oder gezielt erweitern für:
  - Ableitung der Retry-Entscheidung aus Status, Fehlerart, Zählern und Konfiguration,
  - Ableitung einer protokollierbaren Dokumententscheidung,
  - Ableitung der Zielkopier-Sofort-Wiederholung,
  - Auflösung der Sensitivitätsregel für KI-Logausgaben,
  - Korrelation dokumentbezogener Logging-Ereignisse ohne Infrastrukturtypen im Kern.
- Port-Verträge so schneiden, dass weder Log4j2-, NIO-, JDBC- noch HTTP-Typen in Domain oder Application durchsickern.
- Rückgabemodelle so anlegen, dass spätere Arbeitspakete ohne Zusatzannahmen unterscheiden können zwischen:
  - retryablem Inhaltsfehler,
  - finalem Inhaltsfehler,
  - retryablem technischem Fehler,
  - finalisiertem technischem Fehler nach ausgeschöpftem Transient-Rahmen,
  - technischem Zielschreibfehler mit zulässigem Sofort-Wiederholversuch,
  - dokumentbezogener Entscheidung mit M7-logbarem Ergebnis.
- Explizit dokumentieren, dass M7 keine neue Persistenz-Wahrheit für Retry-Entscheidungen einführt.
- Explizit dokumentieren, dass `max.retries.transient` als historisierter Fehlversuchs-Grenzwert interpretiert wird und als gültiger Konfigurationswert nur **Integer >= 1** zulässig ist.
- Explizit dokumentieren, dass sensible KI-Logausgaben in M7 mindestens vollständige KI-Rohantwort und vollständiges KI-`reasoning` umfassen.

### Explizit nicht Teil
- konkrete Retry-Implementierung im Batch-Lauf
- konkrete Log4j2-Konfiguration
- konkrete Zielkopier-Wiederholung
- Bootstrap-Anpassungen
- Tests des Endstands

### Fertig wenn
- die M7-relevanten Typen und Verträge vorhanden sind,
- Retry-, Finalisierungs-, Sensitivitäts- und Logging-Korrelationssemantik eindeutig dokumentiert ist,
- Domain und Application frei von Infrastrukturtypen bleiben,
- der Build weiterhin fehlerfrei ist.

---

## AP-002 Vollständige Retry-Entscheidungslogik für deterministische Inhaltsfehler und transiente technische Fehler implementieren

### Voraussetzung
AP-001 ist abgeschlossen.

### Ziel
Die fachlich vollständige laufübergreifende Retry-Entscheidung des Endstands ist als klarer, testbarer Baustein im Kern implementiert und kann von Batch-Lauf, Logging und Persistenz konsistent verwendet werden.

### Muss umgesetzt werden
- Einen zentralen M7-Baustein implementieren, der aus vorhandener Fehlerart, bestehendem Dokumentstatus, Fehlerzählern und Konfiguration die verbindliche Retry-Entscheidung ableitet.
- Die vollständige deterministische Inhaltsfehlerregel explizit umsetzen:
  - erster historisierter deterministischer Inhaltsfehler → `FAILED_RETRYABLE`,
  - zweiter historisierter deterministischer Inhaltsfehler → `FAILED_FINAL`.
- Die vollständige transiente Fehlerregel explizit umsetzen:
  - dokumentbezogene technische Fehler bleiben nur bis `max.retries.transient` retryable,
  - der Fehlversuch, der den Grenzwert erreicht, finalisiert den Status zu `FAILED_FINAL`.
- Die Randfälle der Grenzwertinterpretation explizit abdecken, insbesondere:
  - `max.retries.transient = 1`,
  - Skip-Fälle ohne Zähleränderung,
  - bereits bestehende M4–M6-Datenbestände mit historischen Fehlerzählern.
- Die Entscheidungslogik so schneiden, dass sie konsistent für bereits bestehende M4–M6-Datenbestände nutzbar bleibt und keine Sonderbehandlung außerhalb des zentralen Regelwerks erzwingt.
- Explizit sicherstellen, dass Skip-Fälle keine Fehlerzähler verändern.
- Explizit sicherstellen, dass der technische Sofort-Wiederholversuch **nicht** in diese laufübergreifende Retry-Entscheidung einfließt.
- JavaDoc für Regelherkunft, Zählerbedeutung, Grenzwertinterpretation und Nicht-Ziele von M7 ergänzen.

### Explizit nicht Teil
- Batch-Use-Case-Integration
- Persistenzfortschreibung im konkreten Dokumentlauf
- Zielkopier-Wiederholung
- Logging-Konfiguration
- Exit-Code-Logik

### Fertig wenn
- die Retry-Entscheidung zentral und testbar implementiert ist,
- deterministische und transiente Fehler vollständig und widerspruchsfrei abgedeckt sind,
- bestehende M4–M6-Zähler- und Statusdaten ohne Sonderlogik anschlussfähig bleiben,
- der Stand fehlerfrei buildbar bleibt.

---

## AP-003 Technischen Sofort-Wiederholversuch für den Zielkopierpfad aus M6 implementieren

### Voraussetzung
AP-001 und AP-002 sind abgeschlossen.

### Ziel
Der in der Zielarchitektur vorgesehene einmalige technische Sofort-Wiederholversuch für Zielkopierfehler wird sauber umgesetzt, ohne KI, Persistenzlogik oder laufübergreifende Retry-Semantik zu vermischen.

### Muss umgesetzt werden
- Den bestehenden M6-Zielkopierpfad so erweitern, dass bei einem technischen Schreibfehler **genau ein** zusätzlicher technischer Sofort-Wiederholversuch innerhalb desselben Dokumentlaufs möglich ist.
- Sicherstellen, dass der Sofort-Wiederholversuch ausschließlich für den physischen Zielkopierpfad gilt, insbesondere für:
  - temporäre Zieldatei nicht anlegbar,
  - Kopieren scheitert,
  - finaler Move/Rename scheitert,
  - technisches Cleanup nach erstem Schreibfehler nur teilweise erfolgreich.
- Sicherstellen, dass dabei **kein** erneuter KI-Aufruf, **keine** erneute fachliche Proposal-Ableitung und **keine** neue Statusneubewertung außerhalb des M7-Regelrahmens stattfindet.
- Den Mechanismus so schneiden, dass der zweite technische Versuch mit demselben fachlichen Dokumentkontext läuft und der Batch-Lauf danach genau **ein** dokumentbezogenes Ergebnis für Persistenz und Statusfortschreibung ableiten kann.
- Technische Aufräumarbeiten zwischen erstem und zweitem Versuch kontrolliert kapseln.
- JavaDoc für Reichweite, Grenzen und Abgrenzung zu laufübergreifenden Retries ergänzen.

### Explizit nicht Teil
- endgültige Status- und Zählerfortschreibung im Batch-Lauf
- Logging-Endstand
- Bootstrap-Anpassungen
- Erweiterung auf andere Fehlerarten als Zielkopierschreibfehler

### Fertig wenn
- genau ein technischer Sofort-Wiederholversuch für Zielkopierfehler möglich ist,
- kein KI- oder Fachpfad unzulässig erneut ausgelöst wird,
- das Ergebnis kontrolliert an den späteren Batch-/Persistenzpfad übergeben werden kann,
- der Stand fehlerfrei buildbar bleibt.

---

## AP-004 Logging-Infrastruktur, Korrelation und Sensibilitätsregel für M7 vorbereiten

### Voraussetzung
AP-001 ist abgeschlossen.

### Ziel
Die Logging-Infrastruktur ist für den M7-Endstand vorbereitet, die Sensibilitätsregel für KI-Inhalte ist technisch korrekt verdrahtet und dokumentbezogene Ereignisse können später im Batch-Lauf konsistent und eindeutig korreliert geloggt werden.

### Muss umgesetzt werden
- Die bestehende Logging-Infrastruktur gezielt so erweitern, dass der in M7 geforderte Mindestumfang später ohne zusätzliche Architekturbrüche angebunden werden kann.
- Einen klar dokumentierten, booleschen Konfigurationswert für sensible KI-Logausgaben einführen und verdrahten.
- Sicherstellen, dass die vollständige KI-Rohantwort standardmäßig **nicht** geloggt wird.
- Sicherstellen, dass vollständiges KI-`reasoning` standardmäßig **nicht** vollständig geloggt wird.
- Sicherstellen, dass die vollständige KI-Rohantwort und das vollständige KI-`reasoning` weiterhin in SQLite verbleiben können und M7 hier keine Reduktion oder Löschung der Nachvollziehbarkeit einführt.
- Einen M7-tauglichen Mechanismus für dokumentbezogene Log-Korrelation vorbereiten, insbesondere:
  - Lauf-ID-basierte Korrelation vor erfolgreicher Fingerprint-Ermittlung,
  - Fingerprint- oder eindeutig ableitbare Dokumentreferenz nach erfolgreicher Fingerprint-Ermittlung.
- Die logbaren Ereignis- und Entscheidungsmodelle aus AP-001 an die Logging-Infrastruktur anbinden, ohne dass fachliche Entscheidungslogik in technische Logger-Aufrufe zerfällt.
- Bereits auf dieser Stufe die nicht dokumentgebundenen Pflicht-Logpunkte sauber verdrahten, insbesondere:
  - Laufstart,
  - Laufende,
  - harte Startfehler, soweit auf aktuellem Stand erreichbar.
- JavaDoc und ggf. `package-info` für Logging-Sensibilität, Korrelation, Mindestumfangsvorbereitung und Architekturgrenzen ergänzen.

### Explizit nicht Teil
- vollständige Batch-Integration aller dokumentbezogenen M7-Logpunkte
- Finalisierung der Retry- und Skip-Hooks im Dokumentlauf
- Startvalidierung des Endstands
- finale Exit-Code-Verdrahtung
- Tests des gesamten Endstands

### Fertig wenn
- die Logging-Infrastruktur den M7-Endstand ohne Zusatzannahmen tragen kann,
- die Sensibilitätsregel standardmäßig auf „nicht loggen" steht,
- sensible KI-Inhalte nur über explizite Konfiguration logbar sind,
- dokumentbezogene Log-Korrelation technisch vorbereitet ist,
- der Stand fehlerfrei buildbar bleibt.

---

## AP-005 Repository-, Persistenz- und Nachvollziehbarkeitsanpassungen für den M7-Endstand ergänzen

### Voraussetzung
AP-001, AP-002 und AP-004 sind abgeschlossen.

### Ziel
Die bestehende Persistenz aus M4–M6 unterstützt die vollständige M7-Fehler-, Retry-, Skip- und Logging-Nachvollziehbarkeit ohne neue Wahrheitsquelle und ohne unnötige Schema-Neuerfindung.

### Muss umgesetzt werden
- Prüfen und gezielt ergänzen, welche Repository-Fähigkeiten für den M7-Endstand tatsächlich fehlen, ohne das bestehende Zwei-Ebenen-Modell neu zu entwerfen.
- Bestehende Repository-Operationen so erweitern oder schärfen, dass sie für M7 reproduzierbar unterstützen:
  - Finalisierung ausgeschöpfter Retry-Rahmen,
  - konsistente Fortschreibung von Inhalts- und Transientfehlerzählern,
  - historisierte Skip-Ereignisse,
  - dokumentbezogene Fehlerklassifikation und Retryable-Flag im Endstand,
  - lesende Auswertung der bestehenden Versuchshistorie, soweit für Retry- und Skip-Entscheidungen zwingend erforderlich,
  - konsistente Nachvollziehbarkeit zwischen Log-Entscheidung und SQLite-Historie.
- Falls für den M7-Endstand zusätzliche lesende Auswertungen der bestehenden Versuchshistorie nötig sind, diese gezielt ergänzen, ohne Reporting- oder Statistikfunktionalität vorwegzunehmen.
- Nur dann eine Schemaevolution vornehmen, wenn sie für den M7-Zielstand **zwingend** erforderlich ist; andernfalls ausdrücklich beim bestehenden M6-Schema bleiben.
- Sicherstellen, dass bestehende M4–M6-Datenbestände lesbar und korrekt fortschreibbar bleiben.
- Sicherstellen, dass der spätere Batch-Lauf aus AP-006 alle für M7 notwendigen Persistenzoperationen bereits vorfindet und **keine** impliziten Repository-Erweiterungen mehr nachschieben muss.
- JavaDoc für Nachvollziehbarkeit, bestehende Persistenz-Wahrheit und M7-Grenzen ergänzen.

### Explizit nicht Teil
- vollständige Batch-Use-Case-Integration der M7-Regeln
- neue dritte Persistenzebene
- Reporting/Analytics
- Bootstrap-Anpassungen
- Logging-Framework-Konfiguration
- M8-Gesamtreview

### Fertig wenn
- die Persistenz den vollständigen M7-Endstand konsistent unterstützt,
- keine unnötige Schema-Neuerfindung oder Parallelwahrheit eingeführt wurde,
- bestehende M4–M6-Datenbestände anschlussfähig bleiben,
- der Stand fehlerfrei buildbar bleibt.

---

## AP-006 M7-Batch-Integration für Skip-Logik, Finalisierung ausgeschöpfter Retries, Logging-Hooks und konsistente Fehlerfortschreibung umsetzen

### Voraussetzung
AP-001 bis AP-005 sind abgeschlossen.

### Ziel
Der bestehende M6-Lauf wird zum vollständigen M7-Lauf erweitert, der Retry-Entscheidungen, Finalisierung, Skip-Verhalten, Sofort-Wiederholversuch, dokumentbezogene Logging-Hooks und konsistente Status-/Persistenzfortschreibung zusammenführt.

### Muss umgesetzt werden
- Den bestehenden Batch-Use-Case so erweitern, dass pro Dokument die vollständigen M7-Regeln wirksam werden.
- Folgende Regeln explizit umsetzen:
  - `SUCCESS` → kein erneuter fachlicher Durchlauf, stattdessen `SKIPPED_ALREADY_PROCESSED` historisieren,
  - `FAILED_FINAL` → kein erneuter fachlicher Durchlauf, stattdessen `SKIPPED_FINAL_FAILURE` historisieren,
  - `FAILED_RETRYABLE`, `READY_FOR_AI` und `PROPOSAL_READY` bleiben verarbeitbar,
  - deterministische Inhaltsfehler werden nach dem zweiten historisierten Auftreten finalisiert,
  - transiente technische Fehler werden bei Erreichen des Grenzwerts `max.retries.transient` finalisiert.
- Sicherstellen, dass der technische Sofort-Wiederholversuch aus AP-003 ausschließlich im Zielkopierpfad wirkt und danach in **genau eine** dokumentbezogene Status- und Persistenzfortschreibung mündet.
- Sicherstellen, dass dokumentbezogene Fehler und Finalisierungen den Batch-Lauf für andere Dokumente nicht unnötig abbrechen.
- Sicherstellen, dass Historie und Stammsatz pro identifiziertem Dokument weiterhin konsistent fortgeschrieben werden und kein teilpersistierter M7-Zustand zurückbleibt.
- Vor-Fingerprint-Fehler weiterhin ausdrücklich **nicht** als SQLite-Versuch historisieren.
- Die vorbereitete Logging-Infrastruktur aus AP-004 an den fachlich relevanten Batch-Entscheidungspunkten anbinden, so dass der finale M7-Mindestumfang vollständig erreicht wird, insbesondere:
  - erkannte Quelldatei,
  - Überspringen bereits erfolgreicher Dateien,
  - Überspringen final fehlgeschlagener Dateien,
  - erzeugter Zielname,
  - Retry-Entscheidung,
  - Fehler mit Klassifikation.
- Sicherstellen, dass dokumentbezogene Logs nach erfolgreicher Fingerprint-Ermittlung den Fingerprint oder eine eindeutig ableitbare Referenz enthalten und vor erfolgreicher Fingerprint-Ermittlung mindestens über Lauf-ID und Kandidatenbezug korreliert werden können.
- JavaDoc für M7-Laufreihenfolge, Finalisierung ausgeschöpfter Retries, Skip-Regeln, Logging-Hooks und Fehlerfortschreibung ergänzen.

### Explizit nicht Teil
- Bootstrap- und Startvalidierungsanpassungen
- finale Exit-Code-Verdrahtung
- End-to-End-Tests
- M8-Feinschliff

### Fertig wenn
- der Batch-Lauf die vollständige M7-Retry- und Skip-Semantik umsetzt,
- ausgeschöpfte Retry-Rahmen zu `FAILED_FINAL` führen,
- der Sofort-Wiederholversuch korrekt in den Dokumentlauf integriert ist,
- der finale dokumentbezogene Logging-Mindestumfang des M7-Stands vollständig angebunden ist,
- dokumentbezogene Fehler den Gesamtbatch kontrolliert weiterlaufen lassen,
- der Stand fehlerfrei buildbar bleibt.

---

## AP-007 Bootstrap-, Startvalidierungs- und Exit-Code-Finalisierung für den M7-Endstand durchführen

### Voraussetzung
AP-001 bis AP-006 sind abgeschlossen.

### Ziel
Der Programmeinstieg ist sauber auf den M7-Endstand verdrahtet; die finale Startvalidierung greift, dokumentbezogene Fehler werden korrekt von Startfehlern getrennt und das endgültige Exit-Code-Verhalten ist vollständig umgesetzt.

### Muss umgesetzt werden
- Bootstrap-Verdrahtung auf die neuen M7-Bausteine erweitern.
- M7-relevante Konfiguration ergänzen bzw. validieren, insbesondere für:
  - `max.retries.transient` als **Integer >= 1**,
  - den booleschen Konfigurationswert für sensible KI-Logausgaben,
  - bestehende M1–M6-Parameter, soweit sie für den robusten Endstand zwingend benötigt werden.
- Startvalidierung so vervollständigen, dass ungültige M7-Konfiguration den Lauf **vor** dem Batch-Beginn stoppt.
- Sicherstellen, dass harte Start-, Verdrahtungs-, Konfigurations- oder Initialisierungsfehler weiterhin zu **Exit-Code 1** führen.
- Sicherstellen, dass dokumentbezogene Fehler aus M3–M7 **nicht** zu Exit-Code 1 eskalieren, solange der Batch-Lauf technisch ordnungsgemäß durchgeführt werden konnte.
- Die M7-Logging-Verdrahtung so in den Startpfad integrieren, dass Laufstart, Laufende und harte Startfehler nachvollziehbar protokolliert werden.
- JavaDoc und `package-info` für aktualisierte Verdrahtung, Konfigurationsvalidierung, Exit-Code-Endsemantik und Modulgrenzen ergänzen.

### Explizit nicht Teil
- komplette Test-Suite
- M8-Qualitätsmaßnahmen
- neue fachliche Verarbeitung jenseits des M7-Zielbilds

### Fertig wenn
- das Programm im M7-Stand vollständig startbar ist,
- die M7-Startvalidierung greift,
- das finale Exit-Code-Verhalten vollständig umgesetzt ist,
- dokumentbezogene Fehler nicht als Startfehler fehlmodelliert werden,
- der Build fehlerfrei bleibt.

---

## AP-008 Tests für Retry-Abläufe über mehrere Läufe, Sofort-Wiederholversuch, Logging-Sensibilität und Exit-Code-Endverhalten vervollständigen

### Voraussetzung
AP-001 bis AP-007 sind abgeschlossen.

### Ziel
Der vollständige M7-Zielzustand wird automatisiert abgesichert und als konsistenter Übergabestand nachgewiesen.

### Muss umgesetzt werden
- Tests für Retry-Abläufe über mehrere Läufe implementieren, insbesondere für:
  - erster deterministischer Inhaltsfehler → `FAILED_RETRYABLE`,
  - zweiter deterministischer Inhaltsfehler → `FAILED_FINAL`,
  - transiente technische Fehler bleiben bis zum konfigurierten Grenzwert retryable,
  - der transiente Fehlversuch am Grenzwert finalisiert zu `FAILED_FINAL`,
  - `max.retries.transient = 1` finalisiert beim ersten historisierten transienten Fehlversuch,
  - `max.retries.transient = 0` wird als ungültige Startkonfiguration abgewiesen.
- Tests für finale Fehlerzustände ergänzen, insbesondere:
  - `FAILED_FINAL` wird im Wiederholungslauf historisiert übersprungen,
  - `SUCCESS` wird im Wiederholungslauf historisiert übersprungen,
  - Skip-Ereignisse verändern keine Fehlerzähler.
- Tests für den technischen Sofort-Wiederholversuch im Zielkopierpfad ergänzen, insbesondere:
  - erster Schreibversuch scheitert, zweiter gelingt,
  - beide Schreibversuche scheitern,
  - kein erneuter KI-Aufruf,
  - kein zusätzlicher laufübergreifender Retry-Zähler durch den Sofort-Wiederholversuch.
- Tests für Logging-Sensibilitätsregel ergänzen, soweit automatisierbar, insbesondere:
  - vollständige KI-Rohantwort wird standardmäßig nicht geloggt,
  - vollständiges KI-`reasoning` wird standardmäßig nicht vollständig geloggt,
  - vollständige KI-Rohantwort bleibt in SQLite verfügbar,
  - vollständiges KI-`reasoning` bleibt in SQLite verfügbar,
  - explizite Freischaltung sensibler KI-Logausgabe wirkt nur kontrolliert.
- Tests für Logging-Korrelation ergänzen, soweit automatisierbar, insbesondere:
  - vor erfolgreicher Fingerprint-Ermittlung ist Kandidatenbezug über Lauf-ID und Quelldatei nachvollziehbar,
  - nach erfolgreicher Fingerprint-Ermittlung tragen dokumentbezogene Logs den Fingerprint oder eine eindeutig ableitbare Referenz.
- Tests für finales Exit-Code-Verhalten ergänzen, insbesondere:
  - `0` bei technisch ordnungsgemäßem Lauf trotz dokumentbezogener Fehler,
  - `1` bei harter ungültiger Startkonfiguration,
  - `1` bei harten Bootstrap-/Initialisierungsfehlern,
  - dokumentbezogene Fehler aus M3–M7 führen nicht zu Exit-Code 1.
- Tests für Konfigurationsvalidierung ergänzen, insbesondere:
  - ungültiges `max.retries.transient`,
  - ungültige Logging-Sensitivitätskonfiguration,
  - M7-Startkonfiguration verhindert bei Ungültigkeit den Laufbeginn.
- Integrationstests für den vollständigen M7-Ablauf ergänzen, insbesondere:
  - robuster Happy-Path mit `SUCCESS`,
  - dokumentbezogene Teilfehler blockieren den Batch nicht,
  - ausgeschöpfte Retry-Rahmen führen stabil zu terminalen Skip-Folgeläufen,
  - bestehendes `PROPOSAL_READY` kann weiter bis zum Enderfolg finalisiert werden,
  - M4–M6-Altbestände bleiben anschlussfähig.
- Den M7-Stand abschließend auf Konsistenz, Architekturtreue und Nicht-Vorgriff auf M8+ prüfen.

### Explizit nicht Teil
- M8-Gesamtfreigabe
- zusätzliche Qualitätskampagnen außerhalb des M7-Zielumfangs

### Fertig wenn
- die Test-Suite für den M7-Umfang grün ist,
- die wichtigsten Retry-, Finalisierungs-, Logging-, Korrelation- und Exit-Code-Randfälle automatisiert abgesichert sind,
- der definierte M7-Zielzustand vollständig erreicht ist,
- ein fehlerfreier, übergabefähiger Stand vorliegt.

---

## Abschlussbewertung

Die Arbeitspakete decken den vollständigen M7-Zielumfang aus den verbindlichen Spezifikationen ab und schließen die betriebliche Lücke zwischen dem M6-Erfolgspfad und dem final robusten Endstand sauber:

- vollständige Retry-Logik über spätere Läufe
- saubere Finalisierung nach ausgeschöpften Retry-Rahmen
- technischer Sofort-Wiederholversuch ausschließlich für Zielkopierfehler
- vollständige Skip-Semantik für `SUCCESS` und `FAILED_FINAL`
- finaler Logging-Mindestumfang
- Sensibilitätsregel für KI-Inhalte im Logging
- präzise Korrelation zwischen Logs und dokumentbezogenen Entscheidungen
- finale Exit-Code-Semantik
- vervollständigte Startvalidierung
- konsistente Nachvollziehbarkeit in Logs und SQLite
- Tests für Mehrlauf-Retries, Sofort-Wiederholversuch, Logging-Sensibilität und Exit-Code-Endverhalten

Gleichzeitig bleiben die Grenzen zu M1–M6 sowie zu M8+ gewahrt. Insbesondere werden **keine** neuen Fachfunktionen, **kein** M8-Gesamtfeinschliff und **keine** unnötigen Parallelwahrheiten für Persistenz oder Retry-Zustände eingeführt.
