تقود النماذج الجديدة خريطة طريقك بأكملها لساعات، بل لأيام، دون أن تفقد الخيط. ولهذا السبب بالضبط يصبح انحراف الحالة أمراً أهم، لا أقل: كلما أنجز الوكيل المزيد بين نقاط تفتيشك، زاد احتمال أن تتوقف الحالة التي سجّلها بصمت عن مطابقة git. casp check هي البوّابة الحتمية التي تمنع عملية الدفع لحظة حدوث ذلك — مع Claude Code اليوم، ومع كل نموذج يصدر غداً.
تعود إلى مشروع بعد أسبوع — أو تتنقّل بين خمسة في آن واحد. يقرأ الوكيل ملف حالة لم يعد يطابق الواقع، فيشرع بثقة في عمل سبق تسليمه، فتُهدر بعد ظهر يومك كاملاً في التراجع عنه.
اللوحات والبطاقات وجداول البيانات لا تنقذك: إعادة بناء السياق عملية يدوية، والوكيل لا يستطيع قراءة أيٍّ منها. يجب أن تكون الحالة قابلة للقراءة آلياً، أصيلة في git — وصحيحة على نحو قابل للإثبات.
يمنح CASP كل مشروع خيطاً واحداً يبقى من جلسة إلى أخرى — ولا يمكن أن ينحرف بصمت.{
"phase": "13 — camera streaming",
"next_prompt": "phases/14-camera.md",
// shipped in v13.4
"last_commit": "a1f3c9",
// not in git history
"migrations": ["0001"…"0007"],
// git stops at 0006
}
المجال المجاور — Mem0 وLetta وZep ومشاريع «الذاكرة» الجديدة الأصيلة في git — كلها تُخزّن ما حدث. ولا يكاد أيٌّ منها يتحقّق من أن الحالة المخزَّنة ما زالت تطابق واقع git. هذا التحقّق هو casp check — وهو إلزامي قبل كل عملية دفع.
يشير next_prompt إلى ملف سبق تسليمه — أو غير موجود أصلاً. يرفض CASP بدء الجلسة الخاطئة.
last_commit غائب عن السجلّ، قائمة الهجرات غير متزامنة، حالة غير مُودَعة — كلها تُفحص في مواجهة git نفسه، لا في مواجهة تخمين.
لا درجات تشابه تقريبية. بوّابة نجاح/فشل صارمة وقابلة للتكرار توقف عملية الدفع ما دامت الحالة كاذبة.
لا يستبدل CASP شيئاً في سير عملك. بل يسدّ الثغرة الوحيدة التي لا يغطّيها سواه — الحاضر المُتحقَّق منه للمشروع، في صورة يستطيع وكيلك قراءتها والتصرّف بناءً عليها.
لا قاعدة بيانات. لا خدمة. لا مخزن متّجهات. ثلاثة ملفات بسيطة يستطيع الوكيل قراءتها في السطر الأول من أي جلسة.
قابل للقراءة آلياً، لكل مشروع: المرحلة الحالية، المرحلة التالية، الـnext-prompt الدقيق المطلوب تنفيذه، المراحل المُسلَّمة، الهجرات المُطبَّقة، آخر إيداع، معرّف آخر جلسة.
«أين أنا الآن» على شاشة واحدة. افتحه، فتستعيد الخيط في خمس ثوانٍ — دون تنقيب.
المراحل الثلاث التالية المطلوب تسليمها إضافةً إلى لوحة نتائج للمراحل. يعرف الوكيل دائماً ترتيب العمل.
session-prompt وsession-log وaudit-brief تجعل كل جلسة — بشرية كانت أم وكيلاً — تُنتج مخرجات بالشكل نفسه. البنية مفروضة، لا مقترحة.المنتج الحقيقي ليس ميزة واحدة. بل عشرات المراحل موزَّعة بين الـAPI وعميل الويب والهاتف، تُسلَّم على مدى أسابيع عبر جلسات ووكلاء يتناوبون. يحافظ CASP على ترتيب واحد مُتحقَّق منه عبرها جميعاً — فيعرف أي وكيل أي مرحلة تأتي تالياً، ولا يعيد أبداً تسليم مرحلة سبق تسليمها.
والحلقة تُغلق نفسها بنفسها: في نهاية كل جلسة، يكتب لك الوكيل موجِّه الجلسة التالية — تعدّل سطراً، لا تحرّر من الصفر — ويُلحق سجلّ جلسة، ويُحدّث الحالة. افتح الجلسة التالية فتلتقط الخيط تماماً حيث توقّفت السابقة. خريطة الطريق تُنفَّذ؛ وأنت تشرف.
كل رقم أدناه مقروء مباشرةً من state.json الخاص بكل مشروع — الملف نفسه الذي يقرأه الوكيل، المُتحقَّق منه في مواجهة git عند آخر عملية دفع. بلا حسابات تسويقية.
نظام ERP لإدارة الأساطيل موجَّه للعملاء، لشركة نقل في ساحل العاج — ويب + هاتف، متعدّد الوحدات، متعدّد الأدوار: السائقون، المركبات، الامتثال، الصندوق، الورشة، المنازعات، المحاسبة.
كل وحدة مرحلة مُتحقَّق منها. يقرأ الوكيل قمرة القيادة، ويشغّل المرحلة التالية من next_prompt، ولم يُعد قط تسليم وحدة سبق تسليمها — حتى في يومٍ من ست جلسات.
المنصة الداخلية للعمليات وتنسيق الإطلاق لدى ZeroSuite — خريطة طريق تمتدّ على عدة أشهر يعمل عليها فريق حقيقي، مع تحكّم في وضع الإطلاق وقائمة أعمال متأخّرة مُتتبَّعة لما بعد الإطلاق.
خيط واحد مُتحقَّق منه عبر أكثر من 40 مرحلة وثلاثة أشخاص — إضافةً إلى 58 عنصراً مؤجَّلاً صراحةً إلى ما بعد الإطلاق، لم يُفقد أيٌّ منها. هذه هي حالة «المشروع الكبير متعدّد المستخدمين» التي صُمِّم CASP من أجلها.
البروتوكول نفسه، ومنتجان مختلفان جداً. قمرة القيادة هي الشيء الوحيد المشترك بينهما.
أدوات الذاكرة تتذكّر مَن أنت. أما CASP فيتتبّع أين يقف مشروعك — ويُثبت ذلك. مخرَج مختلف، وعملية مختلفة، وعطل مختلف يحول دونه.
مقطع واحد، بلا تجانس لفظي، وهي نفسها في الإنجليزية أو الفرنسية أو الإسبانية.
state.next_prompt.يوفّر CASP أوامر سلاش لـClaude Code كي تعيش الحالة حيث تعمل أصلاً.
حالة للقراءة فقط — يقرأ الوكيل الخيط الحالي قبل أن يكتب سطراً واحداً.
يبدأ الجلسة التالية تلقائياً مباشرةً من state.next_prompt. لا نسخ ولصق، ولا تخمين.
يعمل مع Claude Code · Cursor · Aider · Continue — أي أداة تقرأ الملفات.
وكيل واحد يفعل الشيء الخطأ يكلّف بعد ظهر يوم. مئة وكيل يفعلونه عبر مئة مستودع يكلّفون ربع سنة. CASP هو الحاجز الواقي الحتمي الذي تُدرجه في حلقة الأتمتة — بالشكل نفسه في كل مشروع.
يحتلّ casp check الموضع نفسه الذي يحتلّه الفحص اللغوي والاختبارات. الحالة الكاذبة لا يمكن دمجها — يُمنع الانحراف على مستوى المؤسسة، لا يُترك لانضباط أحد.
الوكلاء المستقلّون يضاعفون الأخطاء. يسلّم CASP كلّاً منهم الخيط المُتحقَّق منه نفسه ليقرأه، والبوّابة الصارمة نفسها قبل أن يدفع. أتمتة بلا ضريبة العمل المكرَّر.
كل انتقال للحالة هو إيداع في git. سجلّ كامل قابل للمقارنة وللتراجع لكيفية تقدّم كل مشروع — git log هو مسار الامتثال لديك.
محلي بالكامل، بلا قياس عن بُعد، لا سحابة، لا حساب. لا شيء لتدقيقه، لا شيء لتسريبه. المراجعة الأمنية سطر واحد: إنه لا يغادر الجهاز أبداً.
jobs: state-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: { fetch-depth: 0 } # casp checks against full git history - run: npx @justethales/casp check # ✗ fails the build the moment state drifts
بروتوكول واحد، كل مستودع. الشكل المُتحقَّق منه نفسه، على نطاق المؤسسة.
يكسب البروتوكول قبوله بكونه قابلاً للتوقّع. هذه القواعد لا تنثني.
يفحص CASP ما هو عليه مستودعك، لا ما قصدت فعله أبداً. الحقائق في مواجهة git، في كل مرة.
المخرجات القياسية مفروضة، لا مقترحة. كل جلسة تخرج بالشكل نفسه.
المُدقِّق ليس اختيارياً. الحالة الكاذبة لا تصل أبداً إلى مستودعك البعيد.
حتمي، أصيل في git، محلي بالكامل. بلا قياس عن بُعد. لا سحابة، لا حساب، لا فاتورة.
ثبّت، هيّئ، فيقرأ وكيلك الحقيقة في سطره الأول.
$ npm i -g @justethales/casp $ casp init # scaffold the layer $ casp status # where am I right now $ casp check # prove the state is true