CH5-002 · מודל בעלות על נתונים ומקורות אמת

גרסה 0.3 · 9.8.2026, 08:17 · המפרט השני של CH5 — חוזה בעלות, ללא שינוי קוד

נכון לעדכון אחרון: 27.8.2026, 15:31

Approved v0.3

Approved for Implementation — Version 0.3

מפרט CH5-002 אושר רשמית ב-09.08.2026 כחוזה ארכיטקטוני מחייב לבעלות על נתונים, מקורות אמת, סמכויות כתיבה, גרסאות, Audit וטיפול בהתנגשויות. האישור אינו משנה את גבולות התכולה: אין שינוי קוד, Schema או Cron. סגירתו כ-Version 1.0 תתבצע לאחר השלמת המימוש, הפקת דוח ביצוע ואישור הראיות. לא נדרש סבב Review נוסף — המפרט הבא הוא CH5-003 (Decision Snapshot).

עיקרון מחייב: חוזה, לא קוד

מפרט זה מגדיר מודל בעלות ומקורות אמת. אינו משנה קוד, Schema או Cron. האכיפה תבוצע ב-CH5-003 עד CH5-006 באמצעות Feature Flag, Audit ובדיקות.

0.1 · היסטוריית גרסאות
גרסהתאריך ושעהמהות השינויסטטוס
v0.109.08.2026 08:07טיוטה ראשונה — מודל בעלות בסיסי עם מטריצה אחת משולבתReview
v0.209.08.2026 08:10שילוב שמונה הערות Review: הפרדת As-Is/Target/Gap, Portfolio ברמת שדה, מסלול Trade מחייב, ישויות חסרות (Order/Fill/Decision/Snapshot/AssetMaster/CorporateAction/AuditEvent), AuditEvent כפער, תיקוני התנגשויות ו-SystemSettingsReview
v0.309.08.2026 08:24היסטוריית גרסאות, תיקון available_cash (Cash Ledger כמקור אמת + כל מקורות שינוי מזומן), נוסח "רכיב או רכיבים מוסמכים", פריסת טבלאות (כותרת חוזרת, מניעת פיצול שורה, עמוד לרוחב) — אושר רשמית לביצועApproved
1 · בעיה ויעד

CH5-001 מיפה את הנתונים והזרימות הקיימות וזיהה פערים משמעותיים: אין מקור אמת מחייב לכל תחום (למשל: מחיר נכס נדרס בכל update, פוזיציה נדרסת ללא יומן גרסאי, החלטת השקעה מפוזרת בין Trade ו-AnalysisOutput). ללא מודל בעלות מוגדר, כל רכיב יכול לכתוב לכל ישות, אין אחראי ברור לכל תחום, ואין כללי גרסאות והיסטוריה. זה יוצר סיכון: נתון ישן או סותר עלול לשמש לפעולה, ולא ניתן לשחזר מי כתב מה ומתי. בנוסף, המטריצה הקודמת ערבבה בין ה-As-Is שנמצא ב-CH5-001 לבין החוזה הארכיטקטוני הרצוי, ולא הפרידה בין מצב קיים למצב יעד.

להגדיר מודל בעלות על נתונים הכולל לכל ישות מרכזית: מקור אמת מחייב (Source of Truth), הרכיב או הרכיבים המוסמכים, בחלוקה מפורשת לפי שדה וסוג פעולה, ליצירה ועדכון, בעל אחריות עסקית וטכנית, כללי עדכון/גרסאות/היסטוריה, איסור על עדכון ישיר מרכיבים לא מוסמכים, ומנגנון טיפול בהתנגשות בין מקורות נתונים. המודל מפריד במפורש בין מצב קיים (As-Is) למצב יעד (Target), ומציין את הפער והמפרט המטפל לכל סעיף. מודל זה הוא חוזה — אינו משנה קוד, אך מגדיר את הכללים ש-CH5-003 עד CH5-006 יאכפו באמצעות Schema, Feature Flag ו-Audit.

2 · תכולת המימוש

הגדרת מקור אמת מחייב (Source of Truth) לכל ישות מרכזית — עם הפרדה מפורשת בין מצב קיים (As-Is) למצב יעד (Target) וציון פער/מפרט מטפל.

בעלות על Portfolio ברמת שדה: quantity ו-avg_price יתעדכנו רק כתוצאה מ-Fill מאומת או Reconciliation; current_price בלבד יתעדכן באמצעות תהליך רענון מחירים; refreshPortfolioPrices אינו רשאי לעדכן quantity או avg_price.

הוספת available_cash/יתרת המזומן למטריצה: Broker Account Snapshot / Cash Ledger הוא מקור האמת; הישות המקומית היא עותק קנוני מתועד. מזומן אינו משתנה רק בעקבות Fill — יש לכלול הפקדות, משיכות, עמלות, דיבידנדים, המרות מטבע, ריבית והון משוריין לפקודות פתוחות.

שמירת מסלול יצירת Trade המחייב: Candidate → Analysis → Decision/מקור סמכות מאושר → Risk Gate עצמאי → Trade → Order. פעולת יציאה מאושרת מראש תסומן כחריג מתועד. אירועי הברוקר מוסרים כעובדות ביצוע, אך עדכון המצב הפנימי יבוצע רק דרך ה-State Machine.

הוספת ישויות ביצוע חסרות למטריצה: Order, Fill/BrokerEvent, Decision, DecisionSnapshot, AssetMaster, CorporateAction. ישויות שאינן קיימות מסומנות כ-Planned/GAP עם המפרט המטפל.

הגדרת מערכת Audit: Message (נמחק לאחר 30 יום) אינו יכול לשמש Audit מחייב. נדרש AuditEvent או מנגנון מקביל כ-Append-Only, עם correlation_id, מקור, זמן, גרסת סכמה ו-Payload/Hash. עד למימושו — מסומן כפער ולא כיכולת קיימת.

תיקון כללי התנגשויות: אין לקבוע executeTrade > refreshPortfolioPrices לגבי quantity (לרכיב רענון המחירים אסור מלכתחילה לכתוב כמות). התנגשות מחירים תחסום פתיחת פוזיציה או הגדלת חשיפה, אך לא תחסום יציאה, צמצום או פעולת חירום.

תיקון SystemSettings: Last Write Wins ללא CAS אינו יכול להיות מודל היעד. נדרש מנגנון גרסה, Audit ו-Snapshot למחזור ההחלטה.

הגדרת בעל אחריות עסקית (Business Owner) ובעל אחריות טכנית (Technical Owner) לכל תחום נתונים.

הגדרת כללי עדכון: מתי מותר לעדכן, מי מוסמך, איזה מנגנון (CAS, Idempotency), ומה הסטטוס לאחר עדכון.

איסור מפורש על עדכון ישיר של ישויות מרכזיות מרכיבים שאינם מוסמכים.

הגדרת כללי מחיר Raw vs. Canonical: מחיר ברוקר/שוק הוא Raw; המחיר המאוחסן ב-Portfolio או ב-Trade הוא Canonical שנגזר מ-Raw; אסור לערבב ביניהם.

הגדרת כללי בעלות לישויות חדשות שייווצרו ב-CH5-003 עד CH5-006.

3 · תוצרים מחייבים
מטריצת בעלות — טבלה א׳: מקור אמת, רכיב מוסמך, מצב קיים ופער/מפרט מטפל לכל ישות.מטריצת בעלות — טבלה ב׳: אחריות עסקית/טכנית, גרסאות (קיים → יעד) וכלל התנגשות.מפת רכיבים מוסמכים — איזה Function/Workflow רשאי לכתוב לאיזה Entity/שדה.מסמך כללי עדכון/גרסאות/היסטוריה — לכל ישות, מה המדיניות.מנגנון טיפול בהתנגשויות — כללי עדיפות, סטטוס נתון וחסימה.רשימת איסורי עדכון ישיר — רכיבים שאינם רשאים לכתוב.רשימת ישויות Planned/GAP עם מפרט מטפל.
4 · מגבלות והגנות

אין שינוי Schema, Rename או שינוי Cron במסגרת מפרט זה.

אין יצירת ישויות חדשות — המפרט מגדיר חוזה בעלות, לא מבצע אותו.

אין שינוי קוד עסקי — האכיפה תבוצע ב-CH5-003 עד CH5-006.

אין התאמה לפי דמיון שם בלבד — זהות נכס תיקבע רק במפרט Asset Master הייעודי.

מודל הבעלות אינו מעביר סמכות ל-CIO או לסוכן כלשהו.

ישויות המסומנות כ-Planned/GAP אינן קיימות במערכת ודורשות מפרט ומימוש נפרדים.

5 · מטריצת בעלות — טבלה א׳: מקור אמת, רכיב מוסמך, מצב קיים ופער

הנתונים מבחינים מפורש בין מצב קיים (As-Is) למצב יעד (Target). ישויות המסומנות כ-(Planned) אינן קיימות במערכת ודורשות מפרט ומימוש נפרדים.

ישותמקור אמת (יעד)רכיב מוסמך (יעד)מצב קיים (As-Is)פער/מפרט
TradeTrade.status + status_version (State Machine)stateMachine.ts בלבד — מסלול: Candidate→Analysis→Decision→Risk Gate→Trade→OrderrunAgentScan יוצר Trade ישירות; עדכון סטטוס ישירCH3-002/005, CH5-003
Portfolio.quantityPortfolio.quantityexecuteTrade (Fill מאומת) או Reconciliation בלבדexecuteTrade + refreshPortfolioPricesCH5-003
Portfolio.avg_pricePortfolio.avg_priceexecuteTrade (Fill מאומת) או Reconciliation בלבדexecuteTrade + refreshPortfolioPricesCH5-003
Portfolio.current_pricePortfolio.current_pricerefreshPortfolioPrices (רענון מחירים) בלבדexecuteTrade + refreshPortfolioPricesCH5-003
available_cashBroker Account Snapshot / Cash Ledger (מקור אמת); הישות המקומית היא עותק קנוני מתועדexecuteTrade (Fill מאומת), הפקדות/משיכות (Deposit/Withdrawal), עמלות (Commission Engine), דיבידנדים (CorporateAction), המרות מטבע (FX), ריבית, שינויי הון משוריין — כל אחד בחלוקה מפורשת לפי סוג פעולהמתעדכן על-ידי מספר רכיבים ללא הפרדה; אין Cash LedgerCH5-003/004
AgentConfigAgentConfig (תצורה נוכחית + Hash)captureAgentBaseline, Settings (עם identity check)Hash + נעילת זהות (CH4-001)CH4-001 (קיים)
AgentSnapshotAgentSnapshot (Append-Only)captureAgentBaseline בלבדAppend-Only; snapshot_version עולה
SystemSettingsSystemSettings (סטטוס יחיד)Settings (admin), initCH4Last Write Wins; אין CAS; אין גרסאותCH5-003/005
MarketDataMarketData.pricerefreshIndices, runAgentScanנדרס בכל update; אין הבחנת Raw/CanonicalCH5-004
MessageMessage (יומן תפעולי בלבד)runAgentScan, executeTrade, refreshPortfolioPrices, cleanupOldMessagesAppend (לא טהור); נמחק לאחר 30 יוםCH5-005
AlertAlert (סטטוס יחיד)runAgentScan, refreshPortfolioPrices, Alerts page (user)נדרס; אין גרסאותCH5-005
AnalysisOutputAnalysisOutput (פלט ניתוח)runAgentScan בלבדגרסאי חלקית (profile_version)CH5-003
AgentLogAgentLog (יומן פעילות)runAgentScan, refreshPortfolioPricesAppend; ללא מחיקהCH5-005
AgentProfileAgentProfile (חוזה סוכן)initCH4 בלבדגרסאי (agent_version)
TaxReportTaxReport (דוח מס)TaxReports page (user)סטטוס: draft/generated/submittedCH5-005
Order (Planned)Order (execution_state, client_order_id)executeTrade דרך Broker Adapter בלבדלא קיים כישות נפרדת; מוטמע ב-TradeCH5-003 / CH3-003
Fill / BrokerEvent (Planned)Fill/BrokerEvent (יומן אירועי ברוקר)Broker Adapter בלבד (אירועים נכנסים)מוטמע ב-Trade (filled_quantity, average_fill_price)CH5-004 / CH3-003
Decision (Planned)Decision (חפץ גרסאי עם Snapshot קפוא)מקור סמכות מאושר בלבד (לא סוכן)לא קיים; פזור ב-Trade (score, reasoning)CH3-005 / CH5-003
DecisionSnapshot (Planned)DecisionSnapshot (קפוא בתחילת מחזור)Snapshot Builder דטרמיניסטי בלבדלא קייםCH5-003
AssetMaster (Planned)AssetMaster (asset_id קבוע ויציב)Asset Master Service בלבדלא קיים; משתמש ב-symbol+marketמפרט Asset Master הייעודי
CorporateAction (Planned)CorporateAction (אירועים תאגידיים)CorporateAction Workflow בלבדלא קייםCH5-004
AuditEvent (Planned)AuditEvent (Append-Only מחייב)כל רכיב מוסמך (דרך Audit Middleware)לא קיים; Message משמש כתחליף (נמחק לאחר 30 יום)CH5-005
6 · מטריצת בעלות — טבלה ב׳: אחריות, גרסאות וטיפול בהתנגשויות
ישותBusiness OwnerTechnical Ownerגרסאות (קיים → יעד)כלל התנגשות (יעד)
TradeCIO / InvestmentBackend / Executionstatus_version (CAS) חלקי → גרסאי מלא + Decision Snapshotאירועי ברוקר מוסרים כעובדות; עדכון מצב פנימי רק דרך State Machine
Portfolio.quantityPortfolio ManagementBackend / Portfolioנדרס; אין גרסאות → Append-Only או גרסאיאין תחרות — ל-refreshPortfolioPrices אסור לכתוב quantity כלל
Portfolio.avg_pricePortfolio ManagementBackend / Portfolioנדרס; אין גרסאות → Append-Only או גרסאיאין תחרות — ל-refreshPortfolioPrices אסור לכתוב avg_price כלל
Portfolio.current_pricePortfolio ManagementBackend / Portfolioנדרס; אין גרסאות → גרסאי עם Lineageהתנגשות מחירים חוסמת פתיחת פוזיציה/הגדלת חשיפה; אינה חוסמת יציאה, צמצום או חירום
available_cashPortfolio ManagementBackend / Portfolioנדרס; אין גרסאות → Cash Ledger גרסאי (Append-Only) עם Auditכשל עדכון מזומן אינו חוסם יציאה או חירום; הון משוריין לפקודות פתוחות אינו זמין לפקודות חדשות
AgentConfigAgent OperationsBackend / Agentsidentity_hash + config_hash → תקין; היסטוריה ב-AgentSnapshotנעילת זהות בטעינה; שינוי מחייב migration_ref/config_change_ref
AgentSnapshotAgent OperationsBackend / AgentsAppend-Only → תקיןאין Update/Delete דרך זרימות עסקיות; מחיקה/ארכוב רק לפי Retention מאושרת
SystemSettingsSystem AdminBackend / SystemLast Write Wins; אין CAS → גרסאי + Snapshot למחזור החלטה + Auditשינוי אמצע מחזור מחייב סגירה ופתיחת מחזור חדש (Target)
MarketDataMarket DataBackend / Dataנדרס; אין היסטוריה → Raw/Canonical/Adjusted + Data Quality + Lineageהתנגשות מחירים חוסמת פתיחת פוזיציה/הגדלת חשיפה; אינה חוסמת יציאה, צמצום או חירום
MessageOperationsBackend / AuditAppend; Retention 30 יום → יומן תפעולי בלבד; Audit מחייב ב-AuditEventאין התנגשות — כל כותב מוסיף רשומה
AlertRisk / OperationsBackend / Alertsנדרס → גרסאי או AppendAlert קריטי אינו נחסם/נמחק במקרה כשל (Fail-Safe)
AnalysisOutputCIO / AnalysisBackend / Agentsprofile_version → גרסאי מלא + קישור ל-DecisionSnapshotאין התנגשות — כל ניתוח יוצר רשומה חדשה
AgentLogAgent OperationsBackend / AuditAppend → Append-Only עם Retentionאין התנגשות — כל פעולה מוסיפה רשומה
AgentProfileAgent OperationsBackend / Agentsagent_version → תקיןאין התנגשות — גרסה חדשה לכל שינוי
TaxReportFinance / TaxBackend / Taxסטטוס בלבד → גרסאי עם Auditאין התנגשות — יצירה חדשה לכל שנת מס
Order (Planned)ExecutionBackend / Execution— → גרסאי עם execution_state CASאירועי ברוקר מוסרים כעובדות; עדכון מצב רק דרך State Machine
Fill / BrokerEvent (Planned)ExecutionBackend / Executionמוטמע ב-Trade → ישות/יומן נפרד Append-Onlyאירוע מאוחר מחייב Reconciliation; אינו דורס מצב קיים
Decision (Planned)CIO / InvestmentBackend / Decision— → גרסאי עם frozen snapshotאין Candidate→Order ישיר; מסלול מחייב: Candidate→Analysis→Decision→Risk Gate→Trade→Order
DecisionSnapshot (Planned)CIO / InvestmentBackend / Decision— → Market+Portfolio+Policy+System+Decision SnapshotSnapshot שפורסם אינו משתנה; שינוי מחייב מחזור חדש
AssetMaster (Planned)Market DataBackend / Data— → asset_id קבוע + Alias גרסאיכשל Resolution חוסם יצירת Candidate/Trade/Order חדש
CorporateAction (Planned)Market DataBackend / Data— → Append-Only עם תיעוד מלאאירוע תאגידי חוסם פעולה עד התאמת Position/Order/Stop
AuditEvent (Planned)Audit / ComplianceBackend / Audit— → Append-Only עם correlation_id, source, time, schema_version, Payload/Hashאין Update/Delete; נשמר לפי Retention מאושרת
7 · כללי עדכון

מסלול יצירת Trade מחייב: Candidate → Analysis → Decision/מקור סמכות מאושר → Risk Gate עצמאי → Trade → Order. אין יצירה ישירה על-ידי סוכן ללא מסלול זה.

פעולת יציאה מאושרת מראש תסומן כחריג מתועד (pre-approved exit).

אירועי ברוקר מוסרים כעובדות ביצוע; עדכון המצב הפנימי יבוצע רק דרך ה-State Machine (CH3-002).

Portfolio.quantity ו-Portfolio.avg_price יתעדכנו רק כתוצאה מ-Fill מאומת או Reconciliation — לא על-ידי refreshPortfolioPrices.

Portfolio.current_price יתעדכן רק על-ידי refreshPortfolioPrices (רענון מחירים) — לא על-ידי executeTrade.

available_cash יתעדכן רק כתוצאה מ: Fill מאומת, הפקדות, משיכות, עמלות, דיבידנדים, המרות מטבע, ריבית או שינוי הון משוריין — לא על-ידי רכיב רענון מחירים.

עדכון סטטוס Trade חייב לעבור דרך stateMachine.ts (CH3-002) עם CAS על status_version.

עדכון SystemSettings חייב להיות מלווה ב-Audit; במחזור החלטה יש להשתמש ב-Snapshot (Target).

יצירת AgentSnapshot חייבת להיות Append-Only דרך captureAgentBaseline בלבד.

עדכון AgentConfig חייב לעבור דרך assertAgentIdentity/assertAgentConfig (CH4-001) עם migration_ref/config_change_ref.

עדכון MarketData.price נדרס — אין היסטוריה; דורש תיעוד ב-CH5-004.

יצירת Message היא Append — כל כותב מוסיף רשומה; אין עדכון תוכן; אינו מתאים ל-Audit מחייב.

יצירת Alert היא יצירה או עדכון סטטוס (active→acknowledged→dismissed) — אין שינוי תוכן.

יצירת AnalysisOutput היא Append — כל ניתוח יוצא רשומה חדשה עם profile_version.

8 · איסורי עדכון ישיר
רכיבישות אסורהסיבה
Dashboard (UI)Trade, Portfolio, SystemSettings, AgentConfigUI לקריאה בלבד; עדכון דרך Functions מוסמכים
Trades page (UI)Portfolio.quantity, Trade.status (ישירות)סטטוס דרך stateMachine.ts; quantity דרך executeTrade (Fill מאומת)
Portfolio page (UI)Portfolio.quantity, avg_price, current_priceעדכון דרך executeTrade/refreshPortfolioPrices בלבד
Agents page (UI)AgentConfig (ישירות)דרך captureAgentBaseline או Settings עם identity check
Messages page (UI)Message (עדכון תוכן)Append בלבד; מחיקה דרך cleanupOldMessages
runAgentScanPortfolio.quantity, avg_price, Trade.status (ישירות)יוצר Candidate/Analysis; אינו מעדכן Portfolio או סטטוס Trade ישירות
refreshPortfolioPricesPortfolio.quantity, avg_price, Trade.status (ישירות)רענון מחירים בלבד (current_price); אינו רשאי לכתוב quantity, avg_price או סטטוס
executeTradePortfolio.current_price (ישירות)מעדכן quantity/avg_price דרך Fill מאומת; אינו רשאי לכתוב current_price ישירות
chatWithAgentכל ישות (פרט יצירת Message)ממשק צ׳אט אינו מוסמך לכתיבת נתונים עסקיים
9 · טיפול בהתנגשויות
תרחישהתנהגות נוכחיתהתנהגות נדרשתמפרט CH5בעלים
שני מקורות מחיר שונים לאותו נכסאין הבחנה; העדכון האחרון דורססימון CONFLICTED; חסימת פתיחת פוזיציה או הגדלת חשיפה; אינה חוסמת יציאה, צמצום או חירוםCH5-004Backend / Data
מחיר ברוקר שונה ממחיר MarketDataאין השוואהברוקר גובר לאחר execution; MarketData גובר לניתוח; הבחנת Raw/CanonicalCH5-004Backend / Execution
עדכון Portfolio.quantity ממספר כותביםאין CAS; מירוץ אפשרי; refreshPortfolioPrices כותב quantityרק executeTrade (Fill מאומת) או Reconciliation; refreshPortfolioPrices אינו רשאי לכתוב quantity כללCH5-003Backend / Portfolio
עדכון SystemSettings במהלך מחזור החלטהLast Write Wins; אין CAS; אין גרסאותגרסאי + Snapshot למחזור החלטה + Audit; שינוי אמצע מחזור מחייב סגירה ופתיחה מחדשCH5-003/005Backend / System
מחיקת Alert פעיל בעת כשל Identityאין חסימהAlert קריטי אינו נחסם/נמחק; נוצר Alert חדש (Fail-Safe)CH5-006Backend / Security
עדכון AgentConfig מ-Settings במהלך ריצת סוכןאין נעילת זמן ריצהנעילת זהות בטעינה (assertAgentIdentity); שינוי מחייב config_change_refCH4-001 (קיים)Backend / Agents
אירוע ברוקר מאוחר (late fill) לאחר סגירת מחזוראין Reconciliation נפרדאירוע מאוחר מחייב Reconciliation; אינו דורס מצב קיים; Corrective Trade אם נדרשCH3-003 / CH5-004Backend / Execution
10 · תנאי קבלה

לכל ישות מרכזית מוגדר מקור אמת מחייב או מסומן פער מפורש עם מפרט מטפל.

המטריצה מפרידה מפורש בין מצב קיים (As-Is) למצב יעד (Target) עם עמודת פער/מפרט.

לכל ישות מוגדר הרכיב או הרכיבים המוסמכים, בחלוקה מפורשת לפי שדה וסוג פעולה, ליצירה ועדכון — לא "רכיב יחיד" כשיש מספר כותבים.

לכל תחום נתונים מוגדר Business Owner ו-Technical Owner.

Portfolio מפוצל לרמת שדה: quantity ו-avg_price רק דרך Fill מאומת/Reconciliation; current_price רק דרך רענון מחירים.

refreshPortfolioPrices אינו רשאי לעדכן quantity או avg_price — מתועד.

available_cash מוגדר עם מקור אמת (Cash Ledger) ורכיבים מוסמכים לפי סוג פעולה (Fill, הפקדות, משיכות, עמלות, דיבידנדים, המרות, ריבית, הון משוריין).

מסלול יצירת Trade מחייב: Candidate → Analysis → Decision → Risk Gate → Trade → Order. אין יצירה ישירה.

פעולת יציאה מאושרת מראש מסומנת כחריג מתועד.

אירועי ברוקר מוסרים כעובדות; עדכון מצב פנימי רק דרך State Machine.

ישויות חסרות (Order, Fill/BrokerEvent, Decision, DecisionSnapshot, AssetMaster, CorporateAction, AuditEvent) מסומנות כ-Planned/GAP עם מפרט מטפל.

Message אינו מוגדר כ-Audit מחייב; נדרש AuditEvent (Append-Only עם correlation_id, source, time, schema_version, Payload/Hash) — מסומן כפער.

אין קביעת executeTrade > refreshPortfolioPrices לגבי quantity — ל-refresh אסור לכתוב quantity כלל.

התנגשות מחירים חוסמת פתיחת פוזיציה/הגדלת חשיפה; אינה חוסמת יציאה, צמצום או חירום.

SystemSettings: Last Write Wins אינו מודל היעד — נדרש גרסאי + Audit + Snapshot למחזור החלטה.

AgentSnapshot: אין Update/Delete דרך זרימות עסקיות; מחיקה/ארכוב רק לפי Retention מאושרת — לא נקבע "לא ניתן למחיקה" לפני אימות ואכיפה.

המודל אינו מעביר סמכות ל-CIO או לסוכן כלשהו.

המודל עקבי עם CH3-002 (stateMachine), CH4-001 (identity locking) ו-CH3-003 (execution).

טבלאות הבעלות מפוצלות לשתי טבלאות עם מצב קיים/יעד/פער נפרדים — מונחים טכניים אינם נשברים; כותרת חוזרת בכל עמוד; שורות אינן מתפצלות בין עמודים.

11 · ראיות נדרשות בדוח הביצוע
מטריצת בעלות — טבלה א׳ (מקור אמת, רכיב מוסמך, מצב קיים, פער/מפרט) — מאושרת.מטריצת בעלות — טבלה ב׳ (אחריות, גרסאות קיים→יעד, התנגשות) — מאושרת.מפת רכיבים מוסמכים — רשימה מאושרת.מסמך כללי עדכון/גרסאות/היסטוריה — מאושר.רשימת איסורי עדכון ישיר — מאושרת.מנגנון טיפול בהתנגשויות — מאושר.רשימת ישויות Planned/GAP עם מפרט מטפל — מאושרת.חתימת Review על המודל — אישור כתוב ומתועד על דיוק ההגדרות.
12 · Definition of Done

המפרט אושר לפני תחילת ביצוע.

כל תחום נתונים קיבל מקור אמת, רכיב מוסמך ובעל אחריות — עם הפרדת As-Is/Target/Gap.

כל תנאי קבלה קיבל בדיקה ותוצאה.

לא נוצרה נסיגה בהגנות, ב-State Machine או ב-Idempotency של CH3.

חוזי הסוכנים וה-CIO Shadow של CH4 נשמרו.

הופק דוח ביצוע הכולל ראיות, חריגות והמלצת סגירה.

רק לאחר אישור דוח הביצוע משתנה סטטוס המפרט ל-Version 1.0 — Closed.

13 · קבצים מושפעים

src/pages/Ch5Spec002.jsx — קובץ תיעודי קיים; במסגרת CH5-002 הוא לקריאה בלבד ואינו מיועד לעריכה.

אין שינוי ב-Entities, Functions, Workflows או קוד עסקי.

14 · סדר ביצוע

1. סקירת ממצאי CH5-001 (Data Inventory, SOT Matrix, Gap Analysis).

2. השלמת מטריצת בעלות (טבלה א׳ + טבלה ב׳) לכל ישות מרכזית — עם As-Is/Target/Gap.

3. הגדרת רכיבים מוסמכים לכל ישות/שדה.

4. הגדרת Business Owner + Technical Owner לכל תחום.

5. כתיבת כללי עדכון/גרסאות/היסטוריה.

6. רישום איסורי עדכון ישיר.

7. הגדרת מנגנון טיפול בהתנגשויות.

8. סימון ישויות Planned/GAP עם מפרט מטפל.

9. סקירת עקביות מול CH3-002, CH4-001, CH3-003.

10. הפקת דוח ביצוע CH5-002 עם כל הראיות.

11. אישור דוח הביצוע → מעבר ל-CH5-003.

תלות

CH5-001 מאושר (Data Inventory ו-Gap Analysis); פרקים 1–5 הנעולים; CH3 (001/002/003/004/005) ו-CH4 (001/Execution Report).

מחוץ לתכולה

שינוי Schema, יצירת ישויות חדשות, שינוי קוד עסקי, הקמת Asset Master, שינוי Cron, או אכיפת המודל בקוד (תבוצע ב-CH5-003 עד CH5-006).

Approved v0.3מפרט שני מתוך ששת מפרטי CH5 — אושר לביצוע. המפרט הבא הוא CH5-003 (Decision Snapshot, מזהי מחזור וקורלציה). סגירת CH5-002 כ-Version 1.0 תתבצע לאחר הפקת דוח ביצוע ואישור ראיות.