Skip to content
Apothem
أدلّة التشغيل

قائمة تحقق التحقق من المزامنة عبر الأجهزة

إجراء تحقّق لتأكيد أن محوّل Claude Code يُثبَّت ويُتحقَّق منه ويُزال بشكل صحيح على مضيف جديد، مع فحوص قابلية النقل الكاملة.

النطاق. تتحقق قائمة التحقق هذه من طبقة قابلية النقل لعمليتي التثبيت والإزالة لـ محوّل Claude Code على مضيف ثانٍ جديد. أما أُطُر العمل الأخرى فلها وصفات تحقق خاصة بكل مضيف موثّقة ضمن site/content/docs/harnesses/<harness>.mdx.

مساران ولكلٍّ منهما دور. أبقِهما منفصلين أثناء قراءة قائمة التحقق هذه. $HOME/.apothem هو الدليل الرئيسي للمحرّك، وهو المكان الذي تُستنسخ فيه شجرة المصدر ومنه تقرأ المثبّتات، ويمكن تجاوزه بـAPOTHEM_HOME. أما ~/.claude/ فهو جذر إعدادات Claude Code، أي سطح إخراج المحوّل الذي تستقرّ فيه ملفات settings.json المُجسَّدة وشجرة الدعم الفرعية. ولا يُثبَّت المحرّك أبدًا داخل ~/.claude/؛ فاستبدل مسار الإخراج الأصلي للمحوّل عند التحقق من إطار عمل مختلف.

تحقّق يقوده المشغِّل لطبقة قابلية النقل في التثبيت والإزالة على مضيف ثانٍ جديد. كُتب مستوى النشر (vX.Y.Z) على مضيف Windows واحد، ويحتاج ادعاء قابلية النقل (CLAUDE.md portability: universal) إلى تمرين شامل من طرف إلى طرف على مضيف ثانٍ قبل أن يكتسب الثابت متعدد المضيفات وزنه. هذه القائمة هي وصفة التحقق المعيارية على المضيف الثاني (محوّل Claude Code).


1. الشروط المسبقة على المضيف الثاني

نفّذ على المضيف الثاني قبل بدء التحقق:

البندالأمرالمتوقَّع
Git مثبَّتgit --versionGit 2.40+
Python 3.10+ متاحpython3 --version (POSIX) أو py -3 --version (Windows)3.10 / 3.11 / 3.12 / 3.13
مصادقة GitHub (اختيارية، للاستنساخ المصادَق عليه وفحوص API)gh auth statusمسجَّل الدخول بالحساب المخوَّل للمستودع عند استخدام سير العمل المصادَق عليه
Shell متاحbash --version (POSIX) أو pwsh --version (Windows)Bash 4+ أو PowerShell 7+
لا يوجد دليل رئيسي مسبق للمحرّكls "$HOME/.apothem" 2>&1"No such file or directory" — إن وُجد، فاحتفظ بنسخة احتياطية قبل المتابعة

2. التحقق من الاستنساخ والتثبيت

نفّذ على المضيف الثاني:

# Clone the published repo to the engine home. This is NOT ~/.claude — that
# is the Claude Code configuration root the adapter writes into, and cloning
# a source tree on top of it would bury the harness's own config.
git clone https://github.com/ahmed-g-gad/apothem.git "$HOME/.apothem"
cd "$HOME/.apothem"

# (POSIX path) Run scripts/installer/install.sh dry-run first
bash scripts/installer/install.sh --dry-run                                    # exit 0; prints Dry-run complete — no changes were made.

# (POSIX path) Run scripts/installer/install.sh for real
bash scripts/installer/install.sh                                               # exit 0; idempotent

# (Windows path) PowerShell parallel
pwsh -File scripts/installer/install.ps1 -DryRun                                # exit 0; prints Dry-run complete - no changes were made.
pwsh -File scripts/installer/install.ps1                                        # exit 0

التقط رمز الخروج وشعار stdout لكل أمر. سجِّل في <second-host>/.audit/cross-machine-clone-install.md.

3. انضباط العناصر الأربعة (وفق src/apothem/rules/production-ready-prs.md)

تحقّق من كل ثابت من الثوابت الأربعة على المضيف الثاني:

3.1 أمان الوجهة الموجودة

# Re-run installer at the same destination.
bash scripts/installer/install.sh                                               # POSIX
pwsh -File scripts/installer/install.ps1                                        # Windows

المتوقَّع: يكتشف المُثبِّت الدليل الرئيسي الموجود للمحرّك، ويستخرج فيه وسم الإصدار (checkout) بدلًا من إعادة التثبيت أو التكرار؛ رمز الخروج 0.

3.2 فحص المتطلبات المسبقة

# Run from a copy outside any checkout, with git not on PATH.
d="$(mktemp -d)" && cp scripts/installer/install.sh "$d/" && PATH=<directory holding python3, click, rich and coreutils, but no git> /bin/sh "$d/install.sh"                            # POSIX (no git)

المتوقَّع: يرفض المُثبِّت التشغيل، ويُصدر تشخيص "git not found" صريحًا؛ رمز الخروج غير صفري.

3.3 إعادة تشغيل متماثلة (idempotent)

# Run installer N times back-to-back.
for i in 1 2 3 4 5; do bash scripts/installer/install.sh; done                  # POSIX
1..5 | ForEach-Object { pwsh -File scripts/installer/install.ps1 }              # Windows

المتوقَّع: يخرج كل استدعاء برمز 0؛ ولا آثار جانبية بعد الاستدعاء الأول؛ ولا ملفات مكرّرة؛ ولا تكرار لإدخال RC في shell-profile.

3.4 قابل للتهيئة عبر متغيّرات البيئة

# Install to a non-default engine home. APOTHEM_HOME is the destination
# override the installers actually read; see the installer-environment-variables
# reference for the full set.
APOTHEM_HOME=/tmp/alt-apothem bash scripts/installer/install.sh                 # POSIX
$env:APOTHEM_HOME='C:\tmp\alt-apothem'; pwsh -File scripts/installer/install.ps1   # Windows

المتوقَّع: يحترم المُثبِّت متغيّر البيئة؛ ولا يُنشأ الدليل الافتراضي $HOME/.apothem؛ وتحتوي الوجهة البديلة على التخطيط المتوقَّع.

4. التحقق من حزمة المدقِّقات (بعد التثبيت)

cd "$HOME/.apothem"
make validate                                                 # conformity gate --all --strict; exit 0
make headers-doctor                                           # file-header-grep → passed:true
make ai-surfaces-doctor                                       # multi-surface-coherence → passed:true
make plans-doctor                                             # no-global-plans + plans-discipline-language
make lint                                                     # ruff check + ruff format --check + mypy
make test                                                     # exit 0, no failures

المتوقَّع: كل بوابة خضراء. التقط رموز الخروج وأسطر الملخص.

5. التحقق من الإزالة

# POSIX path — interactive uninstall
bash scripts/installer/uninstall.sh                           # answers: "y" to confirm
PYTHONPATH="$HOME/.apothem/src/apothem/_vendor:$HOME/.apothem/src" python3 -m apothem verify --harness claude-code    # reports the harness as not installed

# Re-install from the kept checkout, then uninstall non-interactively
bash scripts/installer/install.sh
bash scripts/installer/uninstall.sh --yes
PYTHONPATH="$HOME/.apothem/src/apothem/_vendor:$HOME/.apothem/src" python3 -m apothem verify --harness claude-code    # reports the harness as not installed

المتوقَّع: يطالب المسار التفاعلي بالتأكيد؛ ويتخطّى --yes المطالبة في التشغيلات الدفعية؛ ويترك كلا المسارين جذر إعدادات Claude Code خاليًا من ملفات Apothem المُجسَّدة؛ وتُزال أداة الغلاف apothem (~/.local/bin/apothem؛ وأمّا أداة الغلاف apothem.cmd في %LOCALAPPDATA%\Microsoft\WindowsApps فلا تُزال إلا بواسطة uninstall.ps1).

6. التحقق من حواجز الأمان

يعتمد حارس أداة الإزالة على فحص شكل شجرة المصدر، لا على ملف الحارس (sentinel): فهو يمضي قدمًا فقط حين يحتوي الهدف على src/apothem/ إلى جانب أيٍّ من pyproject.toml أو .claude-plugin/. شغّل هذه الفحوص عبر APOTHEM_HOME، وهو المتغيّر الذي يقرؤه السكربت؛ فالفحص المكتوب على متغيّر يتجاهله السكربت لا يختبر الحارس، بل يشغّل أداة الإزالة على تثبيتك الفعلي.

# Run uninstall against a directory that is not an apothem source tree.
mkdir -p /tmp/not-an-apothem-install
APOTHEM_HOME=/tmp/not-an-apothem-install bash scripts/installer/uninstall.sh --yes

المتوقَّع: ترفض أداة الإزالة، وتُصدر No apothem source found at /tmp/not-an-apothem-install — nothing to uninstall؛ رمز الخروج غير صفري. لم يُمسّ المسار على الإطلاق.

# Run uninstall against $HOME and /.
APOTHEM_HOME=$HOME bash scripts/installer/uninstall.sh --yes 2>&1 | tail -3
APOTHEM_HOME=/ bash scripts/installer/uninstall.sh --yes 2>&1 | tail -3

المتوقَّع: يرفض كلٌّ من APOTHEM_HOME=$HOME وAPOTHEM_HOME=/ بالتشخيص No apothem source found at …، ولا يمسّ أيٌّ منهما نظام الملفات. أما APOTHEM_HOME الفارغ فقد استُبعد عمدًا، لأنه يرجع إلى ~/.apothem حيث يمكن أن يوجد تثبيت فعلي.

# An explicit APOTHEM_SOURCE that is not a source tree is rejected separately.
APOTHEM_SOURCE=/tmp/not-an-apothem-install bash scripts/installer/uninstall.sh --yes

المتوقَّع: يرفض مع APOTHEM_SOURCE is not an apothem source tree: /tmp/not-an-apothem-install؛ رمز الخروج غير صفري.

7. الإبلاغ

بعد التشغيل على المضيف الثاني، التقط النتائج في:

  • <second-host>/.audit/cross-machine-clone-install.md (نتائج أوامر الاستنساخ والتثبيت)
  • <second-host>/.audit/cross-machine-validators.md (نتائج المدقِّقات في القسم 4)
  • <second-host>/.audit/cross-machine-uninstall.md (نتائج الإزالة والأمان في القسمين 5–6)

اعرض النتائج على المُشرِف:

  • ✅ تتحقق كل ثوابت انضباط العناصر الأربعة، وكل بوابات المدقِّقات خضراء، وترفض كل حواجز أمان الإزالة الأهداف غير الآمنة ← يُتحقَّق من ادعاء النشر portability: universal من طرف إلى طرف
  • ❌ عند أي إخفاق ← افتح مشكلة على https://github.com/ahmed-g-gad/apothem/issues/new مع القسم المُخفِق والمخرجات الملتقطة؛ ويتولى المُشرِف الفرز

8. معايير القبول

  • §1 الشروط المسبقة مستوفاة
  • §2 ينجح الاستنساخ والتثبيت على صدفتَي POSIX وWindows
  • §3 يصمد انضباط العناصر الأربعة (أمان الوجهة الموجودة؛ فحص المتطلبات المسبقة؛ التماثل؛ قابلية التهيئة عبر متغيّرات البيئة)
  • §4 كل بوابات المدقِّقات خضراء
  • §5 تنجح الإزالة التفاعلية؛ وينجح --yes دون مطالبة
  • §6 يُطلَق كل رفض من حواجز الأمان
  • §7 تُلتقط النتائج عند مسارات التدقيق الموثّقة

عندما تُعلَّم كل المربعات أعلاه على مضيف ثانٍ جديد، يكتمل التحقق من المزامنة عبر الأجهزة ويُتحقَّق من ادعاء portability: universal من طرف إلى طرف.

On this page