Ceci n'est pas un service en production. Cet environnement sert au développement et à la démonstration. Les données y sont fictives et peuvent être effacées sans préavis. Aucune valeur juridique n'est attachée à ce qui y est produit : le cadre de la signature électronique, la valeur probante de l'archivage et l'homologation de sécurité restent à établir.
Accès
Les points d'entrée métier exigent une authentification et répondent
401 sans jeton : c'est le comportement attendu. En l'absence de règle
applicable, l'accès est refusé plutôt qu'accordé.
Services déployés
| Service | Rôle | État |
|---|---|---|
athena-gateway | Point d'entrée unique, contexte de sécurité, agrégation de vues | déployé |
athena-identite | Organigramme daté, postes, délégations, autorisation | déployé |
athena-configuration | Nomenclatures, calendrier ouvré, numérotation | déployé |
athena-audit | Journal append-only à empreintes chaînées | déployé |
athena-courrier | Registre, numérotation transactionnelle, accusé de réception, détection de doublons, chaîne de détention de l'original papier ; file des courriers à valider pour le bureau d'ordre, et rejet motivé d'un pli | déployé |
athena-capture | Contrôles d'entrée, dépôt rejouable, profils de numérisation, ingestion de courriel et fil de conversation lisible, relève comptée par boîte, import de masse ; « Annuler » arrête aussi la machine et pas seulement la file — le verrou est rendu d'abord, pour qu'un scanner injoignable ne garde pas la file en otage | déployé |
athena-documents | Fichiers natifs, versions immuables, empreintes vérifiées à chaque lecture, renditions PDF/A dérivées — le natif reste intact ; les pièces sont enfin lues depuis le client, empreinte vérifiée et accès journalisé | déployé |
athena-traitement | Score de lisibilité rendu avant l'enregistrement, reconnaissance de caractères avec coordonnées (moteur embarqué) — les PDF compris, leurs pages rendues avant le moteur —, rendition PDF/A cherchable, séparation de lots | déployé |
athena-recherche | Indexation PostgreSQL (tsvector) des courriers et des couches de texte, recherche filtrée par habilitation, réindexation ; contrat aligné sur la réponse réelle, écran de recherche dans le client | déployé |
athena-ia | Suggestions motivées — type, objet, référence, date, urgence — sous les noms que lit le guichet ; résumé extractif adossé à des passages cités, repli déterministe | déployé |
athena-web | Client web : guichet au clavier avec impression de l'accusé, de l'étiquette et du bordereau ; saisines à valider — les dépôts du portail enfin atteints par le bureau d'ordre, repris au guichet avec la demande du déposant, enregistrés ou rejetés avec un motif ; bannettes de fonction, personnelle et d'équipe avec leurs actions ; centre de notifications, préférences par canal et rythme, appareils ; rédaction d'un acte (reprise des actes en cours, conflit d'édition nommé, circuit de visas en étapes parallèles) ; parapheur (lecture, visa, réserve, refus, renvoi, signature après une connexion fraîche, niveau de preuve toujours dit) ; départ du courrier (retards d'accusé en tête, en cours, reprises, bordereau) ; recherche par poste avec la fraîcheur de l'index écrite, un résultat s'ouvre et ses pièces se lisent, un mot cherché s'y surligne à sa position ; gouvernance de l'IA ; connexion, mot de passe oublié et changement de mot de passe sur des écrans d'Athena ; archives — bordereaux en attente et gels ; organigramme daté ; original papier (ce que mon poste détient, où est ce papier, ce qui circule sans décharge) ; orientation (orienter vers des postes, suivre les avis, clore) ; taux d'acceptation des suggestions avec son verdict ; mes dossiers ; organigramme administrable avec les permissions du catalogue ; délégations en vigueur à une date, avec révocation motivée ; historique des versions d'une pièce ; consultation contrôlée — demander l'accès à un fonds fermé, accorder ou refuser, consulter un paquet (le fondement de l'accès, jamais le contenu), révoquer une dérogation ; incidents d'intégrité tranchés depuis l'écran d'audit ; des écrans pour des routes qu'aucun écran n'appelait — modèles et clauses : bibliothèque de clauses et leur arbitrage, catalogue et publication des modèles (gabarit et variables accordés avant l'envoi), contributions qu'on attend de moi, précédents ; parapheur : historique de l'acte et comparaison au texte courant, remarques, avant de viser ; plan de classement lu, tenu et indexé par facette ; profils de numérisation, la bascule en 1 bit exigeant l'avertissement coché ; calendrier vérifié par une échéance calculée ; circuits : concevoir, simuler avant de déployer, lancer sur un courrier, « où en est ce courrier ? » ; doublons présumés sous la garde de classification ; dossiers rattachés, liés, et leur ascendance ; tentatives d'instruction repérées par l'IA ; annotations d'une pièce, posées à côté du document sans toucher son empreinte ; calendrier de conservation : publier une version de règle, point de départ et sort final choisis, jamais présélectionnés ; vue complète d'un courrier — chronologie, courriers liés, et quel poste détient l'original papier ; réauthentification ciblée avant un export du registre ou un paquet de preuve, les deux actes que le jeton ordinaire du web ne pouvait pas obtenir ; organigramme : rôles types attribués en un seul acte, après l'aperçu de ce qu'ils ajoutent, entités créées et closes à une date ; éliminations proposées depuis les paquets éligibles à une date — le premier des quatre temps, qu'aucun écran n'atteignait | déployé |
athena-workflow | Circuits, tâches, bannettes, orientation multi-entités, relances et escalades — désormais notifiées à l'agent, escalades non résolues visibles, tâches d'un absent rendues à son poste, délai applicable consultable — Lot 2 ; le titulaire est prévenu à la création d'une tâche et à chaque relance, le supérieur à l'escalade ; les trois formes d'instruction — tapée, manuscrite (l'image fait foi, elle vit dans athena-documents) et vocale (l'enregistrement fait foi, la transcription automatique voyage à part et se présente marquée comme telle) | déployé |
athena-notifications | Centre de notifications, préférences par canal, regroupement anti-spam, répartiteur des envois, coordonnées résolues à l'envoi, quatre canaux (application, courriel, SMS, poussée mobile), trois événements consommés (expédition abandonnée, accusé en retard, écart d'intégrité d'archive), acheminement compté par institution et par issue — Lot 2 | déployé |
athena-modeles | Modèles versionnés à variables typées, bibliothèque de clauses approuvées, précédents ; éditeur collaboratif : conflit d'édition nommé, historique, comparaison de versions, commentaires, co-rédaction, projet de réponse jamais expédié seul ; parapheur : circuit de visas figé au dépôt, signature, numéro d'acte, vérification publique — Lot 3 | déployé |
athena-expedition | Expédition et transmission : acheminement rendu compte (progression, accusé, non-distribution, relances), file de reprise sur échec avec alerte, ampliations explicites et ordonnées, étiquette et bordereau, accusé en retard signalé — Lot 3 ; liste des expéditions en cours, l'échéance d'accusé la plus proche d'abord ; la coordonnée du destinataire est figée à la préparation — ce qu'on prouve est où l'acte est parti, pas où le destinataire habite aujourd'hui | déployé |
athena-archives | Conservation, versement, gel juridique, élimination à quatre yeux ; récolement périodique qui relit réellement chaque paquet dans son stockage — il n'avait jusqu'au 10 septembre qu'un repli, et aucun paquet n'était vérifié — et écart d'intégrité tranché ; un paquet disparu de son stockage s'inscrit désormais comme incident, est annoncé au proposant du versement et se tranche comme un écart — il ne laissait auparavant qu'une ligne de journal — restauré, altération assumée ou faux positif, jamais « ignorer » ; bordereaux en attente et gels juridiques ont désormais un écran ; demande de consultation, accord ou refus motivé, dérogations révocables — Lot 4 | déployé |
athena-portail | Dépôt citoyen et suivi de saisine — seul service en zone démilitarisée, et sans état. Il est seul sur son réseau avec la passerelle : ni base, ni bus, ni cache, ni annuaire ne sont joignables depuis lui, et il ne détient aucun identifiant. Ses deux routes sont anonymes ; tout le reste est refusé — Lot 5 | déployé |
athena-mobile | Application Flutter hors ligne : file de commandes idempotentes et chiffrée, conflits explicites, capture guidée et envoi reprenable, bannette, parapheur mobile, annotations, vérification d'un code QR — 140 tests sans appareil — Lot 5 ; purge automatique d'un terminal volé par le seul délai, sans rien demander à personne ; le coffre de l'appareil est demandé au Keystore ou au Keychain, et refuse avec son motif plutôt que d'improviser une clé qu'une application décompilée révélerait | construit |
« Construit » n'est pas « déployé ». Seize services
tournent sur cet environnement et répondent à leur sonde de santé ; les autres passent
leur intégration continue sans y être — le dire autrement laisserait croire qu'on peut
les appeler ici. athena-mobile est une application, pas un service :
« construit » y signifie que le hors ligne, la capture guidée, la bannette, le parapheur
et la vérification d'un code sont écrits et testés — et que ni caméra ni passerelle ne
sont encore raccordées, ce que l'application dit elle-même plutôt que de le masquer.
athena-portail est entré en service le 9 septembre 2026,
et son isolement n'est plus une phrase de documentation : depuis son conteneur, ni
athena-postgres, ni athena-rabbitmq, ni
athena-redis, ni athena-identite, ni Keycloak ne se
résolvent — seule la passerelle répond. Il n'a reçu ni mot de passe de base, ni
identifiants de bus, ni secret de client : ce que ce conteneur ne détient pas ne peut
pas être emporté avec lui. Trois obstacles ont été levés dans l'ordre, chacun invisible
depuis une suite de tests verte : un secret de client OIDC exigé par le socle pour un
service qui ne fait aucun appel sortant ; un cache Redis auto-configuré qui faisait
répondre indisponible un service pourtant démarré ; et — trouvé en exerçant les
routes plutôt qu'en les relisant — un 500 « appelez le support » rendu au
citoyen là où il fallait un 400 nommant le champ manquant et un
503 disant de réessayer. Le service n'est pas encore publié sur Internet :
son épreuve anti-automate n'est pas câblée, et un dépôt anonyme sans ce rideau
n'attendrait pas longtemps.
Six services ont été déployés le 3 septembre 2026 — traitement, workflow, expédition, archives, suggestions et modèles. Ce dernier a franchi le seuil de maturité le jour même : son parapheur était complet mais aucun acte ne pouvait y entrer, la table des modèles n'étant portée par aucun code. Le catalogue, la rédaction, la bibliothèque de clauses approuvées et la suggestion de précédents ont été livrés dans la journée. Deux obstacles réels ont été levés au passage : la limite de connexions de PostgreSQL, fixée à soixante, refusait le douzième service avec un message parlant de privilèges et non de saturation ; et le script de construction n'installait qu'une version du socle, quand les services en réclamaient quatre. Toute la plateforme est désormais sur le même socle, 0.26.0.
Le 3 septembre au soir, dix poussées attendent en file d'intégration — elles passent leur intégration continue et ne sont pas encore déployées ici, sauf athena-capture, redéployé à 20 h 06, athena-expedition, redéployé à
20 h 36 (trois migrations appliquées hors ordre), athena-notifications, redéployé à
21 h 05 avec ses trois files consommées vérifiées dans RabbitMQ, et athena-workflow
(cd771ee, 117 tests), dont le pipeline a confirmé à 22 h 10 ce qui tournait déjà —
chacun une fois son pipeline vert et vérifié.
L'expédition rend désormais compte de son acheminement (progression, accusé,
non-distribution) là où trois transitions n'avaient aucun appelant et où la table des
accusés n'était portée par aucun code ; une file de reprise sur échec
compte les tentatives, les date selon la configuration, puis abandonne en alertant — par
athena-notifications, sa première file consommée — l'agent qui avait préparé
l'envoi ; les ampliations sont explicites, ordonnées et figées sur l'acte,
chacune partant comme une expédition entière ; le fil d'une conversation par courriel se
lit dans athena-capture ; un paquet d'archives mémorise le conteneur où il a
été rangé. Un outil de gouvernance a cherché ce que la plateforme écrit sans jamais
relire : quatorze constats dans sept dépôts, tous corrigés le jour même avec un
lecteur réel — jamais un accesseur posé pour faire taire l'outil. Puis les vues sans
alerte : l'accusé en retard, l'écart d'intégrité d'une archive et l'échec définitif
d'une expédition se disent désormais à une personne nommée — l'agent qui a
préparé l'envoi, le proposant du versement — par athena-notifications, qui
n'écoutait aucun événement le matin et en consomme trois le soir.
L'éditeur collaboratif de athena-modeles a suivi, et il a
commencé par une découverte : cinq entités de trois services portaient un compteur de
version, et aucun service ne traduisait le conflit. Deux agents modifiant le
même acte — le cas normal d'un éditeur, pas le cas limite — recevaient un 500, donc une
panne apparente là où il y a un fait métier ordinaire. Le conflit rend maintenant 409 et
nomme qui a pris la main : celui qui la perd ira lui parler, et la
consolidation prendra trente secondes au lieu d'un aller-retour par courriel. Il manquait
aussi la route qui relit un acte — on pouvait le créer et le réviser, jamais
l'ouvrir. Le suivi des modifications qui a suivi coalesce les sauvegardes automatiques :
sans cela, une lettre d'une page aurait produit deux mille révisions, et la comparaison
de versions n'aurait plus eu d'objet. La co-rédaction et le projet de réponse ont clos
l'épopée côté serveur dans la même journée — le projet naît en rédaction et rien ne peut
l'expédier seul ; et il dit d'où vient son texte, jusqu'au parapheur.
Tout cela est en service depuis le soir du 3 septembre — non sans
avoir d'abord découvert que le service redémarrait en boucle (464 fois) : une
migration ajoutée après le premier déploiement était refusée par Flyway derrière
celles du socle. Le piège était latent dans les seize services ; le socle 0.27.0 le
ferme pour tous, et les schémas d'institution ont reçu leurs migrations par le même
mécanisme, vérifié table par table.
Le 9 septembre, deux preuves qui n'en étaient pas. L'empreinte qui scelle un acte signé était fournie par le client : la preuve d'intégrité était donc ce que l'appelant déclarait, et la vérification ne faisait que lui donner raison. Le serveur la calcule désormais, et la signature porte son niveau de preuve — affiché en toutes lettres, avec ce qu'il établit et ce qu'il n'établit pas : le scellement interne ne vaut pas signature au sens juridique, l'analyse de droit positif congolais restant à faire. Et le motif d'un acte renvoyé à son rédacteur était exigé du viseur, puis perdu — écrit au seul journal d'audit. Le rédacteur retrouvait son acte, ses visas annulés, sans savoir ce qu'on lui demandait de corriger, et sans que rien ne le prévienne. Exiger une raison et ne pas la transmettre est pire que ne pas l'exiger : chacun croit l'autre informé. Le motif est conservé, publié, et porté au rédacteur en régime urgent. Le 5 septembre, un seul message a mis toute la plateforme à terre. Un service resté douze versions en arrière n'arrivait pas à migrer le schéma d'une institution ; le courtier lui redélivrait le message sans limite, et chaque échec écrivait une trace complète — 45 Go de journal en une journée. Le disque du serveur est arrivé à 100 %, PostgreSQL n'a plus pu écrire, et les quatorze services sont passés en panne sans qu'aucun d'eux ait le moindre défaut. Le socle borne désormais les réessais et met le message en rebut ; chaque service voit son journal plafonné ; et les seize dépôts sont pour la première fois sur la même version du socle — c'est la vraie protection, car l'écart qui a laissé un service douze crans derrière ne peut plus se creuser sans qu'on le voie. Deux mécanismes sans appelant de plus, trouvés le même soir. La détection de doublons d' athena-courrier persistait des propositions
« pour qu'un agent pressé ne les perde pas » — et rien ne l'appelait : la liste
était vide depuis toujours, alors que cette page l'annonçait. Elle s'exécute désormais à
l'enregistrement et au rattachement d'une pièce, et compare aussi par empreinte de
fichier. Dans athena-recherche, un compteur « dont la montée est un
signal » n'avait aucun lecteur : il a sa jauge. Les deux sont poussés et attendent leur
passage en intégration continue avant d'être redéployés — cette page le dira.
La chaîne d'entrée tient debout, de la porte au registre. Un pli déposé — au guichet, par courriel, ou par import de masse — est contrôlé : type réel par signature binaire, antivirus, quarantaine. Son natif est conservé intact, chaque page est mesurée et son score revient avant l'enregistrement, tant que l'agent a le pli en main. Le texte est reconnu et conservé avec les coordonnées de chaque mot, et le numéro d'enregistrement est attribué dans une transaction atomique. L'empreinte du fichier est vérifiée à chaque frontière : au dépôt, à la lecture, et à la mesure. Ce n'est pas de la redondance — entre deux services se trouvent un réseau et la possibilité d'une confusion. Et un score absent n'est jamais présenté comme un bon score. Les vingt dépôts existent désormais tous. Les six derniers — modèles, expédition, archives, notifications, portail, mobile — ont été ouverts avec leur première fonction, jamais à vide : un dépôt sans code ne dit rien de ce qui marche. Chacun porte le domaine, les contraintes de base et les tests de son lot, et rien au-delà. Ce que « construit » ne dit toujours pas. Un service qui passe son intégration continue peut n'être appelé par personne : trois d'entre eux — expédition, modèles, notifications — ont vécu plusieurs jours avec un domaine complet et aucun point d'entrée. Rien ne le signalait, et aucun contrôle ne pouvait le faire : ce qu'un pipeline vérifie, c'est que le code tient, pas qu'on puisse s'en servir. Les trois sont aujourd'hui exposés et testés. Le 11 septembre, des refus qui répondaient « erreur interne ». Signer un acte déjà signé, changer le masque d'un exercice entamé : rien n'était en panne, la demande arrivait au mauvais moment — et la plateforme invitait l'agent à appeler le support. Ces refus rendent désormais 409, avec leur motif. Le masque d'un exercice entamé peut toujours changer, mais par deux personnes : une demande motivée, puis l'approbation d'un autre agent, vérifiée dans le code et par la base elle-même. En le construisant, un défaut plus ancien est apparu : remplacer le masque d'un exercice futur échouait à coup sûr, la même clé étant supprimée puis réinsérée — reproduit sur PostgreSQL, invisible à tout test qui simule la base. Et la vérification publique d'un acte n'attestait que son état : un texte modifié en base après signature aurait été déclaré authentique. Le document est désormais re-rendu et comparé à l'empreinte scellée ; un écart rend l'acte non valide, sans rien révéler de plus au vérificateur. Elle ne répondait d'ailleurs plus du tout à l'adresse publique : la passerelle ne transmettait pas le nom d'hôte par lequel le citoyen arrivait, et c'est lui qui désigne l'institution. Chaque maillon était juste isolément ; seul le chemin complet échouait — et c'est lui que la chaîne éprouve désormais. | ||
Ce que le Lot 1 démontre déjà
Le numéro ne se perd pas
Attribué dans la transaction d'enregistrement, immuable, jamais réattribué. Vérifié sous deux cents attributions concurrentes : aucun doublon, aucun trou. Une transaction annulée ne consomme aucun numéro — ce qu'une séquence de base de données ne donnerait pas.
compteur verrouillé, pas de séquenceLa machine propose, l'agent décide
La détection de doublons n'a aucun seuil au-delà duquel elle tranche : un score de 1,00 produit la même chose qu'un score de 0,45 — une proposition. Retenir un doublon conserve les deux numéros ; rien n'est supprimé.
jamais de fusion d'office« Où est le papier ? » a une réponse
Au plus une détention ouverte par courrier, garantie par la base et non par du code — deux transferts simultanés depuis deux postes passeraient toute vérification applicative. Un original perdu reste dans la chaîne avec son dernier détenteur.
16 transferts simultanés, une seule détentionLa preuve ne s'efface pas par inadvertance
Le noir et blanc 1 bit écrase cachets, griffes et annotations manuscrites, irréversiblement. Aucun chemin n'y mène sans l'acceptation nominative d'un administrateur — et la contrainte est en base, pas seulement dans le code.
300 DPI couleur par défautLe courriel n'est pas cru sur parole
SPF, DKIM et DMARC ne sont pas recalculés : on lit le verdict du serveur de l'institution. Seul l'en-tête portant notre identité fait foi — n'importe qui peut en écrire un, et un message hostile en porte plusieurs. Sans verdict, l'état est « inconnu », jamais « authentifié ».
anti-doublon sur le Message-IDUn import dit ce qui n'est pas passé
Ligne par ligne, jamais tout ou rien : un import de cinq mille lignes qui échoue en entier à cause de la 3 172ᵉ est inutilisable. Chaque anomalie porte le numéro de ligne du tableur et son motif en clair.
le rapport est le produitUn service déployé sans écran n'est pas livré
Aucun PDF déposé n'était lu
Le moteur de reconnaissance lit des images, pas des PDF : il répondait « lecture PDF non prise en charge », et chaque PDF déposé au guichet restait sans texte — absent de la recherche plein texte, sans suggestion de l'IA, sans que l'agent en sache rien. Depuis le 13 septembre 2026, chaque page d'un PDF est rendue en image avant d'être reconnue. Vérifié avec le vrai moteur : le PDF brut est refusé, ses pages rendues sont lues.
les PDF déposés avant ce jour attendent une reprise, à déciderExporter le registre ou signer était refusé à tout agent web
Ces gestes exigent une connexion de moins de quelques minutes. L'application se connecte par mot de passe, et ce mode ne porte jamais la date de connexion que le serveur vérifie : l'export du registre, le paquet de preuve de l'audit et la signature répondaient « refusé » à tout le monde, écran compris. Depuis le 12 septembre 2026, une fenêtre de connexion s'ouvre juste avant l'acte sensible — décision du commanditaire —, et la connexion quotidienne reste inchangée.
après une signature, l'écran dit toujours si elle vaut signature juridiqueL'IA proposait l'objet et l'urgence sous des noms que le guichet ignorait
Le module d'intelligence documentaire extrayait l'objet, la référence, la date et l'urgence d'un pli, et les rendait sous des noms préfixés que le formulaire du guichet ne reconnaissait pas : ces quatre champs n'étaient jamais proposés, sans erreur ni bandeau. Ils le sont depuis le 11 septembre 2026, et les suggestions déjà enregistrées ont été renommées en base plutôt qu'abandonnées. L'extraction lit aussi « Concerne : » comme « Objet : », et ne prend plus « pas urgent » pour une urgence.
une mention en capitales vaut plus qu'un mot perdu dans une phraseUn acte signé ne pouvait pas partir
Le service du départ sait préparer une expédition, l'engager, l'annuler, en tenir le bordereau et les ampliations. Mais aucun écran ne proposait les deux premiers gestes : celui du départ ne montrait que ce qui était déjà parti — retards d'accusé, envois en cours, reprises. Or engager est refusé à un jeton de service, parce que faire sortir un acte de l'institution est un acte d'agent : sans écran, personne ne pouvait le poser. Les quinze expéditions enregistrées venaient toutes d'appels directs à l'API, et l'une attendait « préparée » depuis le 10 septembre. Depuis le 12 septembre 2026, l'agent prépare le départ d'un acte signé avec ses ampliations, l'engage en fixant le délai d'accusé, l'annule avec motif, et retrouve un pli par la référence imprimée sur l'enveloppe.
un service qui sait faire, et aucun écran pour le demander, c'est une fonction absenteUne pièce se lisait sans que sa classification soit vérifiée
Le contenu d'une pièce était remis à tout agent occupant un poste : il suffisait de connaître l'identifiant d'une version pour en obtenir les octets, quel qu'en soit le niveau. La lecture du courrier, gardée en amont, n'y changeait rien — l'écran téléchargeait directement. Depuis le 11 septembre 2026, chaque restitution est autorisée à la ressource : la classification du courrier de rattachement est comparée à l'habilitation de l'agent, et le doute ferme. Éprouvé en direct avec un vrai agent : il lit ce que son habilitation couvre, et rien de ce qui n'est rattaché à aucun courrier.
le texte reconnu passe par la même garde que les octetsChaque pièce porte le nom de qui l'a lue
Une pièce n'est remise à un agent qu'avec son filigrane nominatif, incrusté côté serveur : son nom, son poste, l'heure, et une référence qui est celle de la consultation au journal d'audit. Vérifié sur un vrai PDF : la référence imprimée au pied de page est exactement celle que le journal a enregistrée. Un fichier qui ne peut pas recevoir le filigrane n'est pas remis du tout.
une copie qui circule dit d'où elle vientLe texte reconnu n'entrait jamais dans l'index
La reconnaissance de caractères tournait, et la couche de texte était écrite avec les coordonnées de chaque mot. L'index de recherche la lisait ensuite à une adresse qu'aucun service n'exposait : la réponse était un refus attrapé, journalisé, acquitté. La recherche plein texte ne portait que sur l'objet et l'expéditeur, jamais sur le contenu des pièces, ce qui est pourtant sa raison d'être. La route existe depuis le 10 septembre 2026. Un texte momentanément indisponible est désormais mis de côté et repris, au lieu d'être perdu.
deux services verts, santé 200, et une fonction morte entre euxUne instruction manuscrite était toujours refusée
Orienter un courrier par une instruction manuscrite ou vocale exige de vérifier que la pièce existe. Le circuit la demandait au service documentaire, à une adresse qui n'existait pas ; la réponse « introuvable » était lue, à bon droit, comme « la pièce n'existe pas ». Chaque orientation de ce type était refusée en accusant l'émetteur d'une pièce qu'il venait de déposer. La route répond désormais, et ne dit que l'existence de la pièce, rien de son contenu.
un nouvel outil confronte chaque appel entre services à la route appeléeLes règles que les agents écrivent sans le savoir
Quand les agents remplacent régulièrement la même proposition de l'intelligence documentaire par la même valeur, c'est une règle qui attend d'être écrite. L'écran de gouvernance de l'IA les montre désormais (« tel type proposé, tel autre retenu, tant de fois »), au-dessus d'un plancher qui écarte la correction isolée. Il propose, il ne crée rien : la position de la plateforme est que l'IA soumet des règles explicites, et qu'une personne décide.
l'absence de motif est dite comme un résultat, pas laissée en videUn contrôle qui ne lit rien ne peut pas être vert
Un outil de gouvernance déclarait que chaque événement du bus avait son consommateur. Il lisait les copies locales des dépôts, en retard de plusieurs versions, et, lancé ailleurs que dans son répertoire, aucune : zéro événement, et la même phrase de réussite. Il lit désormais ce qui est publié, refuse un relevé vide, et signale ce qu'il taisait : une notification attendue par un service, et qu'aucun autre n'émet encore.
l'absence prenait la forme du cas normalL'IA n'atteignait pas le guichet — pour deux raisons
Le matin, l'écran lisait les suggestions sous un nom de champ que le service n'envoie pas. L'après-midi, une seconde cause, indépendante : la passerelle acheminait les suggestions d'un courrier vers le service du courrier, qui ne les sert pas et répondait 404 — que l'écran traduisait en « IA indisponible ». Le test de routage vérifiait qu'un chemin atteint un service ; il atteignait le mauvais, et le test passait. Il vérifie désormais lequel.
les journaux ne pouvaient rien prouver : aucune trace n'arrive nulle partL'écran « Mes dossiers » n'atteignait aucun service
Le service des dossiers était déployé, et l'écran aussi. Entre les deux, la passerelle
n'avait aucun préfixe /dossiers : chaque appel de
l'écran tombait dans le vide. Un balayage de toutes les routes servies, confrontées à la
passerelle, a trouvé seize chemins acheminés nulle part — les dossiers, et trois autres
familles qui, elles, sont internes par conception.
Tout agent pouvait numériser en noir et blanc 1 bit
Les quatre routes qui modifient un profil de numérisation ne vérifiaient aucune permission. Un agent de guichet pouvait donc décider seul que tout le courrier de l'institution serait numérisé en 1 bit — ce qui détruit cachets, griffes et annotations manuscrites, sans retour. Le cahier des charges en fait un acte d'administrateur ; c'en est un désormais, et la permission se coche sur la fiche du poste.
une garde que personne ne peut satisfaire rendrait 403 à tousL'IA n'avait jamais rempli un formulaire
Le guichet lisait deux champs sous un nom que le service n'envoie pas. Le formulaire s'ouvrait vide à chaque pli, sans erreur et sans bandeau : le module d'intelligence documentaire classait, extrayait et journalisait pour rien. Et sans suggestion à l'écran, aucune décision d'agent ne remontait — le taux d'acceptation des modèles, mesuré et assorti d'un verdict, portait sur un ensemble vide.
cinq fabricants de test construisaient la forme du contrat, pas celle du serviceLe pouvoir se déléguait à l'aveugle
La délégation transfère les attributions d'un poste à un autre : c'est le seul acte qui donne des permissions sans qu'une fiche de poste soit touchée. Elle s'ouvrait et se révoquait par identifiant, et ne se lisait pas — aucun écran n'était possible. La liste des délégations en vigueur existe, à la date qu'on lui demande, parce que « qui détenait ce pouvoir le 12 mars » est ce qu'on demande des années après.
révoquer n'est pas supprimer : cela clôt, avec un motif écritQuelle version de la pièce ai-je sous les yeux ?
Un document garde le natif tel qu'il est arrivé et les conversions qui en dérivent. Une pièce en désigne une, et rien ne disait laquelle : un agent pouvait lire une conversion périmée en croyant lire le document. L'historique s'ouvre avec la pièce, dit ce qui est figé — immuable et produisible des années après — et avertit quand la version affichée n'est pas la plus récente.
figer une version répondait « 200 » avec un corps videLe quatrième maillon : le droit de s'en servir
La chaîne n'est pas « service → route → écran ». Le dernier maillon est le droit, et il manquait : quarante-et-une permissions vérifiées par le code n'étaient accordées à personne, faute d'un endroit où les accorder. Chaque écran gardé répondait 403 à tout le monde. L'organigramme s'administre désormais, et les permissions se cochent dans la liste de ce que le code vérifie vraiment — un champ libre est ce qui avait produit trois chaînes plausibles et mortes.
une liste fausse serait pire qu'une liste absenteÉcrire sans pouvoir relire, c'est effacer
La fiche de poste porte l'ensemble complet des permissions : ce qui n'est pas coché est retiré. Le formulaire s'ouvrait sans avoir relu l'existant — modifier un poste l'aurait dépouillé sans un mot. Il n'ouvre plus tant que la fiche n'est pas relue, et pas du tout si la relecture échoue : proposer d'enregistrer ce qu'on n'a pas su lire n'offrirait qu'un moyen d'effacer.
défaut trouvé avant sa mise en ligne« Qu'est-ce que j'ai sur les bras ? »
Le service des dossiers savait tout faire — ouvrir, rattacher, lier, clore, retracer — sauf dire à un agent lesquels son poste porte. Le dossier appartient au poste, jamais à la personne : celui qui prend ses fonctions hérite de la charge de son prédécesseur, sans reprise ni transfert.
et clore n'est pas supprimer : on ne verse pas ce qu'on a effacéLa proposition d'élimination partait aveugle
Détruire est le geste le plus grave du service d'archives. Il exigeait une liste d'identifiants de paquets, et rien ne disait lesquels sont éligibles. La liste applique les trois conditions de l'exécution — durée échue, sort final, aucun gel — et non la seule que portait la requête : une liste dont l'exécution refuse la moitié est une liste qu'on apprend à ne pas croire.
une photographie, jamais une autorisationUn taux de 99 % est une alerte, pas un bon score
La règle veut que le taux d'acceptation des suggestions soit « mesuré et alerte s'il devient anormal ». La requête d'agrégation existait depuis l'origine, documentée jusqu'au piège qu'elle porte — et sans un seul appelant. Anormal veut dire trop haut autant que trop bas : proche de 100 %, ce n'est pas un modèle excellent, c'est un agent qui accepte tout sans lire. Un seuil unique, celui qu'on écrit sans y penser, laisse passer exactement ce cas-là.
« ANORMAL » est écrit, pas seulement coloré« Ce document fait-il foi ? »
Le récolement savait recalculer une empreinte, consigner l'écart et le faire trancher. Rien ne permettait de demander, pour un paquet donné, ce que la dernière vérification avait dit — la question qu'on pose avant de produire une pièce, pas après. Un paquet jamais vérifié rend 404 : c'est le fonds sur lequel on ne sait rien, et le déclarer conforme par défaut serait l'erreur que le récolement existe pour empêcher.
et l'historique, car la récidive ne se voit pas ailleursLe contrat expliquait l'absence d'écran
« Où est le papier ? » et « l'autorité oriente » sont annoncés ici depuis des semaines, servis par leurs services, et aucun écran ne les ouvrait. Ce n'était pas un oubli : le contrat décrivait pour l'un une forme que le service ne produit pas, et pour l'autre aucun corps du tout. Qui tentait l'écran en partant du contrat obtenait quelque chose qui ne marche pas, et repartait.
une route absente rend 404 ; une forme fausse ne dit rien« Qu'ai-je entre les mains ? »
La chaîne du papier répondait « où est CE pli ? », par le scan d'un code à barres, et « qu'est-ce qui circule sans décharge ? », pour l'exploitation du matin. Jamais la question du détenteur. Elle se pose le soir en quittant son bureau, et surtout à la passation : un poste qui change de titulaire sans inventaire est l'endroit exact où un original se perd sans qu'on puisse dire quand.
écran « Original papier »Un avis défavorable n'arrête rien
Il exige son motif et se consigne ; les autres branches poursuivent. C'est l'autorité qui tranche à la clôture, pas le premier opposant. Le sens de l'avis est écrit et non seulement teinté, et une branche close sans réponse le dit : une clôture qui effacerait les silences ferait croire que tout le monde a répondu.
écran « Orientation »Les postes vacants sont proposés, et marqués
Les écarter serait tentant — orienter vers un poste sans titulaire semble inutile. C'est justement le cas où la tâche doit exister et attendre : le service de circuits enregistrait des escalades « sans destinataire » faute de poste responsable pourvu, et les cacher à l'écran referait le même silence.
un poste, jamais une personneLa moitié d'une règle n'était pas livrée
« Un échec d'envoi est réessayé avec délai croissant, puis remonté en incident visible ». La relance tournait, l'abandon inscrivait son motif — et personne ne pouvait voir un seul envoi perdu. Un index partiel avait même été construit pour cette liste ; on n'écrit pas un index partiel pour un usage interne.
canal, tentatives, motif — jamais le contenuStatuer était inatteignable
Le service des archives savait juger la complétude d'un bordereau et détailler un refus pièce par pièce. Mais aucune route ne disait lesquels attendaient : l'archiviste devait connaître la référence à l'avance. La requête triée dormait dans le dépôt, écrite pour cette liste, sans un seul appelant. Autant dire que la fonction n'existait pas.
du plus ancien au plus récentPoser un gel, et le lever, sont deux droits
Poser est conservateur : au pire, on garde trop longtemps. Lever rouvre la porte à une destruction définitive. Les accorder ensemble « parce que c'est le même sujet » serait l'erreur, et le motif de la levée est exigé — c'est lui qui la rend opposable.
écran « Archives »Le récolement ne vérifiait aucun paquet
Le contrôle d'intégrité tournait chaque nuit, sa route répondait, son constat s'affichait — et pas un paquet n'était relu. Le calcul d'empreinte n'avait qu'un repli qui refuse, et le service qui possède le stockage n'offrait aucune route pour le faire. Le repli avait été écrit pour que le service démarre ; il a si bien rempli ce rôle que l'absence du vrai client n'a jamais fait de bruit.
un test exigeait même son absenceLa consultation contrôlée n'avait aucun écran
Demander l'accès à un fonds fermé, trancher, consulter, révoquer : le service existait tout entier, et personne ne pouvait s'en servir autrement que par l'API. L'écran rend le fondement d'un accès, jamais le contenu ; une copie caviardée indisponible est refusée, jamais remplacée par le fonds intégral.
écran « Consultations d'archives »Ce que l'écran refuse de faire
Il ne permet pas de statuer, et il l'écrit. Statuer exige de reprendre le bordereau dossier par dossier — cote, empreinte, manifeste —, un écran de saisie à l'échelle d'un versement entier, qui se conçoit à partir d'un bordereau réel. Le dire est plus utile qu'un bouton qui refuserait la moitié des cas.
une limite écrite vaut mieux qu'un échecL'organigramme daté n'était visible nulle part
C'est le cœur du service d'identité : les habilitations sont portées par le poste, jamais par la personne — c'est ce qui fait que les droits survivent à un changement de titulaire et qu'un intérim fonctionne sans manipulation. La seule route de lecture servait à remplir un sélecteur de poste ; la structure, elle, n'apparaissait à l'écran de personne.
écran « Organigramme »La date n'est pas un filtre de confort
Toute vérification de droit se fait « à la date T », pour qu'un dossier ancien puisse être rejoué avec l'organisation qui prévalait alors. Un écran qui ne montrerait que l'organigramme d'aujourd'hui laisserait croire que c'est le seul qui existe — or un acte contesté se juge sur l'organisation du jour de l'acte.
la date voyage toujours« Vacant » est écrit, pas seulement teinté
Un poste vide qui ne se distinguerait qu'à la couleur disparaîtrait pour qui ne la voit pas — et c'est précisément l'information qui manquait au service de circuits, qui enregistrait des escalades « sans destinataire » faute de poste responsable pourvu. Le compte des vacants est au premier regard.
le chiffre qui décide d'agirUne liste vide se dit
« Aucun bordereau dans cet état » et « aucun gel en cours » sont des phrases, pas des zones blanches. Un vide muet se lit comme une panne — c'est le piège même des balayages silencieux qui ont coûté deux jours d'événements bloqués sur cette plateforme. Et un refus de droit n'est pas une liste vide : la porte fermée doit se voir.
l'absence de signal ≠ l'absence de mécanismeLa connexion appartient à Athena
Un écran d'Athena, pas celui de l'annuaire
L'agent ne quitte plus l'application pour se connecter : le formulaire est celui d'Athena, en français, aux couleurs de la plateforme, et il obtient son jeton par l'API de Keycloak. Keycloak reste l'autorité — il détient les empreintes, applique la politique de mot de passe et compte les tentatives — mais il n'est plus ce que l'agent voit.
formulaire natif, octroi directUn refus dit lequel
« Identifiant ou mot de passe incorrect » n'est qu'un refus parmi six. Compte suspendu, compte désactivé, compte pas encore prêt, mode de connexion non autorisé, service injoignable : chacun se dit autrement, parce que chacun appelle un geste différent. Confondre le dernier avec le premier ferait douter l'agent de sa mémoire pendant qu'une panne dure.
six refus, six conduites à tenirMot de passe oublié, sans rien révéler
Le formulaire est ouvert à tous : il rend donc le même accusé que le compte existe ou non — répondre autrement donnerait la liste des comptes de l'institution. Le lien reçu par courriel vaut trente minutes et ne sert qu'une fois ; la base n'en garde que l'empreinte, si bien qu'une fuite de la table ne donne aucun lien utilisable.
202 dans tous les casChanger son mot de passe demande l'ancien
Une session ouverte ne prouve que le passé : elle dit qu'un agent s'est authentifié, pas qu'il est encore devant l'écran. Sans le mot de passe actuel, un poste de guichet laissé une minute suffirait à s'emparer d'un compte — et le titulaire ne s'en apercevrait qu'à sa prochaine connexion, quand il ne pourrait plus entrer.
écran « Mon compte »Le voisinage de chemin était un piège
Les trois routes portent le même préfixe et n'ont pas les mêmes droits : « oublié » s'ouvre parce que la personne ne peut pas s'authentifier, « changer » se ferme parce qu'elle le peut. Une règle écrite sur la famille au lieu des chemins aurait rendu la troisième inatteignable — sans erreur, sans journal. Deux tests interrogent les chaînes réellement assemblées.
la première chaîne qui correspond ne rend pas la mainUn réglage manquant ne se déguise plus en faute de frappe
Quand l'octroi direct n'est pas activé sur le client d'une institution, Keycloak refuse toutes les connexions — et son refus ressemble à celui d'un mot de passe faux. Chaque agent aurait cru se tromper, et personne n'aurait regardé le realm. Le motif du refus est désormais lu, et le réglage est réparé sur les clients créés avant qu'il n'existe.
invalid_grant ≠ unauthorized_clientLe guichet a maintenant un écran
Tout se fait au clavier
De l'ouverture à l'impression de l'accusé, sans souris. L'indicateur de focus n'est jamais retiré — c'est la première chose qu'on supprime pour « faire propre », et l'agent ne sait alors plus où il est. Un test parcourt l'écran à la tabulation et refuse une livraison qui y ajouterait un piège.
objectif : un pli en moins de 90 secondesCe que la machine propose se voit
Une valeur suggérée porte la mention « proposé » et se distingue à l'œil d'une valeur confirmée — pas seulement par la couleur. Sous le seuil de confiance, le champ est marqué « à vérifier » et le formulaire force le passage dessus avant d'accepter l'enregistrement.
accepter n'est jamais l'action par défautIntelligence absente, guichet ouvert
Service arrêté ou coupé pour l'institution : un bandeau le dit et le formulaire s'ouvre vide. Un formulaire vide sans explication ferait croire à une panne du guichet, et l'agent attendrait au lieu de saisir.
aucun repli silencieuxUn doublon se compare
Détection côte à côte, puis Rattacher ou Enregistrer séparément. Jamais de fusion d'office, quel que soit le score — c'est la même règle que côté registre, tenue une seconde fois à l'écran.
la machine propose, l'agent décideL'accusé vient du serveur
Le PDF et son code de vérification sont produits dans la transaction d'enregistrement. Le client les télécharge, il ne les fabrique pas : un accusé fabriqué par un navigateur n'attesterait de rien.
référence et code à forte entropieÉtiquette et bordereau : identifier, pas attester
Le client imprime l'étiquette à coller sur le pli et le bordereau de remise, avec un identifiant par pli et une décharge laissée vierge — la pré-remplir attesterait d'une remise qui n'a pas eu lieu. Leur code ouvre le pli ; il ne prouve pas son authenticité, et l'imprimé le dit.
deux codes, deux fonctions distinctesLe poste se choisit maintenant à l'écran
Un agent qui occupe plusieurs postes doit désigner celui sous lequel il agit ; la plateforme refuse sinon, et elle a raison. Le client web ne savait pas le désigner et se faisait refuser au-delà d'un poste unique. Il le sait désormais — et quand la liste des postes est indisponible, il le dit plutôt que de choisir à la place de l'agent.
l'étiquette et le bordereau ne sont pas au contratL'intelligence documentaire, et ses conditions
Le résumé cite, il ne rédige pas
Chaque phrase rendue est littéralement dans le document, à une position connue. Rien n'est reformulé ni même raccourci. Un passage sans source n'est pas restitué : pas de source, pas d'affirmation.
résumé extractif, jamais génératifUne suggestion sans motif est inutilisable
Toute proposition porte ses motifs en clair et son score. Aucune n'est appliquée sans décision humaine, et la décision — acceptée, corrigée, écartée — est tracée avec l'agent et le poste sous lequel il l'a prise.
l'IA propose, l'humain décideCe qui n'est pas revendiqué
Les seuils ne sont pas calibrés — aucune campagne d'évaluation n'a eu lieu. La zone d'un passage est approximative, donc elle n'est pas surlignée : un surlignage faux serait pire qu'un défilement approximatif, parce qu'il aurait l'air précis. Et la revalidation des droits à la restitution est rendue à faux, parce que ce service ne sait pas la faire.
le produit fonctionne intégralement sans ce moduleLa chaîne, éprouvée bout à bout
Chaque service était vert isolément, et la chaîne était coupée en trois endroits. Ces défauts n'ont cédé qu'à des tests qui la parcourent — sur une vraie base de données, pas sur des simulacres.
Un pli validé devient un courrier
Le découpage d'un lot est validé pli par pli au guichet, par un agent. Créer un courrier par lot fusionnerait des plis distincts sous un seul numéro d'enregistrement — irréversible dans un registre qui fait foi. La route de création refuse un jeton de service : la validation est un acte humain, et l'audit doit pouvoir dire qui l'a posé.
un numéro attribué ne se retire pasUn courrier créé ne pouvait pas être enregistré
Le cycle est CAPTURE → A_VALIDER → ENREGISTRE, et aucune méthode ne
franchissait le premier pas. L'enregistrement — la raison d'être du service —
était refusé par la machine à états. Les douze tests d'enregistrement passaient depuis
trois jours : ils construisent leur courrier déjà validé, parce que c'est l'état dont ils
ont besoin.
Le texte reconnu n'était jamais indexé
La recherche ne portait que sur l'objet et l'expéditeur — jamais sur le contenu des pièces, ce qui en est pourtant la raison d'être. Rien ne reliait un courrier à ses fichiers, dans aucun service. Le lien existe désormais, et la recherche trouve un courrier par un mot de son corps.
avant : 0 résultat — après : 1La couche arrive avant sa pièce
La reconnaissance de caractères est automatique et rapide ; la validation au guichet est humaine et lente. Le texte arrive donc le plus souvent avant qu'on sache à quel courrier il appartient. Il est mis de côté et repris à l'indexation — retourner sans rien faire acquitterait le message et perdrait le texte, sans trace.
rien n'est abandonné, le décompte est exposéCe que la recherche ne fait pas
Le moteur radicalise, il ne lemmatise pas : « travail » ne trouve pas « travaux ». Les pluriels réguliers et les familles de mots sont rapprochés, les pluriels irréguliers non. La limite est figée par un test, pour être connue ici plutôt que découverte au guichet.
une limite écrite vaut mieux qu'une surpriseCe qui manque encore au guichet
Le raccord est fait : le client crée le courrier lui-même, avec la clé d'idempotence de la session de saisie — un agent qui valide, ne voit pas la réponse revenir et réessaie ne doit pas obtenir deux numéros pour un seul pli. Ce qui manque n'est plus du code : rien de tout cela ne tourne encore ici, les services concernés sont construits, pas déployés.
éprouvé en intégration, pas sur cet environnementCe que les Lots 2 à 5 démontrent déjà
Une tâche ne nomme jamais personne
Elle est affectée à un poste, pas à un agent. C'est ce qui fait qu'un départ, une mutation ou un congé n'interrompt rien : le successeur trouve la bannette pleine, sans manipulation. Une tâche personnelle laissée par un départ se voit, elle ne disparaît pas.
le poste travaille, la personne l'occupeUn avis défavorable n'arrête rien
Il est motivé et consigné, et la décision reste à l'autorité. Faire d'un avis un veto changerait la nature de l'acte : l'aviseur éclaire, il ne décide pas. Le circuit de visas est figé au dépôt — le modifier après coup rendrait le parapheur incontestable.
viser n'est pas signer, ni bloquerLe numéro d'acte naît à la signature
Pas au dépôt, pas au premier visa : un projet abandonné en cours de circuit consommerait sinon un numéro officiel, et la série aurait un trou qu'aucune explication ne comble. Le numéro est calculé sous verrou depuis le dernier rang consommé, jamais par une séquence de base.
un acte non signé n'a pas de numéroRien ne part sans être signé, ici et maintenant
L'expédition vérifie la signature de l'acte au moment de l'engager, et non un état reçu plus tôt par événement. Si le service des actes est injoignable, elle refuse — elle ne répond jamais « pas signé » sur une panne, ce qui laisserait partir un acte renvoyé en rédaction entre-temps.
préparer et engager : deux droits distinctsUn gel juridique arrête une élimination déjà validée
Éliminer exige quatre conditions cumulatives — durée échue, sort final, double validation, procès-verbal signé — et elles sont vérifiées à l'exécution, sur l'état courant. Un gel posé une minute avant doit l'arrêter : c'est la seule protection d'une pièce réclamée par un juge, et contrôler plus tôt donnerait l'illusion d'avoir protégé.
le seul acte irréparable de la plateformeLe portail ne stocke rien
Seul service exposé à Internet, il n'a ni base, ni file d'événements, ni cache partagé. Ce n'est pas une simplification : sa surface d'attaque est celle d'Internet, et ce qu'il ne stocke pas ne peut pas être emporté avec lui. La référence de suivi est produite à l'intérieur, jamais par lui.
un service sans état ne cède rienUne saisine ne s'énumère pas
Le suivi est ouvert sans compte — exiger une inscription exclurait la majorité des déposants. Une référence inconnue et une référence qui n'est pas la vôtre reçoivent donc la même réponse : essayer des références n'apprend rien, et une référence qui existe désigne quelqu'un qui a saisi l'administration.
débit limité, épreuve anti-automateHors ligne, l'agent prépare — il ne conclut pas
Le terminal enregistre des commandes, pas une copie de la base : annoter, valider, rendre un avis, chacune avec sa clé d'idempotence. Signer, expédier et éliminer sont refusés hors ligne — le refus est dans le constructeur, pas dans les écrans, pour qu'aucun écran ne puisse l'oublier.
quatre commandes permises, trois interditesAucune fusion automatique
Quand la version serveur a changé pendant la coupure, les deux états sont présentés côte à côte et l'agent tranche. Aucun bouton n'est mis en avant : sur trente conflits, un bouton par défaut fait appuyer trente fois au même endroit sans lire. Dans un système de preuve, une écrasure silencieuse est inacceptable.
le conflit se montre, il ne se résout pas seulUne notification n'est lisible que par son destinataire
Sans exception d'encadrement. Un centre de notifications dessine la charge de travail d'une personne, ses dossiers et ses horaires de connexion. Le titulaire vient du jeton et n'est jamais un paramètre — un paramètre, même vérifié, laisse le contrôle à la charge de chaque route.
émettre est réservé aux services nommésCe que l'autorisation garantit désormais
L'identité vient du jeton
Onze services lisaient l'auteur d'un acte dans un en-tête HTTP — quarante-neuf en tout — et ces valeurs partaient telles quelles au journal d'audit. Un agent pouvait attribuer à un autre le transfert d'un original, une déclaration de perte ou l'annulation d'un enregistrement. L'identité vient maintenant du jeton ; ces en-têtes sont refusés, pas ignorés.
la passerelle route, elle n'autorise pasLe poste est choisi, jamais déclaré
Un agent qui occupe plusieurs postes dit sous lequel il agit — c'est une information que le serveur ne peut pas deviner, et qui change la trace d'audit. Mais le choix est vérifié contre l'organigramme : un poste non occupé est un refus, et le serveur ne choisit jamais à sa place.
un acte est posé ès qualitésOn ne demande que ses propres droits
Le service d'identité répondait à qui demandait le contexte de n'importe quel agent : postes, permissions, habilitation, délégations. Sur l'autorité d'habilitation elle-même. Un appelant n'obtient plus que les droits de l'agent dont il porte le jeton.
pas de clé passe-partoutUn service qui en appelle un autre se présente
Aucun appel inter-services ne portait de jeton, alors que tous les services en exigent un. Deux jetons désormais : celui de l'agent, relayé quand le travail est fait pour lui, et celui du service pour ce qu'aucune personne n'a demandé. Le second ne porte aucun agent : il ne peut pas se substituer à quelqu'un dans une trace.
repli fermé : en cas de doute, on refuseUn vert qui ne mesurait rien
Le travail tests:permissions était vert dans les onze services, et
aucun ne contenait un seul test — l'option qui évite d'échouer sur une
catégorie vide le rendait vert par construction. Il en compte aujourd'hui
soixante-neuf, cas négatifs d'abord.
Un pipeline vert ne dit pas tout
Trois façons pour un vert de ne rien prouver, rencontrées le même jour : un contrôle toléré peut avoir trouvé quelque chose de grave sans bloquer — ses résultats sont dans un fichier joint, pas dans sa trace ; un contrôle filtré peut n'avoir exécuté aucun test ; un pipeline annulé par une poussée suivante n'a jamais tourné, et le correctif qu'il devait vérifier ne l'est pas.
vérifier que le vert porte bien son commitTrois failles du conteneur web, corrigées
Le contrôle des dépendances signalait trois avis sur le serveur d'applications embarqué — accès réseau, sans authentification ni interaction. Il est toléré en attendant une politique : le pipeline restait vert et sa trace ne les nommait pas. Corrigés dans les huit dépôts concernés ; dix restent à traiter, et la liste est tenue.
notre configuration n'utilisait pas les mécanismes visésCe qui reste à faire, et qui n'est pas caché
Les habilitations par poste ne sont pas encore appliquées à l'indexation : elles viennent de l'affectation, qui appartient au Lot 2. La plateforme n'a pas de nomenclature de classification, donc la recherche ferme plutôt que d'ouvrir. Et le journal d'audit sait dire « le système », pas quel service.
aucune conformité n'est revendiquéeCe que le socle démontre déjà
Chaîne de preuve
Une écriture métier et son événement naissent dans la même transaction, franchissent la file, et sont scellés dans un journal chaîné.
outbox → file → empreinte chaînéeTraçage distribué
Le contexte de trace survit à la traversée de la file de messages, jusqu'à l'entrée d'audit.
traceparent W3CIsolation par institution
Schéma dédié, sécurité au niveau des lignes, comptes distincts. Une suite de tests de frontière bloque la livraison au moindre accès croisé.
4 barrières redondantesOrganigramme daté
Les droits sont portés par le poste, jamais par la personne. « De quelle autorité tenait-il ce pouvoir ce jour-là ? » a une réponse.
postes, occupations, délégationsPrincipes non négociables
Le produit fonctionne sans IA
Toute fonction assistée a un chemin manuel équivalent et testé. L'intelligence documentaire propose, l'humain décide.
Rien n'est supprimé
Une annulation est un état motivé et daté, jamais une disparition.
Aucun repli silencieux
Toute dégradation due à une panne est visible à l'écran. Un repli qui masque une panne produit des décisions fondées sur des données incomplètes.
Souveraineté
Fonctionnement intégral hors Internet, sur une infrastructure hébergée par l'institution. Aucune dépendance à un fournisseur d'IA externe.