# Öffentliche Inhalte vor der Übertragung prüfen Der öffentliche Snapshottransport ist experimentell und standardmäßig aus. Ein privater lokaler Snapshot löst keine Veröffentlichung aus. Der private Ciphertexttransport ist ein separater Workflow; seine Schlüssel, Memberships und vollständigen privaten Historien sind kein Public-Exportformat. ## Vorschau und ausdrückliche Bestätigung Vor jedem neuen CLI-Push erst den vollständigen Export einfrieren und prüfen: ```sh mf public-preview --workdir PROJECT --origin ORIGIN --owner-key OWNER_PUBLIC --device-data DEVICE_KEYS --delegation CERT --allow-public --snapshot-only ``` `--snapshot-only` gilt für die erste Veröffentlichung; ältere private Historie bleibt ausgeschlossen. Spätere Vorschauen lassen das Flag weg und zeigen die gesamte ausgewählte öffentliche Historie. Die JSON-Ausgabe enthält: - den exakten lokalen Snapshot-HEAD, Ziel-Origin, Owner und Public-Repo-ID; - alle ausgewählten DOP-Objekt-IDs und Dateipfade samt Gesamtumfang; - vollständige Commit-Metadaten einschließlich Nachrichten, Authorclaims, Zeitstempel und Eltern; - die signierten Import-Metadaten, Sichtbarkeit `public`, Policyrevision1 und `discovery:false`; - den Digest dieser vollständigen gebundenen Vorschau und die Rückrufwarnung. Dateinamen und Hashes ersetzen keine inhaltliche Prüfung auf unbekannte Secrets. Bekannte Schlüsseldateinamen werden bereits vor einem Upload abgelehnt. Alle hochgeladenen Public-Objekte können öffentlich lesbar sein, auch wenn noch kein Ref auf sie zeigt. Fremde Kopien lassen sich später nicht zuverlässig löschen. Erst nach der Prüfung den lokal erhaltenen Digest ausdrücklich übergeben: ```sh mf push --workdir PROJECT --origin ORIGIN --owner-key OWNER_PUBLIC --device-data DEVICE_KEYS --delegation CERT --allow-public --snapshot-only --expected-exposure REVIEWED_DIGEST ``` Die CLI verlangt einen kanonischen SHA256-Digest vor einem Verbindungsaufbau. Beim Push berechnet der Client die Vorschau erneut aus dem eingefrorenen Intent und prüft Digest und lokalen HEAD vor Refabfrage oder Objektupload. Ein falsches Ziel, veränderte Metadaten oder ein neuer lokaler Snapshot erfordern neue Prüfung. Der Digest ist eine lokale Bestätigung, keine vom Peer gelieferte Autorität. ## Lokale Seiteneffekte und Abbruch Die Vorschau stellt zunächst eine Verbindung her, um ausschließlich die öffentliche Zielkonfiguration zu prüfen. Sie lädt keine ausgewählten Projektobjekte hoch. Lokal erzeugt sie jedoch konvertierte Cacheobjekte, Importsignaturen und einen persistenten eingefrorenen Pushintent. Sie ist deshalb kein schreibfreier Vorgang. Wiederholung derselben Vorschau verwendet dieselben eingefrorenen Bytes und Signaturen. Wenn der lokale HEAD danach geändert wurde, wird der alte Intent nicht still auf neuere Arbeit umgebogen. Bewusst abbrechen, dann erneut prüfen: ```sh mf sync-abort --workdir PROJECT --origin ORIGIN --owner-key OWNER_PUBLIC ``` Abbruch funktioniert offline, behält Snapshots und Cache und ruft bereits hochgeladene öffentliche Daten nicht zurück. Ein Fehler nach einem früheren Upload verlangt die Prüfung von lokalem Pending-State und entferntem Ref. ## Grenzen Diese Freigabe gilt ausschließlich für expliziten öffentlichen Inhaltstransport. Discovery-Metadaten werden separat durch `publish` angekündigt; die Vorschau sendet kein Discovery-Event. `unlisted` und `intranet` werden durch diesen Vertrag nicht aktiviert. Ein späteres Unlisted-Angebot muss seine öffentliche Lesbarkeit ausdrücklich erklären; ein Intranetmodus benötigt eigene Adress- und Zugriffspolitik. Ein Registrylabel schaltet keinen Transport frei. Die Bibliothek erhält den älteren expliziten `AllowPublic`-API-Pfad zur Kompatibilität. Neue CLI-, Browser- und Queueabläufe müssen die Bestätigung über `ExpectedExposure` verwenden. Eine automatische Queue und ein Browser-Veröffentlichungsformular sind noch nicht Teil dieses CLI-Pakets.