تخطَّ إلى المحتوى

VERIFIER CORE · التحقّق من الادّعاء مقابل المصدر

يقارن ما يدّعيه نصّ بما يقوله مصدره، ويُعيد أحد ستة حالات مع الأدلة.

Verifier Core هو نواة (kernel)، لا روبوت محادثة. تُعطيه ادّعاءً، ومُحلِّل مراجع يعرف كيف يسمّي مجالك مصادره، والنصّ المرجعي الذي يُقارَن به — فيخبرك هل يصمد الادّعاء، ويُظهر الأدلة في الحالتين.

حتمي: لا يتدخّل أي نموذج لغوي في مسار الحكم. النصّ نفسه، المصدر نفسه، الحكم نفسه، قابل لإعادة الإنتاج بعد عام — وهذا ما يجعله صالحًا كدليل لا كرأي.

ما هو ليس عليه

السوق مليء بأشياء تبدو مشابهة وليست كذلك.

  • ليس كاشف هلوسة

    لا يحكم أي نموذج على المعقولية. يتحقّق من ادّعاء محدّد مقابل مصدر محدّد، لا شيء قبل ذلك.

  • لا يُصدر درجة ثقة

    يُعيد حالة والأدلة الداعمة لها، لا رقمًا بين 0 و1. الدرجة تنقل القرار الصعب — أين يوضع الحدّ — إلى من يضطرّ لقراءتها.

  • ليس محرّك بحث

    لا يذهب ليبحث عن مستندات لك. أنت تُوفّر المدوّنة؛ يقارن الادّعاء بما أعطيته إيّاه.

  • لا يتحقّق من الاستدلال

    يتحقّق من ادّعاءات فردية مقابل مصدرها، لا مما يُستنتج منها. مقدّمتان مُستشهد بهما بشكل صحيح تؤدّيان إلى استنتاج خاطئ لا تزالان تجتازان الفحص — الخطوة الاستدلالية ليست ما يُفحص هنا، وهذه الصفحة تقول ذلك بدلاً من ترك الاسم يوحي بغيره.

مُصمَّم لكي يُبنى عليه

نواة، لا تطبيق. تُحضر ثلاث أو أربع قطع صغيرة، ويتولّى هو بقية المسار.

يختلف كل قطاع في نقطة واحدة فقط: كيف يُسمَّى المصدر في ذلك المجال. جلب النصّ المرجعي، والتحقّق مما إذا كان لا يزال ساريًا في التاريخ المعني، ومقارنة المعنى، وتركيب النتيجة — هذا مشترك بين مكتب محاماة وصيدلية وورشة صيانة على حدّ سواء، فيعيش مرّة واحدة في النواة بدلاً من مرّة لكل تكامل.

  • ReferenceResolver

    12 سطرًا

    كيف يُسمَّى مصدر في مجالك.

  • CorpusPort

    ~20 سطرًا

    من أين يأتي النصّ المرجعي.

  • DomainPack (اختياري)

    ~40 سطرًا

    مفردات المقادير الخاصة بقطاعك.

  • LanguagePack (اختياري)

    الأربع معًا، أو لا شيء

    طبقات لغتك: النفي، الحذف، التواريخ، والطيّ الإملائي.

  • SemanticAdvisor (اختياري)

    —

    رأي ثانٍ يمكن أن يُلطّف حكمًا — لا يُرقّي حكمًا إلى verified أبدًا.

مُحلِّل المراجع المكوَّن من اثني عشر سطرًا هو معظم الحجّة. إنه كود حقيقي، لا وعد — منسوخ من حزمة الاختبارات التي تعمل في CI، لمجال خيالي اختُرع لذلك الاختبار (إشارات إلى أقسام نشرة دوائية):

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;
  },
};

الشيء الوحيد الذي يتغيّر بين مكتب محاماة ومختبر وورشة صيانة هو هذه الخطوة الأولى: التعرّف على شكل الإشارة إلى مصدر في مستنداتهم. الباقي — جلب النصّ المرجعي، والتحقّق من سريانه، ومقارنة المعنى، وتركيب الحكم — هو عمل النواة، يُنجَز مرّة واحدة.

ثلاثة أمور لا يحلّها الحساب وحده

حالات مقيسة، لا توضيحات صُمّمت لتسهيل الفكرة.

إن كانت الصفحة تعرض نماذج، فهذه هي التي تستحقّ العرض: لا يلتقط أيًّا من الثلاثة فحصٌ رقمي أو فحص تشابه نصّي وحده.

الرقم الذي لا يتغيّر — رحلة Air Canada 143

«Uplift 22300 kg of fuel before departure today.» :المصدر
«Uplift 22300 lb of fuel before departure today.» :النصّ
unit: «22300 lb» تساوي 10115.1 كجم؛ يقول المصدر «22300 kg»، أي 22300.0 كجم

في 1983، زُوِّدت طائرة بوينغ 767 بالوقود بوحدة الرطل بينما افترض حساب الأرض الكيلوغرام، ونفد وقود الطائرة على ارتفاع 41,000 قدم فوق مانيتوبا. الأرقام متطابقة في النصّين، فلا يمكن لأي فحص رقمي يقارن المقادير فقط أن يلتقط هذا — يجب أن يعرف أن الوحدتين مختلفتان. هذه توضيح تاريخي لنمط الفشل، يُستخدم هنا لهذا السبب فقط: ليس عميلاً، وليس حادثًا منعه هذا المحرّك.

الكلمة التي تعني شيئين — الغالون

الغالون يساوي 4.546 لترًا في المملكة المتحدة و3.785 لترًا في الولايات المتحدة، فارق 20٪، والمستندان قد يكونان بالإنجليزية كلاهما. دون إقليم مُعلَن، يمتنع المحرّك عن الحكم ويقول ذلك بدلاً من التخمين. بإعلان GB يُحسم الزوج باتجاه؛ بإعلان US يصبح الزوج نفسه تباينًا حقيقيًّا. النصّ نفسه، إجابتان مختلفتان — ليس تناقضًا، بل سؤالاً ناقصًا يُكمله إقليم مُعلَن. اللغة ونظام القياس محوران منفصلان هنا، كما أن إقليم الهاتف مستقلّ عن لغته.

نصف الحقيقة — ما يُحذف

«يُمنع استخدامه في حالات القصور الكبدي، والقصور الكلوي الشديد، وأثناء الحمل» :المصدر
«يُمنع استخدامه في حالات القصور الكبدي، والقصور الكلوي الشديد» :النصّ

يُحذف الحمل. التشابه النصّي بين الاثنين: 1.000 — لم تتغيّر كلمة واحدة، بل غابت عبارة فقط. درجة تشابه وحدها كانت ستصنّف هذا verified.

ستّ حالات، لا قيمة ثنائية

معظم السوق يُعيد صحيحًا أو خاطئًا. التمييز هو المنتج.

محرّك ثنائي لا يعرف شيئًا يضطرّ للتقريب نحو جهة أو أخرى، والاتجاهان خطيران. ستّ حالات تُبقي «هذا المصدر غير موجود» — وهو حكم حقيقي ضدّ النصّ — منفصلة عن «لم نستطع النظر» — وهي ثغرة منّا — ومنفصلة مجدّدًا عن «خارج ما نغطّيه» — وهو قرار نطاق، لا فشل.

  • verified

    الادّعاء يصمد أمام المصدر

  • mismatch

    المصدر يقول شيئًا آخر

  • not_found

    المدوّنة تعمل وذلك المصدر غير موجود — حكم ضدّ النصّ

  • derogated

    وُجد، لكنه لم يكن ساريًا في تاريخ الوقائع

  • pending

    لم نستطع النظر — ثغرة منّا، لا من النصّ

  • not_verifiable

    خارج ما يغطّيه هذا النشر

عدم المعرفة ليس مثل الاتهام. إعادة not_found بينما الإجابة الصادقة هي pending تُنتج اتهامًا زائفًا متنكّرًا في هيئة حكم — أغلى خطأ يمكن أن يرتكبه مُحقِّق، لأنه يبدو لمن يقرؤه تمامًا كإصابة حقيقية. لذا تُعلن المدوّنة أيّهما هو، بدلاً من ترك المحرّك يستنتجه من شكل الفشل.

محايد بالبناء، لا بالشعار

المجال واللغة والمدوّنة والنموذج كلّها منافذ، لا شيء منها مُوصَّل داخليًّا.

تدخل معرفة القطاع عبر مُحلِّل مراجع وحزمة مجال اختيارية، لا تُوصَّل أبدًا داخل النواة، فالمحرّك نفسه الذي يفحص نشرة دوائية يفحص تقرير صيانة أو عقد ائتمان دون أن يمسّ جوهره. تحظى ستّ لغات اليوم بدعم كامل ومعتمد — الإنجليزية والإسبانية والفرنسية والألمانية والإيطالية والبرتغالية — لكلٍّ منها طبقاتها الكاملة الخاصة بالنفي والحذف والتواريخ والطيّ الإملائي. تُسجَّل اللغة بالطبقات الأربع معًا أو لا تُسجَّل: سياسة مشتركة باستثناءات لكل لغة هي بالضبط الطريقة التي يتسلّل بها التلوّث بين اللغات، لذا لا وجود لها.

تُعلَن اللغة ونظام القياس بشكل منفصل، تمامًا كما أن إقليم الهاتف مستقلّ عن لغته: يمكن لمستند بريطاني وآخر أمريكي أن يكونا بالإنجليزية ومع ذلك لا يتّفقان على معنى رقم. ترك نظام القياس دون إعلان ليس كافتراض النظام المتري — إنه إجابة ثالثة حقيقية، ويقدّمها المحرّك بدلاً من التخمين.

ما نعرضه رغم ذلك

تنشر المدوّنة ثغراتها المعروفة بنفسها.

يُشغَّل لوح صدارة اختبار إجهاد يُقارن المحرّك المرجعي بخطوط أساس أخرى، ويُنشَر الإخفاقات إلى جانب الإصابات — بما في ذلك خطوط أساس تتفوّق على المرجع في عمود واحد، لأن مُحقِّقًا يرفض كل شيء يُظهر صفر تسرّبات على الورق، وهذه ليست فضيلة يُختبأ خلفها. بمعزل عن ذلك: صفر تبعيّات تشغيل، وفحص تثبيت وتحقّق معزول عن الشبكة تمامًا يعمل دون أي وصول للشبكة، حتى يمكن اختبار ادّعاء الحتمية أعلاه بدلاً من تصديقه دون دليل.

الشهادة الخالية من ثغرات مُعلَنة إمّا كاملة أو كاذبة، ولا واحدة من الاثنتين مُصدَّقة.

VERIFIER CORE و GRUNDNORM

متكامِلان، لا مُتنافسان — طرفان متقابلان لنفس المشكلة.

يختم Grundnorm من تحقّق من سجلّ ومتى: منشأ تشفيري يصمد حتى لو مُسّ السجلّ بعد ذلك. يتحقّق Verifier Core مما إذا كان ادّعاء محدّد يصمد أمام مصدره: المقارنة نفسها. أحدهما يثبت أن السجلّ لم يُغيَّر بعد ختمه؛ والآخر يثبت أن ما ذكره السجلّ كان صحيحًا فعلاً وقت ختمه.

كيف يعمل Grundnorm

هل تبني قطاعًا يحتاج إلى هذه الطبقة؟

لا يُوزَّع @veredicto/core كحزمة قابلة للتثبيت — بل يُبنى داخل التطبيقات، لا يُنزَّل فيها. أخبرنا ما الذي تحتاج إلى التحقّق من ادّعاءاتك مقابله، وسنستعرض المنافذ معك.