چیتشیت
تفویض اختیار، ایزولاسیون و جغجغههای بازخورد
Delegation, Isolation and Feedback Ratchets
برنامهریزی بر اساس شواهد، تفکیک کار با مالکیت انحصاری و ارتقای هر اصلاح به اولین لایهی مالک.
فهرست مطالب
برنامهریزی، تفویض اختیار، ادغام
معماریحلقهی جغجغه (Ratchet loop)
گامبهگام- مشاهده (Observe)ثبت یک سیگنال ملموس.
- اتصال (Connect)پیوند دادن آن به یک نتیجه، محدودیت یا فرض.
- مکانیابی (Locate)یافتن اولین لایهی سیستمی که مالک علت است.
- تغییر (Change)ایجاد یک تغییر محدود با یک مالک مشخص.
- اعتبارسنجی (Verify)اثبات اینکه احتمال تکرار کمتر میشود.
- بازبینی (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 یک لیست خالی برمیگرداند
پیشفرضها و محدودیتها
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
minimumSessions | 2 | نشستهای مستقل برای تأیید |
c.rule.length | 500 | قانون بزرگتر "too large" است |
c.source.length | 2000 | منبع بزرگتر "too large" است |
Store `version` | 1 | نسخههای دیگر خطای "invalid store" میدهند |
Temp file `mode` | 0o600 | مجوزهای فقط-مالک |
`recurrence` floor | 1 | پایینتر از آن، اصلاح نادیده گرفته میشود |
Control fingerprint | 12 | کاراکترهای هگزادسیمال 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 را در یک قانون حفظ کنید.