چیت‌شیت

تفویض اختیار، ایزولاسیون و جغجغه‌های بازخورد

Delegation, Isolation and Feedback Ratchets

برنامه‌ریزی بر اساس شواهد، تفکیک کار با مالکیت انحصاری و ارتقای هر اصلاح به اولین لایه‌ی مالک.

  • ۱۳ بخش
  • ۴ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. برنامه‌ریزی، تفویض اختیار، ادغام
  2. حلقه‌ی جغجغه (Ratchet loop)
  3. پنج تعهد به ازای هر وظیفه کاری
  4. تفویض اختیار یا حفظ حالت متوالی
  5. سه لایه‌ی ایزولاسیون
  6. هدایت سیگنال به لایه‌ی مربوط به آن
  7. توابع درس
  8. رابط خط فرمان هوک‌های جریان کاری
  9. چرخه‌ی عمر قانون در کد
  10. پیش‌فرض‌ها و محدودیت‌ها
  11. خطاها و راه‌حل‌ها
  12. پرسش‌ها
  13. نکات

برنامه‌ریزی، تفویض اختیار، ادغام

معماری
برنامه تأییدشدهموج‌ها بر اساس وابستگی‌هاواحد کاری APIمالک مسیرهای خود استواحد کاری Docsمالک مسیرهای خود استاثبات و تحویل وظیفهواحد APIاثبات و تحویل وظیفهواحد docsبازبینی ادغامفقط خواندنیگیت اعتبارسنجی کاملبین‌واحدی

حلقه‌ی جغجغه (Ratchet loop)

گام‌به‌گام
  1. مشاهده (Observe)ثبت یک سیگنال ملموس.
  2. اتصال (Connect)پیوند دادن آن به یک نتیجه، محدودیت یا فرض.
  3. مکان‌یابی (Locate)یافتن اولین لایه‌ی سیستمی که مالک علت است.
  4. تغییر (Change)ایجاد یک تغییر محدود با یک مالک مشخص.
  5. اعتبارسنجی (Verify)اثبات اینکه احتمال تکرار کمتر می‌شود.
  6. بازبینی (Review)تصمیم‌گیری درباره‌ی نگه‌داشتن، بازنگری یا بازنشستگی کنترل.

پنج تعهد به ازای هر وظیفه کاری

مفهوم‌ها
شناسه
ارجاع پایدار برای وابستگی‌ها و تحویل وظیفه.
تغییر
کوچک‌ترین تغییر در رفتار یا قرارداد.
شواهد
حقایق درون مخزن که تغییر را توجیه می‌کنند.
وابستگی‌ها
کارهایی که ابتدا باید محقق شوند.
اثبات
بررسی دقیقی که وظیفه کاری را می‌بندد.
موج (Wave)
مواردی که همه‌ی وابستگی‌هایشان کامل شده است. با هم اجرا می‌شوند.
اول قرارداد
پیاده‌سازی و مستندات منتظر قرارداد می‌مانند.

تفویض اختیار یا حفظ حالت متوالی

مقایسه
عاملتفویض اختیارحفظ حالت متوالی
فایل‌هافایل‌ها و قراردادهای مجزافایل‌های یکسان
تصمیماتمجهولات متفاوتهمان تصمیم حل‌نشده
محیطورک‌تری‌ها یا ساندباکس‌های جداگانههمان محیط تغییرپذیر
مثال آزمایشگاهیواحدهای API و docs، مسیرهای مجزاDocs unit owns app/, plan blocks

سه لایه‌ی ایزولاسیون

مفهوم‌ها
سیستم فایل
ورک‌تری‌ها یا ساندباکس‌های جداگانه مانع ویرایش‌های اشتراکی تصادفی می‌شوند.
مالکیت
قراردادها مانع ویرایش یک مسیر یکسان توسط دو مجری می‌شوند.
وضعیت
لاگ‌ها و خروجی‌های جداگانه شواهد هر مجری را نگه می‌دارند.
محدودیت
دو ورک‌تری تمیز همچنان می‌توانند طرح‌های متناقض تولید کنند.
ادغام‌کننده (Integrator)
خروجی اثبات را می‌خواند، به ترتیب وابستگی merge می‌کند و گیت کامل را اجرا می‌کند.

هدایت سیگنال به لایه‌ی مربوط به آن

مفهوم‌ها
نتیجه اشتباه، بازگشت به عقب، مثبت کاذب
ارزیابی یا تست.
کانتکست مفقود، کار تکراری، حقیقت کهنه
منبع کانتکست.
اقدام خارج از دامنه یا ناامن
سیاست دامنه یا مجوز.
تایم‌اوت، طوفان تلاش مجدد
کنترل محیط اجرا.
اشتباه مکرر در راه‌اندازی یا دستورات
اتوماسیون یا ابزار.
اشتباه در قالب خروجی
مثال معیار به‌همراه اعتبارسنج.
عدم توافق روی محصول
سند تصمیم‌گیری انسانی یا بک‌لاگ شکل‌گرفته.
اولویت
شدت ضربدر تکرار. شدت از 1 تا 5 است.

توابع درس

کار و کد
وظیفهکد
بررسی رسیدهای برنامهvalidate(items)
محاسبه‌ی موج‌های برنامهexecution_waves(items)
وضعیت برنامه: آماده یا مسدودplan_document(items)
تشخیص همپوشانی مسیر والدpaths_overlap(left, right)
وضعیت تفویض اختیارdelegation_plan(units)
اصلاح به کنترلpromote(correction)
حذف موارد تکراری با اثرانگشتratchet(corrections)
سیگنال‌ها به اقدامات مرتب‌شدهbacklog(signals)

رابط خط فرمان هوک‌های جریان کاری

دستورها
دستورکاربرد
python3 scripts/project_test.py workflow-hooks --init learning-artifacts/workflow-hooksفضای کاری فراگیر را می‌سازد
python3 scripts/project_test.py workflow-hooks --stage <n> --path learning-artifacts/workflow-hooksیک مرحله را تست می‌کند
python3 scripts/project_test.py workflow-hooks --all --solution --strictراه‌حل مرجع را بررسی می‌کند
node <dir>/cli.ts capture <store> <corrections.jsonl>اصلاحات را دریافت کرده و در مخزن ذخیره می‌کند
node <dir>/cli.ts inspect <store>قوانین را با approval_digest فهرست می‌کند
node <dir>/cli.ts approve <store> <digest>قانون را با دایجست فعلی دقیق تأیید می‌کند
node <dir>/cli.ts emit <store> <scope>additional_context را برای قوانین تأییدشده در دامنه چاپ می‌کند
node <dir>/cli.ts retire <store> <digest>قانون را از خروجی‌ها حذف می‌کند. شواهد باقی می‌مانند

چرخه‌ی عمر قانون در کد

کد
typescript
const c = ingest(raw);                   // دامنه با حروف کوچک، بزرگی و کوچکی متن قانون حفظ می‌شود
const rules = consolidate(corrections);  // گروه‌بندی بر اساس دامنه و متن قانون
rule.sessions.length                     // نشست‌های یکتا، نه رویدادها
transition(rule, "approve");             // نیازمند minimumSessions = 2
transition(rule, "retire");              // قانون بازنشسته‌شده قابل تأیید نیست
hook(rules, "orchard");                  // تأییدشده، دامنه یا عمومی
ruleDigest(rule);                        // هش sha256 از دامنه، متن و شواهد
await save("rules.json", rules);         // فایل موقت، سپس fs.rename
await load("rules.json");                // خطای ENOENT یک لیست خالی برمی‌گرداند

پیش‌فرض‌ها و محدودیت‌ها

پیش‌فرض‌ها
تنظیمپیش‌فرضنکته
minimumSessions2نشست‌های مستقل برای تأیید
c.rule.length500قانون بزرگ‌تر "too large" است
c.source.length2000منبع بزرگ‌تر "too large" است
Store `version`1نسخه‌های دیگر خطای "invalid store" می‌دهند
Temp file `mode`0o600مجوزهای فقط-مالک
`recurrence` floor1پایین‌تر از آن، اصلاح نادیده گرفته می‌شود
Control fingerprint12کاراکترهای هگزادسیمال sha256
Signal `severity`range(1, 6)تکرار باید مثبت باشد

خطاها و راه‌حل‌ها

عیب‌یابی
  • has no repository evidence

    علت
    یک وظیفه کاری فاقد رسید است
    راه‌حل
    یک مسیر فایل و شماره خط اضافه کنید
  • has no proof command

    علت
    اثبات خالی است
    راه‌حل
    بررسی دقیقی که وظیفه کاری را می‌بندد مشخص کنید
  • dependency cycle among

    علت
    وظایف کاری منتظر یکدیگر هستند
    راه‌حل
    عدم توافق پنهان روی محصول را پیدا کنید
  • overlap at در conflicts

    علت
    واحد Docs مالک app/ است که یک مسیر والد محسوب می‌شود
    راه‌حل
    به هر واحد مسیرهای انحصاری بدهید
  • insufficient independent sessions

    علت
    یک نشست، رویدادهای متعدد
    راه‌حل
    منتظر نشست دوم بمانید
  • exact current rule digest required

    علت
    دایجست بعد از شواهد جدید کهنه شده است
    راه‌حل
    دستور inspect را اجرا کرده و دایجست جدید را تأیید کنید
  • credential-like content

    علت
    قانون یا منبع شامل ساختاری شبیه به کلید محرمانه است
    راه‌حل
    پاک‌سازی داده‌های حساس پیش از ورود
  • conflicting correction id

    علت
    شناسه‌ی یکسان، محتوای متفاوت
    راه‌حل
    هرگز از یک شناسه برای محتوای جدید استفاده نکنید

پرسش‌ها

پرسش و پاسخ
چه زمانی شواهد واقعی هستند؟
وقتی که بتوانند برنامه را تغییر دهند.
ادغام‌کننده بخش زیادی از نتیجه را بازنویسی می‌کند؟
تجزیه‌ی کار نادرست بوده است.
چرا شمارش نشست‌ها و نه رویدادها؟
ارسال‌های مکرر هوک شواهد مستقل محسوب نمی‌شوند.
آیا باید هر اصلاح را ارتقا داد؟
خیر. فقط زمانی که تکرار یا پیامد آن را توجیه کند.
مالک تغییرات رفتاری عمومی کیست؟
انسان. ایجنت‌ها مالک کارهای محدود هستند.

نکات

نکته‌ها
  • علت را برطرف کنید، نه نشانه را. «ایجنت README را ویرایش کرد» یک نشانه است.
  • یک تست متمرکز قوی‌تر از پاراگرافی است که از ایجنت می‌خواهد به خاطر بسپارد.
  • به هر کنترل یک مالک، یک اعتبارسنجی و یک شرط بازنشستگی اختصاص دهید.
  • یک کنترل را فقط با شواهد بازنشسته کنید. آن را صرفاً چون قدیمی به نظر می‌رسد حذف نکنید.
  • حالت دقیق بزرگی و کوچکی API_KEY را در یک قانون حفظ کنید.