MirrorMere®

Produit

Chaque constat arrive avec sa raison et sa correction.

MirrorMere est le moteur de validation XBRL qui tourne à l'intérieur du produit que vous vendez déjà. Chaque constat porte son emplacement, la clause enfreinte et ce qu'il faut changer.

Ontologie et Why Path

Le « pourquoi » est possible parce qu'ici le XBRL lui-même est une ontologie.

Un validateur qui ne renvoie que des codes d'erreur ne peut pas s'expliquer. MirrorMere relie concepts, règles, erreurs et clauses en une seule ontologie et y raisonne avec SHACL : le chemin suivi par l'inférence est la raison, et ce qui ne va pas, pourquoi et quoi changer sortent d'un seul coup. C'est ce chemin que vous voyez sous le nom de Why Path.

Carte d'ensemble de tout ce que le moteur sait du XBRL : des milliers de petits points colorés reliés par des traits pâles, rassemblés en amas, un amas par spécification.
La même carte agrandie : les points deviennent des termes nommés — context, unit, period, Fact, Dimension, Hypercube — reliés par des liens étiquetés.
ixbrlo:illegalMultipleUseOfId
    a owl:Class ;
    rdfs:subClassOf ixbrlo:ValidationError ;
    rdfs:comment "id attribute reused across iXBRL elements that require uniqueness."@en ;
    skos:note "Inline XBRL 1.1, Section 3 — ixe:illegalMultipleUseOfId"@en ;
    skos:note "Inline XBRL 1.1, Section 4 — ixe:illegalMultipleUseOfId"@en ;
    owl:equivalentClass <http://www.xbrl.org/2013/inlineXBRL/errors#illegalMultipleUseOfId> .

Le vocabulaire est celui du standard W3C ; la dernière ligne pointe vers l'identifiant d'erreur publié par XBRL International. Aucun nom ici n'est de notre invention.

Entrée

Le fichier validé.

Règle

Les contrôles XBRL 2.1 §3–§5 qui se sont exécutés.

Clause

Deux violations, toutes deux rattachées à XBRL 2.1 §5.1.3.4.

Ce qu'il faut corriger

Le rôle http://xbrl.org/role/conformance ne peut pas être employé sur link:label.

C'est cette dernière ligne qui compte : elle nomme la correction, pas seulement l'échec.

Des résultats sur lesquels compter

Quand ce moteur dit que c'est bon, c'est bon.

Un résultat de validation finit par servir de fondement à un audit ou à un dépôt. Deux choses comptent donc : que la réponse ne vacille pas, et que « conforme » veuille bien dire conforme. Rien ici ne devine ni ne répond par probabilité : soumettez cent fois le même document, vous aurez cent fois la même réponse.

Il ne signale rien sans fondement

Chaque constat arrive avec la clause sur laquelle il repose. Si aucune clause n'est enfreinte, il le dit. Autant de temps que votre équipe ne passe pas à vérifier si une alerte était fondée.

Il n'appelle jamais « conforme » ce qu'il n'a pas vu

Un contrôle qu'il n'a pas pu exécuter est signalé comme non exécuté et compté à part des réussites. Rien ne passe en silence : un résultat propre peut être pris au pied de la lettre.

Une mise à jour ne changera pas vos résultats

Les suites de tests standards tournent à chaque build, et une modification qui en casse une seule ne sort jamais. Passer à une nouvelle version ne renverse pas ce que vous aviez conclu le mois dernier.

Version qui l'a produit
Rattache tout résultat au build exact qui l'a produit.
Environnement d'exécution
Indique si un écart vient de l'environnement plutôt que du document.
Quelles taxonomies ont été lues
Permet à deux parties de confirmer en une ligne qu'elles regardaient les mêmes taxonomies.
Fichiers introuvables
Si ce nombre n'est pas nul, c'est autant qui n'a pas été vérifié — et il le dit, au lieu de laisser passer en silence.

Relancez-le. Même réponse.

Cœur de validation

Un module par spécification.

Chaque spécification est un module distinct. Prenez le moteur entier, ou seulement ceux que vous traitez réellement.

Spécification Ce qu'il vérifie
XBRL 2.1 Core Si les montants, périodes, unités et définitions de concepts tiennent ensemble
XBRL Dimensions 1.0 Si les ventilations par segment ou par zone sont des combinaisons autorisées
XBRL Formula 1.0 Si les règles de calcul et de contrôle propres à l'entreprise ou au régulateur sont respectées
XBRL Table Linkbase 1.0 Si le rapport sort dans la présentation tabulaire imposée par le régulateur
Inline XBRL 1.1 Si ce que voit un lecteur et ce que lit une machine disent la même chose
Open Information Model 1.0 Si le même contenu garde son sens en XML, JSON et CSV
Extensible Enumerations 1.0 / 2.0 Si un champ censé être choisi dans une liste fermée contient bien une valeur de cette liste
Report Packages 1.0 Si le paquet de soumission est constitué comme l'exigent les règles
Taxonomy Packages 1.0 Si un paquet de taxonomie est correctement constitué et se résout sans accès Internet
Units Registry 1.0 Si les unités (devise, actions, pourcentages) suivent le registre standard
Link Role Registry 1.0 Si les rôles employés sont bien ceux publiés au registre standard
Transformation Rules Registry v3 / v4 / v5 Si « 1 234 » ou « mars 2025 » à l'écran se convertit en la valeur prescrite

Calculation 1.1 est fourni avec le cœur. Quel que soit l'ensemble retenu, les constats reviennent tous sous la même forme.

Java pur et performance

L'ensemble des tests standards s'achève en une vingtaine de secondes.

Pur Java : aucun code natif, rien de plus à installer. Et assez rapide pour faire tourner toute la suite dans votre build. Pas une fois par version : à chaque modification.

100%
du jeu de tests XBRL International réussi
~20s
pour exécuter l'ensemble
0
choses à installer à côté

Les temps varient selon la machine ; ce qui compte est l'ordre de grandeur, pas le chiffre exact. Les tests sont publiés : mesurez-le sur votre propre matériel.

Java 17 ou plus récent

Là où une JVM tourne, ceci tourne. Rien d'autre à installer, aucune bibliothèque native dans le paquet.

Pour évaluation

Commencez par vos propres dépôts.

Le moyen le plus rapide de juger un moteur est de le lancer sur des documents dont vous connaissez déjà la réponse.