Inventory local runtime artifacts in SBOM

This commit is contained in:
Hamza Ayed
2026-10-07 17:57:25 +03:00
parent a09e763ada
commit 20c90dbf29
6 changed files with 393 additions and 14 deletions
+2 -1
View File
@@ -4,6 +4,7 @@
## الحالة الحالية — 2026-10-07
- 2026-10-07 — استكمال جرد ملفات التشغيل لتقييم الإصدار التجاري: وسّع `scripts/generate_component_inventory.py` ليضيف binary PDFium وأدلة إشعاراته، وأوزان EasyOCR الموجودة كـCycloneDX components مع SHA-256 ومصدر/معرّف upstream وحالة الترخيص. ولّد SBOM الحالي 157 مكوّنًا: 50 Python و104 Flutter وPDFium واحد ووزنا OCR؛ تطابق ملفا OCR مع MD5 من إعداد EasyOCR 1.7.2، وسُجل غياب `english_g2.pth` المتوقع، مع تجزئة 16 إشعار بناء PDFium. اجتازت اختبارات المولّد 6/6 و`compileall` و`git diff --check`. أُحدّثت `sbom/README.md` و`LICENSE_REVIEW_2026-10.md`. بقي تصنيف 101 إشعار Flutter، تراخيص OCR/PDFium والنماذج، التحقق من مخطط CycloneDX، ومطابقة محتويات إصدار تجاري نهائي؛ هذا تقدم في الجرد وليس موافقة توزيع.
- 2026-10-07 — إعادة فحص نافذة Windows: API على `127.0.0.1:8000` ما زالت سليمة (`/health` يعرض Gemma 4 وSQLite والوكيل)، لكن Flutter Web على 5301 متوقف. أداة Computer Use البديلة أعادت قائمة بلا نوافذ Mithqal؛ فحص العمليات وجد PID `55860` من بناء `ui-verify-20261004` مستجيبًا وله HWND، إلى جانب ست عمليات Debug أخرى. طلب فتح الملف التنفيذي الحالي أعاد `launched app did not expose a targetable window: Mithqal AI`؛ لذلك لم أرسل أي نقر أو كتابة إلى نافذة غير مستهدفة. محاولة `flutter --version` بقيت معلقة مع وجود Dart من SDK المعزول (PID 44892)، فأوقفت أمر الفحص وحده ولم أوقف عمليات التطبيق أو Dart. لا تزال تجربة Windows اليدوية غير منجزة؛ يلزم حل تعارض إتاحة النوافذ/قفل SDK أو تشغيل جلسة Debug واحدة معزولة ثم إعادة التحقق.
- 2026-10-04 — تجربة حية لدورة عمل الوكيل مع مشروع مؤقت: سجلت مجلدًا تجريبيًا محليًا عبر `/v1/agent/projects`، ثم أرسل Flutter-equivalent request إلى `/v1/agent/run/stream` مع `README.md` محددًا. قرأ Gemma 4 الملف، ثم استدعى `propose_file_change` وأعاد diff لتحديثه خلال 77 ثانية مع heartbeat وHTTP 200؛ بقي الملف دون تطبيق التعديل. أُلغي تسجيل المشروع وحُذف المجلد المؤقت بعد التحقق. هذا يثبت مسار API من تسجيل المشروع حتى معاينة التغيير، ولا يغلق اختبار اختيار المجلد وعرض diff داخل نافذة Windows.
- 2026-10-04 — متابعة انقطاع الوكيل بعد 4–5 دقائق: أُعيد تشغيل API التطبيق على `127.0.0.1:8000` مع قاعدة البيانات الحالية، وأكد `/health` أن Gemma 4 سليمة. طلب بحث حي عبر `/v1/agent/run/stream` اكتمل بـHTTP 200 وحدث `done` بعد 387 ثانية، مع 15 heartbeat؛ لم ينقطع SSE خلال أكثر من 6 دقائق. مهلة عميل Flutter للبث هي 10 دقائق، والـheartbeat يعيد ضبط مهلة خمول تدفق الأسطر، لذا لا تفسر مدة 4–5 دقائق وحدها الانقطاع. اجتازت مجموعة اختبارات الوكيل/البث/المهل 32/32، ونجح `compileall` و`git diff --check`. أُضيف fallback يعرض مقتطفًا لكل هدف بحث صريح إذا توقف Gemma قبل إكمال تنسيق الجواب، مع اختبار انحدار ناجح. بقي التحقق اليدوي في نافذة Windows غير ممكن هذه الجولة: أداة التحكم المرئي انتهت مهلتها بعد محاولات الاستعادة، والنوافذ المكتشفة كانت من مسار بناء قديم؛ لم يُرسل أي نقر إليها. نتيجة البث الحي تثبت صمود API في هذا الطلب، لكنها لا تعزل سبب كل انقطاع سابق قد يكون من العميل/النافذة أو من تغير تشغيل الخدمة.
@@ -202,7 +203,7 @@
- تكرار التقييم مع إجابات مرجعية ومراجعين/درجات بشرية، وقياس استهلاك الذاكرة واعتماد مقارنة قابلة للتكرار. (2026-10-03: أُعيد التشغيل بمعايير أوسع: Gemma وQwen أكملتا 5/5 طلبات بلا أخطاء؛ Gemma مرّرت 9/9 فحوص شكلية، وQwen 8/9، ومتوسط الزمن 14.77 مقابل 6.25 ثانية. إجابة Qwen عن SQLite كانت غير دقيقة رغم اجتياز فحص وجود ثلاث نقاط، ما يثبت أن هذه الفحوص لا تقيس صحة المعنى. التقريرين النهائيين `evals/results/gemma4_e2b_2026-10-03_183058.json` و`evals/results/qwen2.5_1.5b-instruct-q4_K_M_2026-10-03_183140.json`. التقييمات السابقة المؤرخة `175827` و`180307` تستخدم فحوصًا أضيق. أُضيف `scripts/capture_ollama_runtime.ps1`: أظهر `/api/ps` حجم Gemma المحمّل 6,733,158,152 بايت وQwen 1,169,980,128 بايت، و`size_vram=0` لكليهما. اللقطتان `evals/results/ollama_runtime_2026-10-03_180846.json` و`...180934.json` لحظيتان وليستا peak؛ لا تربطان كل PID بالنموذج ولم تتوفر قراءة إجمالي/متاح RAM بسبب رفض CIM. لم تُسجل درجات بشرية بعد؛ تبقى مراجعة بشرية، قياس ذروة RAM/VRAM موثوق ومتكرر، وجولات إضافية للمقارنة.) الجولة السابقة كانت Gemma 8/10 بمتوسط 16.32 ثانية وQwen 5/10 بمتوسط 8.93 ثانية. أُصلحت منذها مشكلة الحساب المباشر مقابل الأداة وصيغة Qwen الرياضية؛ مشغّل التقييم يستخدم جلسة loopback مؤقتة ويلغيها.
- [x] جرد أولي لترخيص وسوم Ollama المحلية في `LICENSE_REVIEW_2026-10.md` (2026-10-04): فُحصت `ollama show --license` للأوزان الخمسة المثبتة وبطاقات المصادر الرسمية. Gemma 4 E2B وMinistral 3:3b وQwen2.5 وGranite Embedding أظهرت Apache 2.0؛ `gemma3:1b` تستخدم شروط Gemma الإضافية. وثّق الجرد أيضًا تدفق Groq الصوتي الخارجي واحتفاظ البيانات المحتمل.
- [x] إنشاء جرد مكونات آلي أولي `sbom/component-inventory.json` باستخدام `scripts/generate_component_inventory.py`: لقطة 2026-10-04 تضم 50 توزيع Python من `.venv` و104 حزم Flutter من `pubspec.lock`، مع بصمات 104 ملفات رخصة وبصمة أرشيف `NOTICES.Z` المضمّن في Windows Debug. اجتازت اختبارات محلّل الجرد 4/4 وفحوص JSON والمرجع الفريد. تُرك التصنيف اليدوي مطلوبًا لـ101 ملف رخصة عثرت عليها الأداة دون تصنيف تلقائي. الملف ليس جرد إصدار إنتاج محصورًا ولا مراجعة قانونية ولم يُتحقق من مخطط CycloneDX الرسمي؛ لا يتضمن علاقات الاعتماد أو كامل مكونات Windows الأصلية وPDFium وأوزان OCR/النماذج.
- [ ] اعتماد النماذج والاعتماديات لنسخة تجارية محددة: مطابقة مصدر وبصمة كل وزن سيُشحن، حزمة SBOM وإشعارات Python/Flutter/Windows/PDFium/OCR، معالجة قيود Gemma 3 أو استبعادها، وشروط Groq وإفصاح الصوت. لا يُعد الجرد الأولي أعلاه موافقة قانونية أو جاهزية إصدار. تقدم 2026-10-04: صُححت مراجعة Gemma 4 بعد مطابقة وسم Ollama المحلي وبصمته الكاملة مع `/api/tags` ونص Apache 2.0 من `/api/show`؛ بطاقة Google الرسمية تعلن Apache 2.0 أيضًا. بقيت مطابقة مصدر GGUF المحوّل وإشعارات نسخة الإصدار والاعتماديات وPDFium/OCR وشروط Groq والمراجعة القانونية.
- [ ] اعتماد النماذج والاعتماديات لنسخة تجارية محددة: مطابقة مصدر وبصمة كل وزن سيُشحن، حزمة SBOM وإشعارات Python/Flutter/Windows/PDFium/OCR، معالجة قيود Gemma 3 أو استبعادها، وشروط Groq وإفصاح الصوت. لا يُعد الجرد الأولي أعلاه موافقة قانونية أو جاهزية إصدار. تقدم 2026-10-04: صُححت مراجعة Gemma 4 بعد مطابقة وسم Ollama المحلي وبصمته الكاملة مع `/api/tags` ونص Apache 2.0 من `/api/show`؛ بطاقة Google الرسمية تعلن Apache 2.0 أيضًا. تقدم 2026-10-07: أُدرجت بصمة PDFium وإشعارات binary المطابقة، وملفات أوزان EasyOCR التي تطابق MD5 في إعداد 1.7.2، وسُجل غياب وزن الإنجليزية. بقيت مراجعة شروط توزيع أوزان OCR وتبعيات PDFium، وتصنيف إشعارات Flutter الـ101، ومطابقة المصدر/الأوزان لكل إصدار نهائي، وشروط Groq والمراجعة القانونية.
- تحسين أولي عبر prompts وRAG والأدوات؛ هذه غالبًا تعالج نقص المعرفة أو القدرة على الفعل دون تغيير أوزان النموذج.
- عند توفر GPU مناسب: تجربة LoRA/QLoRA على بيانات مرخصة ومنقحة، ومقارنة النتائج بالمجموعة المرجعية قبل اعتماد adapter.
- تدريب نموذج أساسي من الصفر خارج نطاق العتاد الشخصي المعتاد؛ يحتاج بيانات وحوسبة وبنية تدريب كبيرة، ولا يكون خطتنا الأولى.