Sync

Opt-in-Telemetrie-Export an einen OTLP-Endpunkt, den du selbst kontrollierst.

Standardmäßig verlässt nichts deinen Rechner

Jeder andere CodeBurn-Befehl liest lokale Dateien und schreibt lokale Ausgaben. sync ist der einzige Befehl, der überhaupt etwas irgendwohin sendet, und er tut nichts, bis du sync setup gegen einen Endpunkt ausführst und einen Login im Browser abschließt. Gesendet werden Token-Zahlen, Kosten, Modelle und Projekte, niemals Prompts oder Code. Diese Funktion ist in der Preview, das Protokoll kann sich zwischen Releases ändern.

Einrichtung

codeburn sync setup https://otel.example.com

Das Setup holt ein Discovery-Dokument vom Endpunkt, um dessen OIDC-Issuer, Client-ID und Traces-Pfad zu erfahren, und führt dann gegen diesen Issuer einen Authorization-Code-Login mit PKCE in deinem Browser aus. Der Refresh-Token wird im Schlüsselbund des Betriebssystems abgelegt, sofern vorhanden (macOS Keychain, secret-tool, Windows DPAPI), ersatzweise in einer Datei mit Rechten 0600. Die nicht geheime Konfiguration landet in ~/.config/codeburn/sync.json.

Senden

codeburn sync push                       # die letzten 7 Tage
codeburn sync push --since 30d           # ein größeres Zeitfenster
codeburn sync push --dry-run             # zeigen, was gesendet würde
codeburn sync push --attribution         # zusätzlich Git-Attribution-Spans senden
FlagBeschreibung
--since <period>today, 7d, 30d, month oder all (Standard 7d; all ist auf 6 Monate begrenzt)
--dry-runMeldet, was gesendet würde, ohne es zu senden
--attributionSendet zusätzlich die Zuordnung Session→Commit und PR-Links, das heißt normalisierte Repo-Remotes und Commit-SHAs erreichen den Endpunkt

Die Calls werden in OTLP-Spans umgewandelt und in Batches an den Traces-Pfad aus dem Discovery-Dokument gepostet. Ein lokales Sent-Ledger sorgt dafür, dass ein wiederholter Push nur überträgt, was noch nicht akzeptiert wurde, und ein Push, der rate-limited oder unterbrochen wird, setzt beim nächsten Lauf fort. Ein unvollständiger Push endet mit einem Exit-Code ungleich null, damit Cronjobs das erkennen können.

Automatischer Sync

codeburn sync auto enable --cadence daily            # gibt die Offenlegung aus, speichert nichts
codeburn sync auto enable --cadence daily --accept  # Zustimmung, dann einplanen
codeburn sync auto status                           # Takt, Zustimmung, letzte Versuche
codeburn sync auto disable                          # Kill-Switch

sync auto ist opt-in, und die Zustimmung erfolgt einmalig. enable gibt zunächst die vollständige Offenlegung aus: jedes ausgehende Feld mit seiner Bedeutung, das Ziel, den Takt, den 7-Tage-Scan-Bereich und ob der Arbeitsabgleich enthalten ist. Ohne --accept wird nichts gespeichert und nichts gesendet. Die Zustimmung wird als Fingerabdruck über genau diese Bedingungen erfasst, sodass der geplante Lauf, falls sich später etwas davon ändert, eine Quittung schreibt und dich bittet, erneut zuzustimmen, statt unter Bedingungen zu senden, die du nie gesehen hast.

--cadence akzeptiert daily oder hourly, und --attribution bezieht Daten aus dem Arbeitsabgleich ein, aber nur, wenn dem zugestimmt wurde. Der geplante sync auto run sendet über denselben Pfad wie ein manueller sync push. Jeder automatische Versuch, gesendet oder übersprungen, wird in eine Append-only-Quittungsdatei neben der Sync-Konfiguration geschrieben. macOS installiert einen LaunchAgent; andere Plattformen geben dir eine Crontab-Zeile zum Hinzufügen aus. sync auto disable entfernt den Zeitplan und stoppt jegliches automatisches Senden sofort, lässt das manuelle sync push aber unangetastet.

Status und Abbau

codeburn sync status             # Endpunkt, Issuer, Auth-Status, letzter Sync
codeburn sync logout             # Token widerrufen und Zugangsdaten entfernen
codeburn sync reset --confirm    # das Sent-Ledger leeren

logout widerruft den Token beim Identity Provider, sofern dieser einen Revocation-Endpunkt anbietet, und löscht dann die gespeicherten Zugangsdaten sowie die Sync-Konfiguration. reset leert das Sent-Ledger, sodass der nächste Push alles im Zeitfenster erneut sendet; --confirm ist dafür erforderlich.