7.9 KiB
SYNC.md — must-sync (pull.sh / push.sh)
SoT: Git tip auf ht/Forgejo (hernani/*), nicht grok-all-Pack, nicht ASC-only.
Dieses Set: Profile grok + llm (=combo) + hernani.
Nicht in diesem Set: taler / admin-logs/taler/ (eigenes Profil).
Parties (local crossover): magikoopa · clementine · koopatroopa (plus weitere Hosts unter admin-logs/local/).
Meta-Skripte: $HOME/git/pull.sh · $HOME/git/push.sh · $HOME/git/profiles/*.repos
Agents sollen diese Bäume laufend auf dem gleichen Tip halten (pull oft; push nur mit Freigabe).
1. Schnell: was Agents tun
| Wann | Aktion | Freigabe? |
|---|---|---|
| Session-Start / Host-Wechsel / „sync“ | $HOME/git/pull.sh grok llm hernani |
nein (read/ff) |
| Repo fehlt auf Disk | gleiches pull.sh (cloned + unlock) |
nein |
| Nur Status / Dry-Run | $HOME/git/pull.sh --list grok llm hernani bzw. --dry-run … |
nein |
| Commits hoch | $HOME/git/push.sh grok llm hernani (oder --dry-run) |
ja Push-Freigabe |
| Dirty tree committen | /g bzw. git-worker — kein Push aus Worker |
Commit-Freigabe ≠ Push |
combo ≡ llm (Alias). Nie $HOME/git/dot-grok-enc anlegen — Live-SoT ist flat $HOME/.grok.
2. Wenn Git allein nicht reicht
Reines git pull / git clone reicht oft nicht, weil: Profile-DEST, git-crypt, ff-only-Policy, ACCESS_DENIED, retired grok-all.
A) Clone / Update über Profile (bevorzugt)
$HOME/git/pull.sh grok llm hernani
# optional:
$HOME/git/pull.sh --dry-run grok llm hernani
$HOME/git/pull.sh --list grok llm hernani # zeigt u.a. ACCESS_DENIED
- Existierendes Repo: fetch + ff-only pull (kein stilles Merge).
--force: fetch +reset --hardauf Remote (tracked überschreiben; untracked bleiben). Nur mit Absicht / Freigabe, nie blind auf dirty Work.- Kein
.git: init + fetch + reset, dann Unlock.
B) git-crypt (*-enc und $HOME/.grok)
Nach erfolgreichem Git-Stand kann der Tree noch Ciphertext sein:
cd "$DEST" && git-crypt unlock
# oder: git-crypt status -e # noch encrypted?
| Symptom | Ursache | Fix |
|---|---|---|
Dateien sind Blob/binär / git-crypt status zeigt encrypted |
Key fehlt / nie unlocked | git-crypt unlock mit GPG-Key der Collaborators |
| Unlock schlägt fehl, Tree dirty | Unlock überspringt dirty+already-unlocked Policy in pull.sh | erst commit/stash/clean klären, dann unlock |
| Agent liest Müll / leere Secrets | Unlock vergessen | unlock, dann erneut lesen — nicht raten |
| „Permission denied“ SSH ht | Key/ACL | SSH-Agent laden; ACL auf Forgejo — nicht Pfade erfinden |
C) Push / Divergenz
$HOME/git/push.sh --dry-run grok llm hernani
$HOME/git/push.sh grok llm hernani # nur mit Freigabe
| Farbe/Lage (push.sh) | Bedeutung | Agent |
|---|---|---|
| GREEN | synced / push ok | weiter |
| YELLOW | behind / mergeable | erst pull.sh (ff); diverged → Human |
| RED | conflict / diverged hard | HALT — kein force ohne Freigabe |
| INFO blue | Repo fehlt auf Disk | pull.sh clone |
D) Explizit verboten / retired
- grok-all / pack-push / passphrase-Pack — retired.
magikoopa-unlock-enc.sh unlock→ exit 2. - ASC-Board (
SYNC-TODO.md.asc) optional; Sync läuft über Git-Tip + diese SYNC.md. taler-Profile hier nicht mitziehen (außer Human sagt explizit taler).- Keine Secrets in Klartext-Chat; *enc nur nach unlock lesen.
3. DEST-Übersicht (dieses Set)
Profile grok
| DEST | Remote (kurz) |
|---|---|
$HOME/.grok |
hernani/dot-grok-enc |
$HOME/git/src/_hernani-private/grokd |
hernani/grokd |
Profile llm (= combo)
Alles unter $HOME/git/llm/… laut profiles/llm.repos (configs, knowledge-mirror, work-*-enc, input, control-data-enc, work-logs).
Profile hernani (local crossover — nicht taler)
| DEST-Bereich | Inhalt |
|---|---|
$HOME/git/admin-logs/local/* |
Host admin-logs + *-secrets-enc (amanita, clementine, firecuda, koopa, koopatroopa, magikoopa, vecigate, …) + hernani-common-secrets-enc |
$HOME/git/buerokratie-enc |
Bürokratie *enc |
firefly-Vault-Pfad laut HOSTS: unter shared secrets (admin-secrets-enc/firefly/ bzw. common) — nicht Clem-only Blob; Host-Zeile in $HOME/git/llm/HOSTS.md. SSH Host+Key für firefly braucht Freigabe / ACL, nicht nur Sync-Datei.
4. Dauerbetrieb — Ansätze (llm-controld · grokd · hernanid · …)
Agents halten Tips laufend; dafür gibt es (bzw. sollen) Host-Daemons/ensure-Hooks geben. Nicht verwechseln: Git-Tip-Sync (pull.sh) ≠ Controld-Snapshots ≠ Statusline-Keepalive ≠ Combo-Write-Push.
| Name | Rolle | SoT / Bin | Start-Ansatz | Freigabe? |
|---|---|---|---|---|
| llm-controld | Fleet/Letter-Probes → status.json (Statusline-Daten) |
$HOME/git/llm/llm-configs/bin/llm-controld · DATA llm-control-data-enc |
Mit Tunnel, nicht Boot: Tunnel-Skripte → llm-controld ensure. Nach Unlock ggf. llm-control-data-peel.sh (Doppel-enc). Stats: $HOME/.local/state/llm-controld/ |
ensure ok; dauerhafte Boot-Units nur mit Freigabe |
| grokd | Grok-Statusline keep-alive (ensure-statusline.sh) |
$HOME/git/src/_hernani-private/grokd (Profil grok) |
grokd ensure (auch via ensure-statusline). Optional Scheduler: install-grokd.sh --load — macOS LaunchAgent ai.hernani.grokd; Clementine/Linux user-crontab * * * * * grokd ensure |
Dateien/--link-local ok; --load braucht Freigabe |
| hernanid | Ansatz / Stub: laufend Tip für Profil hernani (admin-logs/local/*, buerokratie-enc) |
noch kein festes Bin — Muster wie grokd: hernanid ensure → $HOME/git/pull.sh hernani (+ unlock laut §2B) |
Gleiches Host-Muster: magikoopa LaunchAgent ai.hernani.hernanid; Clementine crontab hernanid ensure. Bis es existiert: Agents/pull.sh hernani manuell bzw. Session-Start |
Scheduler-Install / --load nur mit Freigabe |
| combo-git-sync | Combo Write-Trees commit+push (OpenPGP+SSH), ≠ Tip-Pull | $HOME/git/llm/llm-configs/bin/combo-git-sync.py · LaunchAgent ai.llm-configs.combo-git-sync-hourly |
install-combo-git-sync-hourly.sh (macOS LaunchAgent / Clem crontab stündlich). Quit-on-conflict → --clear-quit |
Install/Load + jeder Push-Pfad nur mit Freigabe-Policy der Settings |
Agent-Regeln zu Daemons
- Vor Arbeit: wenn Controld/Statusline/Grok nötig →
llm-controld ensure/grokd ensure(billig, Singleton/flock). - Tip-Sync weiter über
pull.sh grok llm hernani— Controld ersetzt das nicht. - Keine neuen LaunchAgents/crontab-Zeilen ohne Freigabe; Soft-Park = Dateien +
ensureon-demand. - Clementine (sysvinit): kein systemctl — user crontab wie in den
install-*.sh. hernanidfehlt noch als Binary: nicht erfinden; Ansatz oben dokumentieren / Human+Clem abstimmen; bis dahin Session-pull.sh.
5. Agent-Pflicht (laufend)
- Vor Arbeit an diesen Bäumen: Tip prüfen (
pull.shodergit status+ behind). - Nach lokalen Commits: Human auf Push ansprechen; kein eigenmächtiger
git push. - Bei Ciphertext / fehlendem Unlock: SYNC.md §2B befolgen, nicht Inhalt erfinden.
- Neuer technischer Ordner in diesem Set: SYNC.md + AGENTS-Verweis auf SYNC.md mitziehen.
- Katalog/Index-Refresh und SSH-Mutationen: nur mit Freigabe.
- Dauerbetrieb: §4 —
ensurenutzen; Scheduler nur mit Freigabe;hernanidals Ansatz bis Binary da ist.
6. Verweise
- Profile:
$HOME/git/profiles/{grok,llm,combo,hernani}.repos - Session Must:
$HOME/.grok/AGENTS.md(Freigabe, §7 Git) - Hosts:
$HOME/git/llm/HOSTS.md - grokd docs:
$HOME/git/src/_hernani-private/grokd/docs/README.md - llm-controld / peel: host skill magikoopa ·
llm-configs/bin/llm-controld·llm-control-data-peel.sh - Diese Datei: neben
AGENTS.mdin jedem technischen Ordner dieses Sets