מעברי Workflow, אישור, Timeout וכשל בטוח
סגור ✅ — 4/4 שערים PASS, מכונת מצבים 21/21 PASS, T6.2 Enforced פעיל. Data Freshness חלקי מתועד כחסם CH1 P0 פתוח (אינו חוסם CH6). מעבר ל-T6.4 מאושר.
שער תלויות — פתוח לביצוע ✅
מטרה
לחבר את הטריגר והתזמון למכונת המצבים ולשערי האישור כך שכל Workflow יודע מתי להמשיך, להמתין, לפוג, להיכשל או לעבור לטיפול — בלי עקיפת Global Freeze, Approval TTL, Trade Validity או Risk Gate.
קבצים ורכיבים מושפעים (8)
מטריצת מעבר Trigger→State→Gate→Result
פעולות מימוש (0/8)
ראיות קוד — הגנות קיימות (11)
proposal_expires_at / approval_expires_at נבדקים. פג תוקף → transition ל-expired + logProtectionBlock + HTTP 410. נדרש אישור מחדש.
Trade פג → יצירת Trade pending חדש עם מחיר חי + proposal_expires_at חדש + Message מקשר (expired_trade_id → new_trade_id).
סף 3% (auto) / 5% (semi/manual). חריגה → logProtectionBlock + HTTP 409. חל רק על market buys; limit/stop נשמרים ע"י shouldFillBuy.
BUY בשוק סגור → pending→approved (MANUAL) → approved→wait (EXECUTION_GATE, MARKET_CLOSED). יבוצע אוטומטית בפתיחה ע"י refreshPortfolioPrices.
לפני ביצוע: assertDecisionActive(b, decision_id, legacy). חריגה → HTTP 409. legacy: true עוקף רק שער זה — אינו עוקף Risk/Freeze/TTL/Validity.
recordApproval נקרא בכל אישור ידני. refreshPortfolioPrices בודק ApprovalRecord לפני ביצוע — אין מעקף.
מעברים חוקיים בלבד (pending→approved→executed). CAS עם status_version. Outbox ל-Audit. אין קפיצה מ-pending ישירות ל-executed.
shouldFillBuy בודק Buy Limit / Buy Stop / Stop Limit. תנאי לא מתקיים → parking כ-approved (waiting).
חוסם BUY חדש; SELL/Reduction/Exit/הגנה עוברים. אסימטרי בכוונה — הגנה אינה נחסמת.
איסוף פלטי סוכנים להשוואה בלבד. אין AgentConfig רשום עם סמכות ביצוע. אין שינוי Trade.
בודקים קיימים אך לא מחוברים לכל Workflow. חסם CH1 P0 פתוח — אינו נסגר ע"י CH6. תיעוד נדרש.
קריטריוני קבלה (8)
- כל מעבר Workflow חוקי לפי CH3; מעבר לא חוקי נחסם ומתועד.
- Approval שפג אינו מבוצע ונשאר זמין לאישור מחדש.
- סטיית מחיר מעל הסף הפעיל דורשת אישור מחדש.
- Global Freeze חוסם BUY חדש אך אינו חוסם SELL/Reduction/Exit.
- Risk Gate אינו ניתן לעקיפה בכל מצב עבודה.
- CIO Shadow אינו משנה עסקה או פקודה.
- עסקה ידנית מהגרף מצליחה במסלול המותר ושומרת את כל ההגנות שאינן Decision Gate.
- Workflow עם נתון לא עדכני אינו מתקדם לפעולה המחייבת מחיר.
בדיקות נדרשות (8)
מחזור Paper מלא מהטריגר עד סגירת תוצאה — pending→approved→executed.
ניסיון ביצוע לאחר TTL — הצעה פגה, נדרש אישור מחדש.
ספי 3% (auto) / 5% (semi/manual) — חריגה דורשת אישור מחדש.
BUY נחסם בזמן Global Freeze; SELL/Reduction/Exit עוברים.
ניסיון דילוג על שלב (pending→executed ישירות) — נחסם ומתועד.
החלטה נשמרת ואינה משפיעה על Trade.
legacy: true עם Risk/TTL/Validity פעילים — עוקף רק Decision Gate.
חסימת Workflow עם נתון לא עדכני — תיעוד הקישור ל-CH1 P0.
תרחישי כשל
Rollback
- כיבוי שינויי Workflow/Feature Flag וחזרה למכונת המצבים הקיימת.
- שחזור SystemSettings/AgentConfig וגרסאות Policy מן Snapshot.
- העסקאות שנגע בהן כשל אינן נמחקות; הן עוברות למסלול Recovery/Reconciliation.
- CIO נשאר או חוזר ל-Shadow ללא השפעה.
ראיות בדוח הביצוע
- מטריצת מעבר Trigger→State→Gate→Result.
- פלטי בדיקות TTL, Validity, Freeze, Risk ו-Stale.
- Audit מלא לעסקה ידנית מהגרף.
- דוח השוואת CIO Shadow.
- הוכחת Rollback ללא מחיקת היסטוריה.