Neues Paket mail/internal/ingestiontestgate, spiegelt das etablierte Muster aus mail/internal/qagate (QA-03) und mail/internal/importtestgate (IMP-09): ein echtes, ausführbares Gate statt einer nur behaupteten Prüfung. IngestionAndImportPackages listet alle 14 aus QA-02s eigener dependsOn-Liste folgenden Pakete (Protokoll-Server, Fehlerbehandlung/ Logging, Import-Pfade). RunTestSuites führt go test -count=1 -p 1 über alle 14 Pakete aus — -p 1 bewusst, da parallele Testbinaries sich bei den echten QA-07-Lasttests gegenseitig CPU-Kontingent wegnehmen und Latenz-Zielwerte durch reine Testhost-Überlastung verfehlen lassen (real beobachtet, mit -p 1 behoben). ScanForKnownErrorPointTests prüft automatisiert, dass die drei in Akzeptanzkriterium 2 namentlich geforderten Fehlerpunkte (Header-Injection, Anhang-Limit, UIDVALIDITY) je einen passenden Regressionstest im zuständigen Paket haben. Gate-Lauf gegen aktuellen Stand real ausgeführt und mit Zeitstempel dokumentiert: BESTANDEN, 14 Pakete grün, alle drei bekannten Fehlerpunkte abgedeckt. Scanner durch Negativtest bewiesen, dass er eine tatsächlich fehlende Abdeckung real erkennt statt immer "bestanden" zu melden. Pflichtprüfung 3 (Zweitperson bestätigt Gate-Ergebnis unabhängig) bleibt strukturell offen — eine einzelne Sitzung kann keine unabhängige zweite Person sein, im Prüfprotokoll dokumentiert (analog zu ING-10 und QA-04). go build/go vet/golangci-lint clean, gesamtes Mail-Modul regressionsfrei getestet.
4.4 KiB
QA-02 — Prüfgate Ingestion & Import: Prüfprotokoll
Datum: 2026-09-01
Host: 192.168.1.131 (Build/Test/Lint), rsync + ssh
Paket: mail/internal/ingestiontestgate (neu)
Umsetzung
Spiegelt das bereits etablierte Muster aus mail/internal/qagate
(QA-03) und mail/internal/importtestgate (IMP-09) — ein echtes,
ausführbares Prüfgate statt einer nur behaupteten Prüfung:
IngestionAndImportPackages: alle 14 Pakete, die aus QA-02s eigenerdependsOn-Liste folgen (ING-10: IMAP/POP3/SMTP/MIME/Folder-State; ING-07: protoguard; ING-08: protolog; IMP-04/IMP-09: imapimport; IMP-05: hotfolder; IMP-06: virusscan; IMP-07: mailboxconfig; IMP-08: syncalert; zugehörig: attachments, mailrules).RunTestSuites: führtgo test -count=1 -p 1über alle 14 Pakete aus (-p 1: nacheinander statt parallel — mehrere gleichzeitige Testbinaries würden sich bei den echten QA-07-Lasttests in imap/pop3/smtp gegenseitig CPU-Kontingent wegnehmen und so Latenz-Zielwerte durch reine Testhost-Überlastung verfehlen lassen, real beobachtet und behoben).ScanForKnownErrorPointTests: prüft für die drei in Akzeptanzkriterium 2 namentlich geforderten Fehlerpunkte (Header-Injection, Anhang-Limit, UIDVALIDITY), ob im jeweils zuständigen Paket eine_test.go-Datei eine passende Testfunktion enthält — automatisiert, nicht nur behauptet.
Pflichtprüfung 1: Gate-Lauf gegen aktuellen Stand von ING-10/IMP-09 dokumentiert
TestRun_RealGateAgainstCurrentIngestionImportState
(ingestiontestgate/gate_test.go): echter Gate-Lauf gegen den
aktuellen Quelltext, Ergebnis:
# QA-02 Gate-Ergebnis: BESTANDEN
Zeitstempel (UTC): 2026-09-01T15:35:33Z
## Testsuiten (Ingestion & Import, 14 Pakete)
Bestanden: true
## Bekannte Fehlerpunkte — Regressionstest-Stichprobe
- Header-Injection: abgedeckt=true — TestHeaderWriter_RejectsControlCharsAndCRLFInSubjectAndDisplayName in internal/mailer/mailer_test.go
- Anhang-Limit: abgedeckt=true — TestParse_OversizedAttachmentRejectedNotMemoryExhausted in internal/mimeparse/mimeparse_test.go
- UIDVALIDITY: abgedeckt=true — TestRebuild_ChangesUIDValidityOnSimulatedFolderRebuild in internal/folderstate/store_test.go
Ergebnis: BESTANDEN, dokumentiert mit Zeitstempel.
Pflichtprüfung 2: Stichprobe — mindestens ein Regressionstest je bekanntem Fehlerpunkt vorhanden
Durch Pflichtprüfung 1 automatisiert mitgeprüft. Ergänzt um zwei
eigenständige Bausteintests: TestScanForKnownErrorPointTests_ RealPackagesAllCovered (positiver Nachweis gegen den echten
Quelltext) und TestScanForKnownErrorPointTests_DetectsMissingCoverage
(Negativtest — beweist, dass der Scanner eine tatsächlich fehlende
Abdeckung auch real erkennt, nicht nur immer "bestanden" meldet).
Ergebnis: BESTANDEN.
Pflichtprüfung 3: Zweite Person bestätigt Gate-Ergebnis unabhängig
Nicht durchführbar durch diese Sitzung, aus demselben strukturellen
Grund wie bereits bei ING-10 (Stichprobenreview) und QA-04
(API-Token-Prüfung) dokumentiert: eine einzelne KI-Sitzung kann keine
unabhängige ZWEITE Person sein, ohne den Zweck der Prüfung (echte
menschliche Gegenkontrolle) zu unterlaufen. Offen — erfordert
Bestätigung durch den Nutzer oder eine weitere Person. Grundlage für
dieses Review: der Gate-Bericht oben, reproduzierbar über
go test ./internal/ingestiontestgate/... -run TestRun_RealGate mit
gesetztem TEST_TENANT_DSN/TEST_MANTICORE_URL.
Akzeptanzkriterien
- Gate prüft Testabdeckung und Bestehen aller Ingestion-/ Import-Testsuiten: durch Pflichtprüfung 1 belegt.
- Gate prüft, dass bekannte Fehlerpunkte (Header-Injection, Anhang-Limit, UIDVALIDITY) durch Tests abgedeckt sind: durch Pflichtprüfung 2 belegt.
- Gate-Ergebnis ist dokumentiert und nachvollziehbar mit
Zeitstempel:
GateResult.Report(), siehe Pflichtprüfung 1.
Build/Vet/Lint/Test — Gesamtmodul
go build ./... → OK
go vet ./... → OK
golangci-lint run ./... → 0 issues
go test ./... -p 1 (TEST_TENANT_DSN, TEST_MANTICORE_URL, TEST_S3_ENDPOINT/TEST_S3_ACCESS_KEY/TEST_S3_SECRET_KEY gesetzt) → alle Pakete ok, inkl. neuem internal/ingestiontestgate
Keine Regression.
Ergebnis
QA-02 erfüllt Akzeptanzkriterium 1–3 mit echten, ausgeführten Nachweisen; Pflichtprüfung 3 (Zweitreview) bleibt strukturell offen, siehe Abschnitt oben — analog zu ING-10 und QA-04 im Entscheidungs- verlauf vermerkt. Freigeschaltet: QA-09 (zusammen mit QA-05/QA-06/ QA-08).