reconcileAfterRestore((bool) $this->option('accept-unsigned')); $this->line('Tombstone-Export: '.match ($result['export_signature']) { 'valid' => 'Signatur gültig.', 'unsigned' => 'ohne Signatur — auf Anweisung (--accept-unsigned) verwendet.', 'unsigned_refused' => 'ohne Signatur — verworfen. Nur für einen Export von vor dem 29.09.2026 mit --accept-unsigned wiederholen.', 'invalid' => 'Signatur ungültig — Export verworfen, nur Datenbank-Tombstones abgeglichen.', default => 'nicht vorhanden — nur Datenbank-Tombstones abgeglichen.', }); $this->info(sprintf('Abgleich: %d Einträge erneut als gelöscht markiert, %d Dateien entfernt, %d fehlgeschlagen.', $result['re_tombstoned'], $result['files_removed'], $result['failed'])); if ($result['conflicts'] > 0) { $this->error(sprintf('%d Export-Zeile(n) passen nicht zur Datenbank (gleiche ID, anderer Payload) — nicht angefasst, bitte im Log prüfen.', $result['conflicts'])); } $this->warn('Orphan-Sweep ausgesetzt: jetzt archive:reregister ausführen, danach archive:sweep-orphans --resume.'); return $result['failed'] > 0 || $result['conflicts'] > 0 ? self::FAILURE : self::SUCCESS; } }