VERIFIER CORE · VERIFICACIÓN DE AFIRMACIÓN CONTRA FUENTE
Compara lo que un texto afirma con lo que dice su fuente, y responde con uno de seis estados más la evidencia.
Verifier Core es un kernel, no un chatbot. Le das una afirmación, un resolutor que sabe cómo se nombran las fuentes en tu dominio, y el texto canónico contra el que comprobar — y te dice si la afirmación se sostiene, mostrando la evidencia en ambos casos.
Determinista: ningún modelo de lenguaje interviene en el veredicto. Mismo texto, misma fuente, mismo veredicto, reproducible dentro de un año — lo que lo hace utilizable como evidencia y no como opinión.
LO QUE NO ES
El mercado tiene varias cosas que suenan igual y no lo son.
No es un detector de alucinaciones
Ningún modelo juzga la plausibilidad. Comprueba una afirmación concreta contra una fuente concreta, nada anterior a eso.
No da una puntuación de confianza
Devuelve un estado y la evidencia que lo respalda, no un número entre 0 y 1. Una puntuación traslada la decisión difícil — dónde poner el umbral — a quien tiene que leerla.
No es un buscador
No sale a buscar documentos por ti. Tú aportas el corpus; el motor compara la afirmación contra lo que le has dado.
No comprueba razonamiento
Verifica afirmaciones individuales contra su fuente, no lo que se infiere de ellas. Dos premisas correctamente citadas que llevan a una conclusión errónea siguen pasando — el paso inferencial no es lo que esto comprueba, y esta página lo dice en vez de dejar que el nombre lo insinúe.
PENSADO PARA CONSTRUIR ENCIMA
Un kernel, no una aplicación. Tú aportas tres o cuatro piezas pequeñas y él hace el resto del recorrido.
Cada vertical difiere en un único punto: cómo se nombra una fuente en ese dominio. Traer el texto canónico, comprobar si seguía vigente en la fecha correspondiente, comparar el significado y componer el resultado — eso es común a un despacho, una farmacia y un taller de mantenimiento por igual, así que vive una sola vez en el kernel en vez de una vez por integración.
ReferenceResolver
12 líneas
Cómo se nombra una fuente en tu dominio.
CorpusPort
~20 líneas
De dónde sale el texto canónico.
DomainPack (opcional)
~40 líneas
El vocabulario de magnitudes de tu vertical.
LanguagePack (opcional)
las cuatro, o ninguna
Las capas de tu idioma: negación, omisión, fechas y plegado ortográfico.
SemanticAdvisor (opcional)
—
Una segunda opinión que puede matizar un veredicto — nunca promociona uno a verified.
El resolutor de doce líneas es casi todo el argumento. Es código real, no una promesa — copiado de la suite de tests que se ejecuta en CI, para un dominio ficticio inventado para ese test (referencias a secciones de una ficha técnica):
const fichaTecnica = {
id: "demo:ficha-tecnica@1",
resolve(text) {
const out = [];
const re = /secci[oó]n\s+(\d+\.\d+)/gi;
let m;
while ((m = re.exec(text)) !== null) {
out.push({
id: `smpc:${m[1]}`,
raw: m[0],
span: [m.index, m.index + m[0].length],
});
}
return out;
},
};Lo único que cambia entre un despacho, un laboratorio y un taller de mantenimiento es este primer paso: reconocer cómo es una referencia a una fuente en sus documentos. El resto — traer el texto canónico, comprobar que seguía vigente, comparar el significado, componer el veredicto — es trabajo del kernel, hecho una sola vez.
TRES COSAS QUE NO SE RESUELVEN A GOLPE DE CÁLCULO
Casos medidos, no ilustraciones construidas para que el argumento parezca fácil.
Si una página lleva demos, estas son las que merece la pena enseñar: ninguna de las tres la atrapa un control numérico o de similitud textual por sí solo.
La cifra que no cambia — vuelo 143 de Air Canada
Fuente: «Uplift 22300 kg of fuel before departure today.»
Texto: «Uplift 22300 lb of fuel before departure today.»En 1983, un Boeing 767 repostó en libras mientras el cálculo de tierra asumía kilos, y el avión se quedó sin combustible a 41.000 pies sobre Manitoba. Los dígitos son idénticos en ambos textos, así que ningún control numérico que solo compare magnitudes puede detectarlo — tiene que saber que las unidades son distintas. Es una ilustración histórica del modo de fallo, usada aquí solo por eso: no es un cliente, ni un incidente que este motor haya evitado.
La palabra que significa dos cosas — el galón
Un galón son 4,546 L en Reino Unido y 3,785 L en Estados Unidos, un 20% de diferencia, y los dos documentos pueden estar en inglés. Sin una región declarada, el motor se abstiene y lo dice en vez de adivinar. Declarando GB, el par se resuelve de una forma; declarando US, el mismo par pasa a ser una discrepancia real. Mismo texto, dos respuestas distintas — no es inconsistencia, es una pregunta incompleta que una región declarada completa. Idioma y sistema de medida son ejes separados aquí, igual que la región de un teléfono es independiente de su idioma.
La media verdad — lo que se omite
Fuente: «contraindicado en insuficiencia hepática, insuficiencia renal grave y durante el embarazo»
Texto: «contraindicado en insuficiencia hepática, insuficiencia renal grave»Se omite el embarazo. Similitud textual entre ambos: 1,000 — no se altera ni una palabra, simplemente falta una cláusula. Una puntuación de similitud por sí sola lo habría dado por verified.
SEIS ESTADOS, NO UN BOOLEANO
Casi todo el mercado devuelve verdadero o falso. La distinción es el producto.
Un motor binario que no sabe algo tiene que redondear hacia un lado o el otro, y las dos direcciones son peligrosas. Seis estados mantienen separado «esta fuente no existe» — un hallazgo real contra el texto — de «no hemos podido mirar» — un hueco nuestro — y de nuevo separado de «fuera de lo que cubrimos» — una decisión de alcance, no un fallo.
verified
la afirmación se sostiene frente a la fuente
mismatch
la fuente dice otra cosa
not_found
el corpus funciona y esa fuente no existe — un hallazgo contra el texto
derogated
existió, pero no regía en la fecha de los hechos
pending
no hemos podido mirar — un hueco nuestro, no del texto
not_verifiable
fuera de lo que cubre este despliegue
No saber no es lo mismo que acusar. Devolver not_found cuando la respuesta honesta es pending produce una acusación falsa disfrazada de hallazgo — el fallo más caro que puede cometer un verificador, porque para quien lo lee parece exactamente un acierto real. Por eso el corpus declara cuál de los dos es, en vez de dejar que el motor lo deduzca de la forma de un fallo.
AGNÓSTICO POR CONSTRUCCIÓN, NO POR ESLOGAN
Dominio, idioma, corpus y modelo son todos puertos, ninguno cableado dentro.
El conocimiento del sector entra por un resolutor y un pack de dominio opcional, nunca cableado dentro del kernel, así que el mismo motor que comprueba una ficha técnica farmacéutica comprueba un parte de mantenimiento o un contrato de crédito sin tocar su núcleo. Seis idiomas tienen hoy soporte completo y certificado — inglés, español, francés, alemán, italiano y portugués — cada uno con sus propias capas completas de negación, omisión, fechas y plegado ortográfico. Un idioma se registra con las cuatro capas a la vez o con ninguna: una política compartida con excepciones por idioma es exactamente como se cuela la contaminación cruzada entre idiomas, así que no existe.
Idioma y sistema de medida se declaran por separado, igual que la región de un teléfono es independiente de su idioma: un documento británico y uno estadounidense pueden estar los dos en inglés y no coincidir en lo que significa un número. Dejar el sistema de medida sin declarar no es lo mismo que asumir métrico — es una tercera respuesta genuina, y el motor la da en vez de adivinar.
LO QUE ENSEÑAMOS DE TODOS MODOS
El corpus publica sus propios huecos conocidos.
Un leaderboard de estrés enfrenta el motor de referencia a otros baselines y publica los fallos junto a los aciertos — incluidos baselines que superan a la referencia en alguna columna suelta, porque un verificador que lo rechaza todo muestra cero fugas sobre el papel, y eso no es una virtud en la que esconderse. Aparte: cero dependencias de runtime, y una comprobación de instalación y verificación air-gapped que se ejecuta sin ningún acceso a red, para que la afirmación de determinismo de arriba se pueda comprobar en vez de dar por buena.
Un certificado sin huecos declarados o es perfecto o está mintiendo, y ninguna de las dos cosas es creíble.
VERIFIER CORE Y GRUNDNORM
Complementarios, no competidores — extremos opuestos del mismo problema.
Grundnorm sella quién verificó un registro y cuándo: procedencia criptográfica que sobrevive a que el registro se toque después. Verifier Core comprueba si una afirmación concreta se sostiene frente a su fuente: la comparación en sí. Uno demuestra que un registro no se alteró después de sellarlo; el otro demuestra que lo que el registro afirmaba era cierto en el momento de sellarlo.
Ver cómo funciona Grundnorm¿Construyes una vertical que necesita esta capa?
@veredicto/core no se distribuye como paquete instalable — se integra en aplicaciones, no se descarga dentro de ellas. Cuéntanos contra qué necesitas comprobar tus afirmaciones y repasamos los puertos contigo.