Portiert die drei fehlenden Alt-Linien-Commits (CMP-02 DSGVO-Berichte, CMP-06 Vier-Augen-Freigabe, CMP-07 DSGVO-Löschantrag) in den Archive-Neu-Strang.
Der Branch enthält PR #103 (RET-03, 0012) als Basis.
Durchgeführte Prüfungen (Host 204, frischer Klon)
gofmt leer, go vet sauber
go test -p 1 ./... gegen Wegwerf-Cluster: 27 Pakete ok, 0 FAIL, Mandantentrennungstests mit zwei getrennten Datenbanken nicht übersprungen
Migrationen von null: 15 up, 15 down, zweiter up-Lauf ohne Fehler (14 Tabellen)
Kein Merge. Details: docs/ARCHIVE-PORTIERUNG-PRUEFPROTOKOLL.md
Portiert die drei fehlenden Alt-Linien-Commits (CMP-02 DSGVO-Berichte, CMP-06 Vier-Augen-Freigabe, CMP-07 DSGVO-Löschantrag) in den Archive-Neu-Strang.
Der Branch enthält PR #103 (RET-03, 0012) als Basis.
## Durchgeführte Prüfungen (Host 204, frischer Klon)
- gofmt leer, go vet sauber
- go test -p 1 ./... gegen Wegwerf-Cluster: 27 Pakete ok, 0 FAIL, Mandantentrennungstests mit zwei getrennten Datenbanken nicht übersprungen
- Migrationen von null: 15 up, 15 down, zweiter up-Lauf ohne Fehler (14 Tabellen)
Kein Merge. Details: docs/ARCHIVE-PORTIERUNG-PRUEFPROTOKOLL.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick
added 10 commits 2026-09-21 22:28:57 +02:00
- migrations/0008_legal_hold_destruction: legal_holds (historisiert,
Partial-Unique-Index gegen doppelte aktive Sperre), destruction_log
(append-only, per Postgres-Trigger gegen UPDATE/DELETE geschuetzt)
- archive/internal/deletionworkflow: SetLegalHold (Begruendungspflicht),
ReleaseLegalHold (Aufheben selbst protokolliert, keine Loeschung der
Zeile), ReleaseExpired (Freigabeprozess active->expired, keine
Sofortloeschung, Sperre wird respektiert), Destroy (verlangt
vorherigen expired-Status, prueft Sperre erneut, transaktional mit
Protokolleintrag)
- 6 Tests, alle Pflichtpruefungen real bestanden (Sperre widersteht
Loeschversuch, Protokoll real unveraenderlich per Trigger, Aufheben
real protokolliert)
- Migration real auf dms_tenant_test angewendet
Pruefungen siehe archive/docs/RET-03-PRUEFPROTOKOLL.md
- migrations/0009_data_subject_ref: additive nullable Spalte auf
retention_objects, schliesst die Luecke fuer 'betroffene Person' in
RET-01
- retention.RegisterObjectForSubject: NEUE additive Funktion, RegisterObject
selbst unveraendert (kein Diff, keine Produktionsaufrufer betroffen)
- archive/internal/dpreport: SubjectReport (Auskunftsbericht),
ProcessingOverview (Verarbeitungsuebersicht, statisch gepflegte
Zweck/Rechtsgrundlage je Objekttyp), WriteSubjectReportCSV
- Mandantentrennung strukturell durch Modell C (ein Pool pro Tenant),
real mit zwei physisch getrennten Tenant-DBs bewiesen (tenant_acme/
tenant_globex), nicht nur behauptet
- 4 Tests, alle Pflichtpruefungen real bestanden
- Migration real auf dms_tenant_test angewendet
Pruefungen siehe archive/docs/CMP-02-PRUEFPROTOKOLL.md
- migrations/0010_deletion_requests: speichert nur den Token-Hash,
nie das Token selbst
- archive/internal/deletionapproval: RequestDeletion (einmaliges
Klartext-Token), ConfirmAndExecute (FOR UPDATE-Lock, andere Person
als requester, zeitkonstanter Tokenvergleich via subtle.ConstantTimeCompare,
ruft danach genau einmal deletionworkflow.Destroy (RET-03) auf)
- 4 Tests real bestanden, inkl. echtem Nebenlaeufigkeits-Test (zwei
echte Goroutinen, genau 1 Erfolg + 1 ErrAlreadyExecuted, genau ein
destruction_log-Eintrag)
- Migration real auf dms_tenant_test angewendet
Pruefungen siehe archive/docs/CMP-06-PRUEFPROTOKOLL.md
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Portiert die drei fehlenden Alt-Linien-Commits (CMP-02 DSGVO-Berichte, CMP-06 Vier-Augen-Freigabe, CMP-07 DSGVO-Löschantrag) in den Archive-Neu-Strang.
Der Branch enthält PR #103 (RET-03, 0012) als Basis.
Durchgeführte Prüfungen (Host 204, frischer Klon)
Kein Merge. Details: docs/ARCHIVE-PORTIERUNG-PRUEFPROTOKOLL.md
🤖 Generated with Claude Code
Pull request closed