كيف يعمل هذا الـ Wiki
يموت الـ wiki حين يفقد الناس الثقة به. صفحة واحدة خاطئة أو قديمة تكفي ليعود الجميع إلى السؤال في المحادثة. وهذه القواعد موضوعة لمنع ذلك بالتحديد.
القواعد
Section titled “القواعد”flowchart TD
A["Want to add or change something?"] --> B{"Has this question<br/>been asked twice?"}
B -->|No| C["Don't add a page yet.<br/>Answer in chat."]
B -->|Yes| D["Write it — diagram first"]
D --> E["Add owner + lastReviewed<br/>in frontmatter"]
E --> F["Open a PR"]
F --> G["Merged → it's now the standard"]
G --> H{"Still true, and<br/>still being read?"}
H -->|Yes| G
H -->|No| I["Delete it (not archive)"]
| القاعدة | لماذا |
|---|---|
| owner واحد + تاريخ lastReviewed لكل صفحة | المساءلة. الصفحات بلا owner تتقادم وتفسد. |
| المخطط أولًا (diagram-first) | أسرع في القراءة، وأقلّ عرضة للخطأ، وأسهل في إبقاء الصفحة قصيرة. |
| فهرس، لا مصدر حقيقة | الحالة الحقيقية موجودة في Azure DevOps؛ نضع روابط إليها ولا ننسخها هنا أبدًا. |
| التعديل عبر PR | لا شيء يصل إلى main إلا عبر PR يمرّ الـ build ويحمل موافقة واحدة. والموافقة الذاتية مسموحة هنا — سقف أخفض من الكود حيث تُمنع. |
| الحذف عند التقادم | الصفحة الخاطئة أسوأ من الصفحة الغائبة. |
لا شيء يفحص تاريخ المراجعة، وهذا مقصود. الـ schema يشترط وجود lastReviewed، فلا تُنشر صفحة بدونه، لكن لا توجد بوابة build تنطلق حين يتقادم: كل صفحات هذا الـ wiki كُتبت في الأسبوع نفسه، فبوابة مدّتها ستة أشهر ستنطلق على الـ wiki كله دفعة واحدة، فتُهمَل بدل أن تُطاع. التقادم تقرير يقرأه إنسان، وحذف الصفحة قرار بشري. اعتبر التاريخ ادّعاءً بأن أحدهم وقف خلف هذه الصفحة في ذلك اليوم — لا أكثر.
أي صفحة تكسب
Section titled “أي صفحة تكسب”أربع طبقات من السلطة، وهي لا تقول النوع نفسه من الكلام:
| الطبقة | السلطة | أين تعيش | عند التعارض |
|---|---|---|---|
| ١. القانون والالتزامات الموقَّعة | تعلو على كل ما تحتها | الـ MSA / SOW الموقَّع — خارج هذا الـ wiki | الـ wiki هو الخاطئ. أصلح الـ wiki. |
| ٢. سياسات الشركة ومعاييرها | ما هو مطلوب | هذا الـ wiki | الحقيقة هي الخطأ — أصلح الحقيقة. |
| ٣. استثناء معتمد — ADR | يضيّق الطبقة ٢، لـ repo واحد | /docs/adr داخل ذلك الـ repo |
الـ ADR يكسب داخل الـ Scope المذكور فيه. |
| ٤. الضبط والحالة التشغيلية | ما هو مطبَّق حاليًا | Azure DevOps، والـ config المُودَع، والـ runbooks | الأداة هي الحقيقة عن ما هو كائن، لا عن ما ينبغي أن يكون. |
الفجوة بين الطبقة ٢ والطبقة ٤ انحراف (drift) يجب ردمه — والتنفيذ لا يُعيد تعريف المطلوب بصمت أبدًا.
ولهذا تقول دورة التسليم إن الحقيقة هي الخطأ، بينما يقول دليل Azure DevOps إن الأداة تكسب. لا تعارض بينهما: الأولى تذكر ما هو مطلوب، والثاني ينقل ما هو مضبوط. كلاهما محقّ في طبقته، وعلى الصفحة أن تُبيّن في مطلعها أيّهما هي.
أربعة أنواع من الصفحات
Section titled “أربعة أنواع من الصفحات”لا شيء في الـ frontmatter يسجّل هذا — مطلع الصفحة هو ما يخبرك:
- نظرة عامة (Overview) — توجّه وتدلّ. لا تملك حدًّا ولا رقمًا.
- معيارية (Normative) — تذكر قواعد يجب اتّباعها: جملة غرض، وخمس إلى عشر قواعد، وكيف تُفرض أو تُثبَت كل واحدة، ومسار الاستثناء، وروابط للخارج.
- قالب (Template) — يُنسخ إلى repo أو إلى مستند. يقول أين يوضع وما الذي يجب ملؤه.
- مرجع / أمثلة — توضّح أو تسرد، وليست معيارية أبدًا. تقول ذلك في أعلاها وتشير إلى القاعدة التي توضّحها.
الصفحة التي لا تستطيع تحديد أيّ الأربعة هي، غالبًا صفحتان.
ما ينتمي إلى هنا وما لا ينتمي
Section titled “ما ينتمي إلى هنا وما لا ينتمي”- ينتمي إلى هنا: كيف نعمل ونُقرّر ونُسلّم — الاصطلاحات، الـ playbooks، القوالب، حدود الأدوار.
- لا ينتمي إلى هنا: الـ ADRs الخاصة بمشروع بعينه، والـ runbooks، و
AGENTS.md— مكانها الـ repo الخاص بكل مشروع. هذا الـ wiki يحمل القالب فقط — أمّا النسخ الفعلية وأي فهرس لها فتعيش حيث تعيش النسخ. - لا يوضع هنا أبدًا: الـ secrets، أو الـ credentials، أو بيانات عقود العملاء الحقيقية.
قاعدة اللغتين
Section titled “قاعدة اللغتين”الإنجليزية هي الأصل، والعربية تعكسها تحت /ar/. وكل صفحة في حالة واحدة من ثلاث، واختيار الحالة مقصود لا عَرَضي:
| الحالة | أي الصفحات | ماذا يحصل عليه القارئ |
|---|---|---|
| ترجمة كاملة | كل ما هو خارج engineering/ |
الصفحة كاملة بالعربية |
| ملخّص عربي | صفحات المعايير السبع engineering/<topic> |
فقرة واحدة مكثّفة مع إشارة إلى الصفحة الإنجليزية الكاملة. القواعد مفروضة عبر config مُودَع، فالصفحة الإنجليزية هي التي تُنفَّذ. |
| إنجليزية فقط | الصفحات الفرعية السبع engineering/<topic>/examples |
تنبيه Starlight «هذا المحتوى غير متوفر بلغتك بعد» فوق المحتوى الإنجليزي |
ثلاث قواعد تسري في اللغتين:
- المصطلحات التقنية تبقى بالإنجليزية داخل النص العربي —
PRوpull requestوbranchوcode reviewوpipelineوsprintوdeployment، وأسماء مثل Angular و.NET وPrimeNG. هكذا نتكلّم فعلًا. - مخططات Mermaid والكود المُسيَّج تُنسخ حرفيًا. لا تُترجَم تسميات العُقد ولا المسارات ولا مفاتيح الـ config — يجب أن يُقرأ المخطط متطابقًا في اللغتين وإلا تباعدت النسختان.
lastReviewedفي الصفحة العربية يتحرّك مع توأمها الإنجليزي. إن غيّرت الصفحة الإنجليزية فإمّا أن تُحدّث العربية في الـPRنفسه، أو تكون قد أنشأت تباعدًا صامتًا.
الصفحات العربية الناقصة تعود تلقائيًا إلى الإنجليزية مع تنبيه ظاهر. وهذا مخرج طوارئ لا خطة — وأي صفحة ناقصة من الصف الأول أعلاه فهي عيب يجب إصلاحه.