KOHAMI Docs
Reference

Invariants

Cette page est la cible des liens produits par le composant <InvariantBadge id="INV-XXX" />. Chaque invariant a un titre H3 avec un anchor lowercased identique à l'identifiant (INV-S01 devient inv-s01).

Pour une vue d'ensemble par famille, voir Introduction Invariants.

Sécurité (S)

inv-s01

Idéation suicidaire détectée, alerte rouge dispatchée en moins de 5 secondes. Mesure : timestamp événement détection vers timestamp alert.created.

inv-s02

Aucun ticket silencieux hors N3. Toute alerte génère un retour vocal au senior et une trace dans alert_trail.

inv-s03

Cascade aidants 3 niveaux maximum, fallback JUWA support N+1 systématique.

inv-s04

Tout signal AVC suspecté gated derrière PO-AVC-VALIDATION-MEDICALE tant que la validation médicale n'est pas reçue.

inv-s05

Bouton d'alerte physique ou virtuel : pas de debounce supérieur à 200 ms, pas d'écran intermédiaire.

inv-s06

Douleur EVA supérieure ou égale à 7 sur 10 déclenche la cascade aidants sans étape supplémentaire.

Consentement (C)

inv-c01

Aucun fait mémorisé sans consentement actif de la catégorie correspondante.

inv-c02

Retrait de consentement effacé en moins de 72 heures (RGPD, droit à l'oubli).

inv-c03

Le consentement biométrique (voix, image) suit l'Article 9 RGPD : opt-in explicite, journal d'usage.

inv-c04

Conservation des transcripts audio sous 24 heures par défaut. Allongement nécessite consentement explicite.

inv-c05

Mémoire long terme Zep : opt-in distinct du consentement court terme.

inv-c06

Pas de profiling automatisé pour discrimination tarifaire (impossible par design).

inv-c07

Latence e2e voix sous 2,5 secondes (budget partagé STT, LLM, TTS).

Périmètre (P)

inv-p01

Aucun croisement de données entre seniors d'une même tablette (multi-utilisateur strict).

inv-p02

Aidants voient les données du senior auquel ils sont rattachés uniquement.

inv-p03

Admin JUWA voit toutes les données mais via dashboard tracé (audit log obligatoire).

inv-p04

Le voice-worker n'accède pas directement à Postgres : passage par REST sécurisé.

inv-p05

RLS Postgres : un senior n'accède qu'à ses propres données, policy USING (user_id = current_setting('app.current_user_id')).

Accessibilité (A)

inv-a01

Police de base supérieure ou égale à 22 px sur tablette (lecture senior).

inv-a02

Contraste WCAG AA minimum, AAA quand mesurable.

inv-a03

Aucun timeout visuel inférieur à 30 secondes sans avertissement vocal.

inv-a04

Lip-sync décalage inférieur à 80 ms (perceptible naturel).

inv-a05

Aucun son brutal supérieur à 70 dB SPL en sortie haut-parleur tablette.

Technique (T)

inv-t01

Toute donnée chiffrée at-rest (Postgres TDE, Object Storage SSE-S3).

inv-t02

Aucune donnée hors UE. Scaleway Paris exclusivement.

inv-t03

Backups Postgres quotidiens, rétention 30 jours, restoration testée mensuellement.

inv-t04

Secrets jamais en clair en repo. Scaleway Secret Manager et injection runtime.

inv-t05

Tout endpoint mutant idempotent ou rate-limité (cf. Gestion d'erreurs).

inv-t06

Logs structurés OTel (Cockpit Mimir, Loki, Tempo). Aucun console.log en prod.

inv-t07b

PII masking, noms et numéros aidants masqués dans les events tablette (anti-shoulder-surfing).