---
name: schoolos-preview-8500
description: "Use for the SchoolOS central preview on port 8500 (scripts/preview.sh): integration vs pin, pinning and releasing a tree, checking what 8500 really serves (/health/, SHA), an owner review item (route, role, what preview doesn't reflect: PDF fonts, data), and binding the approval line to what the owner saw. Trigger on: 8500, preview.sh, pin, release, --force, main-preview, review item, approval line, expired pin, moving 8500 edits to production. استخدمها عند تثبيت شجرةٍ أو تحريرها أو «مقفول على شجرة غيري»، و«ليش فرعي ما يطلع؟»، واستلام 0501 «جاهزٌ للمعاينة»، و«هل المعروض هو المعتمَد؟»، وسطرِ «اعتُمد من المالك على 8500 — <التاريخ>» — ولو لم تُذكر المهارة. ليست لـ: خادم جلستك (CLAUDE.md)، up/down/watch/sync (المالك و0601)، الدمج والنشر (schoolos-deploy)، متى تدفع (schoolos-flow)، توليد النافذة والحزمة (maestro-review-window، maestro-evidence)، غيت (schoolos-git-safety)، الهجرات (schoolos-migration-guard)، بطء الإنتاج (schoolos-watch)، معاينة تصميمٍ أو PDF محلّيّاً."
---

# المعاينةُ المركزيّة 8500 — التثبيتُ والتحقّقُ وبندُ المراجعة

خادمٌ واحدٌ على `http://localhost:8500` يعرض `main` وما أودعته الجلساتُ ولم يُدمج (التكامل) بوضع الإنتاج، ويُثبَّت مؤقّتاً على شجرة جلسة.
عليه يعاين المالكُ كلَّ عملٍ قبل الدفع والدمج؛ وهذه المهارةُ تجعل ما يراه هو بعينه ما اعتمده.

## متى تُستعمل ومتى لا
- **نعم:** 0501 تستقبل «جاهزٌ للمعاينة» وتقرّر: هل يظهر بالتكامل أم يلزمه تثبيت؟ وتثبّت وتحرّر، وتبني البند، وتسجّل القرار.
- **نعم:** جلسةٌ من 04 تسأل لِمَ لا يظهر عملُها، أو تكتب عقدَ «جاهز» (المرجع 02).
- **لا:** تشغيلُ خادمِ جلستك للفحص (CLAUDE.md «خادمُ الجلسة»)؛ إقلاعُ المعاينة أو إيقافُها أو `watch`/`sync` (المالك و«0601»)؛ الدفعُ ووصفُ الطلب وتسلسلُ المراحل (`schoolos-flow`).

## الإجراء (0501)
1. **استلم العقد:** ما تغيّر، الشجرة وSHA، المسارُ والدور، الخطورة، الفحوص، الدليل. ناقصٌ ← أعِده إلى جلسته (02).
2. **هل هو معروضٌ أصلاً؟** `bash <المهارة>/scripts/preview_check.sh --tree <مجلّد الشجرة>`. «مضمومٌ في التكامل» ← لا تثبيت.
3. **قرّر من سبب التخطّي** (`integrate plan` وسطرُ الخطّة في الناتج): تعارضٌ مع main أو تصادمُ ترقيم هجرة ← يعود إلى 04 (إعادةُ أساس/ترقيم)، لا تثبيت. غيرُ مودَع، خامل، يمسّ آلةَ المعاينة، أو يلزم عزلُه ← تثبيت.
4. **الخانة واحدة:** `status` أو `preview_check.sh`. مشغولةٌ بغيرك ← انتظر الدور (الأولويّةُ ثمّ زمنُ البدء). `--force` بإذن المالك الصريح في محادثتك وحده.
5. **ثبّت بنسخة main:** `bash D:/shschool_mvp/.claude/worktrees/main-preview/scripts/preview.sh pin <مجلّد> <دقائق>` بمدّةٍ تغطّي النافذة فقط.
6. **تحقّق قبل العرض:** `preview_check.sh --tree <مجلّد>` = «معروض»، وعدّةُ الملفّات غيرِ المودَعة صفر (أو اطلب الإيداعَ أوّلاً)، واحفظ SHA المعروض. القائمةُ الكاملة في 02.
7. **ابنِ البند** بصيغة 02، واذكر ما لا تعكسه المعاينةُ عن الإنتاج ممّا يمسّ هذا البندَ تحديداً (01).
8. **القرارُ من المالك وحده**، بعد معاينةٍ لا من الوصف. اعتمادٌ ← أرسل للجلسة السطرَ حرفيّاً والـSHA المعتمَد. ملاحظاتٌ ← تعود بنصّها. (التسجيلُ: `maestro-approvals`.)
9. **حرِّر فوراً** `release` بعد القرار، ثمّ `preview_check.sh` حتى يعود `follow`.

## القواعد وأسبابها
- **الخانةُ واحدةٌ ولا تُنتزَع.** السكربتُ يرفض تثبيتَ شجرةٍ أخرى ما دامت مدّةُ القائم لم تنتهِ إلّا بـ`--force`؛ فالمالكُ قد يكون في منتصف مراجعتها. المصدر: `scripts/preview.sh` (`cmd_pin`)؛ CLAUDE.md.
- **التثبيتُ لـ0501 وحدها** في الفلو v2.6 فما بعده: جلساتُ 04 تعلن ولا تثبّت. المصدر: `flow_changelog.md` v2.6 وD-47م و`tabs.json`. (CLAUDE.md على main ما زال يقول «ثبّت شجرتك» — فجوةٌ مرفوعةٌ للحوكمة.)
- **التثبيتُ يوقف التكامل.** ما دام قائماً لا يطبّق `sync` جديداً لأحد؛ فالمدّةُ القصيرةُ والتحريرُ الفوريّ حقٌّ للجلسات الأخرى. المصدر: `cmd_sync`.
- **المثبَّتُ بإعدادات التطوير لا الإنتاج** (DEBUG، runserver، الثابتُ بلا بصمة، قاعدةُ الجلسة). ما اعتُمد على تثبيتٍ لم يُرَ بوضع الإنتاج؛ واذكر ذلك في البند. المصدر: `export_env dev`.
- **الحَكَمُ فيما يُعرض ثلاثة** (commit في `/health/`، رأسُ `main-preview`، `served_sha`) لا سطرُ «المعروض» في `status`، فقد رُصد قديماً. المصدر: ذاكرة `preview_status_label_can_be_stale`.
- **لا «اعتمادَ من الوصف».** المالكُ يعتمد عن معاينةٍ على 8500، أو بقوله الصريح بعد أن رأى. المصدر: ذاكرة `feedback_approval_only_after_8500_preview` (09-28).
- **السطرُ بصيغته الحرفيّة** «اعتُمد من المالك على 8500 — YYYY-MM-DD» (شرطةٌ طويلة وتاريخٌ رقميّ)؛ أداةُ الأدلّة تبحث عنه بتعبيرٍ حرفيّ، و«0601» لا تدمج بدونه. المصدر: `tools/evidence_pack.py` (APPROVAL)؛ CLAUDE.md الفلو 6–7.
- **لا `up` ولا `down` ولا `watch`/`sync` ولا `integrate on|off|exclude`** من 0501 أو 04: تمسّ الجميع وهي للمالك و«0601». المصدر: CLAUDE.md؛ ميثاق 0501 في `docs/tab_charters.md`.

## فخاخٌ حقيقيّة
- خطأ: نقلُ «المعروض: تكامل@… + 4 فرعاً» من `status` للمالك. الصواب: `preview_check.sh`: رُصد 09-28 الوسمُ قديماً والخادمُ على main وحدَه.
- خطأ: تثبيتُ فرعٍ يتعارض مع main «ليراه المالكُ على أيّ حال». الصواب: يعود لإعادة الأساس؛ المثبَّتُ يُعرض بلا main الحديث فيُعتمد ما لن يُدمج.
- خطأ: «جاهز» والشجرةُ فيها ملفّاتٌ غيرُ مودَعة. الصواب: أودِع أوّلاً؛ وإلّا فالمعتمَدُ ملفّاتٌ حيّةٌ قد تتغيّر بعد الاعتماد.
- خطأ: `bash scripts/preview.sh pin …` من شجرةٍ قديمة. الصواب: نسخةُ `main-preview`: السكربتُ يأخذ ملفَّ الإنشاء وsession-db من مجلّده هو.
- خطأ: `sync --now` أو `refresh-main-preview.sh` «لتحديث» 8500 أثناء تثبيت. الصواب: كلاهما يفكّ التثبيتَ بلا `--force`؛ لا يُشغَّلان وفيه مراجعة.
- خطأ: الحكمُ على عدد صفحات PDF أو على `/roadmap/` من 8500. الصواب: الخطُّ والبياناتُ تتبع القاعدة المعروضة (01)؛ والحكمُ النهائيُّ على الإنتاج.
- خطأ: كتابةُ كلمة مرورٍ للدخول إلى صفحةٍ محميّة. الصواب: المالكُ يدخل بنفسه؛ والقياسُ الآليّ بلقطةٍ ساكنة (03).

## المراجع
| الملف | متى تقرأه |
|---|---|
| `references/00-commands.md` | قبل أيّ pin/release/status، وحين يعلق التثبيتُ أو ينتهي أو يسقط، ولقراءة ناتج `preview_check.sh` |
| `references/01-hazards-and-differences.md` | قبل كتابة «ما لا يظهر» في بند، وحين يعمل المالكُ على بياناتٍ في 8500 أو يُنقل شيءٌ منه إلى الإنتاج |
| `references/02-review-item-format.md` | عند استلام «جاهز» من 04، وبناءِ البند، وتسجيلِ القرار وسطرِ الاعتماد |
| `references/03-measuring-protected-pages.md` | لقياس تخطيط صفحةٍ تحتاج دخولاً دليلاً للبند، بلا كلمة مرور |
| `references/99-test-cases.md` | لمراجعة المهارة نفسِها: متى تُفعَّل ومتى لا، وما يُنجح الجواب |
| `scripts/preview_check.sh` | قراءةٌ خالصة: ماذا يعرض 8500، وهل فيه شجرةٌ أو إيداع (رموز الخروج 0/1/2/3) |
