Skip to content

دليل: تحديثُ قفلِ المزامنة — موجةٌ أولى (١١ فصلًا رُوجعت لا بُصمت فقط) - #7

Merged
SalehKadah merged 2 commits into
mainfrom
chore/lock-refresh-wave1
Sep 1, 2026
Merged

دليل: تحديثُ قفلِ المزامنة — موجةٌ أولى (١١ فصلًا رُوجعت لا بُصمت فقط)#7
SalehKadah merged 2 commits into
mainfrom
chore/lock-refresh-wave1

Conversation

@SalehKadah

Copy link
Copy Markdown
Contributor

بُني على #6 (fix/vm-chapter-removed) — يُدمَج بعده. حتى دمج #6 يعرض هذا الطلبُ إيداعَيه.

لماذا

القفل كان منجرِفًا عن dev: 32 مصدرًا متغيّرًا و26 غيرَ مسجَّل، تمسّ 16 فصلًا.
تشغيلُ --update كاملًا كان سيُثبّت بصماتِ فصولٍ لم تُقرَأ — وهو بعينه «الكتمُ الصامتُ»
الذي بُني cmd_guard_lock ليمنعه. فقُصِرت الموجةُ على ما يُراجَع فعلًا.

النطاق

أحدَ عشرَ فصلًا رُوجعت مقابل origin/dev، ومفاتيحُها حُدِّثت يدويًّا.
covers_version يبقى 1.0.0 — لا يُرفَع قبل تغطيةٍ كاملة.

القفل مقابل main العدد
بصماتٌ تقدّمت 25
مفاتيحُ أُضيفت 21 (تشمل 8 لـnative.md من #6 وcli_flags.yaml)
مفاتيحُ حُذفت 6 (تشمل type_bridge.h وvm/* من #6، ونافذتَي parser_* المُعاد تنطيقُهما)
مفاتيحُ متخلّفةٌ عمدًا 5 — فصولُ الموجة الثانية، لا تُبصَم قبل قراءتها

ما صُوِّب — أعدادٌ ومراسٍ أُعيد قياسُها

SadTypeKind 49 · 11 مرساةَ محلّلٍ + واحدةٌ أُعيد توجيهُها (#L70 كانت في جوف الكتلة
لا رأسها ⇒ #L67) · مرساةُ المعجميّ · مرساتا الذاكرة · 1205/865 مضمنة · 183 رمزَ
خطأ · 79/31 مولِّدًا · 18 ملفَّ YAML · 20 ملفَّ تشفير (كانت 14).

وانجرافٌ التقطته المراجعةُ خارجَ قائمة التصويب

هذا هو الأهمّ: تقديمُ مفتاحٍ لفصلٍ ما زال كاذبًا يُبطِلُ معنى الحارس.

  • memory.md: جدولُ الأعلام كان يعرض مرادفاتٍ لاتينيّةً أُلغيت (18 مرادفًا،
    shortName = "")، ويزعم أنّ --dev تُحوَّل إلى --gc بينما المُحلِّلُ يرفضُها
    (result.success = false). أُعيدت كتابةُ القسم من cli_flags.yaml: عشرةُ أعلامٍ عربيّةٍ حصرًا.
  • types.md: Byte وFloat64 محذوفان من التعداد؛ isCompositeKind لا يشمل
    Struct/Class؛ isNumericKind صار تفويضًا لا مدًى.
  • comprehensions.md: تحذيرٌ من «فخٍّ متبقٍّ» في buildExprGenerator — الدالّةُ
    محذوفةٌ منذ #205 (تمّوز 2026).
  • sir.md: SIROptimizer اسمٌ لا مُسمّى له — المُحسِّنُ Optimizer في sir_optimizer/.
  • codegen.md: gen_sadinfo_errors.py تقاعد مع sadinfo في #144.
  • language-truth.md: لا مجلّدَ _notation/ — بل grammar/_notation.yaml.

سدُّ ثغرةٍ في الحراسة

مرساتا parser_main.cpp#L1588 وparser_expressions.cpp#L1149 كانتا خارجَ نافذتَي
البصمة (40-1500 · 45-1130) — أي أنّ الدليل يوثّق أسطرًا لا يحرسها الكاشف. وُسِّعت
النافذتان إلى 40-1600 و45-1160. وأُضيف language-truth/cli_flags.yaml مصدرًا
لـmemory.md؛ جدولُ الأعلام كان بلا حارسٍ أصلًا، ولهذا تعفّن بصمت.

البوّابات (محلّيًّا)

البوّابة النتيجة
check_sync.py --validate ✅ rc=0 — 21 فصلًا
--guard-lock (BASE=origin/main) ✅ يمرّ بلا مخالفين
mdbook build ✅ نظيف
فحصُ الروابط الداخليّة ✅ 1078 رابطًا، صفر مكسور
صيغةُ القفل ✅ مطابقةٌ لمخرَج write_lock

متروكٌ عمدًا

خمسةُ مفاتيحَ متخلّفة (compiler/src/backend/llvm · interpreter_core.h ·
expression_evaluator.h · gen_parser_grammar_docs.py · ast_visitor.h) — فصولُها لم
تُراجَع فلا تُبصَم. وشفّر/ولّد_… بالشدّة في فصلَي التشفير بينما القانونيّ شفر/ولد_….
و4 إشاراتٍ إلى sadinfo المتقاعدة في فصولٍ خارج الموجة.

ثغرةٌ في الحارس نفسِه (لم تُعالَج هنا): chapters_for_key يمرّ إن تغيّر أيُّ فصلٍ
مرتبطٍ بالمفتاح، فمفتاحٌ مشترك (scripts/codegen · _schemas) يَسِمُ philosophy.md
طازجًا دون مراجعة. تُعالَج بجعل الشرط «كلَّ الفصول» أو بفصل المفاتيح المشتركة.

🤖 Generated with Claude Code

Sad Lang Dev and others added 2 commits September 1, 2026 08:18
…أصليّة

سُحب فصلُ الآلة الافتراضية: طبقةُ vm/ حُذفت من شجرة اللغة بالإيداع bcf0a746
(«ستُعاد كتابتها من الصفر») — فالفصلُ كان يصف كودًا غيرَ موجود. ولا يُكتب
بديلُه قبل أن يُكتب الكود.

وحلّ محلَّه src/backend/native.md: الخلفيّةُ الأصليّة SIR → ELF64 بلا LLVM ولا
رابطٍ أجنبيّ، مشتقًّا من الكود لا من الذاكرة، ومسجَّلًا في sync/sources.yaml
بثمانيةِ مصادرَ تحقَّق وجودُها على dev.

وأُصلح الثيمُ وثُبّتت نسخُ البناء:
- الجدولُ يُمرَّر أفقيًّا ولا يُسحَق: العلّةُ width:100% (يساوي عرضَ الحاوية
  دائمًا فلا يقعُ تجاوزٌ ولا يعملُ تمريرُ .table-wrapper)، والإصلاحُ
  width:auto + min-width:100% وأرضيّةُ عرضٍ للخلايا تحت 760px.
- فهرسُ الصفحة (theme/page-toc.js): بلا معالجٍ مسبقٍ ولا تبعيّةِ cargo، مع
  حارسَي print.html والمرساةِ العربيّةِ الخام.
- mdbook-version: latest ⇒ 0.5.4، وmdbook-mermaid ⇒ 0.17.0: خطُّ 0.16.x
  يستهدف mdbook 0.4.52 ولا يتوافق مع 0.5 أصلًا، و0.17.0 أوّلُ ما يبني على
  mdbook-preprocessor 0.5. الترقيةُ قرارٌ يُراجَع في PR لا حدثٌ يقع من تلقائه.

تنبيه: المصادرُ الثمانيةُ الجديدة غير مسجّلةٍ في sources.lock.json بعد —
حارسُ الـPR لا يراها (يشتقّ مفاتيحَه من القفل لا من البيان)، لكنّ الفحصَ
الأسبوعيّ سيرصدها added ويفتحُ قضيّةَ انجراف. تُثبَّت بـ--update في PR
مخصَّص لا هنا: --update يعيد حسابَ كلّ المصادر فيُقدِّمُ بصماتِ فصولٍ لم تُراجَع.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
القفل كان منجرِفًا عن dev (32 مصدرًا متغيّرًا، 26 غيرَ مسجَّل، 16 فصلًا).
تشغيلُ --update كاملًا كان سيُقدّم بصماتِ فصولٍ لم تُراجَع — وهو عينُ «الكتم
الصامت» الذي بُني له الحارس. فقُصِرت الموجةُ على أحدَ عشرَ فصلًا رُوجعت مقابل
origin/dev، وتُرك الباقي لموجةٍ ثانية (covers_version يبقى 1.0.0).

أعدادٌ ومراسٍ أُعيد قياسُها لا نقلُها:
- types.md: SadTypeKind 52 ⇒ 49 (SAD_TYPE_KIND_COUNT).
- parser.md: 11 مرساةَ سطرٍ على تعريفاتها، والثانيةَ عشرةَ (L70) أُعيدَ
  توجيهُها إلى L67 — كانت في جوفِ الكتلةِ لا رأسِها.
- lexer.md: توحيدُ نصِّ الرابطِ ومقصدِه على L1746 (فُحصت الـ19 كلُّها).
- memory.md: initializeFlags 142 ⇒ 54، وجدولُ الإهجار 281 ⇒ 174.
- builtins.md: 1205 مضمنةً منها 865 بلا استيراد، بتحفّظِ مضمناتِ العتاد.
- errors.md: 183 رمزًا لا 184، والوسمُ ///< SEM002: لا ///< CODE:.
- codegen.md: 79 بايثون / 31 gen_ / 22 check_ / 5 _lib / 21 سواها.
- language-truth.md: 18 YAML و11 مجلّدًا وملفَّي توثيق.
- crypto: 20 ملفَّ سلوكٍ اليوم (كانت 14)، وعائلةُ 25519 سبعُ دوال.

وانجرافٌ التقطته المراجعةُ خارجَ قائمة التصويب — وهو الأهمّ، لأنّ تقديمَ
مفتاحٍ لفصلٍ ما زال كاذبًا يُبطِلُ معنى الحارس:
- memory.md: جدولُ الأعلامِ كان يعرضُ مرادفاتٍ لاتينيّةً أُلغيت (18 مرادفًا،
  shortName = "")، ويزعمُ أنّ --dev تُحوَّلُ إلى --gc بينما المُحلِّلُ يرفضُها
  (success=false). أُعيدت كتابةُ القسمِ من cli_flags.yaml: عشرةُ أعلامٍ عربيّة.
- types.md: Byte وFloat64 محذوفان من التعداد، وisCompositeKind لا يشملُ
  Struct/Class، وisNumericKind صار تفويضًا لا مدًى.
- comprehensions.md: buildExprGenerator محذوفةٌ منذ #205 (تمّوز 2026) —
  حُذف التحذيرُ من «فخٍّ» لا وجودَ له.
- sir.md: المُحسِّنُ Optimizer في sir_optimizer/ لا SIROptimizer في frontend/.
- codegen.md: gen_sadinfo_errors.py تقاعد مع sadinfo في #144.
- language-truth.md: لا مجلّدَ _notation/ — بل grammar/_notation.yaml.

وسدُّ ثغرةٍ في الحراسة: مرساتا L1588 وL1149 كانتا خارجَ نافذتَي البصمة،
فوُسِّعتا إلى 40-1600 و45-1160، وأُضيف cli_flags.yaml مصدرًا لـmemory.md
(جدولُ الأعلامِ كان بلا حارسٍ أصلًا — ولهذا تعفّن).

البوّابات: --validate rc=0 · الحارس يمرّ بلا مخالفين · mdbook نظيف ·
صفر رابطٍ مكسور من 1078 · صيغةُ القفل مطابقةٌ لمخرَج write_lock.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@SalehKadah
SalehKadah merged commit 26df972 into main Sep 1, 2026
2 checks passed
@SalehKadah
SalehKadah deleted the chore/lock-refresh-wave1 branch September 1, 2026 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant