Git-Sync
Personas mirror'n zu einem Git-Repository als YAML + Markdown — Pull, Push oder Bidirectional, gescoped auf einen Base-Path, mit Git-Blob-SHA-Konflikterkennung.
Git-Sync macht deine Persona-Bibliothek in Pull Requests sichtbar. Der kanonische Moonborn-State mirror't zu einem konfigurierten Git- Repository; das Repo kann die Source of Truth, der Audit-Trail oder beides sein.
Preview-Status. Domain + Application-Layer sind implementiert (
@moonborn/integration-git); die HTTP-API-Oberfläche + Onboarding- UI landen im nächsten Release. Early-Access-Kunden können es per direkter Integration verdrahten.
Modi
integrations.git.sync_direction:
pull— Git → Moonborn. Repo ist kanonisch.push— Moonborn → Git. Produkt-UI ist kanonisch; Git ist der Audit-Trail.bidirectional— beides, mit Konflikt-Resolution.
Datei-Format
---
id: persona_01H...
name: Mert Aksoy
version: 4
layer: Soul
desire: etwas bauen, was die Welt nicht ignorieren kann
fear: als gewöhnlich gesehen werden
wound: ein Elternteil, der Liebe in Leistung gemessen hat
growth_arc: vom Anerkennungssucher zum Selbstvertrauer
---
Mert verbrachte seine Zwanziger in der Istanbuler Tech-Szene. Seine
erste Firma verkaufte an einen türkischen Telco — ein leiser Exit,
den er immer noch als "okay" beschreibt.Frontmatter trägt die vier strukturierten Layer; der Markdown-Body
ist die narrative Erdung. Pfad: {base_path}/{persona_id}.yaml
(Standard personas/).
Konflikt-Resolution
Last-Write-Wins mit expliziter Ablehnung — kein Three-Way-Merge:
remote_wins— Pulls überschreiben lokale Änderungen.local_wins— Pushes überschreiben Remote.error—PersonaFileSyncConflictErrormit betroffenen Persona- IDs sichtbar machen; der Sync hält an.
Konflikt-Detection ist per Git-Blob-SHA — wir zeichnen auf, was wir zuletzt gesehen haben, re-checken, fail laut, wenn die SHAs nicht übereinstimmen.
Commit-Strategie
integrations.git.commit_strategy:
per_change— ein Commit pro geänderter Persona.batched— ein Commit pro Sync-Lauf.manual— emittiere einen Draft-Batch; Commit ist operator-driven.
Per-Change ist Default für Pushes — jedes Persona-Refine wird ein reviewable Commit. Batched ist nützlich für periodische Syncs.
Unterstützte Provider
| Provider | Status | Config |
|---|---|---|
| GitHub | live | integrations.git.providers.github |
| GitLab | live | integrations.git.providers.gitlab |
| Bitbucket | live | integrations.git.providers.bitbucket |
Jeder Provider ist unabhängig tier-gated unter
integrations.git.providers.*. Alle drei sind Team+.
Was noch landet
- Eine
/v1/integrations/git/*-REST-Oberfläche (aktuell nur direkte Integration). - Produkt-UI-Onboarding für OAuth zu GitHub / GitLab / Bitbucket.
- Ein
git push-Webhook-Receiver, sodass externe Pushes Sync auto-triggern. - Eine Konflikt-Resolution-UI für die
error-Strategie. - Native Audit-Log-Emission pro Sync-Operation (Git-History ist heute der de facto Changelog).
Tarif
Team und höher.
Ehrlicher Scope
Git-Sync ist der Persona-Repository-Mirror. Er ist nicht:
- Ein Workspace-Export-Tool (nutze den Privacy export endpoint).
- Ein Backup-Service (richte Git-Remote-Redundanz selbst ein).
- Ein Code-Review-Tool für die Personas (nutze deinen üblichen PR- Review-Flow).
Weiter
- Setup-Walkthrough: Persona-as-code tutorial.
- Use-Case-Framing: Persona-as-code use case.