Testpyramide, Abdeckungsziele und verbindliches Security-Merge-Gate
schriftlich festgelegt (dms/docs/QA-01-TESTSTRATEGIE.md). Merge-Gate aus
FDN-07 (check-security-test-coverage.sh) um drei real identifizierte,
tenant-bezogene Pakete erweitert (documentapi, upload, versioning).
Reproduzierbarer, vollstaendig synthetischer Referenzkorpus (PDF, Office,
TIFF-Scan-Ersatz) ueber dms/internal/testcorpus + go run ./cmd/gen-test-corpus,
mit Test, der Formatabdeckung und Parsbarkeit der erzeugten Dateien prueft.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
.gitea/workflows/ci.yml deckt Core-Modul, DMS-Modul und die drei
Frontend-Pakete (shl, dms-browser, pdf-viewer) ab: Build/Vet/Test mit
Testabdeckung, golangci-lint, govulncheck (Go) und npm audit (JS/TS) als
Supply-Chain-Scan, reproduzierbarer Artefakt-Build (zweifacher Build +
cmp). Läuft auf dem bestehenden act_runner (192.168.1.131, aus QA-07).
Neues Merge-Gate dms/scripts/check-security-test-coverage.sh erzwingt
Tests für sicherheitsrelevante Pakete (crypto, storage, downloadapi,
versioningapi, audittrail) als eigener CI-Job vor dem eigentlichen
Testlauf (needs:), mit Selbstbeweis (_selftest.sh), der die Ablehnung bei
fehlenden Tests tatsächlich provoziert statt sie nur zu behaupten.
Offen und im Prüfprotokoll dokumentiert: NEXARCH_DMS_TEST_DB_PASSWORD als
Gitea-Actions-Secret und die Branch-Protection-Regel für main konnten in
dieser Sitzung nicht gesetzt werden (Auto-Mode-Classifier blockiert
schreibende Zugriffe auf Secret-Store und sicherheitsrelevante
Server-/Repo-Einstellungen) - beides erfordert eine einmalige manuelle
Aktion einer berechtigten Person.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Postgres-Jobqueue (processing_jobs, FOR UPDATE SKIP LOCKED), In-Prozess-
Worker-Goroutinen, kein Redis/AMQP. Enqueue mit Idempotency-Key-Dedup,
Dequeue mit Stale-Lock-Wiedervorlage (Absturzsicherheit), Fail mit
arithmetischem Backoff und Dead-Letter-Queue nach erschoepften Versuchen,
RequeueDeadLetter fuer manuelle Wiederholung.
Auf 192.168.1.131 verifiziert: Absturz-Wiedervorlage (Job von einem
"abgestuerzten" Worker nie completed/failed, zweiter Worker holt ihn nach
Ablauf der Sperre erneut), Idempotenz bei Doppelzustellung (gleicher
idempotency_key erzeugt nur 1 Zeile), DLQ-Eintrag manuell wiederholbar.
Vier reale Fehler beim Testen gefunden und behoben: zwei pgx-Typinferenz-
Bugs im SQL-Parameterhandling (toter workerID-Parameter ohne Referenz in
der Query; untypisiertes any statt []string fuer den ::text[]-Cast), sowie
zwei Testinfrastruktur-Bugs (dms_tenant_test sammelte schema_migrations-
Zustand ueber Sitzungen hinweg an, jobqueue-Testfixture raeumte
processing_jobs nicht auf) - neues scripts/reset-test-env.sh + make check
(-p 1) analog Core behoben.
Siehe dms/docs/FDN-04-PRUEFPROTOKOLL.md fuer alle Pruefungsergebnisse.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HhgFcLS8tYMhDJpP74C6AQ