trading-system-docs/tolaria/BACKUP_ARCHITECTURE.md
Red Queen 819fd8a6ff tolaria: Mission 002 B1 Foundation & Backup docs (10 files)
- BACKUP_ARCHITECTURE, STORAGE_MAP, RECOVERY_RUNBOOK
- TRANSFORMATION_BASELINE, DUPLICATE_RESOLUTION_PLAN
- CANONICAL_KNOWLEDGE_PRINCIPLE, SEARCH_ARCHITECTURE_PROPOSAL
- KNOWLEDGE_GRAPH_PRINCIPLE, FORGEJO_TOLARIA_SYNC_PRINCIPLE
- HOST_CONTAINER_DISCOVERY

Fresh Checker PASS (deleg_a19028bc). No productive vault mutation.
2026-08-25 05:21:29 +00:00

72 lines
3.4 KiB
Markdown

# BACKUP ARCHITECTURE — Tolaria Second Brain (Mission 002)
Datum: 2026-08-25 · Red Queen · Status: **UMGESETZT (B1 Foundation)**
> Backup-Strategie für Tolaria. **Git allein ist kein vollständiges Backup** —
> diese Architektur sichert den konsistenten, versionierten und verifizierbaren
> Zustand der kritischen Persistenz.
---
## 1. Was muss gesichert werden (und was nicht)
### SICHERN (kritisch, P1)
- **Vault-Inhalt**: `/app/vault/**` (84 `.md` Dateien) — der kanonische Wissensstand
- **Vault-Git-Metadaten**: `.git/HEAD`, `.git/refs/heads/main`, `.git/logs/HEAD`, `.git/config` — Revisions-Identität (HEAD `69aecf2`)
### OPTIONAL / INFERENCE (P2, bei Host-Zugang)
- Tauri-App-Config `~/.config/com.laputa.app/`, `~/.laputa/`**UNKNOWN**, ohne Container-Shell nicht verifizierbar
### NICHT gesichert werden (rebuildbar, P3)
- App-Source `/app/tolaria` — rebuildbar aus Forgejo (Source of Truth)
- node_modules, Build-Artefakte, Vite-Cache, Temp — aus Source regenerierbar
> **Entscheidung (EVIDENCE):** Die einzigartige, nicht-rebuildbare Persistenz ist der
> **Vault**. App-Source ist im Forgejo-Repo (master) versioniert. App-Config ist
> UNKNOWN und wird als offener Punkt geführt.
## 2. Konsistenzanforderungen
- Backup wird **read-only** aus der Vault-API gezogen → **keine produktive Mutation**
- Während des Snapshots ändert sich der Vault nicht (read-only; kein Schreibkonflikt)
- Manifest erfasst **eine Momentaufnahme** (alle Dateien + Hashes) → konsistenter Zustand
## 3. Backup-Reihenfolge
1. Vault-Dateien (84 .md) + Hashes
2. Vault-Git-Metadaten
3. App-Source (optional, rebuildbar)
## 4. Restore-Reihenfolge
1. **Vault-Dateien** zuerst (kritisch)
2. Git-Metadaten wiederherstellen (falls HEAD-Marker gewünscht)
3. App-Source nur bei vollständigem Neuaufbau (aus Forgejo, nicht aus Backup)
## 5. Integrity Checks
- Jede Datei: **SHA-256** im Manifest
- **Manifest-BACKUP_SHA256**: kryptografischer Hash über alle (Pfad, Hash)-Paare
- **Restore-Verifikation**: alle Dateien neu einlesen + Hash vergleichen (nicht nur "exit 0")
## 6. Backup-Versionierung & Retention
- **Identifier**: `TOLARIA-BACKUP-YYYYMMDD-HHMMSS` (eindeutig, zeitgestempelt)
- **Manifest** enthält: `BACKUP_ID`, `TIMESTAMP`, `SOURCE`, `COMPONENTS`, `FILE_COUNT`, `SIZE`, `HASH_ALGO`, `BACKUP_SHA256`, `RESULT`
- **Retention**: Baseline-Backup wird **dauerhaft** vorgehalten (Pre-Transformation-Anker). Weitere Backups nach Bedarf.
## 7. Speicherbedarf
- Aktuelles Baseline-Backup: **1.7 MB** (454 Dateien inkl. Git-Metadaten)
- Skaliert mit Vault-Wachstum; unkritisch (<10 MB erwartet)
## 8. Failure Modes
| Risiko | Mitigation |
|---|---|
| API nicht erreichbar (Port 5173 down) | Backup fehlschlägt kein partielles Ergebnis; Manifest `RESULT=FAIL` |
| Datei beim Lesen fehlerhaft | Einzeln protokolliert; Hash mismatch `RESULT=FAIL` |
| Manifest-Hash inkonsistent | Independent Verify detects mismatch |
| Secret-Leak | **Keine Secrets im Manifest/Log**; nur Pfade/Hashes/Größen |
## 9. Secrets
- **Keine Secret-Werte** im Manifest, in Logs oder im Backup.
- Env-Variablen des Tolaria-Containers wurden **nicht** ausgelesen (nur lesend, nicht exportiert).
- Backup-Manifest enthält ausschließlich Metadaten (Pfade, Hashes, Größen, Zeitstempel).
---
**Implementiert:** `bin/tolaria_backup.py` (reproduzierbar) + Baseline `TOLARIA-BACKUP-20260825-051420` (454 Dateien, Integrity PASS, Restore PASS).