trusted-peer-paths validiert cloud-sichere Pfadmetadaten und erzeugt einen
deterministischen Pull-Vorbereitungsbeleg. Das Modul ist ausdrücklich kein
Transfer-Client. Es veröffentlicht keine Registry, öffnet keine
Netzwerkverbindung, startet kein SSH/SFTP, liest keine referenzierte
Credential-, Key-, Signatur- oder Known-Hosts-Datei, kopiert keine Bytes und
legt kein Ziel an.
Der Vertrag trennt Pfadmetadaten von Inhalten:
- Eine Registry darf einen exakt freigegebenen SFTP-Pfad enthalten.
- Jeder Eintrag trägt
metadata_type=path-locationundcontent_included=false. - Credential-Werte, Dateiinhalte, private Keys, Tokens und Passwörter werden abgelehnt.
- Signaturreferenz, Payload-Digest und Known-Host-Pin sind Metadaten. Sie beweisen nicht, dass ein externer Verifier oder SSH-Client sie verwendet hat.
Das ist die V4-Preflight-Grenze. Eine echte Zwei-Host-Aktivierung bleibt eine separate, geprüfte Änderung.
Der Validator leitet genau einen Lesepfad ab:
<YARD>/hosts/<TRUSTED_HOST_ID>/trusted-peer-paths/registry.json
Die host_id im Dokument muss zum Slot passen. Die CLI kennt weder
publish, pull, --apply noch --output; Ergebnisse erscheinen nur auf
stdout. Diese Capability ändert daher weder den Yard noch einen fremden Slot.
Die lokale Policy liegt außerhalb des Yards und enthält ausschließlich Trust-Metadaten:
- lokale Host- und Peer-ID;
- exakte Trusted-Host-ID und minimale Revision;
- gepinnte Signaturmethode, Key-ID und Signaturreferenz-URN;
- exakte Remote-Pfad-Allowlist;
- erlaubte Netzlabels
directund/oderprivate-overlay; - Zuordnung Endpoint zu Known-Host-SHA-256-Pin;
- host-lokale Zielroots und Grenzen für Alter/TTL der Registry.
Authentisierungsidentität, Key-Pfad, SSH-Executable und Transferbefehl gehören nicht hinein.
Die Validierung verlangt striktes UTF-8-JSON ohne doppelte Keys, exakte v2-Felder, kanonische IDs, den abgeleiteten Owner-Slot, gültige Revision/Zeit/Expiry, identische lokale Pins für Signaturreferenz und Known-Host-Key, einen passenden kanonischen Payload-Digest, read-only SFTP, ein erlaubtes Netzlabel, eine beim Öffnen unveränderte Dateiidentität und eine exakte lokale Remote-Pfad-Freigabe. Secret-/Content-Felder und erkennbare Secret-Muster blockieren.
Der Digest schützt gegen unbeabsichtigte Dokumentänderungen, authentisiert
aber keinen Publisher. Deshalb meldet der Beleg ausdrücklich
cryptographic_signature_verified=false. Für die Aktivierung ist ein
separat geprüfter Detached-Signature-Verifier Pflicht.
pull-plan verlangt zusätzlich:
- Der lokale Peer steht in
allowed_peer_ids. direct_pullist bereitstrue; das Modul setzt es nie.- Nur
kind=fileist zulässig. - Das Ziel existiert noch nicht, sein Parent existiert, es liegt in einem host-lokalen Allowlist-Root außerhalb des Yards und quert keinen Symlink/Junction/Reparse-Punkt.
- SQLite-Pfade bleiben
database/sqlite,direct_pull=falseund verwendensqlite-transit-sync. - Verzeichnisse bleiben non-direct und brauchen einen separaten Adapter.
Der Beleg ist für dieselbe Registry, Policy und dasselbe Ziel deterministisch und immer nicht ausführbar:
{
"status": "prepared-no-transfer",
"executable": false,
"network_contacted": false,
"file_transfer_performed": false,
"referenced_files_read": false
}trusted-peer-paths validate --config <HOST_LOCAL_CONFIG> --host-id HOST-A
trusted-peer-paths list --config <HOST_LOCAL_CONFIG> --host-id HOST-A
trusted-peer-paths resolve --config <HOST_LOCAL_CONFIG> \
--host-id HOST-A --path-id service-credential-file
trusted-peer-paths pull-plan --config <HOST_LOCAL_CONFIG> \
--host-id HOST-A --path-id service-credential-file \
--destination /host-local/imports/credentials.jsonDie API besteht aus TrustedPeerPathRegistry.validate, list_paths,
resolve und pull_plan. Die Kompatibilitätsmethoden publish und pull
brechen ohne Seiteneffekt ab.
Die Beispiele enthalten bewusst REPLACE_WITH_...-Platzhalter. Sie erfinden
keine operativen Pins oder Keys und scheitern zur Laufzeit, bis unabhängig
verifizierte Werte eingesetzt wurden.
Der optionale trusted-peer-sftp-executor implementiert jetzt die getrennt
prüfbare clientseitige Ausführungsgrenze, ohne diesen Planer zu verändern.
Siehe trusted-peer-sftp-executor.md. Seine
bloße Installation provisioniert, plant oder autorisiert keinen Host.
- Publisher-Key provisionieren und Detached-Signatur mit einem separat geprüften Verifier prüfen.
- Echten SSH-Host-Key-Fingerprint out of band beziehen, lokal pinnen und im gewählten SSH-Client verifizieren.
- Dedizierten Server-Account mit read-only ACL auf exakt freigegebene Pfade einrichten; Schreibzugriff und andere Reads müssen nachweislich scheitern.
- Route
directoderprivate-overlayauswählen, autorisieren und prüfen, ohne die providerneutrale Registry umzubauen. - Authentisierungsmaterial außerhalb des Yards und dieses Moduls provisionieren; der Preflight darf es nie lesen.
- Separaten shell-freien, Strict-Host-Key-, No-Overwrite- und Download-beschränkten Executor samt exakter Hostkonfiguration installieren und reviewen.
- Unmittelbar vor jedem Transfer Registry-Frische, Signatur, Pin, Peer-Allowlist und Zielberechtigungen erneut prüfen.
- Auditierbaren Anti-Replay-State und Transferbelege ergänzen, ohne fremde Slots zu schreiben oder sensible Inhalte in den Yard zu legen.
- Zwei-Host-Negativtests für falschen Pin, stale Registry, gesperrten Pfad, gesperrten Peer, Schreib-/Overwrite-Versuch und Routenausfall bestehen.
- Explizite Aktivierungsfreigabe einholen. Der Planer aktiviert weder
direct_pullnoch einen Transfer; der Executor verlangt für jeden Versuch eine signierte Einmalfreigabe.