Commit 26cbb77f authored by Kourser's avatar Kourser
Browse files

Le tableau d'avancement disait le faux dans les deux sens

Un état d'avancement qu'on ne tient pas devient un mensonge lent : d'abord il
oublie ce qui a été fait, puis on cesse de le lire, et enfin on l'écrit pour
rassurer plutôt que pour informer. Celui-ci s'était mis à mentir dans les deux
sens à la fois.

Ce qu'il taisait
  Cinq lots avaient bougé sans que leur ligne suive. Le dossier de préparation
  a gagné les étiquettes, les destinataires de diffusion, les modèles de message
  et le dépôt d'annuaire ; le chat, les messages directs, les groupes hors
  journal et les canaux privés ; la visioconférence, les salles adossées à un
  canal ; la mobilisation, le recensement de sécurité, le ciblage par étiquettes
  et le canal vocal.

Ce qu'il promettait de trop
  L11 était passé au vert la semaine dernière, et c'était trop généreux. Il n'y
  a pas de configuration de distribution : l'application est écrite, elle n'est
  pas distribuée. La nuance n'est pas cosmétique — « fait », pour une
  application mobile, s'entend « installable », et personne ne peut l'installer.

  Le retour au jaune est une correction, pas un recul.

Et une affirmation devenue fausse
  « Un plafond à 2000 » pour les envois de masse : il est à dix mille depuis
  qu'on écrit aussi à ses clients. Le texte dit maintenant pourquoi le
  garde-fou a changé de nature — ce n'est plus le plafond qui protège, c'est le
  décompte qu'on recopie à la main.

Ce qui n'a pas bougé, et qui a été vérifié plutôt que supposé : L1 attend
toujours l'export PDF paginé de la main courante et la vue frise, L5 toujours
l'indexation des PDF. Aucune trace de l'un ni des autres dans le code.

Trois sections complétées au passage : les envois — deux populations, un seul
langage de ciblage, et ce que l'article 34 impose de faire malgré une
désinscription ; le chat — la distinction entre un canal privé, qui reste au
journal, et un groupe, qui n'y entre pas, parce que c'est là qu'on se trompe ;
le heurtoir — le relais sert les deux plateformes, et Google n'a pas
d'équivalent de l'alerte critique d'Apple.

Contrôlé : tous les chemins de fichiers cités dans la carte de structure
existent.

Signed-off-by: default avatarKourser <contact@kourser.bzh>
Co-Authored-By: default avatarClaude Opus 5 <noreply@anthropic.com>
parent cc663d8d
Loading
Loading
Loading
Loading
Loading
+57 −21
Changes for README.md: 57 added lines, 21 removed lines.
Original line number Diff line number Diff line
@@ -14,18 +14,18 @@ l'enregistre intégralement — de manière à pouvoir la rembobiner.
|-----|---------|------|
| **L0** | Socle, conteneurisation, authentification, console root | 🟢 fait |
| **L1** | Noyau de persistance, main courante, rembobinage | 🟡 en cours — noyau, lecture à date, filtres et routes faits ; reste l'export PDF paginé de la main courante (EF-410) et la vue frise, qui suppose une interface |
| **L2** | Dossier de préparation (annuaire, tiers, fiches réflexes, kit) | 🟢 fait |
| **L2** | Dossier de préparation (annuaire, tiers, fiches réflexes, kit) | 🟢 fait — plus les étiquettes, les destinataires de diffusion, les modèles de message et le dépôt d'annuaire depuis un SIRH |
| **L3** | Décisions, actions, points de situation, cockpit | 🟢 fait |
| **L4** | Chat de crise, flux temps réel | 🟢 fait |
| **L4** | Chat de crise, flux temps réel | 🟢 fait — plus les messages directs, les groupes hors journal et les canaux privés |
| **L5** | Gestion documentaire, stockage objet | 🟢 fait — indexation des PDF à venir avec l'aperçu |
| **L6** | Visioconférence, enregistrement, rétention | 🟢 fait côté serveur — les fonctions d'appel (partage d'écran, panneau flottant, repli audio) vivent dans le client |
| **L6** | Visioconférence, enregistrement, rétention | 🟢 fait côté serveur — les fonctions d'appel (partage d'écran, panneau flottant, repli audio) vivent dans le client ; une salle peut s'adosser à un canal et en prendre les droits |
| **L7** | Tableau blanc, modèles, instantanés | 🟢 fait côté serveur |
| **L8** | Mobilisation multicanal, relances, escalade | 🟢 fait |
| **L8** | Mobilisation multicanal, relances, escalade | 🟢 fait — plus le recensement de sécurité, le ciblage par étiquettes et le canal vocal |
| **L9** | Rembobinage complet, dossier de crise, retour d'expérience | 🟢 fait |
| **L10** | Intégration exercice, page d'état, vérificateur, CI, documentation | 🟢 fait côté serveur — application installable, accessibilité et bilinguisme suivent le client |
| **Interface** | Coque, visio flottante, rembobinage, dossier de préparation, console root, tableaux, mobilisation, clôture | 🟢 fait |
| **L11** | Applications mobiles iOS et Android | 🟢 fait — les six gestes du chemin critique (M0 à M3), sur iOS et Android ; le relais sert désormais les deux |
| L12 | Téléphonie entrante, transcription | ⚪ hors d'atteinte sans infrastructure SIP |
| **Interface** | Coque, visio flottante, rembobinage, dossier de préparation, console root, tableaux, mobilisation, clôture | 🟢 fait — plus les canaux, les messages directs, le recensement, les étiquettes, les destinataires et les modèles |
| **L11** | Applications mobiles iOS et Android | 🟡 écrite — les six gestes du chemin critique (M0 à M3), sur iOS et Android, et le relais sert désormais les deux ; reste la distribution sur les magasins, qui n'est pas commencée |
| L12 | Téléphonie entrante, transcription | ⚪ hors d'atteinte sans infrastructure SIP — la diffusion vocale sortante existe (synthèse par passerelle), et le pont de conférence se renseigne sans être hébergé |

Ce qui fonctionne aujourd'hui : le journal inviolable et son chaînage
d'empreintes, le vérificateur indépendant, la reconstitution d'un état passé
@@ -35,9 +35,13 @@ complète (mot de passe, lien à usage unique, TOTP, codes de secours, sessions,
invitations, multi-organisation), la console d'administration avec ses quotas,
le dossier de préparation versionné avec son export papier, la boucle
décisionnelle complète (décisions, arbitrages, actions, points de situation,
cockpit), le chat de crise avec son flux temps réel, la gestion documentaire avec dépôts
reprenables et partages tracés, la visioconférence avec enregistrement et
rétention, et la pile Docker.
cockpit), le chat de crise avec son flux temps réel, les messages directs et les
canaux privés, la gestion documentaire avec dépôts reprenables et partages
tracés, la visioconférence avec enregistrement et rétention, la mobilisation
multicanal — SMS, courriel, voix, notification — avec son recensement de
sécurité, le ciblage par étiquettes sur l'annuaire comme sur les destinataires
de diffusion, les modèles de message préparés à froid, les applications iOS et
Android, et la pile Docker.

---

@@ -143,9 +147,12 @@ apps/api/src/
    fiches.ts        fiches réflexes par type de crise et par rôle
    indicateur.ts    ce qui manque, et le geste qui le comble
    campagne.ts      vérification semestrielle des coordonnées
    etiquettes.ts    le vocabulaire commun, fermé — et l'article 9 refusé
    destinataires.ts ceux à qui l'on parle, distincts de ceux qu'on mobilise
    modeles.ts       messages préparés à froid, gelés, adaptés à chaud
    export.ts        tirage papier et tableur
  domaine/cloture.ts    chronologie, indicateurs, dossier de crise, retex
  domaine/mobilisation.ts  campagnes, accusés, relances, escalade
  domaine/mobilisation.ts  campagnes, accusés, relances, escalade, recensement
  domaine/tableaux.ts   scènes de travail, instantanés qui font foi
  domaine/reunions.ts   salles, consentement, marque-pages, rétention
  adaptateurs/media.ts      LiveKit — et nulle part ailleurs dans le produit
@@ -153,7 +160,7 @@ apps/api/src/
  adaptateurs/stockage.ts   S3 : MinIO en auto-hébergement, hébergeur en SaaS
  adaptateurs/antivirus.ts  ClamAV, ou rien — mais alors le produit le dit
  domaine/chat.ts     salons, messages, épingle, réactions, promotion
  domaine/directs.ts  messages directs — hors journal, à dessein
  domaine/directs.ts  messages directs et groupes — hors journal, à dessein
  adaptateurs/diffusion.ts  temps réel : mémoire en mono-hôte, Redis sinon
  administration/ console root — administrer sans lire
    console.ts       organisations, comptes, droit root
@@ -317,7 +324,14 @@ enregistrerait de manière inaltérable les conversations privées serait déser
et cesser de s'en servir est le pire résultat possible. Les gens ont besoin d'un
endroit où demander « tu comprends ce qui se passe ? » sans que ce soit versé au
dossier remis à l'assureur trois mois plus tard. La contrepartie est
l'honnêteté : l'exclusion est renvoyée par l'API à chaque lecture.
l'honnêteté : l'exclusion est renvoyée par l'API à chaque lecture, et écrite en
tête du fil plutôt qu'en note de bas de page.

Un **groupe à plusieurs** suit la même règle et pour la même raison. Un **canal
privé**, en revanche, reste au journal : « privé » y désigne qui peut lire,
jamais ce qui sera enregistré. Le refermer protège la suite, jamais le passé —
et l'interface le dit à l'endroit où l'on bascule. Pour un échange qui doit
rester hors du dossier de clôture, c'est un message direct qu'il faut.

Le **flux temps réel ne sert qu'à la fraîcheur**. La reprise après coupure passe
par la base, indexée par séquence : un client qui revient redemande « tout ce
@@ -530,8 +544,21 @@ retirer.**
- **Le décompte se recopie à la main.** Une confirmation qu'on peut valider
  sans lire ne protège de rien, et c'est exactement le geste qu'on fait à trois
  heures du matin.
- **Un plafond à 2000**, un débit par vagues de cinq, et un essai vers soi-même
  avant tout. Un canal jamais éprouvé est une hypothèse.
- **Un plafond à 10 000**, un débit par vagues de cinq, et un essai vers
  soi-même avant tout. Un canal jamais éprouvé est une hypothèse. Le plafond ne
  protège plus de la même chose qu'avant : tant qu'on n'écrivait qu'à l'annuaire
  de crise, deux mille destinataires signalaient une erreur de sélection ;
  depuis qu'on écrit aussi à ses clients, le nombre légitime se compte en
  milliers, et le vrai garde-fou est le décompte recopié.
- **Deux populations, un seul langage de ciblage.** L'annuaire de crise — ceux
  qu'on mobilise — et les destinataires de diffusion — clients, salariés,
  cercle de management. Les deux portent des étiquettes du même vocabulaire, et
  se croisent par « et », « ou », « sauf ».
- **Une désinscription écarte, elle n'efface pas**, et elle ne tient pas devant
  une notification obligatoire : s'être désinscrit d'une lettre d'information
  ne dispense pas d'informer quelqu'un d'une violation de ses données
  (RGPD, article 34). C'est une case qui se coche en conscience, jamais par
  défaut — et dans les deux cas la personne reste affichée avec son motif.

## Accessibilité et bilinguisme

@@ -595,12 +622,21 @@ KASTELL_RELAIS_POUSSEE=https://relais.exemple.org
KASTELL_RELAIS_CLE=…
```

Les serveurs d'Apple n'acceptent que des messages signés par la clé de
l'éditeur de l'application : **une instance auto-hébergée ne peut pas, seule,
faire sonner une application publiée par quelqu'un d'autre.** C'est une
contrainte de plateforme, pas un choix. Sans relais, l'instance reste entière —
elle ne réveille personne, et le dit : à la sonde d'état, à la page Sécurité,
et à l'application avant tout enrôlement.
Les serveurs d'Apple comme ceux de Google n'acceptent que des messages signés
par la clé de l'éditeur de l'application : **une instance auto-hébergée ne peut
pas, seule, faire sonner une application publiée par quelqu'un d'autre.** C'est
une contrainte de plateforme, pas un choix. Sans relais, l'instance reste
entière — elle ne réveille personne, et le dit : à la sonde d'état, à la page
Sécurité, et à l'application avant tout enrôlement.

Le relais sert **les deux plateformes**, et sa sonde les annonce séparément :
une instance qui n'a que la clé Apple ne promet pas de réveiller un Android.
Une différence de nature subsiste, qu'aucun code ne rattrape : Apple accorde
une habilitation d'alerte critique à un éditeur, **Google n'a pas
d'équivalent**. Franchir « Ne pas déranger » sur Android est une autorisation
que la personne donne à un canal, appareil par appareil. Une raison de plus
pour que le SMS et l'appel vocal restent les canaux de mobilisation de premier
rang.

## Diagnostic et supervision