diff --git a/docs/workpackages/M3 - Arbeitspakete.md b/docs/workpackages/M3 - Arbeitspakete.md index 0295f8b..be530be 100644 --- a/docs/workpackages/M3 - Arbeitspakete.md +++ b/docs/workpackages/M3 - Arbeitspakete.md @@ -8,196 +8,311 @@ Die Arbeitspakete sind so geschnitten, dass jedes Paket in **einem Durchgang** v Die Meilensteine **M1** und **M2** werden als vollständig umgesetzt vorausgesetzt. -## Konsistenz- und Schnittregeln +## Zusätzliche Schnittregeln für die KI-Bearbeitung -- Jedes Arbeitspaket liefert einen in sich geschlossenen, fehlerfreien Zwischenstand. +- Jedes Arbeitspaket muss so eindeutig sein, dass daraus ein **einzelner Prompt** für eine umsetzende KI abgeleitet werden kann. +- Jedes Arbeitspaket beschreibt deshalb: + - den **konkreten Implementierungsumfang**, + - die **klaren Nicht-Ziele**, + - sowie **prüfbare Fertig-Kriterien**. +- Es dürfen innerhalb eines Arbeitspakets nur die **minimal notwendigen Querschnitte** durch Domain, Application, Adapter und Bootstrap geändert werden. - Die Reihenfolge ist verbindlich, weil jedes Paket auf dem vorherigen Stand aufbaut. - Der Fokus bleibt strikt auf **M3**. - Es erfolgt **kein Vorgriff auf spätere Meilensteine**. -- Insbesondere sind in M3 noch **nicht** enthalten: - - Fingerprint-Berechnung - - SQLite-Persistenz - - Idempotenzlogik über frühere Läufe - - KI-Anbindung - - Prompt-Laden oder Prompt-Verarbeitung - - Validierung von KI-Antworten - - Dateinamensbildung - - Zielkopie in den Zielordner - - laufübergreifende Retry-Logik + +## Explizit nicht Bestandteil von M3 + +- Fingerprint-Berechnung +- SQLite-Persistenz +- Idempotenzlogik über frühere Läufe +- KI-Anbindung +- Prompt-Laden oder Prompt-Verarbeitung +- Validierung von KI-Antworten +- Dateinamensbildung +- Zielkopie in den Zielordner +- laufübergreifende Retry-Logik +- manuelle Nachbearbeitung --- -## AP-001 Dateikandidat-Modell und Ports für Quellzugriff und PDF-Auslese +## AP-001 M3-Kernobjekte und Outbound-Port-Verträge für Quellkandidaten und PDF-Auslese ### Ziel -Die für M3 nötigen fachnahen Kernobjekte sowie die neuen Outbound-Ports werden architekturtreu eingeführt. +Die für M3 benötigten fachnahen Kernobjekte und Application-Verträge werden präzise eingeführt, ohne Infrastruktur in Domain oder Application hineinzuziehen. ### Inhalt -- minimale Domain- bzw. Application-Typen für den M3-Kontext anlegen, insbesondere für: - - Quelldokument bzw. Verarbeitungskandidat - - extrahierten Dokumenttext - - Seitenzahl - - fachlich-technische Bewertung des Extraktionsergebnisses -- Outbound-Ports für M3 definieren, insbesondere für: - - Quellordnerzugriff - - PDF-Text- und Seitenzahlextraktion -- Port-Signaturen so schneiden, dass Dateisystem und PDFBox weiterhin ausschließlich in Adapter-Out verbleiben -- klare Abgrenzung sicherstellen: keine Persistenz, keine KI, keine Zielkopie und keine Dateinamensbildung in Domain oder Application -- JavaDoc und `package-info` für neue Verantwortlichkeiten und Architekturgrenzen ergänzen +- neue M3-relevante Kernobjekte bzw. Application-nahe Typen anlegen, insbesondere für: + - Verarbeitungskandidat aus dem Quellordner, + - Extraktionsergebnis eines einzelnen PDF-Dokuments, + - Seitenzahl, + - dokumentbezogenes M3-Verarbeitungsergebnis bzw. M3-Entscheidung. +- Outbound-Ports definieren für: + - Lesen der Verarbeitungskandidaten aus dem Quellordner, + - Extraktion von Text und Seitenzahl aus genau einem PDF-Kandidaten. +- Port-Verträge so schneiden, dass **weder `Path`/`File` noch PDFBox-Typen** in Domain oder Application durchsickern. +- Rückgabemodelle so anlegen, dass spätere APs daraus sauber zwischen + - technisch erfolgreich extrahiert, + - fachlich nicht verarbeitbar, + - und technisch fehlgeschlagen + unterscheiden können. +- JavaDoc und `package-info` für Verantwortlichkeiten und Architekturgrenzen ergänzen. + +### Explizit nicht Teil +- Dateisystem-Implementierung +- PDFBox-Implementierung +- fachliche Bewertung „brauchbarer Text" +- Seitenlimit-Prüfung +- Logging, Bootstrap oder CLI-Anpassungen ### Fertig wenn -- die M3-relevanten Kernobjekte und Ports vorhanden sind -- die neuen Typen frei von Infrastrukturabhängigkeiten sind -- der Build weiterhin fehlerfrei ist +- die M3-relevanten Typen und Port-Verträge vorhanden sind, +- die neuen Typen frei von Infrastrukturabhängigkeiten sind, +- der Build weiterhin fehlerfrei ist. --- -## AP-002 Dateisystem-Adapter für Quellordnerzugriff und Kandidatenermittlung +## AP-002 Dateisystem-Adapter für Quellordnerzugriff und deterministische PDF-Kandidatenermittlung ### Ziel -Der Batch-Lauf kann den konfigurierten Quellordner technisch lesen und daraus PDF-Verarbeitungskandidaten bestimmen. +Der Batch-Lauf kann den konfigurierten Quellordner lesen und daraus genau die PDFs als Verarbeitungskandidaten bereitstellen, die in M3 berücksichtigt werden dürfen. ### Inhalt -- Dateisystem-Adapter für den Quellordnerzugriff implementieren -- Kandidatenermittlung für PDF-Dateien gemäß fachlicher Regel umsetzen, dass PDFs im Quellordner Verarbeitungskandidaten sind -- die gelieferten Kandidaten in einer stabilen, für die Application nutzbaren Form bereitstellen -- technische Fehler beim Quellordnerzugriff kontrolliert in den Portvertrag überführen -- sicherstellen, dass noch keine Fingerprint-, Persistenz- oder KI-Logik in den Adapter einfließt -- JavaDoc für Quellordnerzugriff, Kandidatenermittlung und technische Grenzen ergänzen +- Dateisystem-Adapter für den Quellordnerzugriff implementieren. +- Kandidatenermittlung so umsetzen, dass **PDF-Dateien im Quellordner** als Verarbeitungskandidaten geliefert werden. +- explizit sicherstellen: + - **Nicht-PDF-Dateien** sind keine Kandidaten, + - Verzeichnisse sind keine Kandidaten, + - eine zusätzliche Rekursion in Unterordnern ist **nicht** Bestandteil von M3. +- die Kandidaten in **deterministischer, stabiler Reihenfolge** an die Application liefern. +- technische Fehler beim Zugriff auf einzelne Dateisystemobjekte oder beim Lesen des Quellordners kontrolliert in den Port-Vertrag überführen. +- JavaDoc für Quellordnerzugriff, Kandidatenbegriff und technische Grenzen ergänzen. + +### Explizit nicht Teil +- PDF-Textauslese +- Seitenzahlerkennung +- Persistenz, Fingerprint, KI, Zielkopie +- Bewertung „brauchbarer Text" +- Exit-Code-Logik ### Fertig wenn -- der Quellordner technisch ausgelesen werden kann -- PDF-Verarbeitungskandidaten über den definierten Port verfügbar sind -- der Stand ohne weitere M3-Funktionalität fehlerfrei buildbar bleibt +- der Quellordner technisch ausgelesen werden kann, +- nur zulässige PDF-Kandidaten über den definierten Port verfügbar sind, +- die Kandidatenreihenfolge deterministisch ist, +- der Stand fehlerfrei buildbar bleibt. --- -## AP-003 PDFBox-Adapter für Textauslese und Seitenzahl +## AP-003 PDFBox-Adapter für Textauslese, Seitenzahlerkennung und technische Extraktionsfehler ### Ziel -Für einen einzelnen Verarbeitungskandidaten können Textinhalt und Seitenzahl technisch extrahiert werden. +Für genau einen Verarbeitungskandidaten können Textinhalt und Seitenzahl technisch extrahiert werden; technische Extraktionsprobleme werden dabei kontrolliert abgebildet. ### Inhalt -- PDFBox-basierten Adapter für die PDF-Auslese implementieren -- Extraktion von Text und Seitenzahl in einem konsistenten Rückgabemodell bereitstellen -- technische Fehlerfälle aus PDF-Verarbeitung kontrolliert behandeln -- keine fachliche Benennungslogik, keine KI-Vorbereitung und keine Persistenz in den Adapter aufnehmen -- sicherstellen, dass der Adapter nur über den definierten Outbound-Port genutzt wird -- JavaDoc für PDF-Auslese, Seitenzahl und Fehlerverhalten ergänzen +- PDFBox-basierten Adapter für die Auslese eines einzelnen PDF-Kandidaten implementieren. +- Extraktion von + - vollständigem Textinhalt im M3-Sinne, + - sowie Seitenzahl + in einem konsistenten Rückgabemodell bereitstellen. +- technische Extraktionsprobleme kontrolliert in den Port-Vertrag überführen, insbesondere für Fälle wie: + - PDF kann nicht gelesen werden, + - PDF ist defekt oder unbrauchbar, + - sonstige technische Fehler während der Auslese. +- sicherstellen, dass PDFBox ausschließlich im Adapter-Out verbleibt. +- JavaDoc für PDF-Auslese, Seitenzahl und technisches Fehlerverhalten ergänzen. + +### Explizit nicht Teil +- fachliche Bewertung des extrahierten Texts +- Seitenlimit-Prüfung +- Batch-Orchestrierung +- Logging-Strategie auf Laufebene +- Bootstrap- und CLI-Anpassungen ### Fertig wenn -- Text und Seitenzahl für ein PDF technisch extrahierbar sind -- PDFBox ausschließlich im Adapter-Out verankert ist -- der Build weiterhin fehlerfrei bleibt +- Text und Seitenzahl für ein PDF technisch extrahierbar sind, +- technische Extraktionsfehler kontrolliert als Adapter-Ergebnis vorliegen, +- PDFBox ausschließlich im Adapter-Out verankert ist, +- der Build weiterhin fehlerfrei ist. --- -## AP-004 Konfigurierbares Seitenlimit und Bewertung „brauchbarer Text“ +## AP-004 Konfigurierbares Seitenlimit und deterministische Bewertung „brauchbarer Text“ ### Ziel -Die M3-relevanten Inhaltsvorprüfungen werden fachlich-technisch sauber im Kern modelliert. +Die M3-Vorprüfungen werden fachnah und beobachtbar modelliert, sodass jedes Dokument nach der Extraktion eindeutig bewertet werden kann. ### Inhalt -- M3-relevante Konfigurationswerte vervollständigen, insbesondere das Seitenlimit, soweit im bisherigen Stand noch nicht vollständig nutzbar -- Bewertungslogik für „brauchbaren Text“ im fachnahen Kern umsetzen -- Prüfung auf Seitenlimitüberschreitung umsetzen -- Ergebnis so modellieren, dass die Application zwischen verarbeitbaren und nicht verarbeitbaren Kandidaten unterscheiden kann -- festlegen und technisch absichern, dass bei fehlendem brauchbarem Text oder überschrittenem Seitenlimit die Verarbeitung dieses Dokuments an dieser Stelle endet -- keine KI-Schnittstelle und keine spätere Retry-/Persistenzlogik vorwegnehmen -- JavaDoc für Bewertungsregeln, Grenzen und Nicht-Ziele von M3 ergänzen +- M3-relevante Konfigurationswerte vervollständigen, insbesondere das **konfigurierbare Seitenlimit**. +- fachliche Bewertungslogik für **„brauchbaren Text“** im Kern umsetzen. +- für M3 den Begriff **deterministisch** schneiden: + - nach Normalisierung des extrahierten Texts bleibt **mindestens ein Buchstabe oder eine Ziffer** erhalten, + - reiner Leerraum bzw. nur bedeutungslose Restzeichen gelten **nicht** als brauchbarer Text. +- Prüfung auf **Seitenlimitüberschreitung** umsetzen. +- das Ergebnis so modellieren, dass die Application pro Dokument eindeutig unterscheiden kann zwischen: + - M3-Vorprüfung bestanden, + - deterministischem Inhaltsfehler „kein brauchbarer Text", + - deterministischem Inhaltsfehler „Seitenlimit überschritten“. +- festlegen und technisch absichern, dass bei diesen beiden Inhaltsfehlern die Verarbeitung **dieses Dokuments** in M3 endet. +- JavaDoc für Bewertungsregeln, Grenzen und Nicht-Ziele von M3 ergänzen. + +### Explizit nicht Teil +- technische PDF-Auslese +- Batch-Schleife über alle Kandidaten +- Persistenz- oder Retry-Logik +- KI-Schnittstelle oder KI-Aufruf +- Dateinamensbildung oder Zielkopie ### Fertig wenn -- brauchbarer Text und Seitenlimit technisch bewertbar sind -- nicht verarbeitbare PDFs sauber erkannt werden -- der Stand weiterhin ohne KI und Persistenz buildbar und startbar ist +- brauchbarer Text und Seitenlimit technisch bewertbar sind, +- die beiden deterministischen Inhaltsfehler sauber erkannt werden, +- die Bewertungsregeln eindeutig und testbar dokumentiert sind, +- der Stand weiterhin ohne KI und Persistenz buildbar ist. --- -## AP-005 Integration in den Batch-Use-Case: Scannen, Extrahieren, Vorprüfen +## AP-005 Integration in den Batch-Use-Case: Scannen, Extrahieren, Vorprüfen und kontrolliertes Ende pro Dokument ### Ziel -Der M2-No-Op-Batch-Lauf wird zu einem echten M3-Verarbeitungslauf erweitert, jedoch noch ohne KI und ohne Ergebnisdatei. +Der M2-No-Op-Batch-Lauf wird zu einem echten M3-Verarbeitungslauf erweitert, jedoch weiterhin ohne KI, ohne Persistenz und ohne Ergebnisdatei. ### Inhalt - bestehenden Batch-Use-Case so erweitern, dass er: - - den Quellordner scannt - - PDF-Kandidaten lädt - - pro Kandidat Text und Seitenzahl extrahiert - - die M3-Vorprüfungen ausführt -- ersten Metadatenfluss für einzelne Dokumente zwischen Adapter-In, Application und Adapter-Out herstellen -- verarbeitbare und nicht verarbeitbare Kandidaten im Ablauf sauber unterscheiden -- sicherstellen, dass der Lauf trotz fehlender Folge-Meilensteine kontrolliert endet -- keine Persistenz, keine Fingerprints, keine KI-Aufrufe und keine Zielkopie einführen -- JavaDoc für Ablaufgrenzen und den M3-Verarbeitungsrahmen ergänzen + - den Quellordner scannt, + - PDF-Kandidaten lädt, + - pro Kandidat Text und Seitenzahl extrahiert, + - die M3-Vorprüfungen ausführt, + - pro Kandidat ein eindeutiges M3-Verarbeitungsergebnis erzeugt. +- sicherstellen, dass ein Dokument nach bestandener M3-Vorprüfung **kontrolliert endet**, ohne bereits M4+-Funktionalität anzustoßen. +- sicherstellen, dass Dokumente mit den Inhaltsfehlern + - „kein brauchbarer Text“ und + - „Seitenlimit überschritten“ + ebenfalls **pro Dokument kontrolliert enden**. +- ersten durchgängigen Metadatenfluss für einzelne Dokumente zwischen Adapter-In, Application und Adapter-Out herstellen. +- keinerlei künstliche Vorab-Schnittstelle für KI einführen, nur um M3 abzuschließen. +- JavaDoc für Ablaufgrenzen und den M3-Verarbeitungsrahmen ergänzen. + +### Explizit nicht Teil +- Persistenz +- Fingerprints +- KI-Aufrufe +- Dateinamensbildung +- Zielkopie +- laufübergreifende Retry-Entscheidungen ### Fertig wenn -- der Batch-Lauf den Quellordner tatsächlich verarbeitet -- pro PDF ein kontrollierter M3-Ablauf stattfindet -- noch keine Funktionalität aus M4+ vorweggenommen wurde +- der Batch-Lauf den Quellordner tatsächlich verarbeitet, +- pro PDF ein kontrollierter M3-Ablauf stattfindet, +- auch der M3-Happy-Path ohne KI und ohne Ergebnisdatei sauber endet, +- noch keine Funktionalität aus M4+ vorweggenommen wurde. --- -## AP-006 Fehlerklassifikation im M3-Lauf und kontrolliertes Logging +## AP-006 Dokumentbezogene Fehlerklassifikation und M3-Logging ### Ziel -Die in M3 bereits fachlich relevanten Fehlerfälle werden im Lauf sauber eingeordnet und nachvollziehbar protokolliert. +Die in M3 bereits relevanten dokumentbezogenen Ergebnisse und Fehlerfälle werden eindeutig klassifiziert und nachvollziehbar protokolliert. ### Inhalt -- Fehlerfall „kein brauchbarer Text“ als deterministischen Inhaltsfehler im M3-Kontext abbilden -- Fehlerfall „Seitenlimit überschritten“ als deterministischen Inhaltsfehler im M3-Kontext abbilden -- Logging für Kandidatenerkennung, Extraktionsergebnis und Vorprüfungsentscheidungen schärfen -- sicherstellen, dass diese Fälle pro Dokument kontrolliert behandelt werden und den gesamten Lauf nicht unnötig abbrechen -- sicherstellen, dass aus diesen Fällen heraus keine Folgefunktionalität späterer Meilensteine angestoßen wird -- JavaDoc für Fehlersemantik und M3-spezifische Laufentscheidungen ergänzen +- folgende dokumentbezogenen M3-Fälle sauber unterscheiden und abbilden: + - Vorprüfung bestanden, + - deterministischer Inhaltsfehler „kein brauchbarer Text", + - deterministischer Inhaltsfehler „Seitenlimit überschritten", + - technischer Dokumentfehler bei Kandidatenzugriff oder PDF-Extraktion. +- Logging für folgende Punkte schärfen: + - Kandidat erkannt, + - Extraktion erfolgreich oder technisch fehlgeschlagen, + - Vorprüfung bestanden oder mit konkretem Grund beendet. +- sicherstellen, dass **dokumentbezogene** Fehler den gesamten Lauf nicht unnötig abbrechen. +- sicherstellen, dass aus dokumentbezogenen M3-Fehlern keine Folgefunktionalität späterer Meilensteine ausgelöst wird. +- dokumentbezogene technische Fehler ausdrücklich **nicht** als deterministische Inhaltsfehler modellieren. +- JavaDoc für Fehlersemantik und M3-spezifische Laufentscheidungen ergänzen. + +### Explizit nicht Teil +- Exit-Code-Neudefinition für den gesamten Prozess +- Persistenz einer Historie +- Retry-Logik +- KI, Dateinamensbildung oder Zielkopie ### Fertig wenn -- die M3-Fehlerfälle nachvollziehbar behandelt und geloggt werden -- der Batch-Lauf bei gemischten Kandidaten kontrolliert weiterlaufen kann -- weiterhin keine KI-Anbindung oder Persistenz enthalten ist +- die dokumentbezogenen M3-Ergebnisse und Fehlerfälle eindeutig unterscheidbar sind, +- gemischte Läufe mit erfolgreichen Vorprüfungen, Inhaltsfehlern und technischen Dokumentfehlern kontrolliert weiterlaufen, +- die Logs die Dokumententscheidung nachvollziehbar machen, +- weiterhin keine M4+-Funktionalität enthalten ist. --- -## AP-007 Bootstrap- und CLI-Anpassungen für den M3-Stand +## AP-007 Bootstrap- und CLI-Anpassungen für M3-Konfiguration, Verdrahtung und Exit-Code-Semantik ### Ziel -Der Programmeinstieg ist an den erweiterten M3-Lauf angepasst und der Gesamtstand bleibt als Batch-Anwendung sauber ausführbar. +Der Programmeinstieg ist sauber an den M3-Lauf angepasst; M2-Startschutz und M2-Grundverhalten bleiben erhalten, werden aber für die neuen M3-Fälle präzisiert. ### Inhalt -- Bootstrap-Verdrahtung auf die neuen M3-Ports und Adapter erweitern -- CLI-/Batch-Startpfad auf den M3-Verarbeitungsablauf ausrichten -- Konfigurationsvalidierung für M3-relevante Parameter im Startpfad ergänzen, soweit für Quellordnerzugriff und Seitenlimit erforderlich -- sicherstellen, dass Startschutz, Exit-Code-Grundverhalten und kontrollierte Laufbeendigung aus M2 intakt bleiben -- Smoke-Verhalten des Programms für den M3-Stand nachvollziehbar halten -- JavaDoc und `package-info` für aktualisierte Verdrahtung und Modulgrenzen ergänzen +- Bootstrap-Verdrahtung auf die neuen M3-Ports, Adapter und Bewertungsbausteine erweitern. +- CLI-/Batch-Startpfad auf den realen M3-Verarbeitungsablauf ausrichten. +- M3-relevante Startvalidierung ergänzen, insbesondere für: + - Quellordner vorhanden, + - Quellordner ist lesbares Verzeichnis, + - Seitenlimit ist gültig und technisch nutzbar. +- Exit-Code-Semantik für M3 explizit absichern: + - **Exit-Code 0**, wenn der Lauf technisch ordnungsgemäß durchgeführt wurde, auch wenn einzelne Dokumente mit M3-Inhaltsfehlern oder technischen Dokumentfehlern enden, + - **Exit-Code 1** bei harten Start-, Bootstrap- oder Konfigurationsfehlern, insbesondere wenn der Lauf wegen ungültiger Startvoraussetzungen gar nicht sinnvoll beginnen kann. +- sicherstellen, dass der bestehende M2-Startschutz und die kontrollierte Laufbeendigung erhalten bleiben und nicht neu erfunden werden. +- JavaDoc und `package-info` für aktualisierte Verdrahtung, Konfiguration und Modulgrenzen ergänzen. + +### Explizit nicht Teil +- neue fachliche Dokumentverarbeitung jenseits von M3 +- Persistenz- oder KI-Verdrahtung +- spätere Retry- oder Idempotenzlogik ### Fertig wenn -- das Programm im M3-Stand vollständig startbar ist -- die neuen Adapter korrekt verdrahtet sind -- der Batch-Lauf kontrolliert endet und der Build fehlerfrei bleibt +- das Programm im M3-Stand vollständig startbar ist, +- die neuen Adapter korrekt verdrahtet sind, +- die M3-Startvalidierung greift, +- die Exit-Code-Semantik für dokumentbezogene Fehler versus harte Startfehler eindeutig umgesetzt ist, +- der Build fehlerfrei bleibt. --- -## AP-008 Tests für Kandidatenermittlung, PDF-Auslese, Vorprüfungen und M3-Abschlussstand +## AP-008 Tests für Filterlogik, Extraktion, Vorprüfungen, M3-Happy-Path und Exit-Code-Verhalten ### Ziel Der vollständige M3-Zielzustand wird automatisiert abgesichert und als konsistenter Übergabestand nachgewiesen. ### Inhalt -- Unit-Tests für die Kandidatenermittlung von PDF-Dateien implementieren -- Tests für PDF-Textauslese und Seitenzahlerkennung implementieren -- Tests für die Bewertung „brauchbarer Text“ implementieren -- Tests für den Fehlerfall „Seitenlimit überschritten“ implementieren -- Tests ergänzen, die belegen, dass Dokumente mit fehlendem brauchbarem Text oder überschrittenem Seitenlimit im M3-Ablauf kontrolliert enden und keine Folgefunktionalität späterer Meilensteine auslösen -- Tests für Batch-Use-Case-Integration und Bootstrap-Verdrahtung ergänzen, soweit in M3 sinnvoll -- den M3-Stand abschließend auf Konsistenz, Architekturtreue und Nicht-Vorgriff auf M4+ prüfen +- Unit-Tests für die PDF-Kandidatenermittlung implementieren, insbesondere für: + - PDF-Datei wird erkannt, + - Nicht-PDF-Datei wird ignoriert, + - Verzeichnis wird ignoriert, + - Reihenfolge ist deterministisch. +- Tests für PDF-Textauslese und Seitenzahlerkennung implementieren. +- Tests für technische Extraktionsfehler implementieren. +- Tests für die deterministische Bewertung „brauchbarer Text“ implementieren. +- Tests für den Fehlerfall „Seitenlimit überschritten“ implementieren. +- Tests ergänzen, die belegen, dass Dokumente mit + - fehlendem brauchbarem Text, + - überschrittenem Seitenlimit, + - oder technischem Dokumentfehler + im M3-Ablauf kontrolliert enden und den Gesamtbatch nicht unnötig abbrechen. +- explizite Tests für den **M3-Happy-Path** ergänzen: gültige PDF wird erkannt, extrahiert, vorgeprüft und endet kontrolliert **ohne** KI-Aufruf und **ohne** Zielkopie. +- Tests für Exit-Code-Verhalten ergänzen: + - `0` bei technisch ordnungsgemäßem Lauf trotz dokumentbezogener Fehler, + - `1` bei harten Start-/Bootstrap-/Konfigurationsfehlern. +- Tests für Bootstrap- und Use-Case-Verdrahtung ergänzen, soweit in M3 sinnvoll. +- den M3-Stand abschließend auf Konsistenz, Architekturtreue und Nicht-Vorgriff auf M4+ prüfen. + +### Explizit nicht Teil +- Tests für KI, Persistenz, Fingerprint oder Zielkopie +- Tests für spätere Retry-Logik ### Fertig wenn -- die Test-Suite für den M3-Umfang grün ist -- der definierte M3-Zielzustand vollständig erreicht ist -- ein fehlerfreier, übergabefähiger Stand vorliegt +- die Test-Suite für den M3-Umfang grün ist, +- der definierte M3-Zielzustand vollständig erreicht ist, +- die wichtigsten M3-Randfälle einschließlich Happy-Path und Exit-Code-Semantik automatisiert abgesichert sind, +- ein fehlerfreier, übergabefähiger Stand vorliegt. --- ## Abschlussbewertung -Die Arbeitspakete sind inhaltlich konsistent, widerspruchsfrei und sauber auf den Meilenstein **M3** zugeschnitten. Sie decken den vollständigen Zielumfang von **„Dateisystemzugriff, Kandidatenermittlung und PDF-Textauslese“** ab, ohne Inhalte späterer Meilensteine wie Fingerprint, Persistenz, KI-Integration, Dateinamensbildung oder Zielkopie vorwegzunehmen. +Die Arbeitspakete sind bewusst so nachgeschärft, dass sie für eine **zweistufige KI-Bearbeitung** geeignet sind: Eine KI kann aus jedem Arbeitspaket einen präzisen Prompt ableiten, und eine zweite KI kann das jeweilige Paket anschließend ohne implizite Annahmen vollständig umsetzen. + +Der vollständige M3-Zielzustand aus `meilensteine.md` wird abgedeckt. Gleichzeitig bleiben die Grenzen zu M1, M2 und allen späteren Meilensteinen gewahrt.