+54
−0
+25
−9
+120
−4
Loading
Le téléphone lit ce qui se passe et écrit ce qu'il constate. Là où M1 servait à réveiller quelqu'un, M2 sert à ce qu'il fasse quelque chose une fois debout. Une seule API, et une authentification qui s'élargit EM-03 exige que l'application et le web parlent à la même API, sans point de terminaison réservé au mobile. Ce ne sont donc pas des routes qui s'ajoutent : c'est le garde d'accès à une crise qui accepte une identité d'appareil en plus d'un cookie de session. Ce qui compte autant que ce que le téléphone atteint, c'est ce qu'il n'atteint pas. Ouvrir ce garde à tout le cockpit d'un seul geste aurait été la dérive que le §2 refuse — et aurait cassé, en silence, chaque route qui lit encore une session qu'un appareil ne renseigne pas. Il est donc posé route par route, sur six d'entre elles. Le rembobinage, le journal brut, le tableau blanc, la gestion documentaire, l'administration et l'enrôlement d'un second appareil restent fermés — et une garantie le vérifie pour chacun. La file hors ligne, et le cas normal qu'elle traite Quelqu'un devant une baie éteinte, dans un local sans réseau, note ce qu'il voit. Ce qu'il tape ne doit pas dépendre d'une barre de signal : le geste est le même avec ou sans réseau. Demander à quelqu'un de choisir entre « envoyer » et « mettre en file » serait lui demander de diagnostiquer son réseau au moment où il regarde une baie éteinte. L'entrée porte son heure de saisie ; le serveur y ajoute l'heure de remise, et l'écart s'affiche. L'ordre du journal reste celui de la remise : le journal ne se réécrit pas pour accommoder un téléphone. Un refus du serveur — crise close, droit retiré — rend l'entrée avec son motif et son texte intact. Elle ne repart pas toute seule : le serveur a dit non, et réessayer en boucle masquerait le problème au lieu de le montrer. L'idempotence n'est pas un raffinement, c'est le cas courant Le serveur inscrit, la réponse se perd dans un ascenseur, le téléphone réessaie. Sans identifiant d'intention, la main courante porterait deux fois le même constat et personne, au rejeu, ne saurait si le fait s'est produit une fois ou deux. L'unicité est portée par un index — un « vérifier puis écrire » laisserait passer deux remises simultanées. Deux défauts trouvés en écrivant les garanties : la seconde remise renvoyait la séquence en chaîne là où la première la renvoyait en nombre, et deux écrans pouvaient vider la file en même temps, faisant réapparaître des entrées déjà parties. Un troisième dans le contrôle lui-même : « Consigner( » se faisait passer pour « signer( », et le contrôle criait au loup sur du code irréprochable — un contrôle qui crie au loup finit désactivé. Le journal dit désormais quel appareil a saisi, à côté de la session (EM-33). La colonne n'entre pas dans l'empreinte, comme session_id : élargir le matériel scellé invaliderait tous les journaux existants et tous les vérificateurs déjà distribués, pour un gain nul — UPDATE et DELETE sont refusés par déclencheur. 749 garanties, dont 20 nouvelles. Reste à M2 : la photo de terrain, le dossier gelé téléchargé au déclenchement, la position attachée à un constat, et l'appel en un geste depuis une fiche. Les écrans n'ont pas encore été exercés sur simulateur — la composition était en cours de reconstruction. Signed-off-by:Kourser <contact@kourser.bzh> Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>