République démocratique du Congo · Fonction publique

Athena

Gestion du courrier, traitement collaboratif, parapheur électronique, production documentaire et archivage probant pour les institutions publiques.

Environnement de développement — Lots 0 et 1 pour l'essentiel, premières livraisons des Lots 2 à 5

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

Application Athena Santé de la passerelle Keycloak Dépôts et gouvernance

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

ServiceRôleÉtat
athena-gatewayPoint d'entrée unique, contexte de sécurité, agrégation de vuesdéployé
athena-identiteOrganigramme daté, postes, délégations, autorisationdéployé
athena-configurationNomenclatures, calendrier ouvré, numérotationdéployé
athena-auditJournal append-only à empreintes chaînéesdéployé
athena-courrierRegistre, 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 plidéployé
athena-captureContrô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 otagedéployé
athena-documentsFichiers 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-traitementScore 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 lotsdéployé
athena-rechercheIndexation 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 clientdéployé
athena-iaSuggestions 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éterministedéployé
athena-webClient 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'atteignaitdéployé
athena-workflowCircuits, 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-notificationsCentre 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 2déployé
athena-modelesModè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 3déployé
athena-expeditionExpé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'huidéployé
athena-archivesConservation, 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 4déployé
athena-portailDé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 5déployé
athena-mobileApplication 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éleraitconstruit
« 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équence

La 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étention

La 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éfaut

Le 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-ID

Un 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 produit

Un 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écider

Exporter 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 juridique

L'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 phrase

Un 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 absente

Une 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 octets

Chaque 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 vient

Le 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 eux

Une 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ée

Les 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 vide

Un 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 normal

L'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 part

L'é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.

le test vérifie désormais qu'un chemin trouve SA route, parmi les quatorze

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 à tous

L'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 service

Le 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 écrit

Quelle 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 vide

Le 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 autorisation

Un 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 ailleurs

Le 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 personne

La 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 contenu

Statuer é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écent

Poser 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 absence

La 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 échec

L'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'agir

Une 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écanisme

La 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 direct

Un 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 à tenir

Mot 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 cas

Changer 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 main

Un 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_client

Le 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 secondes

Ce 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éfaut

Intelligence 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 silencieux

Un 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écide

L'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 distinctes

Le 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 contrat

L'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ératif

Une 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écide

Ce 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 module

La 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 pas

Un 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.

trouvé au premier parcours de la chaîne

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 : 1

La 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 surprise

Ce 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 environnement

Ce 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'occupe

Un 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 bloquer

Le 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éro

Rien 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 distincts

Un 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 plateforme

Le 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 rien

Une 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-automate

Hors 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 interdites

Aucune 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 seul

Une 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és

Ce 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 pas

Le 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és

On 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-partout

Un 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 refuse

Un 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.

lire le décompte, pas la couleur

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 commit

Trois 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és

Ce 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ée

Ce 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ée

Traçage distribué

Le contexte de trace survit à la traversée de la file de messages, jusqu'à l'entrée d'audit.

traceparent W3C

Isolation 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 redondantes

Organigramme 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égations

Principes 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.