# الحالة

## الإصدارات من 0.5.3 إلى 0.5.12، من 17 إلى 19 أكتوبر 2026

الإصدار المعلن 0.5.12. هنا ما أضافته هذه الإصدارات وما فُحص منها، وكل تغيير في [سجل التغييرات](https://base.sbarah.com/docs/changelog/). ليس جاهزًا للإنتاج.

- **التثبيت بـDocker من جهاز فارغ.** شغّل `lab/vm-docker-rehearsal.sh` [دليل Docker](https://base.sbarah.com/docs/guides/docker/) في آلة KVM محلية من صورة Ubuntu 26.04 السحابية الأصلية (4 vCPU و6144 MiB، دون أي برنامج مثبّت مسبقًا): الحزم، والاستنساخ، و`deploy/compose.sh check`، و`up`، والإعداد الأولي، وأول مشروع عبر supabase-js، وإعادة التشغيل، وفحص التشغيل السريع (smoke). نجح 14 فحصًا من 14 في 2026-10-17، على أربع مراحل فوق قرص واحد ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-docker-install-checks.json)). ليس خادمًا حقيقيًا: لا شبكة عامة ولا شهادة.
- **فتح Studio من عنوان عام.** يعطي `SBARBASE_STUDIO_HOST` و`lab/studio_address.py` لكل بيئة عنوان Studio خاصًا بها؛ ولا يخدم وكيل TLS إلا اسمه العام وأسماء loopback وعناوين Studio المطابقة، ويرد على أي اسم آخر بـ421. نجح فحص الوكيل في 27 من 27 في 2026-10-17 بشهادة موقّعة ذاتيًا وخادم بديل خلفه ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/tls-termination.json)). لا يسجّل أي ملف أدلة Studio على عنوان عام لخادم حقيقي. ومنذ 0.5.11 تتجدد جلسة Studio ما دامت مستعملة، وتعود بعد إعادة التشغيل ([Studio](https://base.sbarah.com/docs/guides/studio/)).
- **إخراج Edge Functions من الشبكة المشتركة (0.5.4).** لا تصل حاوية الدوال في كل بيئة إلا إلى Auth وREST الخاصين بها، وإلى Storage عبر منفذ يثبّت مستأجرها ([التصميم](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/FUNCTIONS-NETWORK-ISOLATION.md)). مختبر باختبارات الوحدات، ولا ملف أدلة من فحص حي.
- **مخططات المطوّر وVault والإضافات المرفوضة (0.5.8).** ينشئ حساب المطوّر مخططات خاصة به ويعيد تسميتها، ويستعمل Vault، ويملك منشور `supabase_realtime`، ولا يستطيع استعمال أسماء مخططات المنصة ولا إنشاء إضافات مثل `http` و`pg_net` و`dblink` و`pgroonga`. نجح 64 فحصًا من 64 في 2026-10-19 على الصورة `public.ecr.aws/supabase/postgres:17.6.1.166`، ومنها أن البيئة لا تصل إلى قاعدة بيانات الأخرى ولا إلى أسرار Vault فيها ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/developer-schema-checks-2026-10-19.json)، [الوصول إلى قاعدة البيانات](https://base.sbarah.com/docs/guides/database-access/)). وكل بيئات الخادم تتشارك المفتاح الجذري لـVault.
- **لوحة الإدارة.** رموز التصميم ومظهر المكونات من Supabase، مع فحص للتباين في `tests/ui-contrast.test.ts` ([تصميم لوحة الإدارة](https://base.sbarah.com/docs/reference/console-design/))؛ ويدوم تسجيل الدخول ثلاثين يومًا افتراضيًا (`SBARBASE_MANAGEMENT_SESSION_SECONDS`)؛ ويُجدَّد رمز الوصول المنتهي بدل تسجيل الخروج؛ ولا تومض صفحة الدخول.
- **ما لا تثبته هذه الإصدارات:** أيها يعمل على الخادم الحقيقي، والتثبيت بـDocker على خادم عام، ووكلاء كثيرون في وقت واحد، وتثبيت كامل تحت حركة حقيقية.

## الخادم الحقيقي والإصدار 0.3.0، 16 و17 أكتوبر 2026

- **أين يعمل.** يعمل الفرع الرئيسي على خادم حقيقي (Hostinger، Ubuntu 26.04، أربع أنوية، 16 GiB) على sbarbase.sbarah.com، عبر systemd ووكيل TLS خلف Cloudflare. رُقّي من 0.2.0 بالأمر `lab/upgrade.py start --to`، وأكدت فحوص الصحة كل خطوة؛ وفيه بيئة واحدة بلا بيانات تطبيق.
- **الصور الأصلية.** تعمل عليه Auth v2.197.0 وPostgREST v14.18 وStorage v1.83.3؛ وثُبّتت وسُحبت Realtime v2.144.0 وEdge Runtime v1.77.4 وStudio 2026.10.12 وpostgres-meta v0.100.0. وما زال فحص قبولها الحي معلقًا ([الخطة](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-14-upstream-currency.ar.md)).
- **الاستعادة على الخادم.** أعادت استعادة البيئة من نسختها المحلية، واستعادتها من مجموعة التشغيل المشفّرة في Cloudflare R2 وحدها، صفوف الاختبار كما نُسخت تمامًا؛ لبيئة واحدة بلا مستخدمين ولا ملفات، دون حركة ودون انقطاع.
- **الأمان.** صار Studio وpostgres-meta محصورين في شبكة خاصة بكل جلسة؛ نفّذ فحص من الشبكة المشتركة SQL عبرهما قبل الإصلاح، ورُفض بعده. ويبقى `.lab/upstream` بصلاحيات 0700.
- **التشغيل.** يُربط تيليجرام من صفحة التنبيهات في لوحة الإدارة؛ ويُبلَّغ عن امتلاء القرص وتوقف حاويات الخدمات؛ ويعمل فحص من الخارج عبر عامل Cloudflare.
- **وكلاء الذكاء الاصطناعي (0.5.2).** على الخادم الحقيقي عبر Cloudflare، وبرمز وصول: نفّذ خادم MCP من Supabase المستضاف على `/mcp` نشرًا كاملًا كما يفعل وكيل (عنوان المشروع ومفاتيحه، وSQL، وترحيلًا، والجداول، ودالة Edge Function بشيفرة مشتركة أجابت بعد نشرها، والسجلات، والتنبيهات، ثم التنظيف)، وقرأ التطبيق الجدول الجديد بالمفتاح العام. وعمل خادم MCP الرسمي عبر stdio وSupabase CLI (`projects list` و`functions deploy --use-api` و`secrets`) مع `/v1`، واتصل Claude Code عميلًا حقيقيًا. وتوقف الرمز عند إلغائه ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/live-agent-access-2026-10-17.json)، [منفّذ SQL](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/agent-sql-checks-2026-10-17.json)، [وكلاء الذكاء الاصطناعي](https://base.sbarah.com/docs/guides/agents/)). لم يُقس: وكلاء كثيرون في وقت واحد.
- **مفاتيح API السرية (0.4.0).** على الخادم الحقيقي عبر Cloudflare، قرأ مفتاح سري صفًا يخفيه أمان مستوى الصفوف، وأنشأ مستخدمًا وحذفه، وعرض حاويات Storage، بينما لم يرَ المفتاح العام أي صف ورفضته إدارة مستخدمي Auth. ورُفض المفتاح السري مع معرّف متصفح، ومع ترويسة Origin، وبعد إلغائه ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/live-secret-keys-2026-10-17.json)، [مفاتيح API](https://base.sbarah.com/docs/guides/api-keys/)). أما Realtime وEdge Functions بمفتاح سري فمختبرة باختبارات الوحدات فقط.
- **السعة.** ثماني بيئات لكل تثبيت، و`max_connections` 200، و320 عملية لقاعدة البيانات، و64 طلبًا في البوابة؛ وفي تجربة اصطناعية لثماني قواعد بيانات بيئات تحت حمل كامل على قاعدة بذاكرة 1 GiB ومعالج واحد بلغت الذاكرة 613 MiB على الأكثر ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/capacity-drill-2026-10-16.json)). لم يُقس تثبيت كامل تحت حركة حقيقية.
- **مفتوح.** S4، وقبول الجزء الرابع من P3، وA7، وB1، وF1 إلى F8؛ والاستعادة على خادم جديد من النسخة الخارجية؛ والاستعادة المنقطعة. ليس جاهزًا للإنتاج.

## تحديث الإدارة والمشروع الأول، 2026-10-10

تضيف الشيفرة الحالية سياسة MFA اختيارية يضبطها مالك التثبيت، وصلاحية جلسة كلمة مرور موثقة للحسابات دون عوامل مفعّلة، وإنشاء production تلقائياً، ومدخلاً واضحاً للوحة Supabase بنقرة واحدة. يبقى MFA مطلوباً افتراضياً للتثبيت. توثق [الخطة المتكاملة](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-10-management-project-workflow.md) الفحوص وحدودها؛ لا يعني هذا التحديث تنفيذ نشر عام أو قبول تشغيل جديد للخدمات الأصلية.


## حالة الدمج في 2026-10-07

لم تثبت الجاهزية للإنتاج بعد. ما زال المصدر يتغير أثناء الدمج، ولذلك لا يوجد قبول نهائي لإصدار يجمع التغييرات الحالية. تخص نتائج الاختبارات وCI السابقة المصدر والبيئة المسجلين معها فقط. تحفظ [خطة الدمج](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-06-integration-programme.md) متطلبات الإكمال الكاملة.

نقطة التحقق المنشورة الحالية `e08ed3b2684bdf04f0288c7162747a2783177026`: نجحت مهام [CI 37600158231](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37600158231) الأربع: الفحوص العامة وتوافق Python والتثبيت عبر Docker واستلام المضيف الخالي. نجح 2102 اختبار Python 3.12، ونجحت [فحوص الموقع 37600311118](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37600311118) للبناء والاختبارات. أصبح استلام المضيف الخالي يعمل تلقائيا عند الرفع إلى main، إضافة إلى الطلب اليدوي الصريح؛ ولم يتغير سلوك طلبات الدمج.

يربط [ملخص نقطة التحقق الأصلية الحالية](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/ci-e08ed3b-2026-10-07/summary.json) حزمة Docker الجديدة بـ13 تقريرا و254 فحصا ناجحا لإنشاء المشروع وميزات Supabase والنسخ والاستعادة والترقية والتراجع وإعادة التشغيل. هذه حزمة التقارير الجديدة الخاصة بهذا التشغيل، وليست أرشيف baafbad السابق أو تقرير التثبيت التاريخي. ترتبط أدلة التشغيل بإيداع الشيفرة `e08ed3b2684bdf04f0288c7162747a2783177026`؛ ويحفظ نشر الوثائق اللاحق هذه الهوية دون قبول تشغيل تغييرات شيفرة أحدث.

تحتوي [أدلة المضيف الخالي الجديدة](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/ci-e08ed3b-2026-10-07/empty-host/summary.json) على ستة تقارير وبيان تشغيل، مع 58 فحصا فريدا في قوائم التحقق و21 فحصا منفصلا لتهيئة Auth الحية. لا تضيف نسخة تسليم تقرير التجربة المطابقة فحوصا جديدة. يثبت سجل التشغيل الأصلي وحارسا السكربت النهائيان أن وحدة النظام المرفقة أصبحت active وأجابت لوحة الإدارة بعد التجربة. تسجل لقطة JSON السابقة مرحلة إيقاف الوحدة المقصودة أثناء التجربة؛ ولا تصف حالة الخدمة النهائية بعد إعادتها. هذه نقطة تحقق للتثبيت على عامل Ubuntu جديد؛ ولا تثبت إعادة تشغيل الجهاز أو Kali أو الاستعادة الكاملة بعد فقدان المصدر أو استمرارية Cron الباردة والدافئة أو القبول الإنتاجي. تحتفظ فحوص الملفات الثابتة وبديل TLS بنطاقها المنفصل؛ ولم تثبت شهادة عامة.

حفظ [فحص واصفات systemd المنفصل على Fedora 44](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/systemd-scope-fd-probe-2026-10-07/summary.json) هويات خمسة واصفات عبر exec لعملية Python بالمعرف نفسه، ضمن نطاق systemd محدود الموارد وتحت ملكية معلومة. يضم الأرشيف العام ملفي الفحص والملخص. لم يشغل ضيفا أو حاوية Docker؛ ويقبل سلوك واصفات Python المحدد فقط، دون آلة Linux ضيفة أو إعادة تشغيل الجهاز أو نشر إنتاجي قابل للنقل.

دخلت إلى شجرة الدمج تغييرات مسار قاعدة البيانات وتسوية كتابات Storage والنقل الإداري ودورة الحياة ومتطلبات الاستعادة. لا تقبل فحوص المكونات على نسخ وسيطة الشجرة التي تغيرت بعدها. تتحقق نقطة CI على e08ed3b من فحوصها القياسية الحالية ومسارات التثبيت. ما زالت استمرارية الخدمات الأصلية المثبتة والاستعادة الكاملة إلى هدف جديد ومضيفون مدعومون إضافيون وفحوص المتصفح والمزودين والتجربة التشغيلية مطلوبة. تبقى صفوف قبول الميزات والإنتاج الـ105 غير مثبتة.

يبقى الهدف تشغيل خدمات Supabase الأصلية على Linux عبر Docker بصورة قابلة للنقل. يشترط مسار قبول المصدر الحالي Docker Engine محليا بصلاحيات rootful، بالإصدار 25 أو أحدث، وCompose بالإصدار 2.20 أو أحدث، ومعمارية x86_64 والقدرات المطلوبة. يرفض الملف الحالي Desktop وARM وrootless وخيار SELinux إذا أعلنه Docker؛ يوضح [عقد قبول المضيف](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/HOST-PREFLIGHT.md) التفاصيل. يوفر الحاسوب المحلي مضيفا معزولا دون تبعية خاصة بهذا الجهاز. مسار تثبيت آلة Linux افتراضية مستقلة وإعادة تشغيلها على الحاسوب مخطط له؛ ولم تثبت سلطة إنشائها أو قبول تشغيلها الأصلي. دعم Windows Docker Desktop ما زال فجوة، والآلة الافتراضية الكاملة بنظام Linux على Windows مسار محتمل غير مختبر. لا يشترط خادم خارجي لمواصلة العمل المحلي.

نجح [CI المنشور 37411721539](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37411721539) على الإيداع التاريخي `2c4ec82007a47436ba3e338ac03d1ad5e288df45`. نجحت فحوص الشيفرة وتوافق Python والتثبيت عبر Docker؛ وتُخطيت مهمة استلام المضيف الخالي. لا تقبل النتيجة المصدر المدمج الحالي أو مضيفا جديدا.

يحفظ [ملخص رصد الدمج التاريخي](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/historical-integration-observations-2026-10-07.json) الأعداد الدقيقة وهويات المصدر العام وتسلسل مراجعة البيانات الوصفية. يحتفظ بنتيجة التشغيل الأصلية الفاشلة، ويفصل غياب الموارد الفعلي عن رفض قبول إغلاق المالك والحارس. هو سجل رصد، وليس قبولا للشجرة الحالية.

## الأدلة التاريخية السابقة للدمج الحالي

تحتفظ النتائج التالية بتواريخها وهويات مصدرها وحدودها الأصلية، ولا تثبت قبول الشجرة الحالية.

نقطة تحقق منشورة تاريخية `baafbad`: نجح [CI 37592809221](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37592809221) في الفحوص العامة وتوافق Python والتثبيت عبر Docker، ونجحت [فحوص الموقع 37595879418](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37595879418) للبناء والاختبارات. نجح 2086 اختبار Python 3.12. تحفظ [أدلة الخدمات الحديثة](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/ci-current-2026-10-07/summary.json) 13 تقريرا و254 فحصا ناجحا لإنشاء المشروع وميزات Supabase والنسخ والاستعادة والترقية والتراجع وإعادة التشغيل. استُبعد تقرير تثبيت تاريخي من العدد الحالي؛ والاستعادة الكاملة إلى خادم جديد وCron والقبول الإنتاجي ما زالت غير مثبتة.

بدأ التشغيل اليدوي [37596046599](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37596046599) على الإيداع نفسه؛ وفشلت مهمة استلام المضيف الخالي عند تمرير عنوان Docker دون مسار المقبس المطابق. اجتاز التصحيح المركز 32 اختبارا ومراجعة مستقلة؛ ونجحت إعادة التشغيل الفعلية اللاحقة على e08ed3b؛ ويبقى الإخفاق الأصلي محفوظا. تحفظ [مراجعة الدمج](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-07-ci-integration.md) تسلسل الإصلاحات والإخفاقات السابقة وحدود كل نتيجة.

محاولة قياسية كاملة فاشلة تاريخية: نجح فحص إصلاح Namespace المركز في 61 حالة. ثم نفذت محاولة الفحص القياسي الكامل 1623 اختبار Python مع 9 حالات فشل و21 خطأ، وانتهت بالرمز 1. نجحت مراحلها الست الأخرى، ومنها 430 اختبار Bun والحالات المستهدفة المطلوبة الـ41. تظل المحاولة الكاملة فاشلة. طُبقت بعدها عشرة إصلاحات في مصدر تجهيز الاختبارات وتشغيلها؛ وكان يلزم التحقق منها مجددا عند تلك النقطة؛ وتسجل الفقرات أعلاه نتائج CI اللاحقة.

نقطة تحقق تاريخية للإصلاحات في 2026-10-06: تغلق الإصلاحات التي روجعت اتصالات SQLite في `recovery_bundle` بعد انتهاء معاملاتها الأصلية، وتغلق استجابات `HTTPError` في `notify`. وتلتقط 27 دالة اختبار خرج stderr المتوقع كاملا وتتحقق منه، مع تسجيل مسؤولية إغلاق tempfile وحذفه قبل الكتابة التي قد تفشل. يربط اختبار أحدث لإنشاء المورد تحذيره بدورة حياة استجابة HTTPError؛ ولا يثبت ذلك أسباب التخصيص في حزم التحذيرات السابقة.

نقطة تحقق تاريخية مقبولة لاختبارات الشيفرة: **نجح 1504 اختبارا دون فشل أو أخطاء أو تحذيرات أو اختبارات متجاوزة**، مع مراجعة مستقلة بعد رمز الخروج صفر. لا تشمل هذه النتيجة التغييرات اللاحقة في شيفرة التحكم والواجهة وإعدادات فحص TypeScript. طابقت ملفات المصدر العامة الـ881 المصدر المقبول، وكذلك التقاطا الملفات الـ294 وفحصا صلاحيات الملفات الـ881، وأزيلت الحاويات الثماني دون موارد غير محسومة. تشمل النتيجة 55 اختبارا لمكوّني إكمال طلبات SQL الخاصة الجديدين، واختبارات التجهيز الـ52. التفاصيل في [ملخص الاختبارات المقبول](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/private-pump-regression-2026-10-06.json). تحتفظ [نتيجة الاختبارات السابقة الـ1449](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/public-regression-2026-10-06.json) بنطاقها الأصلي. نجح [CI على `9666947`](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37404496379) في فحص الشيفرة والتوافق مع Python 3.12 والتثبيت عبر Docker، بما يشمل الملفات الأربعة الجديدة. تجاوز هذا الرفع العادي استلام المضيف الخالي؛ وتبقى نتيجته السابقة مرتبطة بـ`066f5ec`. لا تثبت اختبارات المكوّنات والتجهيز توافق العميل الخاص المثبت أو تشغيل PostgreSQL أو استمرارية Cron وVault أو الاستعادة الكاملة.

أعاد عميل PostgreSQL المثبت بإصداره 17.6 نتيجة صحيحة داخل حاوية Docker محلية جديدة ومعزولة، مع مراجعة مستقلة وانتهاء هادئ وإزالة الحاوية المتحقق منها. التفاصيل في [رصد العميل العام](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/default-factory-client-2026-10-06.json). يثبت ذلك `psql --version` فقط؛ وما زالت SQL الخاصة وتشغيل قاعدة البيانات واستمرارية إعادة التشغيل والاستعادة تحتاج قبولا فعليا.

تحققت حاوية جديدة مستقلة من أن قيم UID الأربع لعملية Bash هي 100، وقيم GID الأربع هي 101، بقراءة `/proc/self/status` فقط. انتهت الأوامر الـ15 والتدفقات الـ30 بنجاح، مع مراجعة مستقلة وإزالة الحاوية دون إجبار والتحقق من غيابها. يظل [رصد هوية العملية](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/default-factory-shell-identity-2026-10-06.json) مستقلا عن رصد إصدار العميل؛ ولا يثبت هوية psql أو عملية قاعدة البيانات، أو مصادقة كلمة المرور، أو إكمال SQL الخاصة.

نجحت مهام [CI 37388098529](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37388098529) الأربع على إيداع الشيفرة `066f5ec`، بما فيها Python 3.12 وتجربة Docker واستلام خدمة systemd على مضيف نظيف. ونجح [فحص الموقع 37388119460](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37388119460) للبناء والاختبارات فقط. التفاصيل في [ملخص قبول CI](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/ci-acceptance-2026-10-06.json)؛ وتبقى أدلة التشغيل مرتبطة بإيداع الشيفرة المحدد.

تملك المنصة العادية `legacy-shared` أدلة تاريخية لاختبارات Docker تشمل التثبيت والمشروع الأول وAuth وREST وStorage وStudio وRealtime وFunctions والنسخ الاحتياطية والترقيات. نجح CI الجديد واستلام الخادم الخالي على إيداع الشيفرة `066f5ec`. هذا الحاسوب هو خادم Linux Docker المحلي المعزول الذي اختاره المستخدم؛ ويوفر CI مسارا إضافيا على مضيف جديد. إعداد DNS العام وشهادة TLS العامة من إعدادات المشغل المستقبلية.

ما زال مسار `native-dedicated` التجريبي غير مكتمل: لم يحصل مرشح PostgreSQL 17.11 على قبول التشغيل أو الإعدادات الفعلية التي تحفظ الخصوصية أو الطلبات الخاصة الفعلية أو استمرارية Cron وVault بعد التشغيل البارد وإعادة التشغيل أو الاستعادة الفيزيائية. لا يجوز تبني وحدات تخزين المرشح المعزولة المحتفظ بها أو قراءتها أو حذفها. تظل 0.2.0 نسخة تطوير، ولم تثبت الجاهزية للإنتاج أو إصدار موقّع.

تحدد [أهداف المشروع](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/PROJECT_GOAL.md) و[خطة المنتج](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-03-product-and-portability-plan.md) و[طريقة التنفيذ](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-03-gauntlet-execution-method.md) و[عقد التشغيل الأصلي](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-03-native-placement-identity.md) نطاق العمل. يحفظ [سجل الأدلة](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/gauntlet-ledger.json) النتائج المرفوضة والأدلة المرتبطة بالمصدر. الحزم المحلية المتجاهلة ليست مرفقات موزعة أو واجهة تشغيل مدعومة.




## سجل سابق لمجموعات الاختبار، 2026-09-24

شُغّلت من جذر المستودع في حاوية نظيفة فيها Python 3.14 و`cryptography`، بصلاحيات root. لا تشغّل هذه المجموعات أي حاوية، وتنجح أيضًا دون الوصول إلى أي خدمة Docker، وهذا ما يفحصه CI الآن.

| المجموعة | الأمر | النتيجة |
|---|---|---|
| اختبارات Python للوحدات | `DOCKER_HOST=unix:///var/run/docker.sock /usr/bin/python3 -m unittest discover -s lab -p 'test_*.py'` | 642 اختبارًا، OK؛ تُخطّى 4 عند التشغيل بصلاحيات root أو حين يكون `/usr/bin/python3` أقدم من 3.14، ولكل منها سببه؛ لا يُتخطّى شيء على CI |
| اختبارات Bun (الجذر) | `bun test` | 101 نجاح، 0 فشل، 620 تأكيدًا، 20 ملفًا (الملفات الـ19 في `tests/` ومعها `website/tests/site.test.ts`) |
| الموقع | `cd website && bun run build && bun test` | البناء OK؛ 2 نجاح، 0 فشل، 40 تأكيدًا |
| فحص أنواع لوحة الإدارة | `bun run typecheck:ui` | ينجح |

سجّلت صفحات سابقة مجاميع أخرى (مثلًا 575 اختبار Python و87 اختبار Bun عند بوابة إصدار 0.1.0، و625 و93 على محطة العمل في 2026-09-23). كانت صحيحة لتاريخها ونطاقها، وكل جدول يصف نسخته المؤرخة وحدها. نتائج التحقق الأحدث وحدودها في سجل الأدلة المرتبط أعلاه.

في 2026-09-25 ضمّت مجموعة Python على 765 اختبارًا: نجحت (`OK`) دون تخطٍّ على محطة العمل، و`OK (skipped=2)` عليها حين لا تصل إلى أي خدمة Docker، وفي حاوية `python:3.12` مؤقتة `OK (skipped=6)` بصلاحيات root و`OK (skipped=4)` بمستخدم عادي. كل اختبار يُتخطّى يذكر ما ينقص الجهاز: أن يعمل بغير root لفحص رفض الأذونات، أو `/usr/bin/python3` بإصدار 3.12 وخدمة Docker لسكربت القبول، أو `systemd-analyze`، أو جهاز تخزين معروف للمسار `/`.

### إصدارات Python، 2026-09-25

صار الفحص المسبق يقبل `/usr/bin/python3` بإصدار 3.12 أو أحدث، فيقبل المفسّرين اللذين يأتيان مع Ubuntu 24.04 وDebian 13. للتحقق من أن الشيفرة تعمل عليهما، شُغّلت مجموعة اختبارات Python نفسها في حاويات مؤقتة بمستخدم عادي (uid 1000)، مع ربط نسخة المستودع، وBun في المسار، ودون أي خدمة Docker. استخدم Ubuntu وDebian حزمتيهما `python3` و`python3-cryptography`، واستخدمت صور `python:` أحدث إصدار من `cryptography`. وينجح `python -m compileall lab deploy` عليها كلها.

| المفسّر | النتيجة |
|---|---|
| Ubuntu 24.04: `python3` 3.12.3، و`python3-cryptography` 41.0.7 | 768 اختبارًا؛ تُخطّى 3؛ يفشل 6، وكلها مرتبطة بالمضيف (انظر أدناه) |
| Debian 13: `python3` 3.13.5، و`python3-cryptography` 43.0.0 | 768 اختبارًا؛ تُخطّى 3؛ يفشل 7، مرتبطة بالمضيف |
| `python:3.12` (3.12.14)، و`python:3.13` (3.13.15) | 768 اختبارًا؛ تُخطّى 3؛ تفشل الـ7 نفسها |
| `python:3.14` (3.14.7)، للمقارنة | 768 اختبارًا؛ تُخطّى 3؛ تفشل الـ7 نفسها |
| `/usr/bin/python3` 3.14.7 على محطة العمل | 768 اختبارًا، OK |

تفشل الاختبارات السبعة نفسها في حاوية المقارنة، فسببها الحاوية لا إصدار المفسّر. خمسة منها تحتاج جهاز تخزين فعليًا خلف `/` (ترفض حدود الإدخال والإخراج بالرسالة `io_device_unavailable`)، وواحد يحتاج `systemd-analyze`، وواحد يحتاج مجلدًا منزليًا للمستخدم uid 1000، وهو موجود في صورة Ubuntu وحدها. أما الثلاثة المتخطّاة فتحتاج خدمة Docker أو مصدر جهاز لـ`/`. عند هذه التجربة في 25 سبتمبر 2026، لم يكن تثبيت كامل قد جُرّب على Ubuntu 24.04 أو Debian 13؛ وكان Fedora 44 النظام المجرّب آنذاك. نتائج CI اللاحقة مرتبطة بإصداراتها ونطاقاتها كما في مقدمة الصفحة.

## الأدلة الحية

تشغّل الفحوص الحية حاويات حقيقية وتكتب نتائجها في [docs/evidence](https://github.com/M7MMAD-OMAR/sbarbase/tree/main/docs/evidence/). كل ملف يسمّي نطاقه، والأعداد في الملفات المختلفة متداخلة فلا تُجمع. العدد أدناه هو المسجل في الملف.

### المنصة والإدارة

| ماذا | الدليل | الفحوص |
|---|---|---|
| Auth مخصصة للإدارة، والعضويات، والـAPI المركّبة | [upstream-management-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/upstream-management-checks.json) | 28 |
| إعداد أول مشغّل، والتعافي من الانقطاع، والاكتشاف | [bootstrap-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/bootstrap-checks.json) | 18 |
| مفاتيح تصدرها الإدارة، والوصول عبر SDK، والإلغاء | [connection-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/connection-checks.json) | 9 |
| بناء لوحة الإدارة وتقديمها كملفات ثابتة | [console-build.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/console-build.json)، [console-serve.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/console-serve.json) | نجح؛ 19 |

### البيئات والعزل

| ماذا | الدليل | الفحوص |
|---|---|---|
| أربع بيئات: عزل Auth وRLS وبيانات الاعتماد والرموز | [four-environment-component-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/four-environment-component-checks.json) | 97 |
| الشيء نفسه عبر SDK وبوابة المفاتيح | [four-environment-sdk-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/four-environment-sdk-checks.json) | 44 |
| PostgreSQL الأصلي من Supabase، بيئتان، وترحيلات Auth حقيقية | [upstream-environment-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/upstream-environment-checks.json) | 40 |
| بيئة التشغيل الدائمة: عامل مستمر، ووحدات تخزين، وإعادة إنشاء الحاويات | [durable-upstream-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/durable-upstream-checks.json) | 25 |
| Storage مشترك مع تجربة لاستعادة قاعدة البيانات والملفات | [storage-recovery-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/storage-recovery-checks.json) | 122 |
| تهيئة أولية جديدة مغلقة: Auth وREST وStorage المشترك | [upstream-closed-bootstrap-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/upstream-closed-bootstrap-checks.json) | 122 |
| تشبّع حد الاتصالات مع استمرار خدمة الجار | [connection-limit-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/connection-limit-checks.json) | 7 |
| بيئة مزدحمة تستعير أماكن البوابة الفارغة، وتبقى الحصة كاملة لكل جارة نشطة مؤخرًا، ولا يُطلق تنبيه التشبّع إلا الرفض (HTTP محلي، وخادم خلفي مضبوط، لا Supabase) | [fair-share-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/fair-share-checks.json) | 7 |
| الاستجابة للضغط على حاوية مؤقتة | [pressure-response-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/pressure-response-checks.json) | 9 |

### التجهيز والأمان عند الانهيار

| ماذا | الدليل | الفحوص |
|---|---|---|
| دورة حياة عامل جديد مع الإيصالات والعقود وفحوص SDK | [fresh-worker-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/fresh-worker-checks.json) | 76 |
| قتل العامل الأصلي بـSIGKILL بعد النية أو بعد الشاهد | [worker-hba-crash-after-intent.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/worker-hba-crash-after-intent.json)، [worker-hba-crash-after-witness.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/worker-hba-crash-after-witness.json) | 90 لكل منهما |
| تسوية الإيصالات عبر المشرف الحقيقي | [worker-receipt-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/worker-receipt-checks.json) | 13 |
| قتل المشرف بـSIGKILL أثناء الفحص المسبق | [active-preflight-crash-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/active-preflight-crash-checks.json) | 25 |
| ترحيل الجيل، خمس نقاط انهيار بـSIGKILL على بيئة الاختبار المؤقتة | [fresh-worker-generation-crash-all.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/fresh-worker-generation-crash-all.json) | 196 |
| استبدال ملف HBA كاملًا | [upstream-atomic-hba-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/upstream-atomic-hba-checks.json) | 36 |
| انقطاع جزئي في قاعدة البيانات، على المكوّن وعلى الأصل | [partial-database-crash-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/partial-database-crash-checks.json)، [upstream-partial-database-crash-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/upstream-partial-database-crash-checks.json) | 64؛ 65 |
| تبنّي المصدر المحفوظ تحت سلطة HBA | [retained-source-adoption.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/retained-source-adoption.json) | مسجّل |

### الاستعادة

| ماذا | الدليل | الفحوص |
|---|---|---|
| تصدير مشفّر خلف سياج | [recovery-export-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/recovery-export-checks.json) | 34 |
| الاستعادة إلى محرك منفصل | [independent-database-restore.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/independent-database-restore.json) | 49 |
| Auth وREST الأصليان على النسخة المستعادة | [independent-service-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/independent-service-checks.json) | 11 |
| Storage وRLS المستخدم النهائي على النسخة المستعادة | [independent-storage-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/independent-storage-checks.json)، [independent-storage-rls-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/independent-storage-rls-checks.json) | 9؛ 14 |
| انقطاع pg_restore يتراجع بنظافة | [recovery-interruption-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/recovery-interruption-checks.json) | 38 |
| SDK عبر البوابة إلى البيئة المنقولة | [cutover-sdk-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/cutover-sdk-checks.json) | 11 |
| الجيران غير المتأثرين أعيد تشغيلهم على المصدر | [cutover-neighbor-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/cutover-neighbor-checks.json) | 16 |

### الاستيراد من Supabase (الفحص)

| ماذا | الدليل | الفحوص |
|---|---|---|
| فحص قاعدة بيانات المصدر للقراءة فقط: حالات الرفض والتحذيرات والخطوات اليدوية قبل أي تفريغ، على الصورة مثبّتة الإصدار وبدور `postgres` | [import-inspect-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/import-inspect-checks.json) | 6 |

الاستيراد الكامل (المخطط والمستخدمون والصفوف والملفات والتحقق) هو `lab/import_project.py`؛ وتشغيله من البداية إلى النهاية في جدول Docker أدناه.

### التثبيت عبر Docker والنسخ الاحتياطي اليومي وStudio والترقيات (CI، جهاز نظيف)

على جهاز GitHub نظيف ليس عليه غير Docker، يشغّل CI التثبيت عبر Docker مع كل تغيير ([التثبيت عبر Docker](https://base.sbarah.com/docs/guides/docker/)). ليس خادمًا حقيقيًا: لا شبكة عامة ولا شهادة ولا إعادة تشغيل للجهاز. وبما أن Docker مثبّت مسبقًا على ذلك الجهاز، جُرّبت خطوة الحزم وإعادة التشغيل وحدهما على آلة افتراضية محلية، في الصف الثاني.

| ماذا | الدليل | الفحوص |
|---|---|---|
| البناء والتشغيل، أول مشغّل، أول مشروع عبر supabase-js، إعادة تشغيل الحاوية، إيقاف نظيف | [docker-install-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-install-checks.json) | 15 |
| من آلة افتراضية فارغة بنظام Ubuntu 26.04 (في 2026-10-17): حزم التوزيعة (`docker.io` و`docker-compose-v2` و`docker-buildx`)، والنسخ، والفحص، والتشغيل، وإنشاء أول مشغّل، وأول مشروع عبر supabase-js، وإعادة التشغيل، وفحص السلامة. احتاجت بيئة واحدة إلى ذاكرة 6 GiB، ورُفضت عند 5.5 GiB لعدم كفاية السعة | [vm-docker-install-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-docker-install-checks.json) | 14 |
| نسخ بيئة واحدة وهي تعمل، تغيير الصفوف والمستخدمين والملفات، الاستعادة، المقارنة مع النسخة، حذف الحالة المحفوظة جانبًا | [docker-backup-restore.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-backup-restore.json) | 15 |
| Supabase Studio لبيئة واحدة: يُشغَّل عند الطلب، ويُدخل إليه بتذكرة الواجهة، وتُستخدم عبره قائمة الجداول وSQL والمستخدمون والحاويات، ويُرفض دون الجلسة أو بجلسة بيئة أخرى، ثم يُوقف ([دليل Studio](https://base.sbarah.com/docs/guides/studio/)) | [docker-studio-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-studio-checks.json) | 22 |
| إعدادات تسجيل الدخول: حفظ عنوان الموقع وعناوين إعادة التوجيه ومزوّد GitHub وتطبيقها بإعادة إنشاء Auth، وبدء OAuth ورابط بريد دون مفتاح، وإنشاء حساب بعد إعادة الإنشاء، ثم إزالة المزوّد ([تسجيل الدخول](https://base.sbarah.com/docs/guides/sign-in/)) | [docker-sign-in-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-sign-in-checks.json) | 15 |
| Realtime لبيئة واحدة: تشغيله وبدؤه من المشرف، والبث والحضور وتغيير في قاعدة البيانات بين عميلين من supabase-js عبر البوابة، وواجهة البث REST، ورفض مفتاح خاطئ، ثم إطفاؤه ([Realtime](https://base.sbarah.com/docs/guides/realtime/)) | [docker-realtime-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-realtime-checks.json) | 19 |
| النسخ المشفّرة خارج الخادم: الإعداد من stdin، ونسخة احتياطية تُنسخ وحدها إلى تخزين متوافق مع S3 (‏MinIO مؤقت)، ولا يُخزَّن إلا نص مشفّر، ورفض عبارة مرور خاطئة، وإعادة النسخة واستعادتها ([النسخ الاحتياطي والاستعادة](https://base.sbarah.com/docs/guides/backup-and-restore/#نسخ-خارج-الخادم)) | [docker-offsite-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-offsite-checks.json) | 12 |
| الوصول المباشر إلى قاعدة البيانات: تشغيل حساب المطوّر، وعميل PostgreSQL عبر المنفذ يشغّل ترحيلًا بأسلوب Supabase (سياسة، ومشغّل على `auth.users`، وسياسة Storage)، ورفض المستخدم الخارق وقواعد البيانات الأخرى، وتجديد كلمة المرور، ثم الإطفاء ([الوصول إلى قاعدة البيانات](https://base.sbarah.com/docs/guides/database-access/)) | [docker-database-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-database-checks.json) | 16 |
| Edge Functions لبيئة واحدة: نشر مجلد دوال Supabase بأمر واحد، واستدعاؤها بـ supabase-js، ودالة تستخدم supabase-js من npm بصلاحية الخدمة على Auth وREST وStorage الخاصة ببيئتها، وخطاف ويب دون مفتاح، وسر، وإعادة نشر، وحذف، ثم الإطفاء ([Edge Functions](https://base.sbarah.com/docs/guides/edge-functions/)) | [docker-functions-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-functions-checks.json) | 24 |
| السجلات والمقاييس لبيئة واحدة: عدّ الطلبات عبر البوابة مع الأخطاء وأزمنة الاستجابة واستهلاك الخدمات للذاكرة، وقراءة سجل الطلبات وسجلات Auth وREST وStorage عبر واجهة الإدارة، دون أي مفتاح أو رمز في أي رد ([السجلات والمقاييس](https://base.sbarah.com/docs/guides/logs-and-metrics/)) | [docker-observe-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-observe-checks.json) | 20 |
| الرفع: ملف بحجم 20 MiB عبر البوابة ثم تنزيله مطابقًا بايتًا ببايت، وقبول ملف أصغر قليلًا من حد 50 MiB ورفض ملف أكبر منه، ثم الأمر نفسه بعد أن أعاد `SBARBASE_UPLOAD_LIMIT_MB` جديد إنشاء Storage | [docker-upload-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-upload-checks.json) | 20 |
| الاستيراد إلى بيئة جديدة من بيئة أخرى تقوم مقام مشروع Supabase: يسجّل المستخدم الدخول بكلمة مروره القديمة، وينتقل أمان مستوى الصفوف والملف الخاص مع سياسة Storage الخاصة به ومشغّل التسجيل، ويُرفض استيراد ثانٍ إلى البيئة الممتلئة ([الانتقال من Supabase](https://base.sbarah.com/docs/guides/move-from-supabase/)) | [docker-import-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-import-checks.json) | 12 |
| تغيير مفتاح التوقيع وRealtime تعمل: رفض الجلسة القديمة ورمز التحديث القديم ورمز `service_role` القديم في Auth وREST وStorage، وقبول تسجيل دخول جديد بالمفتاح العام نفسه في كل مكان، وبقاء Realtime تجيب ([مفتاح التوقيع](https://base.sbarah.com/docs/guides/signing-keys/)) | [docker-signing-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-signing-checks.json) | 18 |
| ترقية إلى PostgREST أحدث عبر `lab/upgrade.py`؛ ثم إصدارات معطوبة يعود منها المشرف وحده (إصدار لا يجيب فيه PostgREST أبدًا، وإصدار يرحّل فهرس التحكم ثم يتوقف، وإصدار لا ينجح في فحوص السلامة أبدًا، وحركة التطبيقات محجوزة بالرمز 503 في أثناء ذلك)؛ ووسوم إصدارات يُقبل منها الموقّع بالمفتاح المسرود ويُرفض غير الموقّع والموقّع بمفتاح غير مسرود. ويبقى المستخدمون والهويات وحاويات Storage والملفات كما هي طوال ذلك ([الترقيات](https://base.sbarah.com/docs/guides/upgrades/)) | [docker-upgrade-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-upgrade-checks.json) | 45 |

### خادم فارغ، بمحاكاة في آلة افتراضية محلية

آلة Fedora 44 Cloud افتراضية مؤقتة فيها 4 معالجات افتراضية و6 GiB، ونسخة نظيفة من المستودع، ثم اختبار الاستلام بأمر واحد مع `--install-unit --first-project`، ثم إعادة تشغيل ([lab/vm-rehearsal.sh](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/lab/vm-rehearsal.sh)). ليست خادمًا حقيقيًا: لا شبكة عامة ولا شهادة. كشفت التشغيلات عشرة عيوب لم تستطع محطة العمل إظهارها، وأُصلحت كلها مع اختبارات، وهي مدرجة في سجل الملخص.

| ماذا | الدليل | الفحوص |
|---|---|---|
| الملخص: الآلة، والأمر، وإعادة التشغيل، والاستهلاك في الخمول، والعيوب المكتشفة | [vm-empty-server-rehearsal.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-empty-server-rehearsal.json) | مسجّل |
| التثبيت، والبدء تحت الإشراف، ولوحة الإدارة، ونطاق الإدارة، وتهيئة المشغّل، والوحدة، والإيقاف النظيف | [vm-empty-server-acceptance.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-empty-server-acceptance.json) | 12 |
| المشروع الأول: الدخول، والمشروع، وتجهيز بيئة، والمفتاح، وتسجيل مستخدم في Auth عبر supabase-js، وREST وStorage عبر البوابة، وطلب متصفح من نطاق آخر، ورفض المفتاح الملغى بـ401 (أُعيد في 2026-09-25) | [vm-empty-server-first-project.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-empty-server-first-project.json) | 15 |
| إعادة التشغيل: عادت الخدمة والبيئة دون تدخل | [vm-empty-server-rehearsal.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-empty-server-rehearsal.json) | نجح |

في الخمول مع بيئة واحدة، استهلكت الحاويات نحو 250 MiB والمشرف نحو 130 MiB. ما زال الفحص المسبق يحجز حدود الحاويات (2304 MiB لمكان التشغيل ذاك) ومعها 2560 MiB للخادم؛ انظر [اختيار الخادم](https://base.sbarah.com/docs/guides/choosing-a-server/).

### مراحل خارطة الطريق في الآلة الافتراضية، 2026-09-25

الخطوات التي تحتاج خادمًا، جُرّبت في آلة افتراضية من النوع نفسه (4 معالجات افتراضية و6656 MiB، والصور المثبّتة منسوخة من محطة العمل) بالسكربت [lab/vm-milestones.sh](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/lab/vm-milestones.sh) إلى أن يُشترى الخادم. جهة شهادات محلية تقوم مقام الشهادة العامة. الملخص مع النطاق والحدود: [vm-milestones-2026-09-25.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-milestones-2026-09-25.json).

| ماذا | الدليل | الفحوص |
|---|---|---|
| منفذ ثابت للوحة الإدارة، ووكيل TLS كوحدة systemd، وإعادة تشغيل، ثم مسار المشروع الأول كاملًا عبر HTTPS | [vm-https-first-project.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-https-first-project.json) | 15 |
| الدعوات على Auth الإدارة الحقيقي: الدعوة، والمعاينة، والقبول، والدخول، ورفض صلاحيات المشاهد، والإلغاء، والإزالة | [vm-invitation-check.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-invitation-check.json) | 16 |
| نسخ احتياطي للبيئتين وهما تخدمان 13326 طلبًا، لم يفشل منها أي طلب (قواعد بيانات صغيرة، نحو ثانية) | [vm-backup-traffic.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-backup-traffic.json) | 11 |
| استعادة النسختين على آلة افتراضية ثانية بالأمرين `sbarbase relink` و`restore`، ودخول المستخدمين القدامى بكلمات مرورهم القديمة | [vm-restore-drill.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-restore-drill.json) | 16 |
| ترقية إلى PostgREST أحدث، وإصدار معطوب عاد منه التثبيت وحده، ثم رجوع إلى الإصدارات التي ثُبّت بها | [vm-upgrade-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-upgrade-checks.json)، [vm-upgrade-return.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-upgrade-return.json) | 10 + 4 |
| حد البيئات: عند 6656 MiB يرفض فحص الذاكرة البيئة الثالثة؛ والاستهلاك الفعلي نحو 258 MiB في الخمول | [vm-environment-limit.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-environment-limit.json) | 4 |
| تشغيل متواصل: 60 دقيقة في الخمول مع بيئتين، دون إعادة تشغيل أي حاوية، والذاكرة والقرص والسجلات ثابتة | [vm-soak.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-soak.json) | 3 |

كشفت هذه التشغيلات خمسة عيوب، وأُصلحت كلها مع اختبارات: كان فحص الاستلام ينتظر لوحة الإدارة قبل وجود الصور؛ وكان سحب الصورة يستسلم بعد إعادة محاولة واحدة فورية؛ وكان قبول الدعوة يرجع 500؛ ورُفضت أول ترقية بعد فحص الاستلام لأن الفحص يكتب فوق ملفات أدلة متتبَّعة؛ ويمنع SELinux وحدةً تشغّل Bun من `/home`. وفُعّل الإبلاغ الخاص عن الثغرات على GitHub في اليوم نفسه.

### مسار النشر (على محطة العمل فقط)

| ماذا | الدليل | الفحوص |
|---|---|---|
| سكربت استلام الخادم من أوله إلى آخره، مع تثبيت الوحدة بصلاحيات root | [server-acceptance-latest.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/server-acceptance-latest.json) | 13 |
| تجربة النشر، دورة حياة المصدر والهدف | [deployment-rehearsal.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/deployment-rehearsal.json) | 11 |
| المسار الخاضع للإشراف تحت systemd | [supervised-run.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/supervised-run.json) | 10 |
| إنهاء TLS | [tls-termination.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/tls-termination.json) | 27 |
| مكان تشغيل هدف الاستعادة | [target-placement-rehearsal.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/target-placement-rehearsal.json) | 12 |
| الصور مثبّتة الإصدار موجودة ومطابقة لبصماتها | [pinned-images.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/pinned-images.json) | 5 تثبيتات |

المصفوفة المفصّلة للخادم في [جاهزية النشر](https://base.sbarah.com/docs/reference/deployment-readiness/).

## قناة التحديث، 2026-09-25

بُنيت في 2026-09-25 ([الترقيات](https://base.sbarah.com/docs/guides/upgrades/)): وسوم إصدارات موقّعة يُتحقق منها مقابل `deploy/release-signers`؛ وأربعة أصناف تُحسب من الفرق (آمن، و`attended` حين يتغير تثبيت Auth أو Storage أو Realtime، ويحتاج إعادة بناء، ويحتاج ترحيلًا)؛ وإشعار وصفحة تحديثات في لوحة الإدارة لمشغّل التثبيت، مع حكم المشرف على قابلية التثبيت؛ وتثبيت الإصدارات الآمنة بنقرة، وإصدارات `attended` بعد إقرار؛ وتحديث تلقائي اختياري للإصدارات الآمنة داخل نافذة صيانة؛ وتصريف قبل الانتقال؛ وحفظ نسخ آخر 3 ترقيات نقلت نسخة المستودع؛ ولقطة لحالة التحكم؛ وحارس يعمل أولًا في كل تشغيل؛ وحجز لحركة التطبيقات ورفض تغييرات الإدارة بالرمز 409 حتى تنجح خلال 120 ثانية جولة فحوص سلامة تشمل فحوصًا عبر البوابة؛ والعودة.

| ما الذي | الدليل | النتيجة |
|---|---|---|
| قناة الإصدارات وأصنافها، وملفات الطلب والإعدادات والحكم، وقرار التحديث التلقائي ومحاولاته، واللقطة واستعادتها، والحارس، والتصريف، والاعتماد المشروط بالفحوص، ومنطق فحص الترقية في CI نفسه (ملف الترقية يضم أيضًا اختبارات الترقية الأقدم) | `lab/test_release_channel.py`، `lab/test_updates.py`، `lab/test_upgrade.py`، `lab/test_upgrade_health.py`، `lab/test_upgrade_guard.py`، `lab/test_upgrade_drain.py`، `lab/test_upgrade_check.py` | 214 اختبار Python، نجحت على محطة العمل في 2026-09-26؛ ومجموعة Python كاملة 1041، نجحت |
| حجز الحركة، والفحص الذي يمر من خلاله، ومسارات التحديث، ومنطق صفحة لوحة الإدارة | `tests/hold.test.ts`، `tests/hold-bypass.test.ts`، `tests/updates-routes.test.ts`، `tests/updates-ui.test.ts` | 58 اختبار Bun، نجحت؛ ومجموعة Bun كاملة 295، نجحت |
| حالات CI الثلاث (إصدار يرحّل الفهرس ثم يفشل، وإصدار يفشل في فحوص السلامة، ووسم غير موقّع) | [docker-upgrade-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/docker-upgrade-checks.json)، تشغيل CI رقم 36195831433 في 2026-09-25، على جهاز CI نظيف | نجحت 45 فحصًا من 45 |
| دورة سطر الأوامر في الآلة الافتراضية التجريبية تحت systemd: `start --to` إلى PostgREST أحدث، وتراجع يطلبه المشغّل، وإصدار معطوب عاد منه صباربيز وحده واستعاد اللقطة | [vm-upgrade-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-upgrade-checks.json)، 2026-09-26، الآلة الافتراضية المحلية | نجحت 26 فحصًا من 26 |
| القناة نفسها في الآلة الافتراضية التجريبية كما يستخدمها المشغّل: فحص وتثبيت عبر واجهة الإدارة التي تستخدمها لوحة الإدارة، وإصدار معطوب عاد منه صباربيز وحده، والتحديث التلقائي داخل نافذته، وإصدار `attended` يغيّر Auth بعد الإقرار؛ مع التصريف، والخروج بالرمز 42، وإعادة التشغيل عبر systemd، والحارس، والحجز | [vm-channel-checks.json](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/vm-channel-checks.json)، 2026-09-26، الآلة الافتراضية المحلية، بإصدارات من مستودع محلي موقّعة بمفتاح مؤقت | نجحت 114 فحصًا من 114 |

عدا اختبارات الوحدات، شُغّلت حالات CI أعلاه على جهاز CI نظيف بالأمر `lab/upgrade.py` من سطر الأوامر، وشغّلت الآلة الافتراضية التجريبية المحلية دورة سطر الأوامر والقناة نفسها: إصدارات طُلبت عبر واجهة الإدارة وبالتحديث التلقائي، ونفّذها المشرف تحت systemd. ولم يُشغَّل أي جزء من القناة على خادم حقيقي، ولا مع المستودع الرسمي أو مفتاح توقيع الإصدارات الرسمي، ولم يُشغَّل الزر «Roll back» في لوحة الإدارة، ولا العودة من إصدار `attended`، ولا إصدار يحتاج إعادة بناء، إلا في اختبارات الوحدات. ومنذ الصيغة الأولى لهذا القسم صارت كل عودة تنقل نسخة المستودع قسرًا (وتُنسخ التعديلات المحلية إلى `.lab/upgrades/aside-<time>/`)، وصار التراجع الذي يطلبه المشغّل يرفض التعديلات المحلية ويذكر أسماءها، ويتوقف الحارس عن المحاولة بعد 3 مرات نقل فاشلة فإما يشغّل الإصدار السابق، أو يبقى على الإصدار المعتمد، أو يبقى متوقفًا بحالة `stuck`، ولم تعد تحمي نسخها إلا الترقيات التي نقلت نسخة المستودع؛ وكل ذلك مغطى باختبارات الوحدات فقط. أُدرج مفتاح توقيع الإصدارات الرسمي في `deploy/release-signers` في 2026-09-26؛ والإصدار الأقدم من ذلك الإيداع يرفض كل إصدار على أنه غير موقّع.

ولم يعد المشرف الذي يُقتل بدل أن يتوقف (أثناء فحوص السلامة أو في أي وقت آخر) يترك خدمة systemd متوقفة: يوقف التشغيل التالي الحاويات المملوكة التي تركها تعمل، مع إبقاء وحدات التخزين، قبل الفحص المسبق، إلا إذا أمسك قفلها مشرف أو عامل ما زال يعمل، أو انتظر إيصال أو سجل تسويةً (`lab/leftover_runtime.py`، [النشر على خادم](https://base.sbarah.com/docs/guides/server-deployment/)). أُضيف لذلك سطر إلى الوحدة، فلا يسري على وحدة مثبّتة إلا بعد `supervise --apply`. مغطى باختبارات الوحدات فقط، ولم يُجرَّب قتل حي.

وصار كل تشغيل نسخ احتياطي (`create all`، اليومي والذي يسبق كل ترقية) يأخذ أيضًا نسخة من قاعدة Storage المشتركة `storage_metadata` إلى `.lab/backups/storage/`، وتُستعاد بالأمر `lab/backup.py restore-storage`، فيمكن إلغاء إصدار يحتاج تأكيدك ويغيّر تثبيت Storage كليًا باستعادة التشغيل المأخوذ قبله يدويًا ([النسخ الاحتياطي والاستعادة](https://base.sbarah.com/docs/guides/backup-and-restore/)). مغطى باختبارات الوحدات فقط، ولم يُشغَّل على Storage حي.

ويصل الأمر `sbarbase` إلى القناة أيضًا: `upgrade channel`، و`upgrade start --release vX.Y.Z` مع `--allow-class`، و`upgrade rollback --check` ([الأمر sbarbase](https://base.sbarah.com/docs/guides/cli/)).

## الموارد

يحتاج كل تشغيل إلى حدود ذاكرة حاوياته مضافًا إليها احتياطي 2560 MiB: حدود بمقدار 1792 MiB على خادم فارغ، و512 MiB أخرى لكل بيئة، وسقوف معالج لا تتجاوز ضعف عدد الأنوية بعد إبقاء نواة واحدة للخادم. يُسمح بثماني بيئات على الأكثر لكل تثبيت (كانت أربعًا حتى 2026-10-16): ترفض API الإدارة البيئة التاسعة بـ409 قبل وضعها في الطابور، وما زال قيد بيئة التشغيل يفرض الحد نفسه. ترفع بيئة التشغيل `max_connections` في PostgreSQL من 100 (قيمة الصورة) إلى 200 عند أول تشغيل، وهذا يكفي ثماني بيئات بحدها الأساسي من الاتصالات. وفي تجربة اصطناعية لثماني قواعد بيانات بيئات تحت حمل pgbench كامل، على قاعدة بيانات بذاكرة 1 GiB ومعالج واحد، بلغت الذاكرة 613 MiB على الأكثر بحد 320 عملية ([تجربة التحمّل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/capacity-drill-2026-10-16.json)). وعلى خادم بأربع أنوية، لا يتسع توزيع المعالج لثماني بيئات إلا دون Realtime وEdge Functions. السقوف المضبوطة لمكان التشغيل المشترك المحفوظ على محطة العمل هي 5888 MiB من ذاكرة الحاويات و5.75 معالج، مقبولة تحت سقف 6 GiB و6 معالجات مع احتياطي 2560 MiB للخادم. هذه حدود تخصيص، لا طلب مقيس ولا توصية بعتاد. لم يُقس الحمل المختلط المستمر، فلا حد أقصى متحقق منه عند 10 بيئات أو 100، وعدد الزوار اليومي وحده لا يكفي لتحديد حجم الخادم.

## قيود اللقطة المشتركة التاريخية، سجل الوثائق في 2026-10-06

يتضمن المصدر المدمج الآن آليات دائمة لمنح صلاحيات الإدارة والحد من المحاولات، وملفات النقل الإداري وسجله، وسلطة دورة الحياة والاستعادة. لذلك لا تصف عبارات غياب المصدر أدناه الشجرة الحالية. ما زال تطبيق MFA والحد من المحاولات في التشغيل الأصلي المثبت والنقل الكامل لبيانات الاعتماد والحذف المتقطع وتحرير الموارد وسلامة البيئات المجاورة والاستعادة يحتاج أدلة حالية للدمج. تحفظ البنود التاريخية ما كان ينقص اللقطة المشتركة السابقة؛ ولا تصف المصدر الحالي أو تمنح قبولا للإنتاج.

- تجربة على خادم حقيقي: شهادة عامة وDNS، وتشغيل متواصل سبعة أيام بطلبات حقيقية، وقياس السعة تحت الحمل. أما باقي المرحلة الأولى فنجح في آلة افتراضية محلية.
- مجمّع الاتصالات وميزة Cron مكشوفة للمشغّل في البنية المشتركة السابقة. قبول آثار Cron/HTTP على الصورة الأصلية المثبتة دليل مستقل محدود. وكذلك `SUPABASE_DB_URL` داخل Edge Functions.
- الاستعادة إلى نقطة زمنية، وأهداف SSH أو rsync للنسخ خارج الخادم (المدعوم الآن تخزين متوافق مع S3 فقط)، وإعادة بناء خادم مفقود كله من النسخ الخارجية بخطوة واحدة (نسخة كل بيئة تُستعاد، وعلى تثبيت جديد بعد أن يعيد `sbarbase relink` إنشاء عميلها ومشروعها وبيئتها بمعرّفاتها الأصلية؛ ويسجّل بيان التثبيت ما تحتاجه النسخ، أما الأعضاء والمفاتيح والإعدادات فلا تنتقل معها بعد، وجُرّب هذا المسار على آلة افتراضية ثانية في 2026-09-25 لبيئات لم تستعمل Studio ولا Realtime ولا الوصول المباشر إلى قاعدة البيانات).
- استيراد مخططات غير `public`، وأسرار Vault، ومهام cron من مشروع Supabase (أما [الاستيراد](https://base.sbarah.com/docs/guides/move-from-supabase/) فينقل `public` والمستخدمين والصفوف والملفات).
- التعافي التلقائي من إخفاقات التجهيز في المراحل المتأخرة؛ تمنع المتابعة حتى يطابقها المشغّل.
- اعتماد أي إصدار من الأصل عبر سياسة التحديث. وتشغيل قناة التحديث على خادم حقيقي: التحديث التلقائي موجود ومعطّل افتراضيًا، ولم يُشغَّل إلا في اختبارات الوحدات وحالات CI والآلة الافتراضية التجريبية المحلية (أعلاه).
- دعم MFA وتحديد معدل محاولات الدخول. نقل المشروع بين العملاء يلغي مفاتيح API، لكنه لا يدوّر مفتاح توقيع JWT ولا كلمة مرور الوصول المباشر إلى قاعدة البيانات. وحذف البيئة يُبقي طبقة تشغيلها (قاعدة البيانات والحاويات والملفات)، فتبقى محسوبة ضمن حد البيئات؛ واسترداد تلك الموارد غير مبني بعد.
- مكان تشغيل على عدة خوادم والتنسيق بينها.
- الرفع القابل للاستئناف (TUS) عبر البوابة؛ أما الرفع العادي فيصل إلى حد الرفع، 50 MiB افتراضيًا.

## العمل التالي

تحدد خطة أكتوبر وطريقة التنفيذ المرتبطتان أعلاه الأولويات الحالية: إكمال متطلبات الميزات والتشغيل والاستعادة والأمان، والتحقق من كل جزء قبل توسيع نطاقه. العمل النشط هو [خطة مواكبة الإصدارات الأصلية](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-14-upstream-currency.ar.md)، وبنودها المفتوحة: S4، وقبول الجزء الرابع من P3، وA7 (PostgreSQL 17.11، ينتظر تجربته على آلة افتراضية)، وB1، وF1 إلى F8. ويعمل الفرع الرئيسي على خادم حقيقي (Hostinger، Ubuntu 26.04، أربع أنوية، 16 GiB) على sbarbase.sbarah.com؛ ولم يثبت قبول رسمي للإنتاج.

### ملخص سابق، سبتمبر 2026

كانت الأولوية آنذاك الخادم الحقيقي: [المرحلة 1 من خارطة الطريق](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-09-23-roadmap.md)، لنعيد عليه ما جُرّب في الآلة الافتراضية في 2026-09-25 (أعلاه). على محطة العمل، جرى ترحيل الجيل للقاعدة المحفوظة بإشراف المشغّل في 2026-09-25، وبقيت أعداد الصفوف كلها كما هي ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/generation-migration-retained.json)). نجح فحص دورة الحياة الدائم، بعد إعادة صياغته ليصبح إيقافًا وإعادة بدء للتشغيل المحفوظ دون حذف أي شيء، في 31 تحققًا ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/durable-lifecycle-restart.json)). وعلى البيئتين نفسيهما نجح حمل SDK المختلط دون أي عملية فاشلة ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/sdk-policy-regression.json))، وفشل تشغيل الطلبات الواصلة المستمرة: انتهت 14 من 600 طلب على البيئة المستهدفة دون أي حالة HTTP، بينما جاءت كل طلبات البيئة المجاورة صحيحة ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/gateway-sustained-failure.json)). وُجد السبب في المستمع المحلي وأُصلح دون Docker: كان الاتصال بعد رفض الطلب يُعلَن عنه أنه سيُغلق لكنه يبقى مفتوحًا، فيعيد العميل استخدامه، ثم يقطع تنظيف يجري بعد ثانية واحدة الطلب الطويل التالي عليه ([التفاصيل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/RESOURCE-POLICY.md)). ثم أُعيد تشغيل الطلبات المستمرة على التشغيل الحقيقي بعد الإصلاح ونجح: 555 رفضًا صحيحًا بالرمز 429، و45 نجاحًا صحيحًا بالرمز 200، وكل طلبات البيئة المجاورة الستين صحيحة، ولم يبقَ أي طلب دون حالة HTTP ([الدليل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/evidence/gateway-sustained-checks.json)). وضع أخذ عينات الضغط ومرحلة الفئة التجريبية لم يُبنيا.

## سجل التحقق السابق في أكتوبر

هذه تصريحات محفوظة من نوافذ مصدر سابقة، مع نتائجها وروابطها الأصلية، ولا تصف نتيجة V11 التاريخية اللاحقة. لا تثبت أدلة دورة حياة HTTPError اللاحقة أسباب التخصيص في تلك الحزم بأثر رجعي.

آخر نطاق للأدلة في 2026-10-05: دُمجت ستة إصلاحات للمصدر بعد مراجعات مستقلة. أصبح مسارا SQLite يغلقان الاتصال بعد انتهاء المعاملة الأصلية؛ وتلتقط 27 دالة لاختبارات الرفض خرج stderr كاملا وتتحقق منه في ثلاثة ملفات؛ ويمتلك إعداد اختبار tempfile إغلاق الملف ويسجل حذفه قبل الكتابة التي قد تفشل. هذه إصلاحات مصدر، ولم يكن التحقق العملي الكامل للإصدار المعدل قد نُفذ عند تلك النقطة. أصبحت نتائج المصدر والهوية والصلاحيات والمجموعة الكاملة المرتبطة بـ875 ملفا أدلة تاريخية، ولا تقبل هذه الشجرة المعدلة.

حصل نطاق public55 V3 المنفصل على قبول عملي: نجحت 25 حالة للمكوّن و30 للمضخة، وطابقت قراءة الملفات الأصلية الـ290 وقراءة الملفات الأربعة المضافة مع فحص صلاحياتها الأدلة، وحُذفت الحاويات الثلاث المعروفة دون موارد معلقة. وحصل نطاق بيانات المساعدة العامة BusyBox V8 على قبول عملي: أعاد Bash 5.3.3 وBusyBox 1.37.0 في المسارين المحددين بيانات الإصدار والمساعدة مع خروج بالرمز 0، وحُذفت حاويته الوحيدة. لا تقبل النتيجتان طلبا خاصا أو توقيت timeout وإشاراته أو مصدر الملف التنفيذي أو تشغيل المرشح أو استمرارية Vault وCron الباردة والدافئة أو الاستعادة الفيزيائية أو الإنتاج.

أعلنت تجربة نافذة التحذيرات V4 المحفوظة نجاح 1447 اختبارا عاديا، لكنها سجلت ستة ResourceWarnings وخرجت بالرمز 1، وكانت نافذة الملاحظة 839 لكل التحذيرات. تحمل ثلاثة سجلات النوع الدقيق sqlite3.Connection، وثلاثة اسم tempfile.py والسطر 484 مع مصدر NoneType. لا تحدد نافذة الملاحظة موضع التخصيص أو سببه؛ ولم تحدد تلك الحزمة أسباب تخصيص موارد tempfile الثلاثة. يلزم ربط المصدر والهوية والصلاحيات والمجموعة الكاملة من جديد، ثم CI للإصدار النهائي واستلام الخادم الخالي بتشغيل يدوي. تحتفظ نتائج CI والموقع للإيداع المنشور 0e745394 بنطاق ذلك الإيداع فقط.

المكان الذي يجمع الميزات المتاحة وحدودها والأدلة المؤرخة عليها. تحديث نطاق هذا السجل التاريخي: 5 أكتوبر 2026. نسخة التطوير المعلنة 0.2.0؛ ويظل [0.1.0](https://base.sbarah.com/docs/changelog/) إصدار مصدر سابقًا، ولا يعني رقم التطوير أن إصدارًا جديدًا موقّعًا قد نُشر.

نجحت مهام الفحوص وتوافق Python وتثبيت Docker في [CI 37206229288](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37206229288) عند الإيداع المنشور `0e745394`. كانت مهمة الخادم الخالي **متخطاة** وتحتاج إلى تشغيل يدوي جديد. نجح [بناء الموقع 37206294329](https://github.com/M7MMAD-OMAR/sbarbase/actions/runs/37206294329) منفصلا، دون نشر خدمة عامة. تخص النتائج هذا الإيداع وحده؛ تعديل المصدر والوثائق يحتاج فحوصا جديدة.

## نتائج التحقق التاريخية وحدودها

تحتفظ المحاولة السابقة V9 initV2 بنتيجتها المرفوضة: نجحت الحالات المركزة 14 و9 و29، لكن المجموعة الكاملة نفذت 1447 اختبارا خلال 72.300 ثانية مع فشل واحد و15 خطأ. كانت الأخطاء سبعة في صلاحيات سكربت استلام الخادم وثمانية في مساحة `.lab` المقروءة فقط، مع فشل فحص إذن التنفيذ. طابقت قراءتا الملفات الـ290 وربط المصدر الـ875، وحُذفت الحاويات الست المعروفة دون موارد معلقة؛ ولم يتكرر عيب Git السابق. العدد 1356 حد قبول أدنى، وليس عدد الاختبارات الفعلي.

حصل التصحيح التاريخي لصلاحيات الملفات ومساحة الاختبارات على قبول مستقل للمصدر وبناء صورتي المصدر والهوية؛ ولم يعد ربط الملفات الـ875 صالحا للشجرة الحالية بعد الإصلاحات الستة. لكن التحقق الكامل اللاحق بقي مرفوضا: أعلنت unittest نجاح 1447 اختبارا خلال 51.862 ثانية، ونجحت الحالات المركزة الـ52، وطابقت قراءتا الملفات الـ290 وفحصا صلاحيات المسارات الـ875 الأدلة المعتمدة، وحُذفت الحاويات الثماني المعروفة دون موارد معلقة. رغم ذلك خرجت حاوية المجموعة الكاملة بالرمز 1 دون علامة النجاح النهائية المطلوبة. لا تحدد تلك الحزمة سبب رفض الابن بدقة، وتخالف أيضا 70 رسالة متوقعة من اختبارات الرفض قواعد خرج المشرف. ثم قبلت مراجعة مستقلة تجربة تشخيص سالبة فقط: نجحت فيها 1447 حالة خام خلال 51.835 ثانية، لكن المرحلة 7 سجلت ستة تحذيرات وخرجت بالرمز 1، مع إتمام التنظيف. تحدد هذه النتيجة بوابة التحذيرات في تجربة التشخيص نفسها، ولا تثبت سبب المحاولة السابقة ولا قبول المجموعة الكاملة. دُمج إصلاح التقاط stderr في 27 دالة اختبار بعد قبول المصدر، مع إصلاحي إغلاق SQLite وإصلاح إعداد tempfile عند فشل الكتابة. لم يكن تحقق المصدر المعدل قد نُفذ عمليا عند تلك النقطة. تحدد تجربة نافذة التحذيرات اللاحقة نافذة الملاحظة 839 وبيانات محدودة عن النوع، دون سبب التخصيص؛ ولم تحدد تلك الحزمة أسباب تخصيص موارد tempfile الثلاثة. يلزم تحقق كامل جديد على المصدر المعدل. تجهيز المواد عمليا، ومضخة الطلبات الخاصة، وتشغيل القاعدة، واستمرارية Vault والاستعادة الفيزيائية والجاهزية للإنتاج لم تُقبل بعد.

حفظ نطاق public55 المقبول 47 أمرا و94 مجرى مكتمل EOF، بإجمالي 5411798 بايت خلال 6.259089567000046 ثانية، وحُذفت حاوياته الثلاث. وحفظ نطاق بيانات BusyBox اللاحق 12 أمرا و24 مجرى مكتمل EOF، بإجمالي 12761 بايت خلال 1.1989835960011987 ثانية، وحُذفت حاويته الوحيدة. سجل تشخيص النافذة V4 السالب 17 أمرا و34 مجرى ونجاح 1447 حالة عادية خلال 52.936 ثانية، لكن الخروج بالرمز 1 ورفض التحذيرات يبقيانه دليلا سالبا. لا تقبل هذه النتائج السابقة الملفات الستة المعدلة.

حفظت تجربة التشخيص المقبولة في نطاقها السالب 17 أمرا و34 مجرى مكتمل EOF، بإجمالي 378181 بايت خلال 55.055934754 ثانية. سجلت نتيجة تشغيل واحدة، واكتشافا وتنفيذا لـ1447 حالة، وخروج runpy بالرمز 0، ودون فشل أو خطأ أو تخط أو فشل متوقع أو نجاح غير متوقع. سجلت ستة تحذيرات، فلا تعني نتيجة unittest الخام أن التحقق الكامل نجح. لم تُعد التجربة قراءات الملفات أو فحوص الصلاحيات أو الحالات المركزة.

يبقى الفحص التاريخي الذي اشترط GNU لأدوات صورة PostgreSQL 17.11 مرفوضا. حصل فحص بيانات مساعدة BusyBox اللاحق على قبول عملي محدود مع Bash 5.3.3 وBusyBox 1.37.0 وخروج بالرمز 0 وتنظيف الحاوية المعروفة. لا يثبت ذلك توافق GNU أو سلوك timeout أو مصدر الأدوات أو عميل خاص أو ملف تشغيل خاص معتمد.

تعرّف [خريطة المصدر](https://base.sbarah.com/docs/reference/project-layout/#مصادر-تجهيز-التشغيل-الأصلي) ملفات التجهيز العامة الثمانية، ويشرح [عقد التجهيز](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/deploy/verify/native-startup-preparation.md) حدودها. يرجع التشغيل العادي إلى البنية المشتركة السابقة؛ قبول تجهيز المصدر لا يعني تشغيل PostgreSQL فعليا.

تعمل الميزات التشغيلية الموثقة ضمن البنية المشتركة `legacy-shared`، ولم يثبت التفعيل الكامل للبنية التجريبية `native-dedicated`. قبلت [مراجعة Cron](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-native-cron-effects.md) أربع كتابات وخمسة ردود HTTP برمز `200` عبر `pg_net` على صورة Supabase الأصلية المثبتة. وثبت عدد الصفوف في تسع عينات أثناء تعطيل Cron، ثم زاد بعد إعادة تفعيله، وحذفنا موارد الاختبار التي أنشأناها. تخص هذه الأدلة النسخة `43aa` التي نجحت فيها مراحل التحقق الست مع 1348 اختبار Python و301 اختبار Bun. يقتصر القبول على تلك الآثار، وتبقى الاستعادة الكاملة واستمرارية المفاتيح والملفات والأمان والتوافر العالي والاستعادة إلى نقطة زمنية والجاهزية للإنتاج غير مثبتة. اختار المالك هذا الحاسوب خادما محليا معزولا بنظام Fedora 44 ومعمارية `x86_64`؛ شراء خادم خارجي ليس شرطا لمواصلة العمل.

نجحت مراحل التحقق الست للنسخة النهائية `f6de` مع 1367 اختبار Python و301 اختبار Bun، ومنها اختبارات النقل الـ25. يقتصر قبول [نقل النسخ الاحتياطية](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-streaming-backup-transport.md) على الاختبارات المحلية؛ النقل الفعلي عبر S3 والاستعادة الكاملة لم يثبتا بعد.

اكتملت [فحوص محددة لصورة PostgreSQL 17.11](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-patched-postgres-observations.md)، ثم قرأنا ملفات التهيئة الـ61 وملفات الإعداد الـ20 دون تشغيلها. حفظت [تجربة لاحقة](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-native-root-key-source.md) مجلد الإعدادات كاملا دون تغيير ملفاته الأصلية. حذفنا حاويات الاختبار وأبقينا وحدة التخزين لتجربة لاحقة، مع التحقق من عدم اتصال أي حاوية بها.

أضفنا آلية مستقلة لإنشاء ملف مفتاح التشفير وفحصه، واجتازت 28 اختبارا ضمن مجموعة Python التي نجحت بـ1395 اختبارا دون تخطي، مع 301 اختبار Bun. ثم نجحت [تجربة عملية](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-native-root-key-filesystem.md) لإنشاء المفتاح بصلاحيات خاصة والتحقق منه عبر حاويتين جديدتين للقراءة فقط. أكدت مراجعة مستقلة 889 فحصا، وسلامة ملفات الإعدادات، وحذف حاويات الاختبار، وبقاء وحدة التخزين والمفتاح. لم نربط الفحص بتشغيل PostgreSQL بعد، ولم نشغل القاعدة. لم نختبر فك تشفير بيانات Vault السابقة بعد إعادة التشغيل. الاستعادة الكاملة والجاهزية للإنتاج لم تثبتا بعد. بقيت المحاولات المرفوضة محفوظة.

نجحت [تجربة لقناة السجلات](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-private-diagnostics-fifo.md) في 32 حالة ببيانات مصطنعة داخل حاوية واحدة. ثم نجحت [تجربة نقل السجلات بين حاويتين](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-private-diagnostics-bridge.md) في ثلاث حالات، وأكدت المراجعة المستقلة 2671 فحصا لأدلتها. قبلت القناة السطر المسموح ورفضت السطر المجهول والبيانات الأكبر من الحجم المسموح، دون إظهار محتويات السجلات. حذفنا الحاويات ووحدتي التخزين الخاصتين بالتجربة الناجحة، واحتفظنا بأدلة المحاولات المرفوضة ووحدات تخزينها. لم تلمس التجربة وحدة تخزين المفتاح. لم نربط القناة بتشغيل PostgreSQL بعد. ما زال علينا فحص إعدادات اتصالات التهيئة، واختبار استمرارية بيانات Vault والاستعادة الكاملة.

نجح [فحص قناة السجلات أثناء التشغيل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/reviews/2026-10-04-live-diagnostics-and-credentials.md) ببيانات مصطنعة. قبلت القناة البيانات المسموح بها عند نقطة الفحص، ثم رفض الفحص النهائي بيانات مجهولة أضيفت بعدها. ونجحت تجربة إنشاء كلمة مرور PostgreSQL وفحصها بحاويتين للقراءة فقط، دون إظهار قيمتها. حذفنا حاويات التجربة وأبقينا وحدة تخزين كلمة المرور منفصلة، بعد التحقق من عدم اتصال أي حاوية بها. لم نربط هذه الفحوص بتشغيل القاعدة بعد؛ استمرارية Vault والاستعادة الكاملة والجاهزية للإنتاج لم تثبت بعد.

## اتجاه العمل الآن

يعتمد المشروع على خدمات Supabase الأصلية، ويهدف إلى تسهيل تشغيلها وإدارتها وتخصيصها على Linux عبر Docker. تسجّل [أهداف المشروع](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/PROJECT_GOAL.md) المتطلبات، وتحدد [خطة المنتج وقابلية التشغيل](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-03-product-and-portability-plan.md) الأولويات. وتربط [طريقة التنفيذ والتحقق](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-03-gauntlet-execution-method.md) كل نتيجة بنطاقها، مع [عقد مكان التشغيل الأصلي](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/plans/2026-10-03-native-placement-identity.md) و[سجل الأدلة](https://github.com/M7MMAD-OMAR/sbarbase/blob/main/docs/engineering/gauntlet-ledger.json).
