Zum Inhalt

Recovery, Sicherheit und Companion

Dokumentierter Stand: main bei Commit f7fe401caa7891ad8aa64ae57dfbf678bde1781f vom 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


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

  1. aktivierte und konfigurierte Endpunkte werden nach Priorität geprüft,
  2. externe Endpunkte benötigen eine separate Datenfreigabe,
  3. Fallback erfolgt nur bei erlaubten technischen Fehlern,
  4. 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