Recovery, Sicherheit und Companion¶
Dokumentierter Stand:
mainbei Commitf7fe401caa7891ad8aa64ae57dfbf678bde1781fvom 21. Juli 2026. Einzelne Details können durch spätere Änderungen überholt sein.
Recovery-Modell¶
Veränderungsbereiche, Profile und Counter¶
flowchart TD
RP[Recovery-Profil der Person] --> A1[Veränderungsbereich]
RP --> A2[weiterer Bereich]
A1 --> C1[Counter]
A1 --> C2[Counter]
A2 --> C3[Counter]
U[Urge oder Trigger] --> A1
U --> A2
Ein Counter gehört genau einem Veränderungsbereich. Ein Urge oder Trigger kann mehreren Bereichen zugeordnet sein. Allgemeine Tagesdaten werden nicht pro Profil dupliziert.
Counterlogik¶
Counterstände werden nicht täglich hochgeschrieben. Sie ergeben sich aus einem Start- oder Resetzeitpunkt und der aktuellen Zeit. Ein Reset entsteht nur durch eine explizite, bestätigte Aktion oder einen als Rückfall gespeicherten Urge.
Urges und Trigger¶
- Trigger und Urges sind getrennte Ereignisse.
- Ab Urge-Stärke 4 werden Grund, Reaktion und Ergebnis benötigt.
- Ein Rückfall kann mehrere Counter atomar zurücksetzen.
- Ein gespeicherter Tag ohne Urge ist in bestimmten Recovery-Auswertungen ein echter Nullwert; ein völlig fehlender Tag bleibt unbekannt.
Lebensrad-Interpretation¶
Recovery im Lebensrad ist kein Abstinenz-Counter. Es ist ein aktueller, verfallender Score aus Recovery-bezogenen Feldern, Urges, Ergebnissen und Triggern innerhalb des 28-Tage-Fensters.
Quellen¶
src/recovery-profile.jssrc/services/tracking-service.jssrc/features/analysis/radar-score.jsdocs/PRODUCT.md
Sicherheit und Datenschutz¶
Datenfluss auf Android¶
flowchart LR
APP[Steady App] --> DB[SQLite Records]
KEY[Android Keystore] --> ENC[AES-256-GCM]
APP --> ENC --> DB
APP --> TOKEN[separater Token-Speicher]
KEY2[separater Keystore-Schlüssel] --> TOKEN
Sicherheitsgrenzen¶
| Bereich | Schutz |
|---|---|
| Trackingdaten | pro Record AES-256-GCM in app-privater SQLite-Datenbank |
| Schlüssel | nicht exportierbar im Android Keystore |
| Provider-Tokens | separater Keystore-gestützter Speicher |
| Companion-Memory | verschlüsselte private Datei |
| Screenshots | standardmäßig blockiert |
| App-Zugriff | optionale Gerätesperren-Authentifizierung |
| Android-Systembackup | deaktiviert |
Portable Backups¶
Portable Backups werden mit einem aus der Benutzerpassphrase abgeleiteten Schlüssel verschlüsselt:
flowchart LR
P[Passphrase] --> K[PBKDF2-HMAC-SHA-256]
K --> E[AES-256-GCM]
DATA[Backup-Payload] --> E --> FILE[verschlüsselte Datei]
Das Passwort wird nicht gespeichert und kann nicht zurückgesetzt werden.
Was bewusst nicht enthalten ist¶
- keine Telemetrie
- kein Benutzerkonto
- kein Cloud-Sync
- keine Tokens in Backup, Logs oder Excel
- keine persönlichen Demo-Daten im Repository
Bedrohungsmodell¶
Die Verschlüsselung schützt ruhende Daten. Ein entsperrtes, gerootetes oder anderweitig kompromittiertes Gerät liegt außerhalb dieses Schutzmodells. Nach einer bewussten Übertragung an einen externen KI-Anbieter gelten außerdem dessen Aufbewahrungsregeln.
Quellen¶
AI Companion¶
Schreibgeschützte Architektur¶
flowchart LR
DATA[Trackingdaten] --> CTX[companion-context.js]
CTX --> SNAP[read-only Snapshot]
SNAP --> SVC[companion-service.js]
SVC --> P1[Lokale KI]
SVC --> P2[Private Endpoint]
SVC --> P3[Cloud Endpoint]
P1 & P2 & P3 --> VAL[Ausgabe validieren]
VAL --> CHAT[Chatnachricht]
VAL --> MEM[optionale lokale Memory-Vorschläge]
MEM -. kein Schreibpfad .-> DATA
Der Provider erhält keinen Datenbankzugriff und keine Tools zum Ändern von Check-ins, Countern, Aufgaben oder Einstellungen.
Providerwahl¶
- aktivierte und konfigurierte Endpunkte werden nach Priorität geprüft,
- externe Endpunkte benötigen eine separate Datenfreigabe,
- Fallback erfolgt nur bei erlaubten technischen Fehlern,
- ein lokaler Fehler darf nicht stillschweigend Daten in die Cloud senden.
Kontext¶
Der Kontext kann enthalten:
- sparse Messreihen und Feldschema
- Counter- und Reset-Historie
- dynamische Ereignisse
- Aufgabenübersichten
- Monatsaggregate
- ausgewählte Freitexte
- lokale, bestätigte Erinnerungen
Ein Coverage-Manifest beschreibt, was vollständig oder gekürzt enthalten war.
Deterministische Sicherheitsgrenze¶
Bestimmte akute Hochrisikoformulierungen werden vor einem Provideraufruf durch feste Regeln geprüft. Bei einem Treffer wird eine lokale, festgelegte Antwort verwendet und die Nachricht nicht an den Provider gesendet.
Quellen¶
docs/AI-COMPANION.mdsrc/companion-service.jssrc/companion-context.jssrc/ai-providers.jssrc/safety.js