# Abnahmebericht – Vendoo Production Updater 3.2

## Anlass

Die Updater-2.x-Reihe verwendete eine destruktive Kopierstrategie: Die geklonte Git-Arbeitskopie wurde geleert und anschließend über Ausschlussregeln aus dem Paket neu befüllt. Dadurch konnten Quell- und Laufzeitdaten nicht zuverlässig unterschieden werden. Der konkrete Fehler war das fehlende `db/schema.sql` im Auslieferungspaket beziehungsweise in der vorbereiteten Arbeitskopie.

## Architekturkorrektur

Updater 3.2 ersetzt diesen Mechanismus vollständig:

- keine Leerung der geklonten Baseline,
- SHA-256-Manifest aller Release-Dateien,
- Pflichtdateien werden vor jedem Test geprüft,
- Overlay statt Vollersetzung,
- Löschungen ausschließlich explizit über `removedFiles`,
- Hashprüfung vor und nach jedem Kopiervorgang,
- Sitzungen aus 2.x werden verworfen,
- separater v3-Release-Branch,
- vollständiger Windows-Releasevertrag in GitHub Actions.

## Pflichtdateien

Der Release wird unter anderem blockiert, wenn eine dieser Dateien fehlt:

- `db/schema.sql`
- `lib/db.mjs`
- `server.mjs`
- `bootstrap.mjs`
- `package.json`
- `package-lock.json`
- Updater Preflight, UI, Host und Worker

## Prüfungen

- Release-Manifest-Gate mit Manipulations- und Missing-File-Test
- reales Overlay des vollständigen Release-Manifests auf eine Git-Baseline
- Baseline-Erhalt ohne nicht deklarierte Löschungen
- vollständige Vendoo-Gates in getrennten Blöcken
- Datenbankmigrationen
- SQLite-Handle-Cleanup
- Module, Capabilities, Security, Identity, Katalog und Production Operations
- Windows-PowerShell-Parservertrag
- Windows-CI mit vollständigem `npm run verify:all`
- manifestbasierter GitHub-Release-Builder

## Sicherheitsgrenze

Der Updater verändert `main`, Coolify und die Produktionsinstanz erst nach grünen lokalen Tests und grünen GitHub-Checks. `/app/data`, Datenbanken, Uploads, Secrets und Backups sind nicht Bestandteil des Release-Manifests.

## Korrektur 3.2

- `release-manifest.json` wird nach dem Payload als eigene Steuerdatei kopiert und bytegenau geprüft.
- Das Zielrepository darf unveränderte Baseline-Dateien enthalten; manifestierte Dateien bleiben vollständig hashverbindlich.
- Die Löschung der Steuerdatei über `removedFiles` ist verboten.
