برنامهریزی، تحلیل و عملیات پلتفرم · فصل ۵ — Virtual Cast، Canon Boundary و Repair Workflow · 219
Repair Patch Classes, Canary و Rollback
داده و event دارد اما آنها را به مدل تصمیم، attention، experiment یا platform policy قابل توضیح تبدیل نمیکند. موضوع جاری: «Repair Patch Classes, Canary و Rollback». میتواند برای «Repair Patch Classes, Canary و Rollback» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.
خلاصهٔ درس
داده و event دارد اما آنها را به مدل تصمیم، attention، experiment یا platform policy قابل توضیح تبدیل نمیکند. موضوع جاری: «Repair Patch Classes, Canary و Rollback».
میتواند برای «Repair Patch Classes, Canary و Rollback» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.
خروجی این درس
میتواند برای «Repair Patch Classes, Canary و Rollback» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.
1. مسئله: Green Test مساوی Safe Rollout نیست
یک Incident در درس قبلی reproduce شده و حالا Patch candidate داریم. اشتباه رایج این است که بعد از چند Test سبز، Patch را مستقیم روی همه کاربرها ببریم. این درس بهجای «اعتماد به حس»، یک قرارداد Release قابل ممیزی میسازد: Patch Classification, Canary & Rollback Plan v1.
2. مرز درس
PLN-028 مالک Diagnostics اولیه نیست؛ reproduction_ref را از PLN-027 مصرف میکند. همچنین مالک Architecture مرز Venture در ARC-001 نیست. خروجی این درس فقط طبقهبندی Patch، Canary/Control، Observation، Promote/Abort Gate و Rollback است.
3. FACT خارجی و DESIGN داخلی
Google SRE Canary را deployment جزئی و محدود در زمان میداند که evaluate میشود تا درباره ادامه rollout تصمیم بگیریم. Kubernetes هم rollout history، rollback و canary با چند Deployment را مستند میکند. اما Patch classها، Thresholdها و Stateهای این درس MAKNOW DESIGN هستند.
4. Patch را قبل از Rollout طبقهبندی کن
حداقل کلاسها: CODE، CONFIG، DEPENDENCY، DATA_SCHEMA، POLICY. اگر یک علت reproduceشده واقعاً به تغییر اتمیک چند Surface نیاز دارد، COMPOSITE_BOUNDED مجاز است؛ ولی دو Repair نامرتبط را در یک Canary قاطی نکن.
5. Identity: Patch، Incident و Change Set
سه هویت باید جدا اما متصل باشند: incident_id، patch_id و change_set_hash. اگر Change Set بعد از تعریف Canary تغییر کند، نتیجه قبلی دیگر Oracle نسخه جدید نیست و باید Plan دوباره evaluate شود.
6. Reproduction Reference شرط ورود است
reproduction_ref باید به Evidence قابلتکرارِ همان Failure اشاره کند. Unit Test جدید مفید است، اما بدون پیوند به Failure reproduceشده، نشان نمیدهد Patch همان علت را برطرف کرده است. نبود این Ref → HOLD.
7. Rollback را قبل از Canary اثبات کن
Rollback target باید Known-good و قابل شناسایی باشد؛ feasibility فقط «یک دستور داریم» نیست. باید بدانیم rollback چه چیزی را برمیگرداند، چه چیزی را برنمیگرداند و چگونه بعد از rollback صحت را verify میکنیم. Target نامعلوم یا rollback ناممکن → HOLD/BLOCKED.
8. Canary و Control را همزمان نگه دار
Canary باید یک subset محدود باشد و Control نسخه پایدار را همزمان نگه دارد تا signal attributable شود. Comparison فقط قبل/بعد از تغییر برای این Contract کافی نیست. Cohortها باید ID و Scope روشن داشته باشند.
9. Observation Window از Failure Mode میآید
Window عدد ثابت نیست. Failure سریع مثل crash شاید زود دیده شود؛ Failure دیررس مثل config cache drift یا queue backlog به Window طولانیتر نیاز دارد. Window کوتاهتر از زمان بروز Failure → INCONCLUSIVE/HOLD.
10. Success و Abort Signal را از قبل بنویس
Success signalها باید بگویند چه چیزی باید بهتر/پایدار بماند؛ Abort signalها باید بگویند چه چیزی فوراً Promotion را متوقف میکند. Average سالم نمیتواند یک Abort signal فعال را خنثی کند.
11. Error-budget Guard و Promotion Gate
Promotion فقط وقتی مجاز است که Window کامل شده، Success signalها پاس باشند، Abort signal فعال نباشد، Guard نقض نشده باشد و Rollback هنوز Verified باشد. هر Gate decisive است؛ رأیگیری اکثریت نداریم.
12. Baseline — Patch ترکیبی اما محدود
Incident INC-482 با یک dependency regression و routing condition مرتبط reproduce شده است. هر دو تغییر یک Cause و یک rollback target دارند، پس COMPOSITE_BOUNDED قابل دفاع است. Canary=5%، Control=stable 95%، Window=30m؛ Success=error-rate parity + no queue regression؛ Abort=canary error delta > 2pp یا crash. همه Gateها پاک → PROMOTE.
| Patch | Incident | Class | Change Set | Reproduction | Risk Surface | Rollback Target | Canary | Control | Window | Success Signals | Abort Signals | Promotion Gate | Rollout State | Verification | Provenance | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PATCH-482A | INC-482 | COMPOSITE_BOUNDED | sha256:chg-482a | REP-482-v3 | dependency+routing | release-2026.09.14 | 5% traffic | stable 95% | 30m | error parity; no queue regression | error delta >2pp; crash | window complete + guard clear | PROMOTE | 30m post-change clean | EV-REL-482 | |
| PATCH-482B | INC-482 | DEPENDENCY | sha256:chg-482b | REP-482-v3 | dependency | release-2026.09.14 | 5% traffic | stable 95% | 30m | error parity | crash | rollback target missing | HOLD | not run | EV-REL-483 | |
| PATCH-CFG-91 | INC-491 | CONFIG | sha256:cfg-91 | REP-491-v2 | cache policy | config-r88 | 10% workers | stable 90% | 180m | cache parity after refresh | cache mismatch >1% | full delayed window complete | PROMOTE | 180m delayed verification | EV-REL-491 |
13. سه Shortcut خطرناک
- دو Repair نامرتبط را در یک Canary جمع کنی → attribution از بین میرود و
HOLD. ۲) بدون rollback target Canary را شروع کنی →HOLD. ۳) Abort signal فعال باشد ولی Average کل خوب باشد →ROLLBACK، نه Promotion.
14. Transfer — Config Patch با Failure دیررس
در Transfer، Patch فقط CONFIG است و rollback action سریع است؛ اما Failure signal بعد از حدود 120 دقیقه در cache refresh ظاهر میشود. Window baseline 30m دیگر معتبر نیست. Plan جدید Window=180m، post-rollback verification=180m و Abort signal متناسب با delayed cache mismatch دارد. اگر Window کامل و signalها پاک باشند، میتواند PROMOTE شود.
15. Lab، Assessment و Freshness
در lab/PLN-028-LAB1/learner/ دستور python run_checks.py را اجرا کن. ۸ Fixture شامل Baseline، Missing Reproduction، Missing Rollback، Abort Active، Mixed Unrelated Repairs، Stale Evidence، Short Delayed Window و Transfer هستند. FACTهای خارجی تا تاریخ درجشده recheck شدهاند؛ تغییر Canonical Package نیازمند Version جدید است.
ارزیابی
پاسخنامهی این درس در بستهی آموزش وجود ندارد؛ خودت جواب بده و صادقانه علامت بزن. «نیاز به مرور» درس را به صف تکرار میفرستد.
Q1 boundary
Q2 application
Q3 diagnosis
Q4 rollback
Q5 transfer
Q6 authority
ملاکهای ارزیابی (rubric)
A passing submission must preserve the lesson boundary, bind the patch to exact reproduced evidence and change-set identity, classify the patch, define concurrent canary/control cohorts, justify the observation window from failure latency, predeclare success/abort signals, preserve a verified rollback target, and recompute the delayed-signal transfer. Missing decisive evidence cannot be promoted.
منابع و تازگی
مطالعهٔ موارد (case studies)
فایلهای آزمایشگاه
دستور python run_checks.py را Offline اجرا کنید. برای هر Fixture اولین Gate decisive را مشخص کنید و State را توضیح دهید. در Transfer، Observation Window را از Failure latency دیررس دوباره محاسبه کنید و Window baseline را کپی نکنید.