الخلاصة

  • تقارن recommended-min-version الأرقام الثلاثة فقط: الرئيسي والثانوي والتصحيحي. وتنص المراجعة 28 من مسودة YANG Semantic Versioning على تجاهل _compatible و_non_compatible وبيانات ما قبل الإصدار والبناء عند المقارنة.
  • لذلك قد ينجح إصدار رئيسي أعلى أو إصدار معلن بأنه غير متوافق. وإذا لم يجد المصرّف إصدارًا صالحًا، يمكنه التحذير ثم متابعة الحل وفق RFC 7950؛ ومن ثم فإن اكتمال البناء لا يثبت تلبية التوصية.
  • ينبغي أن يسبق النشر إيصال حل يربط الطلب بكل المرشحين، والبايتات المختارة، ومجموعة الوحدات الكاملة، والميزات والانحرافات، والتحذيرات، واختبارات العملاء، وصاحب القرار، وهدف التراجع. الإيصال اقتراح من Daniel Kade وليس مطلبًا من IETF.

كلمة «الحد الأدنى» توحي بضمان غير موجود

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

لكن draft-ietf-netmod-yang-semver-28 يقسم المسؤوليات بطريقة أخرى. صدرت المراجعة 28 في 21 يوليو 2026، وهي مسودة إنترنت نشطة مقصود بها مسار المعايير وموجودة في طابور محرر RFC، لكنها ليست RFC بعد. وتعرّف امتداد recommended-min-version داخل عبارة import، ولا يقبل الامتداد إلا ثلاثية رقمية.

ينجح المرشح إذا طابق الثلاثية، أو رفع رقم التصحيح مع ثبات الرئيسي والثانوي، أو رفع الثانوي داخل الرئيسي نفسه، أو حمل رقمًا رئيسيًا أعلى. ولا تدخل لواحق التوافق ولا بيانات ما قبل الإصدار والبناء في المقارنة. والمثال الوارد في النص حاسم: إذا كانت التوصية 3.1.0، فإن 3.1.2 _non_compatible و4.1.2 يفيان بها. الأول يعلن كسر التوافق في الفرع نفسه، والثاني يعبر إلى رقم رئيسي يدل على تغيير غير متوافق؛ ومع ذلك يظل كلاهما مؤهلًا رقميًا.

هذا الاختيار مقصود لا ثغرة خفية. تقول المسودة إن القاعدة البسيطة تترك مسؤولية بناء مجموعة مترابطة من إصدارات الوحدات خارج الامتداد، وتذكر حزم YANG مثالًا على أداة تؤدي هذا الدور. إذن تجيب القاعدة عن سؤال: هل الرقم كبير بما يكفي للدخول في نطاق الاختيار؟ ولا تجيب عن سؤال: هل سيستمر هذا المتحكم المحدد في العمل بصورة صحيحة؟

حين تعرض المنصة ضوءًا أخضر واحدًا، يختفي الفرق. تصدر المؤسسة بذلك ضمان توافق لم يصدره مؤلف الوحدة ولا أداة الحل ولا النص المعياري.

وسم الإصدار دليل مفيد لا حكم نهائي

يوفر YANG Semver معلومات مهمة عن سيرة النموذج. الزيادة الرئيسية تدل على تغيير غير متوافق مع الإصدارات السابقة في المسار الأساسي. والزيادة الثانوية تصف عادة إضافة متوافقة داخل الرقم الرئيسي نفسه. أما تغيير التصحيح من دون لاحقة فيعني تعديلًا تحريريًا. وتتيح اللواحق الخاصة بـYANG صيانة الفروع القديمة، كما تبقى _non_compatible ملازمة للفرع فلا يمحو تعديل تحريري لاحق أثر الكسر السابق.

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

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

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

القراءة المنضبطة إذن هي أن الإصدار الدلالي دليل منظم على السلالة التي يعلنها المؤلف. ليس بصمة تشفيرية للمحتوى، ولا ملف قفل، ولا اختبار مطابقة، ولا إذن نشر.

وراء كلمة «تم الحل» ثلاث نتائج مختلفة

النتيجة الأولى هي تلبية التوصية رقميًا. وجد المحلّل مرشحًا يمر بقواعد recommended-min-version ضمن المجموعة التي استطاع رؤيتها. ولكي يعاد إنتاج القرار، يجب حفظ قائمة المرشحين كلها، لا الفائز وحده؛ فإضافة مرشح جديد إلى المستودع قد تغيّر النتيجة من دون تعديل الوحدة المستوردة.

النتيجة الثانية هي اكتمال الحل بعد الرجوع إلى القواعد السابقة. إذا لم يجد المصرّف الداعم للامتداد إصدارًا صالحًا، توصي المسودة بأن يصدر تحذيرًا ثم يتابع وفق RFC 7950. تسمح تلك الوثيقة لـrevision-date بتحديد مراجعة بعينها، أما غيابها فلا يثبت المراجعة بالطريقة نفسها على مستوى اللغة. قد ينتج المصرّف مخططًا صالحًا نحويًا، لكن ذلك لا يحول فشل التوصية الدلالية إلى نجاح.

النتيجة الثالثة هي قبول النشر. هنا تختبر المجموعة المحلولة نفسها مع المتحكمات والوكلاء والمجمّعات ومولدات الشيفرة والإعدادات والعمليات التي ستعتمد عليها. ويوازن صاحب التغيير بين تغطية الاختبار، وعدم اليقين المتبقي، وإمكان التراجع.

قد يمر إصدار رقميًا ولا تفهمه مكتبة قديمة. وقد ينتهي الرجوع إلى مراجعة أقدم من النوع الذي افترضه مؤلف الوحدة. وقد ينجح التجميع فيما تفتح ميزة مفعّلة فرعًا لم يره العميل من قبل. جمع الحالات الثلاث تحت كلمة نجاح واحدة يمحو الفرق بين العثور على رقم، وإتمام البناء، وإثبات السلوك.

موضوع التوافق هو المخطط المحلول كاملًا

تضع RFC 8525 إطارًا أوسع عبر YANG Library. يرتبط كل مخزن بيانات بمخطط، ويتكون المخطط من اتحاد مجموعات وحدات. تشمل المجموعة الوحدات المنفذة، والوحدات المستخدمة للاستيراد فقط، والوحدات الفرعية، والميزات المدعومة، ووحدات الانحراف. ويتغير content-id عندما يتغير محتوى مكتبة YANG.

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

تنظم مسودة YANG Packages هذه المكونات في بنية هرمية ذات اسم وإصدار. تستطيع الحزمة أن تضم حزمًا أخرى، ووحدات منفذة أو مخصصة للاستيراد، وميزات، وأن تستبعد عناصر موروثة. وعند التعارض قد تختار القواعد تلقائيًا إصدارًا أحدث، وهو أمر مفيد لتصحيح عاجل. أما اختيار إصدار أقدم فيحتاج إلى حزمة صريحة تعيد تنقيح التكوين.

تحسن الحزم اتساق المجموعة، لكن اسم الحزمة وإصدارها لا يثبتان كل شيء. تسمح المسودة بحزم ناقصة للتصحيحات والتجميعات المنطقية، وقد تظل بعض الاعتماديات لتُحل في البيئة. وعندما ترتبط الحزم بمخطط مخزن بيانات، يجب أن يطابق الناتج مع الميزات الإضافية module-set المعلن في YANG Library تطابقًا دقيقًا وأن يكون مكتمل المراجع. هذه خاصية تركيب، لا اختبار عميل.

مقارنة المخططات تصف التغيير ولا تقيس أثره كله

تقدم مسودة YANG Schema Comparison طريقة قابلة للمعالجة آليًا لوصف الفروق بين مخططين. وهي أفضل من استنتاج التغيير من رقم واحد، لأنها تحدد العبارات التي تغيرت وتصنيف ذلك التغيير.

مع ذلك، لا تشغل أداة المقارنة الارتباطات التي ولدها عميل معين. ولا تعرف أن برنامجًا نصيًا يفترض وجود leaf دائمًا، أو أن مجمّعًا يرفض identity جديدة، أو أن متحكمًا يحول notification غير مألوفة إلى إعادة محاولة مؤذية. كما لا تثبت أن التراجع سيعيد في وقت واحد المخطط والشيفرة المولدة والإعدادات المحفوظة وحالة الأجهزة.

التوافق علاقة بين طرفين. يجب تسمية المخطط المحلول والعميل وإصداره وحمل الاختبار والافتراضات. وعبارة «المقارنة متوافقة» ناقصة من دون مخطط الأساس وسياسة التصنيف ومجموعة العملاء الذين لوحظ سلوكهم بالفعل.

إيصال الحل يحفظ ما تجاهلته المقارنة

يبدأ إيصال الحل بالوحدة المستورِدة: الاسم، والمراجعة الدقيقة، والإصدار الكامل، وبصمة المحتوى، ومصدر الحصول. ويسجل الثلاثية المطلوبة كما كُتبت. ثم يسرد كل المرشحين الذين رآهم المحلّل مع سلاسل الإصدار الكاملة والمواقع والبصمات. يجوز للخوارزمية أن تتجاهل _non_compatible عند الترتيب، لكن لا يجوز لسجل الحوكمة أن ينساه.

وبالنسبة إلى الإصدار المختار، يحتفظ الإيصال بالبايتات أو ببصمة مستقرة، وتاريخ المراجعة، والإصدار، وأصل الاسترجاع. ثم يوسع السجل إلى التكوين كله: الحزم المضمنة والمستبعدة، والوحدات المنفذة والمستوردة فقط، والوحدات الفرعية، والميزات، والانحرافات، وسياق التركيب، وcontent-id أو ما يعادله خارج الخادم. ويبين ما إذا كانت كل حزمة مكتملة، وما الاعتماديات التي حُلت محليًا، وأي قاعدة حسمت التعارض.

سلوك الأداة جزء من الدليل. يجب تسمية المصرّف أو المحلّل وإصداره، وحفظ التحذيرات، والتمييز بين نجاح شرط semver وبين المتابعة بعد الرجوع إلى RFC 7950. وإذا أجريت مقارنة مخططات، يحفظ الإيصال أساسها وسياستها ونتيجتها من دون تحويلها إلى شهادة للعميل.

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

لا يطالب الإيصال امتداد الاستيراد بأن يحل كل مشكلات الإدارة. بل يمنع المؤسسة من استخدام بساطة الامتداد ذريعة لإخفاء مسؤولياتها.

المصادر