retain_until wird 1:1 aus beiden Altsystemen in das generische Retention-Objektmodell (archive/internal/retention) uebernommen, ohne Neuberechnung. Fund: RET-01 hatte bisher nur retention_class+assigned_at, kein retain_until-Feld -- neue nullable Spalte retention_objects.retain_until (migrations/0017), neue Funktionen SetRetainUntil/RetainUntil (reines UPDATE/SELECT, keine Ableitung aus Klasse/Zeit). Neues Paket archive/internal/retentionmigration.\n\nPruefungen (echt durchgefuehrt, synthetische Fixtures):\n- TestMigrateAll_PreservesFutureRetainUntilExactly (50 Objekte) PASS\n- TestMigrateAll_ResultIndependentOfInjectedNow: zwei Laeufe mit now=2026 vs now=2099 liefern identisches Ergebnis -- echter Nachweis PASS\n- TestMigrateAll_ObjectsWithoutSourceDeadlineStayWithoutOne PASS\n- Migration 0017 up/down real verifiziert\n- Bestehende retention-Tests weiterhin gruen, go vet clean\n\nProtokoll: archive/docs/TAR-01-PRUEFPROTOKOLL.md\n\n🤖 Generated with Claude Code
retain_until wird 1:1 aus beiden Altsystemen in das generische Retention-Objektmodell (archive/internal/retention) uebernommen, ohne Neuberechnung. Fund: RET-01 hatte bisher nur retention_class+assigned_at, kein retain_until-Feld -- neue nullable Spalte retention_objects.retain_until (migrations/0017), neue Funktionen SetRetainUntil/RetainUntil (reines UPDATE/SELECT, keine Ableitung aus Klasse/Zeit). Neues Paket archive/internal/retentionmigration.\n\n**Pruefungen (echt durchgefuehrt, synthetische Fixtures):**\n- TestMigrateAll_PreservesFutureRetainUntilExactly (50 Objekte) PASS\n- TestMigrateAll_ResultIndependentOfInjectedNow: zwei Laeufe mit now=2026 vs now=2099 liefern identisches Ergebnis -- echter Nachweis PASS\n- TestMigrateAll_ObjectsWithoutSourceDeadlineStayWithoutOne PASS\n- Migration 0017 up/down real verifiziert\n- Bestehende retention-Tests weiterhin gruen, go vet clean\n\nProtokoll: archive/docs/TAR-01-PRUEFPROTOKOLL.md\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)
retain_until aus DOK-01/MAI-02-migrierten Kernobjekten 1:1 in das
generische Retention-Modell (RET-01) uebernehmen, ohne Neuberechnung
aus dem Migrationsdatum.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
retain_until wird 1:1 aus beiden Altsystemen in das generische Retention-Objektmodell (archive/internal/retention) uebernommen, ohne Neuberechnung. Fund: RET-01 hatte bisher nur retention_class+assigned_at, kein retain_until-Feld -- neue nullable Spalte retention_objects.retain_until (migrations/0017), neue Funktionen SetRetainUntil/RetainUntil (reines UPDATE/SELECT, keine Ableitung aus Klasse/Zeit). Neues Paket archive/internal/retentionmigration.\n\nPruefungen (echt durchgefuehrt, synthetische Fixtures):\n- TestMigrateAll_PreservesFutureRetainUntilExactly (50 Objekte) PASS\n- TestMigrateAll_ResultIndependentOfInjectedNow: zwei Laeufe mit now=2026 vs now=2099 liefern identisches Ergebnis -- echter Nachweis PASS\n- TestMigrateAll_ObjectsWithoutSourceDeadlineStayWithoutOne PASS\n- Migration 0017 up/down real verifiziert\n- Bestehende retention-Tests weiterhin gruen, go vet clean\n\nProtokoll: archive/docs/TAR-01-PRUEFPROTOKOLL.md\n\n🤖 Generated with Claude Code