Le pack de preuve scellé
Un verdict sans preuve est une opinion. Chaque validation peut émettre un pack signé qui dit quel document a été jugé, contre quelles règles exactement, par quel moteur, et ce qu'il a répondu — vérifiable par un tiers sans nous appeler.
Ce qui entre dans le sceau
Chaque étage apporte une empreinte. Le sceau final les couvre toutes : changer un octet à n'importe quel étage change le sceau.
- 1
Le document
SHA-256 du fichier déposé, sa taille, son format et son profil. Le document lui-même n’entre pas dans le pack — seulement son empreinte.
- 2
Le socle
L’identifiant du jeu de règles, son empreinte, sa date d’effet, et l’empreinte de chaque artefact exécuté.
- 3
Le moteur
Le nom et la version du processeur, et si le verdict a bien été rendu contre les artefacts du manifeste.
- 4
Le verdict
Le statut, le nombre d’erreurs, d’avertissements et de règles passées.
- 5
L’intégrité
Le SHA-256 d’une forme canonique du pack : une suite de lignes ordonnée, indépendante de la mise en forme JSON.
- 6
La signature
Une Ed25519 sur cette empreinte, avec l’identifiant de la clé qui l’a produite.
Ce que contient un pack
Celui-ci a réellement été émis par le pipeline. Sa clé de signature est engendrée pour la génération et n’est publiée dans aucun JWKS : il montre la forme, il ne se vérifie pas.
- document.sha256
- 6ad797b11ee5f072bbfd3f41f9e03e4d5d037d1a1988fc7dcb221d082956f60f
- ruleset.id
- eu-en16931-2026-08
- ruleset.sha256
- 3433666fbc3699ef3e194c56f4151c484f2b689cb9c352cfd269be1009b4c6e6
- engine.version
- saxon-12.5
- verdict.status
- needs_input
- verdict
- 1 err · 0 warn · 65 pass
- integrity.hash
- 8ea5a64a9154bb56678d8844bc3c9218c89efe81084bbe59bb958070c92e1d0c
- signature.alg
- EdDSA
Ce pack a été rendu contre eu-en16931-2026-08. Un socle publié est immuable : le même fichier, épinglé sur ce même identifiant, rendra le même verdict tant que les artefacts sont conservés — dix ans, la durée d’archivage fiscal.
Le pack, champ par champ
{
"version": "2",
"sealed_at": "2026-08-21T02:14:52Z",
"document": {
"sha256": "6ad797b11ee5f072bbfd3f41f9e03e4d5d037d1a1988fc7dcb221d082956f60f",
"bytes": 14619,
"format": "pdf",
"syntax": "cii",
"profile": "urn:cen.eu:en16931:2017"
},
"ruleset": {
"id": "eu-en16931-2026-08",
"sha256": "3433666fbc3699ef3e194c56f4151c484f2b689cb9c352cfd269be1009b4c6e6",
"sealed": true,
"effective_from": "2026-08-01",
"artifacts": [
{
"name": "saxon-he",
"version": "12.5",
"sha256": "98c3a91e6e5aaf9b3e2b37601e04b214a6e67098493cdd8232fcb705fddcb674"
},
{
"name": "schematron-cen",
"version": "1.3.16",
"sha256": "f821ce9320acc219081197ec893d7d3e8276ccd011fdff56c50e4f08b5a72fd0"
}
]
},
"engine": {
"name": "factlint-saxon",
"version": "saxon-12.5",
"pinned": true
},
"verdict": {
"status": "needs_input",
"errors": 1,
"warnings": 0,
"passes": 65
},
"integrity": {
"alg": "SHA-256",
"hash": "8ea5a64a9154bb56678d8844bc3c9218c89efe81084bbe59bb958070c92e1d0c"
},
"signature": {
"alg": "EdDSA",
"key_id": "example-key-not-published",
"value": "cuE7ZNrOutWJdM5Kan7QVorKx7hTP6ftIMjSBUaTOd-rUMZU4odsNMK1yiHduYHycnOoxp32qqrO6lvC61EyCg"
}
}Comment vérifier un sceau
- 1
Recalculer l’empreinte
Reconstruire la forme canonique du pack et en prendre le SHA-256. Elle doit être identique au champ integrity.hash.
- 2
Récupérer la clé publique
Le JWKS publie les clés actives et révoquées. Celle qui a signé est désignée par signature.key_id.
- 3
Vérifier la signature
Une vérification Ed25519 standard, avec la bibliothèque de votre choix. Rien de propriétaire, aucune dépendance à nous.
curl -X POST https://api.factlint.com/v1/evidence/verify \ -H 'Content-Type: application/json' \ -d @pack.json
La vérification est gratuite et sans clé : elle ne nous transmet aucun document et ne demande aucune confiance, donc elle ne se paye pas.
https://api.factlint.com/.well-known/evidence-jwks.json
Les questions qu’on nous pose
Peut-on vérifier hors ligne ?
Oui, et c’est le but. Le pack porte tout ce qu’il faut ; la clé publique est un fichier statique à mettre en cache une fois. Une vérification Ed25519 ne touche aucun réseau. L’endpoint existe pour la commodité, pas parce qu’il serait nécessaire.
Que se passe-t-il si Factlint disparaît ?
Les packs déjà émis restent vérifiables : ils ne dépendent d’aucun service. Ce qui disparaîtrait est la capacité à en émettre de nouveaux, et à rejouer une validation — le pack prouve alors ce qui a été jugé, mais plus personne ne peut le refaire. C’est pourquoi les empreintes d’artefacts y figurent : elles désignent des paquets publiés ailleurs, chez le CEN, le FNFE ou le KoSIT.
Le document est-il dans le pack ?
Non, seulement son empreinte. Un pack ne révèle donc ni un nom de client, ni un montant, ni un IBAN, et peut circuler sans précaution. En contrepartie, c’est à vous de conserver le fichier : sans lui, l’empreinte ne se recalcule pas.
Quelle valeur juridique ?
C’est une preuve technique, pas une certification. Le pack établit ce que notre moteur a fait, quand, et contre quelles règles — et qu’aucun de ces éléments n’a été modifié depuis. Il ne rend pas une facture conforme, ne vaut pas signature électronique qualifiée au sens eIDAS, et ne remplace aucune obligation de transmission. Ce qu’il apporte devant un contrôle ou un litige est la traçabilité : quelle version des règles s’appliquait ce jour-là, et ce qu’elle a répondu.
Une clé révoquée invalide-t-elle les anciens packs ?
Non. Une clé révoquée reste publiée dans le JWKS, précisément pour que les packs qu’elle a signés restent vérifiables. La révocation dit qu’on ne signe plus avec elle, pas que ce qu’elle a signé cesse d’être vrai.