factcircuit
FactCircuit는 불변 출처와 단계별 검증, 제한된 검색, 재현 가능한 평가를 제공하는 감사 가능한 주장·증거 검증 루프입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Manhaj: Arabic objection-diagnosis dataset and reviewer workbench (private)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
تشخيص بنية الشبهة قبل بناء مسار المعالجة. مستودع بيانات ومراجعة عربية؛ لا ينشر إجابات دينية ولا يصدر فتاوى ولا يحكم على إيمان الأشخاص.README 전문 보기 ↗
تشخيص بنية الشبهة قبل بناء مسار المعالجة. موقع عربي لمراجعة الشبهات وتحليلها وفق منهج كتاب «تربية الملكة على كشف الشبهة» للشيخ وليد بن راشد السعيدان، وأصله: «الشريعة لا تفرّق بين المتماثلات، ولا تجمع بين المختلفات». لا ينشر إجابات دينية معتمدة، ولا يصدر فتاوى، ولا يحكم على إيمان الأشخاص؛ كل ما يكتبه النموذج اقتراح يراجعه مختص.
النسخة المستضافة: https://manhaj-three.vercel.app (Vercel مع Supabase وOpenAI). دليل الوكلاء البرمجيين: AGENTS.md.
شبهة → تحرير الدعوى → الكيانات والأدلة → التحقق من المصادر → جمع النصوص → التحليل اللغوي
→ المقارنة الدلالية → القاعدتان الحاكمتان → الفرضيات واختبارها → خريطة الاستدلال
→ المراجع الناقد → الجواب الموثّق → مراجعة بشرية
SIGNUP_ENABLED=1) فيصبح مراجعًا يحلّل ويراجع ويعتمد. المسؤول هو صاحب رمز تشغيل من scripts/create_reviewer.py أو حساب بريده في ADMIN_EMAILS، وله وحده ملف التدريب ومجموعات الاختبار والتقييم وتوثيق المراحل وإعادة الفهرسة. الزائر بلا حساب لا يرى إلا الصفحة العامة (إلا إذا فُعّل PUBLIC_ACCESS=1، وهو مغلق في الإنتاج). لكل حساب ملف شخصي (الاسم والبريد وكلمة المرور والصورة).المصدر الوحيد في المرحلة الأولى كتاب وليد: «تربية الملكة على رد الشبهة» (العنوان كما في صفحة الكتاب الأولى؛ والموقع يكتب «كشف الشبهة»، ولم يُحسم الفرق بعد)، من PDF المستخدم: 152 صفحة PDF، و253 مقطعًا، و103 شبهات مرشحة، و14 قاعدة مرشحة. أضيفت إلى 20 مثالًا مقترحات تحليلية منظمة لا تُعد مراجعات بشرية، واقتُرحت مجموعات مرشحة للشبهات المتشابهة. جميع السجلات needs_review، وعدد السجلات المعتمدة صفر حتى يراجعها الخبراء؛ لا اعتماد آليًا ولا اعتماد بشريًا مفترضًا. القواعد قد تتداخل وتحتاج تحرير حدودها، وأرقام بعض الفروع مكررة في الكتاب؛ المعرفات مستقلة عن أرقام العناوين.
ليست هذه نسخة إنتاجية معتمدة علميًا بعد: يلزم اعتماد الخبراء، ثم قياس الدقة على حالات معتمدة. الاستخراج الأول محافظ يعتمد عناوين الفروع ومؤشرات نصية، ولا يدعي اكتشاف كل قضية ضمنية.
المصدر والبيانات المشتقة منه (PDF، وقواعد البيانات، وملفات data/، وصور الصفحات) محفوظة خارج Git ولا تُرفع مع النشر. لا تتضمن رخصة الكود ترخيصًا للكتاب. الأسرار في .env محليًا وفي متغيرات Vercel فقط.
مع LLM_PROVIDER=openai يُرسل إلى OpenAI نص الشبهة والقواعد والأمثلة المسترجعة ومقتطفات المكتبة الشاملة (store=False)، ويبحث النموذج في مواقع محددة (الشاملة، وتراث، والدرر السنية، وsunnah.com، وإسلام ويب، وquran.com). وتُرسل الألفاظ المقتبسة في الشبهة إلى واجهة تراث (Turath) للبحث في المكتبة الشاملة، وأرقام الآيات والأحاديث إلى alquran.cloud ومجموعة hadith-api للتحقق منها. دون مزود نماذج لا يُرسل الكتاب إلى أي خدمة. التفاصيل في حوكمة البيانات.
نفّذ الأوامر من جذر manhaj-objection-dataset:
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -e ".[test,tools]"
Copy-Item .env.example .env
python scripts/create_reviewer.py reviewer-01
python -m src.cli init-db
uvicorn src.asgi:app --host 127.0.0.1 --port 8000
أو شغّل scripts/start_local.ps1 الذي ينفذ الخطوات نفسها. افتح http://127.0.0.1:8000، وأنشئ حسابًا من الصفحة العامة ثم ادخل به. رمز التشغيل الذي يطبعه create_reviewer.py مرة واحدة شرط لتشغيل الخادم، ويُستعمل للأوامر وواجهة API (Authorization: Bearer)، لا لشاشة الدخول؛ احفظه في مدير كلمات مرور. يُخزن تجزئة الرمز فقط. لتكون مسؤولًا محليًا أضف بريد حسابك إلى ADMIN_EMAILS في .env وأعد تشغيل الخادم.
Linux/macOS: استخدم source .venv/bin/activate وcp .env.example .env. إذا كانت .env موجودة فلا تستبدلها. انتبه: إن كان DATABASE_URL في .env يشير إلى قاعدة الإنتاج، فالموقع المحلي يعمل للقراءة فقط تلقائيًا، أما أوامر سطر الأوامر فتكتب فيها فعلًا. لإعادة البناء استخدم قاعدة SQLite جديدة بدل محو سجل المراجعة.
python scripts/seed_book.py work/book.pdf
python scripts/verify_dataset.py
python scripts/render_source_pages.py SRC-e209f0cca8a26244 # صور الصفحات لعارض الكتاب
انسخ PDF إلى work/ أولًا، ولا تمرر مسار النسخة المحفوظة في data/source نفسه. يعمل الإدخال بتجزئة SHA-256 لمنع تكرار الملف، ويعمل الاستخراج بمعرفات مشتقة من مواضع المصدر. لا تعتمد الأوامر أي سجل. أرقام الصفحات PDF 1-based؛ printed_page_number=null حتى التحقق، ولا يُستنتج رقم مطبوع.
لملف آخر:
python scripts/ingest_book.py book.pdf --title "اسم المصدر" --author "كما ورد في المصدر"
python -m src.cli extract SRC-identifier
استخدم --profile rtl_visual فقط إذا أظهر الفحص أن الملف يخزن الحروف بصريًا بصورة معكوسة. كتاب وليد يحتاج ذلك؛ ويحتفظ النظام بالنص الخام وبالنص المرتب منفصلين. نصوص OCR تبقى غير معتمدة. مسار OCR المحلي الاختياري في وثيقة الإدخال.
needs_review.هدف المرحلة الأولى البشري (من 10 إلى 30 مثالًا منهجيًا، ومن 20 إلى 50 شبهة مراجعة، ومن 5 إلى 10 قواعد محررة) لا يكتمل آليًا. السجلات المرشحة قائمة عمل لتحديد هذه المجموعة، وليست بيانات تدريب معتمدة. التفاصيل في خطوات المراجعة.
POST /api/diagnose/stream)، وتُطابق الآيات والأحاديث بمصادرها آليًا.الأسئلة بعد التحليل: POST /api/diagnoses/{id}/ask، تُجاب من التحليل وحده، بحد 20 سؤالًا لكل تحليل وASK_DAILY_LIMIT لكل حساب في اليوم. شرح الخطوات في المنهج.
الاسترجاع يجمع BM25 مع تشابه المتجهات، ثم RRF وترتيبًا ثانيًا بتغطية كلمات السؤال. التضمين مستقل لنص الشبهة والدعوى والقاعدة والمقتطف وملخص العائلة. دون EMBEDDING_MODEL يكون البحث لفظيًا فقط، ولا يُسمى بحثًا دلاليًا. إعداد النسخة المستضافة:
LLM_PROVIDER=openai
OPENAI_API_KEY=<from your OpenAI project>
DIAGNOSIS_MODEL=gpt-6.1-sol
DIAGNOSIS_REASONING_EFFORT=low
CRITIC_MODEL= # step 10; defaults to DIAGNOSIS_MODEL
FOLLOWUP_MODEL= # follow-up questions; defaults to DIAGNOSIS_MODEL
EMBEDDING_PROVIDER=openai
EMBEDDING_MODEL=text-embedding-3-small
EMBEDDING_DIM=768
أو محليًا عبر Ollama: LLM_PROVIDER=ollama وEMBEDDING_PROVIDER=ollama وOLLAMA_URL (دون بث الخطوات ودون أسئلة المتابعة، فهي لـOpenAI وحده).
python -m src.cli embeddings --include-drafts # incremental; unchanged fields are skipped
python scripts/find_duplicates.py
python scripts/create_families.py
يمكن استخدام EMBEDDING_PROVIDER=sentence_transformers بعد pip install -e '.[semantic]'. يجب أن تطابق أبعاد المتجهات عمود vector(768)، أو تُطبق هجرة جديدة قبل تغييرها. لا توجد متجهات عشوائية بديلة. عند غياب قواعد مناسبة أو نموذج مضبوط يمتنع التحليل ويذكر السبب. النتيجة دائمًا اقتراح يحتاج مراجعة.
research_common_objections(topic, limit) في src/research/pipeline.py. يبحث في صفحات عامة ضمن قائمة روابط معتمدة في config/external_sources.json، وهي فارغة افتراضيًا. لا ينفذ بحثًا واسعًا غير مقيد، ولا يعتمد على ذاكرة النموذج.
لا يبدأ قبل إنهاء كل مرشحات المرحلة الأولى وتوثيق تغطية المصدر بواسطة المسؤول. أي تعديل لاحق يبطل بوابة المرحلة الثانية. يلزم لكل مصدر تصريح وصول آلي، وتوثيق شروطه وأساس استخدامه واسم من راجع الحقوق. يفحص robots.txt، ويحترم تأخير الزحف، ويرفض التحويلات والعناوين الداخلية ويثبت عنوان الاتصال لمنع تبديل DNS. النتائج والتكرارات والعائلات كلها مرشحة للمراجعة. في النسخة المستضافة يعمل البحث من سطر الأوامر فقط.
# استبدل المعرفات بحالات معتمدة؛ صفحة التقييم توفر الإجراء نفسه للمسؤول
python scripts/build_benchmark.py --test-ids SHB-one SHB-two --validation-ids SHB-three
python scripts/run_baseline.py SPLIT-identifier
python scripts/export_training_jsonl.py SPLIT-identifier --output data/exports/train.jsonl
python -m src.cli snapshots
ملفات JSONL تستخدم assistant.content كسلسلة JSON صالحة. التصدير مقيد ببيان إصدارات ثابت ويستبعد الاختبار والتحقق وعائلاتهما، حتى عبر بيانات تقسيم أقدم. الحالات التي صُدّرت للتدريب لا تصبح اختبارًا مستقلًا لاحقًا. التقييم لا يسترجع أمثلة الاختبار كأمثلة few-shot. لا fine-tuning في V1.
التقسيم التلقائي التقريبي 70/15/15 متاح فقط عند 100 حالة معتمدة على الأقل و20 مجموعة مستقلة على الأقل. المقاييس التسعة موجودة؛ ما يحتاج تحكيمًا بشريًا يظهر null/not_measured قبل إدخال التحكيم، ولا تُختلق درجات. التفاصيل في التقييم.
npx supabase db push # يطبق supabase/migrations على المشروع المرتبط، قبل دمج الكود المعتمد عليها
المخطط في supabase/migrations: السجلات ونسخها، والمراجعات، والمتجهات، وبيانات التقسيم، وبوابات المراحل، والتحليلات، والحسابات والجلسات، مع RLS وحاوية خاصة للـPDF وصور الصفحات. SQLite للتطوير يستخدم طبقة التخزين نفسها. سجلات المراجعة والإصدارات غير قابلة للتعديل أو الحذف (مشغلات SQL). CI يطبق الهجرات نفسها على PostgreSQL + pgvector حقيقي.
لا تنقل قاعدة SQLite إلى PostgreSQL بمجرد تغيير الرابط؛ أعد إدخال المصدر في قاعدة جديدة (scripts/seed_book.py) أو اكتب ترحيلًا خاضعًا للتدقيق. نسخ المعاينة (Preview) تعمل على SQLite فارغة للقراءة فقط دون أسرار الإنتاج. خطوات النشر والمتغيرات كلها في دليل النشر.
pytest -q
python scripts/verify_dataset.py
الاختبارات (نحو 150) تستخدم أمثلة اصطناعية غير دينية خارج مجموعة المصدر، ولا تتصل بالشبكة. CI يشغلها على كل طلب دمج مع PostgreSQL/pgvector حقيقي، ثم يتحقق أن schemas/ وsupabase/migrations/ مولّدة من الكود. اختبار PostgreSQL يُتخطى محليًا إذا لم يحدد TEST_POSTGRES_URL. مطابقة الاقتباسات للنص المستخرج لا تغني عن مقابلة كل صفحة مصورة بشريًا.
src/api.py, asgi.py FastAPI app, roles, streams, static files (Vercel entrypoint: src.asgi:app)
src/auth.py, db.py accounts and sessions; one storage layer for SQLite and PostgreSQL
src/models.py records, review requests, the eleven-step MethodProposal, CriticReport
src/classification/ the analysis pipeline, Shamela library (Turath), verse/hadith checks, follow-up answers
src/retrieval/ BM25 + vector + reranking
src/ingestion/ PDF + provenance
src/parsing/, chunking/ Arabic normalization, source extraction, page-local chunks
src/duplicate_detection/ exact / paraphrase / underlying objection proposals
src/family_detection/ candidate families; no forced membership
src/research/ phase 2 gates + allowlisted source collection
src/evaluation/ frozen group splits + nine metrics
src/export/ approved-only JSON / JSONL
web/ Arabic RTL site: index.html, app.js, style.css (vanilla JS, no build step), img/, fonts/
schemas/ JSON Schema generated from src/models.py
supabase/migrations/ PostgreSQL + pgvector + audit constraints + RLS
scripts/ reproducible commands
tests/ unit, API, governance, database integration
data/ private inputs, candidates, approved data, benchmark (not in Git)
docs/ methodology, governance, review, evaluation, deployment, operations
رخصة MIT للكود فقط. راجع LICENSE قبل مشاركة المصادر أو البيانات المشتقة.