feat: add privacy router and zero-cost safeguards

This commit is contained in:
2026-07-30 17:54:06 +02:00
parent 570e7fa153
commit 286d96da33
8 changed files with 531 additions and 13 deletions
+20 -9
View File
@@ -70,6 +70,14 @@ Rootserver:
der Windows Credential Locker verwendet.
- Secret-CLI: `javis secrets set gemini`, `status` und `delete gemini`; Setzen
verwendet verdeckte Eingabe und kein Befehl gibt den Schlüsselwert aus.
- Lokaler Datenschutzrouter klassifiziert jeden späteren Cloudaufruf konservativ
als `allowed`, `ask` oder `never`; `never` kann auch durch einen ausdrücklichen
Cloudwunsch nicht überstimmt werden.
- Nullkosten-Vorgaben und lokale Schutzgrenzen sind zentral konfiguriert:
Gemini standardmäßig deaktiviert, `free_only = true`, keine bestätigte
Billing-Freiheit ohne Pascals lokale Bestätigung, höchstens ein Retry.
- Provider-Nutzung wird separat in SQLite ausschließlich als technische Metadaten
protokolliert; Prompts, Antworten und Secrets werden dort nicht gespeichert.
## Aktuelle Architektur
@@ -115,6 +123,8 @@ Rootserver:
Auth-Keys, GA-SDK, Fehlercodes und Datenschutzbedingungen geprüft und unter
`docs/GEMINI_PROVIDER.md` kompakt dokumentiert.
- Betriebssystemgebundenen Secret-Provider und isolierte Fake-Backend-Tests ergänzt.
- Datenschutzrouter, minimale Cloud-Kontextauswahl, strikte Nullkosten-Defaults,
lokale Tages-/Größenlimits und metadatenbasiertes Provider-Audit ergänzt.
## Aktuelle Tests
@@ -129,7 +139,8 @@ Letzter bestätigter Projektstand:
- uv-Lock und `uv sync --dev`: bestanden
- Python in `.venv`: 3.12.13
- Ruff in `.venv`: 0.16.0
- Unit-Tests: 18 bestanden, davon 5 für Secret-Speicher und Secret-CLI
- Unit-Tests: 30 bestanden, davon 8 für Datenschutzrouting und Kontextminimierung,
3 für Nullkosten-/Limitkonfiguration sowie 1 für das metadatenbasierte Audit
- Ruff Lint: bestanden
- Ruff Formatprüfung: bestanden
@@ -171,6 +182,7 @@ Abnahmestatus:
- Feature-Dokumentation: `5d567e5`
- lokaler Merge nach `main`: `f3d6dfb`
- geprüfter und gepushter Abschlussstand vor diesem Handoff-Update: `0a550e6`
- Secret-Provider: `570e7fa`
- `origin` verwendet HTTPS
- kein Force-Push und keine umgeschriebene Historie
@@ -190,7 +202,8 @@ Abnahmestatus:
- Startmechanismus für Ollama ist noch bewusst manuell und nur pro Prozess konfiguriert
- Antworten werden noch nicht gestreamt; Sitzungen besitzen noch keine Titel oder Suche
- genauer späterer Obsidian-Schreibbereich ist nicht freigegeben
- endgültiger Secret-Provider ist offen; lokale Klartext-XML wäre nur restriktiv geschützt und Git-ignoriert zulässig
- normaler Secret-Provider ist festgelegt: Betriebssystem-Keyring; eine
Klartext-XML wird nicht für API-Schlüssel verwendet
- Google-Quoten bleiben projektabhängig und müssen in AI Studio geprüft werden;
lokale Limits sind nur zusätzliche Schutzgrenzen
- Gaming-PC zeigt derzeit nur 8 statt 16 logische CPU-Prozessoren; Ursache ungeklärt
@@ -211,14 +224,12 @@ Abnahmestatus:
## Nächster sinnvoller Auftrag
Als separates nächstes Featurepaket auf neuem Branch:
Auf dem bestehenden Feature-Branch als nächstes einzelnes Arbeitspaket:
1. offizielle aktuelle Gemini-Free-Tier-Modelle und Kontingente neu prüfen
2. Datenschutzrouting `allowed`/`ask`/`never` vor jedem Cloudaufruf erzwingen
3. Gemini als kostenlosen bevorzugten Provider und Ollama als lokalen
Datenschutz-/Offline-/429-Fallback implementieren
4. `free_only = true`, keine Billing-Aktivierung und alle geforderten Erfolgs-,
Key-, 429-, Netzwerk-, Fallback- und Datenschutztests nachweisen
1. offiziellen `google-genai`-Client anbinden
2. Gemini-Erfolg sowie fehlenden/ungültigen Schlüssel, 429, Netzwerkfehler und
höchstens einen Retry vollständig mit Test-Doubles prüfen
3. noch keine echte Cloudanfrage ausführen und noch nicht nach `main` mergen
Keinen API-Key in Chat, Git, Obsidian, Logs oder Dokumentation übernehmen.