
مختبر التقييم السلوكي (Quorum) لمشروع superpowers الذي يحرك واجهات سطر الأوامر الحقيقية لعوامل الترميز (Claude, Codex, Gemini, Kimi والمزيد) من خلال وكيل QA ويقيمها بناءً على الامتثال لسير العمل وفقًا لمعايير السيناريو والفحوصات اللاحقة الحتمية.
مختبر تقييم سلوكي لـ superpowers. يدير Quorum واجهات سطر أوامر وكيل البرمجة الحقيقية (Claude, Codex, Antigravity, Gemini, Kimi, OpenCode, Pi, و Copilot) عبر وكيل ضمان الجودة Gauntlet ويقيمها مقابل معايير قبول السيناريو بالإضافة إلى فحوصات لاحقة حتمية.
جميع الشفرة و CLI والمسارات والنثر المضمن تستخدم quorum بأحرف صغيرة؛ بينما يظهر النموذج المكتوب بحروف كبيرة Quorum في العناوين وجدول الجهات الفاعلة.
هذه ليست مجموعة معايير عامة. إنه مختبر تقييم للامتثال لسير العمل: تشغيل المهارات، سلوك شجرة العمل، تنسيق الوكلاء الفرعيين، ردود فعل التحقق، جودة المراجعة، وأنماط تشكيل التكلفة.
quorum لديه وضعان مختلفان للتنفيذ:
biome و tsc و bun test. لا تستدعي واجهات برمجة تطبيقات النموذج ولا تشغل واجهات سطر أوامر الوكيل.يجب أن يبقى CI العام على جانب الفحوصات الثابتة/الوحدة من هذا الخط. لا تضف أبدًا مفاتيح API، أو استدعاءات quorum run … الحية، أو إطلاق الوكيل في الوضع الخطير إلى CI العام.
تشغل التقييمات الحية وكيل البرمجة قيد الاختبار بسلطة تنفيذ واسعة:
--dangerously-skip-permissions.--dangerously-bypass-approvals-and-sandbox.--dangerously-skip-permissions ويعتمد على مصادقة المتصفح المحلي/سلسلة المفاتيح لـ agy.--skip-trust --approval-mode=yolo؛ مصادقة مفتاح API هي الافتراضية، مع مصادقة OAuth اختيارية للتشغيل المحلي الموثوق.--yolo.--dangerously-skip-permissions.--allow-all.quorum يثبت HOME لكل وكيل برمجة (بالإضافة إلى أدلة XDG الأساسية و TMPDIR) في منزل مؤقت لكل تشغيل في <run>/home — يقوم المُشغّل بإدراج رمز $QUORUM_HOME_ENV الذي بنته src/agents/home-env.ts (xdgHomeEnv، المصدر الوحيد للحقيقة). يتم طي دليل التكوين لكل وكيل تحت ذلك المنزل (Claude .claude, Codex .codex, Gemini ., OpenCode ., Antigravity ., Copilot .copilot, Kimi .kimi-code, Pi .pi/agent)، وبالتالي يجد وكيل البرمجة تكوينه عبر إعداداته الافتراضية ولا يرى أبدًا الحالات الحقيقية للمضيف مثل , , , , , , ، أو حالات أخرى متعلقة بالمنزل، أو المكونات الإضافية المثبتة، أو الجلسات السابقة. يغذي التزويد التكوين — وبيانات اعتماد OAuth للمضيف التي يحتاجها كل وكيل — في هذا المنزل المؤقت قبل الإطلاق، وبالتالي لا يوجد تسجيل دخول أثناء التشغيل. يقوم Copilot أيضًا بترتيب المكون الإضافي Superpowers المحلي تحت المنزل المعزول، ويستخدم بيئة خارجية مسموح بها، ويكتب ملف يحتوي على أسرار بصلاحية chmod-0600 داخل دليل التشغيل. يضيق ذلك نصف قطر الانفجار ولكنه ليس صندوق رمل. تستخدم مُشغّلات OpenCode و Copilot بالإضافة إلى ذلك بيئات مسموح بها، لكن وكلاء البرمجة الأحياء لا يزالون يعملون بسلطة واسعة على نظام الملفات وتنفيذ الأوامر.
قم بتشغيل التقييمات الحية فقط من بيئة محلية موثوقة:
results/ وسجلات الجلسة الأولية وقطع أثرية حالة الجلسة/استدعاءات الأدوات ومدخلات وكيل Gauntlet على أنها حساسة.قم بتثبيت وتشغيل البوابات الثابتة:```bash bun install bun run check bun run quorum check
نفِّذ سيناريو محلي أو سيناريو الطوارئ خارج الحاوية:```bash
export SUPERPOWERS_ROOT=/path/to/superpowers
export ANTHROPIC_API_KEY=...
bun run quorum run scenarios/triggering-writing-plans --coding-agent claude
bun run quorum show <run-dir>
يقوم وكيل Gauntlet (برنامج تشغيل ضمان الجودة) بالمصادقة مع Anthropic باستخدام ANTHROPIC_API_KEY افتراضيًا. لتشغيله من اشتراك Claude مسجل دخول بدلاً من ذلك، قم بتعيين CLAUDE_CODE_OAUTH_TOKEN (من claude setup-token) في البيئة (مثل .env)؛ يمرره الإطار ويُفضل Gauntlet استخدامه على مفتاح API. ملاحظة: الاشتراك له حدود استخدام مناسبة للاستخدام التفاعلي — يمكن لعمليات run-all ذات التزامن العالي أن تصل إليها، لذا يبقى مفتاح API الخيار الأفضل للأحمال الثقيلة.
أسماء الوكلاء هي claude, codex, antigravity, gemini, kimi, opencode, pi, و copilot. ليس كل سيناريو صحيحًا لكل وكيل.
تغيير جذري (محور بيانات الاعتماد): لم يعد claude-haiku و claude-sonnet اسمي وكيل منفصلين. لتشغيل إطار Claude ضد Sonnet أو Haiku:```bash
bun run quorum run scenarios/ --coding-agent claude --credential sonnet
bun run quorum run scenarios/ --coding-agent claude --credential haiku
الاعتماد الافتراضي لوحدة `claude` هو `opus`.
## جهاز التقييم المشترك
تم تصميم التقييمات الحية عن بعد المشتركة لتشغيلها من مضيف جهاز موثوق به مع حزمة اعتماد واحدة معتمدة، وسجل دقيق للمستودع/المرجع، وأقفال المضيف، وسجلات وظائف قابلة للاسترداد. يجب على العوامل استخدام مساعد الجهاز بمجرد وجوده على المضيف المكوّن:```bash
evals-appliance doctor --json
evals-appliance prepare --json --superpowers-ref <branch-tag-or-sha>
evals-appliance run-all --json --detach \
--superpowers-ref <branch-tag-or-sha> \
-- --tier sentinel \
--coding-agents claude,codex,kimi \
--jobs 4
evals-appliance status --json <job-id>
evals-appliance show --json <job-id>
evals-appliance costs --json <job-id>
evals-appliance cancel --json <job-id>
الواجهة المستهدفة وقواعد التشغيل موجودة في
docs/appliance-runbook.md، مدعومة بـ
docs/superpowers/specs/2026-06-18-shared-eval-appliance-design.md.
doctor للقراءة فقط. يُرجع prepare lock_busy بدلاً من تغيير المراجع
أثناء نشاط وظيفة حية.
تم الاحتفاظ عمدًا بالوصول إلى المضيف وإجراءات break-glass الخاصة بالموفر خارج هذا المستودع العام؛ استخدم runbook العمليات الخاص لتلك التفاصيل.
لا تزال أوامر bun run quorum ... و scripts/evals-container exec quorum ... سير عمل محلية أو موثوقة لـ break-glass للتقييمات الحية المشتركة.
وقت تشغيل Docker هو الوصفة الأساسية لتشغيل مجموعات الاختبار الحقيقية. إنه يحتفظ بـ checkout التقييمات، و checkout Superpowers قيد الاختبار، وبيانات الاعتماد، ومصادر المصادقة، وجميع نتائج التشغيل على المضيف بينما يعمل quorum داخل حاوية workspace غنية بنظام Ubuntu.
أنشئ .env.container أو مرر ملف env صريح إلى up:```dotenv
ANTHROPIC_API_KEY=...
OPENAI_API_KEY=...
OPENROUTER_API_KEY=... # Pi default: OpenRouter GLM 5.2
GEMINI_API_KEY=... # or GEMINI_AUTH_TYPE=oauth-personal
KIMI_MODEL_API_KEY=... # unless using mounted Kimi OAuth
PI_PROVIDER=... # only for raw/custom Pi env auth outside the default credential
PI_MODEL=...
PI_API_KEY=...
COPILOT_GITHUB_TOKEN=...
ثم قم ببناء وتشغيل والتحقق من الحاوية:```bash
scripts/evals-container build
scripts/evals-container down || true
scripts/evals-container --env-file .env.container up
scripts/evals-container exec evals-tool-versions
scripts/evals-container exec quorum check
يقوم الغلاف بتركيب نسخة evals هذه في /workspace/evals، ونسخة Superpowers الأصلية في /workspace/superpowers، ومجلد results/ المضيف في /workspace/evals/results. قم بتجاوز نسخة Superpowers باستخدام --superpowers-root <dir> عندما لا يكون مسار الأصل الافتراضي هو النظام قيد الاختبار.
يتطلب بناء الصورة نسخة محلية من Gauntlet. يكتشفها الغلاف من GAUNTLET_ROOT أو من تثبيت bun link العالمي لـ Bun؛ استخدم --gauntlet-root <dir> مع build للاختيار صراحةً.
بيانات الاعتماد هي نقاط تحميل للقراءة فقط. بشكل افتراضي، يستخدم الأمر up ملف .env.container أولاً، ثم .env، ويقوم بتحميل أول ملف يتم العثور عليه في /run/evals/credentials.env. مرر --env-file <file> قبل up للاختيار صراحةً. لا يقوم الغلاف بتمرير بيئة المضيف كاملة؛ فقط شيم quorum داخل الحاوية يقوم بتغذية ملف dotenv، لذلك scripts/evals-container exec bash ... لا يتلقى تلقائياً بيانات اعتماد التقييم الحية. استخدم down قبل تغيير تحميل ملف env على حاوية موجودة.
مصادر مصادقة OAuth/الملفات هي أيضاً للقراءة فقط. الأدلة الموجودة ~/.codex، ~/.gemini، ~/.kimi-code، و ~/.pi تُحمل إلى /auth/codex، /auth/gemini، /auth/kimi-code، و /auth/pi. استخدم --auth codex=<dir>، --auth gemini=<dir>، --auth kimi=<dir>، أو --auth pi=<dir> لتجاوز مصدر.
ابدأ مع مجموعة الحارس:```bash
scripts/evals-container exec quorum run-all
--tier sentinel
--coding-agents claude,codex,kimi
--jobs 4
for agent in gemini opencode pi copilot; do
scripts/evals-container exec quorum run-all
--tier sentinel
--coding-agents "$agent"
--jobs 1
done
قم بتشغيل نفس الأوامر بدون `--tier sentinel` للحصول على مجموعة الاختبارات الكاملة الجاهزة.
يقوم `run-all` بكتابة كل دفعة تحت `results/batches/<batch-id>/` وكل تشغيل
تحت `results/<scenario>-<agent>-<os>-<timestamp>-<nonce>/`؛ لعرض دفعة مع:```bash
scripts/evals-container exec quorum show <batch-id>
run-all يطبع نبض حيوي دوري
(⋯ … · running N/jobs · done D · queued Q · [agent:scenario, …]); قم بضبطه باستخدام
--heartbeat-seconds <n> (0 يعطل). مقاطعة دفعة — Ctrl-C، أو
إغلاق جلسة exec — يوقفها بلطف: يتم إلغاء قائمة الانتظار، ويتم
إنهاء العمليات الجارية بـ SIGINT (وتسجيلها كمتوقفة)، ولا يزال تذييل الدفعة
مكتوبًا، لذا لا يُترك finished_at فارغًا أبدًا.
وقت تشغيل الحاوية لا يقوم بتركيب مقبس Docker، ولا بنشر منافذ لوحة المعلومات،
أو تضمين بيئات تطوير سطح المكتب. الصورة تحذف مثبت agy لسطح المكتب من Antigravity؛
قم بتشغيل Antigravity على جانب المضيف حتى يتوفر مسار تثبيت بدون رأس:```bash
bun run quorum run-all --coding-agents antigravity --jobs 1
للمسح الجماعي لجميع وكلاء المضيفين، وبيانات اعتماد كل وكيل، وتفاصيل تثبيت المصادقة، واستكشاف الأخطاء وإصلاحها، استخدم [docs/coding-agent-care-and-feeding.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/coding-agent-care-and-feeding.md).
## وقت تشغيل ويندوز
للتقييمات على ويندوز 11، استخدم `--os windows` (مضيفو Linux+KVM فقط):```bash
bun run quorum run scenarios/<name> --coding-agent claude --os windows
انظر docs/windows/eval-runtime.md للإعداد والنشر.
حافظ على تمييز الجهات الفاعلة؛ فالخلط بينها هو أكثر أخطاء التصنيف شيوعًا. تُستخدم هذه الأسماء في كل مكان — الوثائق، مخرجات CLI، الكود، أسماء الملفات، رسائل الالتزامات.
يتضمن تشغيل نموذجين من LLM — Gauntlet-Agent (مختبر QA) و Coding-Agent (الموضوع). نماذج منفصلة، سجلات منفصلة، تكاليف رمز منفصلة.
بُعد التقييم هو (السيناريو، وكيل البرمجة، بيانات الاعتماد، نظام التشغيل). ملف credentials.yaml
في جذر المستودع يُعرّف بيانات الاعتماد المسماة؛ كل إدخال يُعلن النموذج، بروتوكول
الربط (api: openai-chat, openai-responses, anthropic، أو gemini)،
base_url اختياري لنقاط النهاية غير الافتراضية، نوع المصادقة (api-key,
subscription، أو oauth)، api_key_env اختياري، عوائل وقت التشغيل التي
يخدمها (harnesses)، وتجاوزات الجدولة الاختيارية (max_concurrency,
launch_spacing_seconds) وكتلة (,
).
كل ملف YAML للوكيل يُعلن عن default_credential. يمكن تجاوزه في وقت التشغيل:```bash
bun run quorum run scenarios/ --coding-agent claude --credential sonnet
bun run quorum run-all --coding-agents claude,opencode --credentials sonnet,haiku,opencode_gpt5 --jobs 4
`quorum check` يتحقق من صحة `credentials.yaml` والـ `default_credential` الخاص بكل وكيل.
يقوم المجدول (scheduler) بربط حد التزامن (concurrency cap) ومزلاج تحديد المعدل (rate-limit latch) بـ **limiterKey** الخاص بالاعتماد — وهو `base_url` للاعتماد إذا تم تعيينه، وإلا اسم الاعتماد، مدمجًا مع `api` الخاص به (على سبيل المثال `https://…/v1|openai-chat`، أو `opus|anthropic` لاعتماد أصلي بدون `base_url`). المشاركات (Cells) التي تشارك نفس limiterKey تشترك في حد واحد ومزلاج واحد لتحديد المعدل: استجابة تحديد معدل على أي مشاركة تتخطى فورًا جميع المشاركات المتبقية في قائمة الانتظار لنقطة النهاية تلك.
الاعتماديات المسماة القياسية (انظر `credentials.yaml`): `opus`، `sonnet`، `haiku` (Claude harness)، `codex_sub` (اشتراك Codex)، `kimi_default`، `openrouter_glm_5_2` (Pi الافتراضي)، `pi_default` (إشتراك Pi OAuth الأصلي الاختياري)، `opencode_gpt5`، `gemini_default`، `serf_default`، `glm_5_2_chat`، `glm_5_2_responses`، `ollama_local`.
### حملات Serf الخارجية
تستخدم حملات نموذج/موفر Serf القصيرة العمر ملف اعتماديات خارجي،
وليس ملف `credentials.yaml` الأساسي للمستودع. قم بتمريره صراحة باستخدام
`--credentials-file` إلى `quorum run` أو `quorum run-all` أو `quorum check`.
احتفظ بملف YAML الحقيقي للحملة وجميع نتائج التشغيل الخام خارج Git: يحتوي YAML
على تسميات التوجيه واسم متغير البيئة لمفتاح API المحدد، وليس قيمة مفتاح.
يجب أن يحدد كل إعداد مسبق للحملة نموذجًا واحدًا وموفرًا واحدًا بالضبط، وتعطيل
البدائل، وألا يحتوي على أي تجاوزات للموجه (prompt) أو أخذ العينات (sampling) أو الاستدلال (reasoning) أو الأداة (tool) أو حد الرمز (token-limit). قم بتوفير مفتاحه المخصص من خلال حزمة الاعتماديات في وقت التشغيل الموثوقة. يجب أن يفرض المفتاح سياسة البيانات المقصودة للحملة، وأن يكون له حد إنفاق للحملة، وبالنسبة لحملة ذات سعة مشتركة، ألا يكون له ربط BYOK. مقارنة BYOK هي حملة منفصلة بمفتاح منفصل وملف مرشح منفصل.
قبل الإرسال، يقوم `run-all` بتحليل الملف الخارجي مرة واحدة ويكتب لقطة سريعة قانونية له في
`results/batches/<batch-id>/credentials.snapshot.yaml`؛ يتلقى كل تابع (child) تلك اللقطة الثابتة. يقوم `quorum run` المباشر بكتابة نفس اللقطة القانونية تحت دليل التشغيل الخاص به. لا يمكن لتحرير ملف YAML المصدر بعد بدء دفعة أن يغير الخلايا اللاحقة. تحتوي اللقطات على بيانات توجيه معروفة بالمخطط وأسماء متغيرات البيئة، وليس قيمًا سرية، لكنها تظل جزءًا من نتائج التشغيل الحساسة.
قم بتشغيل اختبار الدخان المحايد للوكيل أولاً، ثم قم بتشغيل السيناريو المكلف فقط للاعتماديات التي تكون نتيجة اختبار الدخان النهائية لها `pass`:```bash
quorum run-all \
--scenarios 00-quorum-smoke-hello-world \
--include-drafts \
--coding-agents serf \
--credentials-file /secure/campaign.yaml \
--credentials serf_example_a \
--jobs 1
quorum run-all \
--scenarios serf-builder-fractals \
--coding-agents serf \
--credentials-file /secure/campaign.yaml \
--credentials serf_example_a \
--jobs 1
--jobs 1 هو خط الأساس التسلسلي للكمون/التكلفة. كل خلية مصفوفة تمثل محاولة مدفوعة واحدة؛ لا يقوم جدول الحملة بإعادة المحاولة أو تكرار الخلية تلقائياً. اعرض المقارنة المصنفة باستخدام quorum costs <batch-id>. فقط الصفوف النهائية pass تُعتبر قابلة للمقارنة؛ fail و indeterminate تظل مرئية ولكن غير مصنفة، وتظهر القياسات المفقودة كمفقودة بدلاً من صفر. أعمدة التكلفة المحملة والمقدرة والفرقية هي تكاليف وكيل الترميز (Coding-Agent). الأعمدة الحالية --with-gauntlet هي تكاليف إضافية لعتاد وكيل Gauntlet-Agent.
القبول المباشر هو عمل يدوي لمشرف موثوق، وليس أتمتة CI عامة:
--jobs 1.verdict.json و trajectory.json و openrouter-generations.json و coding-agent-token-usage.json و quorum costs <batch-id>. تأكد من النموذج، المزود، إصدار الإعداد المسبق، BYOK غير مفعل، حاويات الرموز/الذاكرة المؤقتة، المدة، التكلفة المحملة، التقدير، الفرق، وتسميات المرشحين، بما في ذلك التكميم وتاريخ الفهرسة.--jobs 1؛ اشترط pass نهائي، كل فحص حتمي، تسليم checkout رئيسي ملتزم، وصف مقارنة كامل.--jobs 2؛ تأكد من الإسناد المتميز دون تلوث متبادل للمفاتيح، الأجيال، التسميات، أو الاقتصاديات.انشر فقط الاستنتاجات التي تمت مراجعتها في الإصدار وتنظيفها في ملاحظة مؤرخة ضمن docs/experiments/، مع تسجيل الإخفاقات وكذلك النجاحات. يظل YAML الحملة الخارجي والقطع الأثرية الخام خارج Git.
bun run quorum list bun run quorum new my-new-scenario bun run quorum check my-new-scenario bun run quorum run scenarios/ --coding-agent bun run quorum run scenarios/ --coding-agent claude --credential sonnet bun run quorum run-all --coding-agents claude,codex --jobs 2 bun run quorum run-all --coding-agents claude --credentials sonnet,haiku --jobs 2 bun run quorum show bun run quorum costs
`quorum check` بدون وسائط يتحقق من كل سيناريو و`credentials.yaml`.
`run-all` يشغل كل سيناريو مضمن ضد كل Coding-Agent محدد،
مُصفىً حسب توجيه `# coding-agents:` لكل سيناريو.
## الأحكام والقطع الأثرية
quorum يُنتج حكماً ثلاثي القيم:
- `pass` - نجح Gauntlet-Agent ونجح كل فحص لاحق.
- `fail` - فشل Gauntlet-Agent، أو فشل فحص لاحق.
- `indeterminate` - فشل في الإعداد/الفحص المسبق/الالتقاط/quorum، أو `investigate` من Gauntlet، أو تتبع فارغ عند وجود فحوصات التتبع.
رموز الخروج هي 0 لـ `pass`، 1 لـ `fail`، و2 لـ `indeterminate`.
كل تشغيل يُنتج مجلداً واحداً تحت `results/`:```text
results/<scenario>-<coding-agent>-<os>-<timestamp>-<nonce>/
|-- verdict.json composed result; start here
|-- gauntlet-agent/ Gauntlet-Agent evidence
|-- coding-agent-workdir/ files the Coding-Agent produced
|-- home/ throwaway Coding-Agent HOME
|-- trajectory.json normalized ATIF trace
`-- coding-agent-token-usage.json Coding-Agent token cost, when priced
results/ هو مجلد يتم تجاهله بواسطة git لأنه يمكن أن تحتوي آثار التشغيل على نصوص حساسة، وبيانات اعتماد، واستدعاءات أدوات، وحالة نظام الملفات.
هذه هي الفحوصات المتوقعة في CI وعلى طلبات السحب الروتينية:```bash bun run check # biome ci . && tsc --noEmit && bun test — the full gate bun run quorum check # validate every scenario directory
`bun run check` هي البوابة الوحيدة (Biome lint/format + `tsc` الكامل الصارم + `bun test`)؛ الخطوات الفردية هي `bun run lint` و `bun run typecheck` و `bun test`.
## الهندسة المعمارية
quorum هي **TypeScript على Bun**. الوحدة الطرفية هي `bun run quorum <cmd>` (واجهة CLI لـ [commander](https://github.com/tj/commander.js) في `src/cli/index.ts`، ويتم تعريفها أيضًا كبرنامج `quorum` الثنائي)؛ البوابة هي `bun run check` (Biome + `tsc` الكامل الصارم + `bun test`).
الأشكال التي تعبر حدود العمليات والملفات — `verdict.json`، فهارس الدفعات، الاقتصاديات، نتيجة Gauntlet، YAML الوكيل — هي **مخططات zod** في `src/contracts/`، ويتم التحقق من صحتها عند كل حد، لذا فإن ملفًا خارجيًا غير صحيح يفشل بصوت عالٍ بدلاً من إفساد الحكم.
طبقة `cli/` تحلل الأوامر وترسلها إلى خط أنابيب `runner/` (سيناريو واحد × وكيل ترميز واحد) أو `run-all/` (المصفوفة).
الاختلافات لكل وكيل ترميز موجودة في مخرجين متوازيين يتم مفتاحهما باسم الوكيل: `agents/` يضع تهيئة الوكيل تحت `$HOME` المؤقتة لكل تشغيل (`<run>/home`)، و `normalize/` يحول سجل جلسة ذلك الوكيل إلى أثر استدعاء أدوات موحد.
استدعاءات الوكيل-CLI الحية والعمليات الفرعية غير المنعزلة الأخرى تمر عبر خط التماس `agents/command-runner.ts`، لذلك تقوم مجموعة الوحدات بحقن صور وهمية ولا تطلق CLI حقيقي أبدًا.
`scheduler/` هو محرك التزامن المشترك تحت `run-all/`.
لوحة التحكم هي حزمة منفصلة للقراءة فقط تقوم بفحص `results/` و `grid-manifest.json`.
`env.ts` هي الوحدة الوحيدة التي تقرأ `process.env`.```text
src/
cli/ commander CLI: run, list, new, check, show, costs, run-all, grid-manifest
index.ts command wiring + run / costs / run-all / grid-manifest actions
render.ts verdict renderer for triage (quorum show)
render-batch.ts batch-matrix renderer (quorum show <batch>)
resolve-target.ts run/batch target resolution; scenario.ts scenario loading
runner/ per-run orchestration (one scenario × one Coding-Agent)
index.ts setup → pre-checks → gauntlet drive → capture → post-checks → compose
context.ts populate the Gauntlet-Agent context dir (HOWTO + launch-agent shim)
phase.ts phase.json (setup/agent/checks) for the dashboard
stopped.ts SIGINT → stopped (indeterminate) verdict; errors.ts staged run-error stages
agents/ per-Coding-Agent provisioning (resolveAgent dispatch)
index.ts agent registry + dispatch (incl. the inline Claude/Default adapters)
command-runner.ts injectable subprocess seam (live CLIs faked in tests)
<agent>.ts codex/gemini/kimi/opencode/pi/copilot/antigravity adapters
normalize/ session-log → normalized tool-call trace, one module per dialect
capture/ session-log snapshot/diff + tool-call capture + token usage; cwd-filter
obol/ obol cost estimation (session-log + gauntlet sidecar)
economics.ts token-cost composition → coding-agent-token-usage.json
composer.ts three-valued verdict from the gauntlet + checks layers
checks/ sources prelude.sh + checks.sh, runs pre()/post(), collects check records
prelude.sh bare-verb DSL: defines each check verb as a bash function that
delegates to the TS dispatchers (no bin/ shims, no PATH prepend)
scheduler/ central concurrency dispatcher (one global slot pool, per-harness limits + spacing)
run-all/ scenario × Coding-Agent matrix over the scheduler; batch index
setup-helpers/ scenario fixture builders + the `setup-helpers` CLI (dispatch registry)
contracts/ zod schemas at the JSON boundaries (verdict, batch, economics, gauntlet, agent-config)
scaffold.ts `quorum new` / `quorum check`
setup-step.ts runs scenario setup.sh (sources prelude.sh via BASH_ENV so bare verbs resolve)
story-meta.ts story.md frontmatter (quorum_max_time, quorum_tier, status)
env.ts the single process.env boundary
paths.ts repo root, UTC stamps, nonces
invariant.ts assertNever exhaustiveness guard for closed unions
check/ typed check verbs: fs-verbs.ts (file/git/env + bootstrap),
dispatch.ts (table + `not`), transcript-dispatch.ts, record.ts (sole emitter)
cli/check-tool.ts the dispatcher behind every check verb function (file-exists,
file-contains, command-succeeds, git-*, assert-checkout-clean,
requires-tool, not, files-exist, the *-installed/hook/extension
checks); check-transcript.ts and setup-helpers/cli.ts are the
other two dispatchers the prelude delegates to
cli/list-check-verbs.ts prints the FS_VERBS verb set the prelude loops over (drift-proof)
coding-agents/ per-Coding-Agent material:
<name>.yaml CLI config
<name>-context/ HOWTO prose and launchers for the Gauntlet-Agent
scenarios/ scenarios (one directory each)
fixtures/ shared static fixture repos (e.g. template-repo/, sdd-*/)
test/ bun test suite
docs/ design notes, specs, plans, testing protocols, baselines
packages/dashboard/ read-only web matrix UI: scan/view, typed HTML templates, SSE bus, Bun.serve
تبدأ عملية الفحص المبدئي للتشغيل غير الناجح بـ:```bash bun run quorum show []
ثم استخدم [docs/superpowers/skills/triaging-a-failing-eval.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/superpowers/skills/triaging-a-failing-eval.md) لأطلس الإسناد. بالنسبة لفحوصات المصادقة والتجهيز والالتقاط الخاصة بالوكيل، استخدم [docs/coding-agent-care-and-feeding.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/coding-agent-care-and-feeding.md).
بالنسبة لخط الأساس المعروف بأنه جيد حاليًا، راجع [docs/baselines/](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/baselines/).
## قواعد المساهمة
هذا المستودع يرث معيار الجودة الخاص بـ `superpowers`.
- مشكلة واحدة لكل طلب سحب (PR).
- لا تقم بارتكاب (commit) القطع الأثرية الناتجة عن التشغيل أو الأسرار.
- لا تضف تقييمات حية إلى CI العام.
- استخدم قالب طلب السحب واشرح مخاطر الأمان/مختبر التقييم للتغييرات التي تمس تكوينات Coding-Agent، أو تنفيذ الصدفة، أو مساعدي الإعداد، أو أدوات الفحص، أو إدخال Gauntlet-Agent.
- التغييرات في منهجية التقييم التي تشكل السلوك تحتاج إلى أدلة، وليس مجرد نثر.
## تحديث الوحدة الفرعية الأصلية
يتم استهلاك `superpowers-evals` بواسطة `superpowers` كوحدة فرعية `evals`. بعد أي دمج لطلب سحب إلى `main` هنا، افتح طلب سحب متابعة ضد المستودع الأصلي `superpowers` موجه إلى `dev` يقوم بتحديث مؤشر الوحدة الفرعية `evals` إلى الالتزام المدمج `superpowers-evals`.
لا تعامل دمج `superpowers-evals` على أنه قد تم نشره بالكامل حتى وجود طلب سحب تحديث الوحدة الفرعية الأصلية.
---
الإبلاغ عن الأمان → [SECURITY.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/SECURITY.md).
$HOME~/.claude~/.codex~/.gemini~/.kimi-code~/.pi~/.copilot~/.config.copilot-env| الجهة الفاعلة | ما هي | أين توجد / ملفاتها |
|---|
| Gauntlet | إطار عمل QA للأغراض العامة؛ واجهة CLI الخاصة بـ gauntlet. مُختبر صندوق أسود. | المستودع github.com/prime-radiant-inc/gauntlet؛ على PATH كـ gauntlet (عبر bun link أو GAUNTLET_ROOT) |
| Gauntlet-Agent | LLM داخل Gauntlet الذي يقود وكيل البرمجة ويُقيّم نفسه مقابل معايير القبول الخاصة بالقصة. | النموذج مثل claude-sonnet-4-6؛ تدفق الأحداث → <run>/gauntlet-agent/results/<runId>/run.jsonl؛ الحكم → result.{json,md} |
| Coding-Agent | الوكيل تحت الاختبار — SUT. أمثلة: Claude، Codex، Antigravity، Gemini، Kimi، OpenCode، Pi، Copilot. | ملف التكوين + سجل الجلسة ضمن $HOME المؤقتة له في <run>/home/…؛ الملفات التي يكتبها → <run>/coding-agent-workdir/ |
| Quorum | غلاف TypeScript/Bun. يملك الإعداد، تكييف وكيل البرمجة، الفحوصات الحتمية، والحكم النهائي. | المستودع superpowers-evals/src/؛ <run>/verdict.json |
compatthinking_formatmax_tokens_field