هندسة سير عمل مشغل CLI ومسجل
Audience: Engineers extending CLI behavior and operators automating Recorder مع مخرجات الآلة.
جدول المحتويات
- نظرة عامة تنفيذية
- واجهة الأوامر والتوجيه
- نموذج دقة وقت التشغيل
- عمليات العمل
- نموذج الإخراج والتعريب
- حدود الإدخال الصعبة وسلوك الفشل المغلق
- دلالات رمز الخروج
- مرجع متقاطع ملف بملف
نظرة عامة تنفيذية
recorder هو الحدود التشغيلية لعمليات Recorder المحلية. إنه ينظم recorder و recorder-store مع مجموعات أوامر صريحة ووضع JSON حتمي للأتمتة.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/main_cli_types.rs F:crates/recorder-cli/src/commands.rs L19-L29 F:crates/recorder-cli/src/support.rs L19-L23
واجهة الأوامر والتوجيه
مجموعات الأوامر على المستوى الأعلى:
recorder(عمليات المقطع + الظرف)،recorder envelope record-with-attachments(استيعاب المرفقات)recorder signer(دورة حياة دوران مفتاح التوقيع الصريح)،استعلام(استرجاع الظرف)،bundle(بناء/تحقق/تفتيش)،config(فحوصات تكوين وقت التشغيل)،contract(أداة العقد المولدة generate/check)،assurance(عمق بدء التشغيل، وضع جذر الثقة، وفحوصات بوابة OSS)،decision-gate(استيعاب التركيب عبر محول الإنتاج)،otel(استيراد بيانات OTel JSON عبر محول الإنتاج)،doctor(تشخيص المتجر والقطاعات النشطة).
F:crates/recorder-cli/src/main_cli_types.rs
تستخدم بنية الإرسال أجهزة توجيه فرعية صريحة بدلاً من المطابقة الضمنية للمُعالج، مع تقسيم تنفيذات الأوامر حسب منطقة سير العمل. F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/commands.rs L19-L29
نموذج دقة وقت التشغيل
تُحل إعدادات وقت التشغيل وفقًا للأولوية:
- علامات CLI،
- ملف التكوين الاختياري،
- الافتراضات.
الإعدادات الافتراضية المهمة:
store_path:recorder.dbrecorder_id:recorder-clischema_version: المخطط الحاليauto_seal: لا شيء ما لم يتم تقديم عدد و/أو مدة صريحةquery.limit: الافتراضي1000، الحد الأقصى10000security_profile:secure
نموذج وقت تشغيل الموقّع:
- تحميل الموقّع المدرك للملف الشخصي (
secure,standard,dev), - افتراضي آمن يتطلب مواد مفتاح مشفرة PKCS#8،
- خيار صريح للتقليل من استخدام نص عادي/بذور التطوير في
dev, - تم الاحتفاظ ببيانات التعريف الخاصة بالدوران (
store_meta) مع فحوصات الاتساق.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/src/main_cli_types.rs F:crates/recorder-cli/src/support/runtime.rs L20-L122 F:crates/recorder-cli/src/support/runtime.rs L247-L556
اختيار خلفية المتجر:
- file-backed SQLite or in-memory SQLite. F:crates/recorder-cli/src/support/runtime.rs L124-L179
عمليات العمل
تتوافق سير العمل التمثيلية مباشرة مع معالجات الأوامر:
- فتح/تسجيل/إغلاق/حالة/قائمة دورة حياة الجزء،
- تسجيل المظاريف مع ملف مرفق ومدخلات base64 مضمنة (
record-with-attachments), - explicit key rotation (
recorder signer rotate) with deterministic تدوير المفاتيح بشكل صريح (recorder signer rotate) مع إصدار دليلsystem.adapter.key_rotatedالمحدد، - استعلامات الظرف المصفاة مع دعم المؤشر،
- بناء الحزمة من JSON المحدد، التحقق (اختياريًا مع جذر الثقة)، والتفتيش،
- توليد/تحقق من توقعات العقد (
contract generate|check), - فحوصات نشر الضمان (
assurance startup|trust-root|gates), - إدخال نص قرار البوابة / تثبيت حزمة التشغيل من خلال محول الإنتاج.
- استيراد تثبيت تصدير OTel JSON من خلال محول الإنتاج.
F:crates/recorder-cli/src/commands/recorder.rs L20-L524 F:crates/recorder-cli/src/commands/query.rs L20-L88 F:crates/recorder-cli/src/commands/bundle.rs L20-L170 F:crates/recorder-cli/src/commands/admin.rs L20-L194
تغطي اختبارات التكامل سير العمل الأساسي وحالات الفشل المغلقة. F:crates/recorder-cli/tests/commands.rs F:crates/recorder-cli/tests/commands/core.rs F:crates/recorder-cli/tests/commands/query_and_rotation.rs F:crates/recorder-cli/tests/commands/attachments_and_dg.rs
نموذج الإخراج والتعريب
أوضاع الإخراج:
--json: حمولات هيكلية حتمية للأتمتة،- وضع النص: رسائل مشغل محلية.
عقد استعلام وضع JSON الآن يصدر:
{"envelopes": [...], "next_cursor": ..., "applied_limit": ...}.
فشل وضع JSON يصدر غلافًا حتميًا:
{"error": "<message>"}.
حل مشكلة اللغة:
--langيتجاوزRECORDER_LANG،- supported locales are generated from catalog files under
crates/recorder-cli/i18n/locales/*.toml, - قيم الموقع غير المعروفة تفشل بإغلاق مع خروج غير صفري،
- تظل اللغة الافتراضية
enفقط عندما لا يتم تحديد اللغة.
ضمانات سلامة التوطين:
- build-time catalog validation enforces locale-tag uniqueness, default-locale
presence, exact key parity against
en, and exact placeholder-set parity for كل مفتاح عبر جميع المناطق، - message templates are generated into typed keys/macros and translation table
code (
OUT_DIR/i18n_generated.rs), - runtime translation paths are strict and fail closed on unknown keys, عدم تطابق مجموعة العناصر النائبة، أو العناصر النائبة غير المحلولة،
- لا يوجد تراجع صامت إلى معرفات المفاتيح أو الإنجليزية للترجمات المفقودة،
- locale provenance metadata is mandatory (
machineorhuman_reviewed) and تقوم إعدادات الآلة بإصدار إخلاء مسؤولية صريح أثناء وقت التشغيل، - JSON output payload contracts remain locale-neutral and stable across locale اختيار.
تغطية اللغة تشمل:
recorderالملف التنفيذي الرئيسي،recorder_oss_assurance_checks,recorder_oss_assurance_packet.
F:crates/recorder-cli/src/main.rs F:crates/recorder-cli/build.rs F:crates/recorder-cli/i18n/locales/en.toml F:crates/recorder-cli/i18n/locales/ca.toml F:crates/recorder-cli/src/i18n.rs F:crates/recorder-cli/src/support/util.rs F:crates/recorder-cli/src/bin/recorder_oss_assurance_checks.rs F:crates/recorder-cli/src/bin/recorder_oss_assurance_packet.rs F:crates/recorder-cli/tests/i18n_compile_fail.rs F:crates/recorder-cli/tests/commands/core.rs
حدود الإدخال الصعبة وسلوك الفشل المغلق
تفرض واجهة سطر الأوامر قراءات ملفات محدودة:
- config: 1 ميغابايت,
- payload JSON: 4 ميغابايت,
- ملف المرفق/حمولة مضمنة: 16 ميغابايت,
- JSON بوابة القرار: 8 ميغابايت،
- OTel fixture JSON: 16 ميغابايت،
- محدد JSON: 1 ميغابايت,
- حزمة JSON: 32 ميغابايت،
- trust-root JSON: 1 ميغابايت,
- ملف مفتاح الموقّع: 64 KiB,
- مادة عبارة مرور الموقّع: 1 KiB.
F:crates/recorder-cli/src/main.rs
يتم رفض المدخلات الكبيرة قبل التحليل/المعالجة. F:crates/recorder-cli/src/support/util.rs L225-L277
يمكن لـ bundle verify تحميل جذر ثقة صريح، وتوجيهه إلى Verifier::with_trust_root، وتصدير نص التحقق الحتمي بتنسيق JSON عبر --verdict-transcript-output. F:crates/recorder/src/verification_transcript.rs F:crates/recorder-cli/src/commands/bundle.rs L74-L116
مجموعة أوامر assurance توفر فحوصات افتراض OSS صريحة:
assurance startupexecutes runtime bootstrap and startup-verification path يتحقق من التأكيدات الاختيارية للحد الأدنى من العمق،assurance trust-rootيتحقق من افتراضات تحليل/سياسة/مجموعة المفاتيح الخاصة بجذر الثقة،assurance gatesexecutescontract checkgate semantics directly. F:crates/recorder-cli/src/commands/assurance.rs
تغطية اختبار النظام الآن تتحقق من:
- رفض إدخال الجذر الثقة/الحزمة/المحدد/التكوين الكبير الحجم،
- رفض إدخال مفتاح/عبارة مرور كبيرة الحجم للموقعين،
- سلوك فشل معرف غير صحيح مغلق بدون تغيير في المسجل،
- التحقق من صحة شكل معرف المسجل في وضع JSON
config validate, - مدة الإغلاق التلقائي وسلوك دورة الحياة المدمجة عبر سير العمل الحقيقي لـ CLI،
record-with-attachmentssuccess roundtrip and hostile-input fail-closedrecord-with-attachmentsسلوك نجاح جولة العودة وفشل الإدخال العدائي مع عدم وجود تغيير في المسجل،- query JSON pagination contract (
applied_limit+next_cursor) and استعلام عن عقد ترقيم JSON (applied_limit+next_cursor) وحواجز الفشل المغلقة عند تجاوز الحد، - سلوك نجاح
ingest-fixtureفي بوابة القرار وسلوك الفشل الصارم في عدم التطابق، - نجاح OTel CLI
ingest-fixtureوسلوك إدخال نوع الحدث الحتمي، - تنفيذ سياسة ملف الموقّع الآمن (رابط رمزي + أذونات)،
- استرداد دوران الموقّع وسلوك الفشل المغلق للبيانات الوصفية التالفة،
- رفض الجذر الناتج عن ارتباط CLI للعقد،
- hostile bundle-verify parse-boundary rejection for invalid attachment content type. F:system-tests/tests/suites/operations/query.rs F:system-tests/tests/suites/operations/config.rs F:system-tests/tests/suites/operations/locale.rs F:system-tests/tests/suites/operations/contract.rs F:system-tests/tests/suites/recorder.rs L333-L678 F:system-tests/tests/suites/security.rs F:system-tests/tests/suites/security_limits.rs F:system-tests/tests/suites/security_signer.rs F:system-tests/tests/suites/security_contract_bundle.rs F:system-tests/tests/suites/integration_decision_gate.rs F:system-tests/tests/suites/integration_decision_gate_ingest.rs
دلالات رمز الخروج
- تعود أخطاء الأوامر العامة برمز الخروج
1عبرemit_error. - JSON-mode command errors still return exit code
1with machine-parseable لا تزال أخطاء أوامر وضع JSON تعيد رمز الخروج1مع حمولة قابلة للتحليل بواسطة الآلة{"error": ...}. bundle verifyيُرجع رمز الخروج2عندما تكون حالة الحكمغير صالحة.
F:crates/recorder-cli/src/support/util.rs L343-L345 F:crates/recorder-cli/src/commands/bundle.rs L112-L114
مرجع متقاطع لكل ملف
| المنطقة | الملف | الملاحظات |
|---|---|---|
| إدخال CLI وتوجيهه | crates/recorder-cli/src/main.rs, crates/recorder-cli/src/main_cli_types.rs | نموذج Clap، تدفق locale/bootstrap، توجيه التوجيه على المستوى الأعلى. |
| معالجات الأوامر | crates/recorder-cli/src/commands.rs | تجميع وحدات معالجة مجموعة الأوامر. |
| معالجات المسجل | crates/recorder-cli/src/commands/recorder.rs | عمليات الشريحة/الغلاف ومنطق تدوير الموقّع. |
| معالجات الاستعلام والحزمة | crates/recorder-cli/src/commands/query.rs, crates/recorder-cli/src/commands/bundle.rs | مرشحات الاستعلام وعمليات بناء/تحقق/تفتيش الحزمة. |
| معالجات الإدارة | crates/recorder-cli/src/commands/admin.rs | تحقق من التكوين، تشخيص الطبيب، أوامر العقد. |
| معالجات التكامل | crates/recorder-cli/src/commands/integration.rs | تدفقات إدخال Decision Gate و OTel. |
| مساعدات وقت التشغيل والمرافق | crates/recorder-cli/src/support.rs, crates/recorder-cli/src/support/runtime.rs, crates/recorder-cli/src/support/util.rs | حل وقت التشغيل، سياسة الموقّع، التحليل، إدخال/إخراج محدود، مساعدات الإخراج. |
| كتالوج i18n والتوليد | crates/recorder-cli/build.rs, crates/recorder-cli/i18n/locales/en.toml, crates/recorder-cli/i18n/locales/ca.toml, crates/recorder-cli/src/i18n.rs | كتالوجات locale التي تم التحقق منها عند البناء، مفاتيح/ماكرو محددة، بيانات التعريف، وعرض صارم بدون تراجع. |
| ثنائيات OSS المساعدة | crates/recorder-cli/src/bin/recorder_oss_assurance_checks.rs, crates/recorder-cli/src/bin/recorder_oss_assurance_packet.rs | بدء تشغيل locale (--lang و RECORDER_LANG) والأسطح المحلية للاستخدام/الأخطاء مع حمولات JSON محايدة للغة. |
| اختبارات تكامل CLI | crates/recorder-cli/tests/commands.rs, crates/recorder-cli/tests/commands/helpers.rs, crates/recorder-cli/tests/commands/core.rs, crates/recorder-cli/tests/commands/query_and_rotation.rs, crates/recorder-cli/tests/commands/attachments_and_dg.rs | تغطية سير العمل من البداية إلى النهاية لسمات CLI. |
| تكامل مولد العقد | crates/recorder-contract/src/lib.rs | سلطة الأثر الناتج المحدد التي تستهلكها أوامر عقد CLI. |
| مجموعة عمليات اختبار النظام | system-tests/tests/suites/operations/mod.rs, system-tests/tests/suites/operations/query.rs, system-tests/tests/suites/operations/config.rs, system-tests/tests/suites/operations/locale.rs, system-tests/tests/suites/operations/contract.rs | يتحقق من مطابقة التحقق من التكوين وسلوك التحقق من JSON للصفحات/الحدود. |
| مجموعة اختبار المسجل للنظام | system-tests/tests/suites/recorder.rs | يتحقق من عدد/مدة/دورة الحياة المدمجة وسلوك تسجيل المرفقات. |
| مجموعة اختبار الأمان للنظام | system-tests/tests/suites/security.rs, system-tests/tests/suites/security_support.rs, system-tests/tests/suites/security_limits.rs, system-tests/tests/suites/security_signer.rs, system-tests/tests/suites/security_contract_bundle.rs | يتحقق من سلوك حدود CLI المغلقة عبر الحدود، عدائية المرفقات، سياسة الموقّع، استرداد التدوير، سلامة مسار العقد، ومدخلات الحزمة العدائية. |
| مجموعة اختبار Decision Gate CLI للنظام | system-tests/tests/suites/integration_decision_gate.rs, system-tests/tests/suites/integration_decision_gate_support.rs, system-tests/tests/suites/integration_decision_gate_contract_shape.rs, system-tests/tests/suites/integration_decision_gate_ingest.rs | يتحقق من نجاح إدخال fixture CLI لمحول الإنتاج وسلوك عدم المطابقة الصارم. |
| حزمة محول OTel | crates/recorder-otel-adapter/src/lib.rs | تنفيذ خريطة إدخال JSON OTel للإنتاج التي تستهلكها أوامر تكامل CLI. |