MirrorMere®

Produto

Não fica por dizer-vos que algo está errado.

O MirrorMere não é um ecrã: é o motor de validação XBRL que corre por trás. É um Validating Processor XBRL certificado e entra diretamente no produto que já vendem.

Estrutura

What, Why e How: todos assentes numa só ontologia.

A maioria dos validadores para no What. Dizem que algo está errado e deixam o porquê, e o que fazer agora, para quem recebe a mensagem. O MirrorMere produz os três em conjunto — só possível porque aqui o próprio XBRL é construído como uma ontologia.

What — o que falhou
O ponto exato no documento, nomeado. Não um código de erro e um convite para procurar.
Why — porque está errado
Que regra o apanhou e que cláusula essa regra concretiza. Meses depois, quando o auditor perguntar, é esta a resposta.
How — o que fazer
Não o que está errado, mas o que mudar. Escrito para quem tem a entrega em mãos, não para quem escreveu o motor.
O fundamento — a ontologia XBRL
Os conceitos, regras, erros e cláusulas do XBRL estão dispostos como ontologia. Os três acima são inferidos sobre ela enquanto a validação corre.

Ontologia e inferência

O «porquê» é possível porque aqui o próprio XBRL é uma ontologia.

Um validador que só emite códigos de erro não consegue dizer porquê. Aqui os conceitos, as regras, os erros e a cláusula por trás de cada um estão juntos numa só ontologia, e o veredicto é o que o SHACL infere sobre ela. A inferência é a razão.

Mapa geral de tudo o que o motor sabe de XBRL: milhares de pequenos pontos coloridos unidos por linhas ténues, reunidos em aglomerados, um por cada especificação.
O mesmo mapa ampliado: os pontos resolvem-se em termos com nome — context, unit, period, Fact, Dimension, Hypercube — ligados por arcos etiquetados.
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> .

O vocabulário é o padrão do W3C; a última linha aponta para o identificador de erro publicado pela XBRL International. Nenhum nome aqui é invenção nossa.

Why Path

Quem o usa vê a cláusula, não apenas um código de erro.

Um código de erro diz que algo está errado. O Why Path diz qual objeto, qual regra e qual cláusula: quem tem a entrega em mãos pode corrigir, e vocês podem mostrar o raciocínio se lho pedirem.

Menos perguntas voltam para vocês

Os utilizadores deixam de perguntar o que significa um código de erro: a resposta já está no resultado.

Correção mais rápida

O objeto e a cláusula aparecem nomeados: ninguém tem de os ir procurar.

Podem defender o veredicto

Quando um auditor ou um regulador pergunta porquê, o rasto é a resposta.

Entrada

O ficheiro validado.

Regra

As verificações XBRL 2.1 §3–§5 que correram.

Cláusula

Duas violações, ambas ligadas a XBRL 2.1 §5.1.3.4.

O que corrigir

O papel http://xbrl.org/role/conformance não pode ser usado em link:label.

É a última linha que conta: indica a correção, não apenas a falha.

Resultados em que podem confiar

Quando este motor diz que passou, passou.

Um resultado de validação acaba por fundamentar uma auditoria ou uma entrega. Contam, portanto, duas coisas: que a resposta não oscile e que «passou» queira mesmo dizer passou. Aqui nada adivinha nem responde por probabilidade: submetam cem vezes o mesmo documento e terão cem vezes a mesma resposta.

Não assinala nada sem fundamento

Cada achado chega com a cláusula em que assenta. Se nenhuma cláusula for violada, di-lo. É tempo que a vossa equipa não gasta a confirmar se um aviso era real.

Nunca chama «passou» ao que não viu

Uma verificação que não conseguiu executar é reportada como não executada e contada à parte das passadas. Nada passa em silêncio, por isso um resultado limpo pode ser levado à letra.

Uma atualização não muda os vossos resultados

Os testes padrão correm em cada compilação, e uma alteração que quebre uma que seja nunca sai. Adotar uma nova versão não deita por terra o que concluíram no mês passado.

Versão que o produziu
Liga qualquer resultado à compilação exata que o produziu.
Ambiente de execução
Indica se uma diferença vem do ambiente e não do documento.
Que taxonomias foram lidas
Permite a duas partes confirmar numa linha que estavam a olhar para as mesmas taxonomias.
Ficheiros que não encontrou
Se este número não for zero, outro tanto ficou por verificar: e di-lo, em vez de deixar passar em silêncio.

Voltem a executar. A mesma resposta.

Núcleo de validação

Um módulo por especificação.

Cada especificação é um módulo à parte. Levem o motor inteiro, ou só aqueles que realmente tratam.

Especificação O que verifica
XBRL 2.1 Core Se montantes, períodos, unidades e definições de conceitos encaixam entre si
XBRL Dimensions 1.0 Se as desagregações por segmento ou região são combinações permitidas
XBRL Formula 1.0 Se as regras de cálculo e controlo definidas pela empresa ou pelo regulador se verificam
XBRL Table Linkbase 1.0 Se o relatório sai no formato de tabela exigido pelo regulador
Inline XBRL 1.1 Se o que um leitor vê e o que uma máquina lê dizem o mesmo
Open Information Model 1.0 Se o mesmo conteúdo mantém o sentido em XML, JSON e CSV
Extensible Enumerations 1.0 / 2.0 Se um campo que deve ser escolhido de uma lista fechada contém mesmo um valor dela
Report Packages 1.0 Se o pacote de submissão está montado como as regras exigem
Taxonomy Packages 1.0 Se um pacote de taxonomia está bem montado e resolve sem acesso à Internet
Units Registry 1.0 Se as unidades como moeda, ações e percentagens seguem o registo padrão
Link Role Registry 1.0 Se os papéis usados são os publicados no registo padrão
Transformation Rules Registry v3 / v4 / v5 Se «1 234» ou «março de 2025» no ecrã se converte no valor prescrito

Calculation 1.1 vem com o núcleo. Escolham o conjunto que escolherem, os achados voltam todos na mesma forma.

Java puro e desempenho

Toda a bateria de testes padrão termina em cerca de 20 segundos.

Java puro: nada de código nativo, nada mais para instalar. E ainda assim rápido o suficiente para correr toda a bateria dentro da vossa compilação. Não uma vez por versão: sempre que mudam alguma coisa.

100%
do conjunto de testes da XBRL International aprovado
~20s
para executar todo o conjunto
0
coisas para instalar à parte

Os tempos variam de máquina para máquina; o que conta é a ordem de grandeza, não o número exato. Os testes são públicos: meçam-no no vosso próprio equipamento.

Java 17 ou posterior

Onde uma JVM correr, isto corre. Nada mais para instalar, nenhuma biblioteca nativa no pacote.

Para avaliação

Comecem pelas vossas próprias entregas.

A forma mais rápida de avaliar um motor é apontá-lo a documentos cuja resposta já conhecem.