CH5-005 · גרסאות ידע, Audit, Lineage ו-Retention

גרסה 0.2 · 9.8.2026, 10:03 · המפרט החמישי של CH5 — Versioned Stores + Audit Append-Only + Lineage + Retention + Tombstone

נכון לעדכון אחרון: 27.8.2026, 14:32

Approved v0.2

✅ Approved for Implementation — Version 0.2 (09.08.2026)

מפרט CH5-005 v0.2 אושר לביצוע ב-09.08.2026. לא נדרש סבב Review נוסף. חמשת התיקונים יושמו במלואם ובעקביות: (1) הפרדת גרסאות — PolicyVersion (מדיניות וספי סיכון בלבד), SystemSettingsVersion (הגדרות מערכת ותפעול), AgentConfigVersion (תצורת סוכן); AgentConfig מכיל current_config_version_id ו-current_profile_version_id בנפרד. (2) שלמות Audit — AuditEvent כולל idempotency_key, sequence_number, previous_event_hash, event_hash, hash_algorithm/hash_version, schema_version; שינוי קריטי וכתיבת Audit מתבצעים ב-Transaction מקומי + Outbox; שינוי Policy/הרשאה/מחיקה/Admin אינו מוצלח בלי Audit אמין. (3) Retention ומחיקה — מספרים מסומנים Proposed Baseline; נוספו legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה; מחיקה פיזית של Payload מותרת לפרטיות/רישוי עם Tombstone לא-רגיש; Tombstone נשמר עד תום Retention או Legal Hold. (4) הפעלת גרסה ו-Restore — הפעלה באמצעות VersionActivationEvent או מצביע פעיל עם CAS ו-Audit; Restore יוצר גרסה חדשה המקושרת למקור, לא דורס גרסה פעילה. (5) עדכון תלות — CH5-004 אושר לביצוע כ-v0.4. Version 1.0 ייקבע לאחר המימוש ואישור דוח הביצוע.

עיקרון מחייב: Append-Only — שרשרת ראיות בלתי-נשברת

Audit הוא Append-Only עם שרשרת Hash (previous_event_hash, event_hash, sequence_number) — אין עדכון או מחיקה, ושרשרת Hash מוכיחה שלא בוצע שינוי. שינוי קריטי (Policy, הרשאה, מחיקה, Admin) וכתיבת Audit מתבצעים ב-Transaction מקומי + Outbox — אינו נחשב מוצלח בלי Audit אמין. מחיקה מורשית יוצרת Tombstone עם legal_hold ו-purge_due_at — מחיקת Payload פיזית מותרת לפרטיות/רישוי עם Tombstone לא-רגיש. Tombstone נשמר עד תום Retention או Legal Hold. הפעלת גרסה דרך VersionActivationEvent עם CAS. Restore יוצר גרסה חדשה — אינו דורס גרסה פעילה. Secrets אינם נשמרים ב-Audit, Tombstone או Snapshot.

0.1 · היסטוריית גרסאות
גרסהתאריך ושעהמהות השינויסטטוס
v0.109.08.2026 09:17טיוטה ראשונה — הגדרת Versioned Stores (Prompt/Model/Policy/SystemSettings/Schema/AgentProfile), Audit Append-Only, Lineage מקצה לקצה, Tiered Retention, Tombstone, Archive/Restore. תלויות: CH5-003 (מאושר לביצוע v0.3), CH5-004 (v0.4 Review).Review
v0.209.08.2026 10:03חמישה תיקונים מהותיים: (1) הפרדת גרסאות — PolicyVersion (מדיניות וספי סיכון), SystemSettingsVersion (הגדרות מערכת), AgentConfigVersion (תצורת סוכן); AgentConfig עם current_config_version_id ו-current_profile_version_id נפרדים. (2) שלמות Audit — idempotency_key, sequence_number, previous_event_hash, event_hash, hash_algorithm/hash_version, schema_version; Transaction + Outbox לשינויים קריטיים. (3) Retention — Proposed Baseline; legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה; מחיקת Payload מותרת לפרטיות/רישוי עם Tombstone לא-רגיש; Tombstone עד תום Retention או Legal Hold. (4) הפעלה ו-Restore — VersionActivationEvent או מצביע פעיל עם CAS ו-Audit; Restore יוצר גרסה חדשה. (5) עדכון תלות — CH5-004 v0.4 Approved for Implementation.Review
v0.209.08.2026 12:46אישור סופי — Version 0.2 Approved for Implementation. לא נדרש סבב Review נוסף. חמשת התיקונים יושמו במלואם ובעקביות. Version 1.0 ייקבע לאחר המימוש ואישור דוח הביצוע.Approved
1 · בעיה ויעד

CH5-001 זיהה פערים: SystemSettings אינו גרסאי — שינוי מדיניות מוחק את הקודם ללא יכולת שחזור; AgentConfig ו-AgentProfile אינם מקושרים גרסאית ל-AnalysisOutput; אין Audit Append-Only מאוחד לכל שינוי מרכזי (מחיקה, ייצוא, הרשאה, Restore); אין Lineage מקצה לקצה החוצה את כל הישויות; ואין Retention מדורג — נתונים נשמרים או נמחקים ללא מדיניות רישוי/רגישות/עלות. בנוסף, מחיקה מורשית שוברת שרשרת ראיות — אין Tombstone. ללא ישות AuditEvent ייעודית, לא ניתן לשחזר מחזור החלטה מלא או להוכיח שרשרת ראיות.

להבטיח שחזור מלא, גרסאות Policy/Model/Prompt ו-Tombstone למחיקה מורשית ללא שבירת שרשרת ראיות. המפרט הופך את Prompt, Model, Policy, SystemSettings, Schema ו-AgentProfile לישויות גרסאיות; מקשר כל Analysis/Decision לגרסאות ו-input_refs ששימשו אותו; יוצר Audit Append-Only לכל שינוי מרכזי; מגדיר Lineage מקצה לקצה לפי מזהי מחזור; ומנהיג Retention מדורג ו-Tombstone.

2 · Versioned Stores
PolicyVersion

גרסאות מדיניות וספי סיכון בלבד — max_per_trade_pct, max_single_position_pct, max_sector_exposure_pct, daily_loss_limit_pct, auto_execute_threshold, automation_mode. אינו מכיל הגדרות מערכת תפעוליות. שינוי Policy פעיל מחייב גרסה, approved_by ו-effective_from.

policy_version_idversionpolicy_snapshot (ספי סיכון ומדיניות בלבד)approved_byeffective_from (UTC)change_reasonsupersedes_versioncreated_at (UTC)
מקור: SystemSettings (ספי סיכון בלבד)
SystemSettingsVersion

גרסאות הגדרות מערכת ותפעול — fx_rate_usd_ils, scan_interval_minutes, trading_mode, tax_rate, tax_method, response_timeout_sec, market_fill_timeout_sec, cancel_timeout_sec, approval_ttl_hours, proposal_ttl_hours. נפרד מ-PolicyVersion.

settings_version_idversionsettings_snapshot (הגדרות תפעול בלבד)approved_byeffective_from (UTC)change_reasonsupersedes_versioncreated_at (UTC)
מקור: SystemSettings (הגדרות תפעול)
AgentConfigVersion

גרסאות תצורת סוכן — sources, strategy, schedule_cron, region, market, asset_types. נפרד מ-AgentProfileVersion (חוזי אחריות). AgentConfig מכיל current_config_version_id ו-current_profile_version_id בנפרד.

config_version_idagent_idversionconfig_snapshot (תצורה תפעולית)approved_byeffective_from (UTC)change_reasonsupersedes_versioncreated_at (UTC)
מקור: AgentConfig (כיום — לא גרסאי)
PromptVersion

גרסאות Prompt לסוכנים — כל שינוי יוצר גרסה חדשה. AnalysisOutput מקושר לגרסת ה-Prompt ששימשה.

prompt_version_idagent_typeversionprompt_textchange_reasonapproved_byeffective_from (UTC)supersedes_versioncreated_at (UTC)
מקור: Agent prompts (כיום — מוטמעים בקוד)
ModelVersion

גרסאות מודל LLM — כל שינוי model_profile יוצר גרסה. AnalysisOutput מצביע על המודל שהפיק אותו.

model_version_idagent_typemodel_profileversionchange_reasonapproved_byeffective_from (UTC)supersedes_versioncreated_at (UTC)
מקור: AgentProfile.model_profile (כיום — לא גרסאי)
SchemaVersion

גרסאות סכמת ישויות — כל שינוי Schema יוצר גרסה. רשומות ישנות נשארות קריאות בגרסתן המקורית.

schema_version_identity_nameversionschema_jsonchange_reasonmigration_refeffective_from (UTC)created_at (UTC)
מקור: Entity schemas (כיום — נעלמות בעדכון)
AgentProfileVersion

גרסאות AgentProfile — mission, responsibilities, prohibited_actions, activation_policy. מקושר ל-AnalysisOutput.profile_version.

profile_version_idagent_idversionprofile_snapshotchange_reasonapproved_byeffective_from (UTC)supersedes_versioncreated_at (UTC)
מקור: AgentProfile (כיום — גרסאי חלקית)
3 · AuditEvent Contract

AuditEvent הוא Append-Only — אין עדכון או מחיקה. כל שינוי מרכזי, מחיקה, ייצוא, הרשאה, Restore ופעולת אדמין יוצרים רשומת Audit חדשה.

שדות: event_id, event_type (CREATE/UPDATE/DELETE/EXPORT/RESTORE/PERMISSION/ADMIN), entity_type, entity_id, actor (user_id / agent_id / system), action_detail, before_ref, after_ref, decision_cycle_id (אם רלוונטי), correlation_id (אם רלוונטי), timestamp (UTC), ip_address, session_id, idempotency_key, sequence_number, previous_event_hash, event_hash, hash_algorithm, hash_version, schema_version

סוג אירועתיאור
CREATEיצירת רשומה חדשה — Trade, Order, Fill, Position, Candidate, Decision
UPDATEעדכון רשומה — כולל מעברי State Machine, CAS, ביטולים
DELETEמחיקה מורשית — יוצרת Tombstone; אין מחיקה פיזית של שרשרת ראיות
EXPORTייצוא נתונים — מי, מה, מתי, לאן
RESTOREשחזור מגיבוי או מ-Archive — יוצר רשומת Audit נפרדת
PERMISSIONשינוי הרשאה, הזמנת משתמש, שינוי תפקיד
ADMINפעולת אדמין — Global Freeze, Feature Flag, מחיקת הודעות ישנות

אינווריאנטים

  • Append-Only — אין עדכון או מחיקה של רשומת Audit.
  • שרשרת Hash — כל אירוע מכיל previous_event_hash ו-event_hash; שינוי כלשהו יתגלה ב-hash chain.
  • sequence_number רציף ומונוטוני — אין פערים או כפילויות.
  • שינוי קריטי (Policy, הרשאה, מחיקה, Admin) וכתיבת Audit מתבצעים ב-Transaction מקומי + Outbox — אינו נחשב מוצלח בלי Audit שנשמר באופן אמין.
  • Secrets ו-Tokens אינם נשמרים ב-AuditEvent.
  • אין Cascade Delete לשרשרת החלטה — מחיקת Trade אינה מוחקת את ה-Audit שלו.
  • כל אירוע Audit מקושר ל-decision_cycle_id ו-correlation_id אם רלוונטי.
4 · Lineage מקצה לקצה

Lineage מקצה לקצה — מ-Derived דרך Canonical ל-Raw (CH5-004), ומ-Decision דרך Trade ל-Fill ל-Position (CH5-003). כל ישות במסלול מקושרת ל-decision_cycle_id ו-correlation_id.

שכבהתיאור
Data Lineage (CH5-004)מ-DerivedMetric → CanonicalMarketData → RawMarketData. lineage_hash לאימות. input_ids[] מקשרים.
Decision Lineage (CH5-003)מ-Candidate → AnalysisOutput → Decision → Trade → Order → Fill → PositionUpdate. decision_cycle_id ו-correlation_id חוצים.
Version Lineage (CH5-005)כל Analysis מצביע על Policy/SystemSettings/AgentConfig/Prompt/Model/Schema/Profile Version ששימש. supersedes_version לשרשרת גרסאות.
Audit Lineage (CH5-005)כל אירוע Audit מקושר ל-entity + decision_cycle_id + correlation_id. שאילתה אחת משחזרת את כל האירועים למחזור.

שאילתת שחזור: recoverFullLineage(decision_cycle_id) → מחזיר: Snapshots (CH5-003), Data Lineage (CH5-004), ישויות מסלול (Candidate→Fill), גרסאות (Policy/Prompt/Model), וכל אירועי ה-Audit הקשורים.

5 · Retention Matrix
סוג נתוןRetentionסיבההערות
AuditEvent7 שנים (ברירת מחדל)דרישות רגולטוריות ומשפטיותProposed Baseline — עד אישור משפטי/רישוי/עלות; לא ניתן למחוק לפני אישור
Trade / Order / Fill7 שניםדוחות מס ורגולציהProposed Baseline; גם לאחר מחיקה עסקית — Tombstone נשמר עד תום Retention או Legal Hold
RawMarketDataלפי רישוי ספקהגבלת רישויProposed Baseline; licensing_tag ו-retention_policy_tag מ-CH5-004; מחיקת Payload מותרת לפרטיות/רישוי עם Tombstone לא-רגיש
CanonicalMarketData90 יוםשחזור החלטות + עלות אחסוןProposed Baseline; לאחר מכן — Archive
Decision Snapshot (CH5-003)3 שניםשחזור מחזורי החלטהProposed Baseline; Append-Only; לא ניתן למחוק
Policy/Settings/Config Versionללא הגבלהשרשרת ראיות גרסאיתProposed Baseline; Archive לגרסאות ישנות
Message30 יום (כיום)Audit trail תפעוליProposed Baseline; cleanupOldMessages Workflow
AgentLog90 יוםניטור ואיתור באגיםProposed Baseline; Archive לאחר מכן
6 · Tombstone (מחיקה מורשית)

מחיקה מורשית יוצרת Tombstone — רשומת מצבה שמתעדת מה נמחק, מתי, על-ידי מי ומדוע. אין מחיקה פיזית של שרשרת ראיות. כאשר פרטיות או רישוי מחייבים מחיקה פיזית, מותר למחוק את ה-Payload ולשמור Tombstone לא-רגיש עם Hash והפניה. Tombstone אינו נשמר לנצח — הוא נשמר עד תום Retention או Legal Hold.

שדות: tombstone_id, entity_type, entity_id, deleted_by, deleted_at (UTC), reason, data_summary (סיכום ללא נתונים רגישים), payload_hash (Hash של ה-Payload שנמחק), retention_until (UTC), purge_due_at (UTC — מועד מחיקה פיזית מלאה), legal_hold (boolean), deletion_approved_by, deletion_approval_date (UTC), exception_reason (סיבת החרגה למחיקה פיזית של Payload), cascade_ref (אם מחיקת אב לבנים)

אינווריאנטים

  • Tombstone נשמר עד תום Retention או Legal Hold — אינו נשמר לנצח.
  • legal_hold=true חוסם מחיקה/מחיקה פיזית מלאה עד להסרה מפורשת.
  • מחיקת Payload פיזית מותרת רק כאשר פרטיות או רישוי מחייבים — עם אישור מחיקה וסיבת החרגה מתועדים.
  • לאחר מחיקת Payload פיזית — Tombstone הלא-רגיש (עם Hash והפניה) נשמר עד תום Retention או Legal Hold.
  • מחיקת Trade אינה מוחקת את ה-Fill או ה-Audit הקשורים.
  • נתונים רגישים (Secrets, PII) אינם נשמרים ב-data_summary.
  • Cascade Delete אסור לשרשרת החלטה — רק Tombstone מקושר.
7 · Archive / Restore

Archive ושחזור גרסה ללא שינוי timestamps או versions מקוריים. Restore אינו מחזיר רשומה ישנה למקומה ואינו דורס גרסה פעילה — הוא יוצר גרסה חדשה המקושרת לגרסה ששוחזרה, תוך שמירת הזמנים והגרסה המקוריים כמטא-נתונים.

שדות: archive_id, entity_type, entity_id, version, archived_at (UTC), archived_by, original_timestamps_preserved (true), restore_count, storage_tier, restored_as_version_id (הגרסה החדשה שנוצרה מהשחזור), restored_from_version_id (הגרסה המקורית ששוחזרה)

אינווריאנטים

  • Archive אינו משנה timestamps או versions מקוריים.
  • Restore אינו דורס גרסה פעילה — הוא יוצר גרסה חדשה המקושרת למקור.
  • הגרסה החדשה מכילה מטא-נתונים: restored_from_version_id, original timestamps.
  • Restore יוצר רשומת Audit נפרדת (RESTORE).
  • Archive ניתן לבדיקה — Restore מוצלח מוכיח שלמות.
8 · תכולת המימוש

הפרדת גרסאות: PolicyVersion (מדיניות וספי סיכון בלבד), SystemSettingsVersion (הגדרות מערכת ותפעול), AgentConfigVersion (תצורת סוכן) — עם supersedes_version. AgentConfig מכיל current_config_version_id ו-current_profile_version_id בנפרד.

הפיכת Prompt, Model, Schema ו-AgentProfile לישויות גרסאיות נפרדות.

קישור כל AnalysisOutput ו-Decision לגרסאות Policy/Prompt/Model/Schema/Profile/Config ששימשו אותן (input_refs).

יצירת AuditEvent Append-Only עם שרשרת Hash (previous_event_hash, event_hash), sequence_number, idempotency_key, hash_algorithm/hash_version, schema_version — לכל שינוי מרכזי, מחיקה, ייצוא, הרשאה, Restore ופעולת אדמין.

שינוי קריטי (Policy, הרשאה, מחיקה, Admin) וכתיבת Audit מתבצעים ב-Transaction מקומי + Outbox — אינו נחשב מוצלח בלי Audit אמין.

קישור כל AuditEvent ל-entity_type, entity_id, decision_cycle_id (אם רלוונטי) ו-correlation_id.

הפעלת גרסה באמצעות VersionActivationEvent או מצביע פעיל עם CAS ו-Audit — אין עדכון effective_to של גרסה ישנה (Append-Only).

Lineage מקצה לקצה משולב: Data Lineage (CH5-004) + Decision Lineage (CH5-003) + Version Lineage + Audit Lineage.

כלי שחזור משולב: recoverFullLineage(decision_cycle_id) — מחזיר Snapshots, Data, ישויות מסלול, גרסאות ו-Audit.

Tiered Retention לפי סוג מידע, שימוש בהחלטה, רישוי, רגישות ועלות — מספרים מסומנים Proposed Baseline עד אישור משפטי/רישוי/עלות.

Tombstone למחיקה מורשית — עם legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה. מחיקת Payload פיזית מותרת לפרטיות/רישוי עם Tombstone לא-רגיש (Hash + הפניה). Tombstone נשמר עד תום Retention או Legal Hold.

Archive ושחזור גרסה — Restore יוצר גרסה חדשה המקושרת למקור, לא דורס גרסה פעילה. שמירת timestamps ו-versions מקוריים כמטא-נתונים.

Migration של SystemSettings ו-AgentConfig למודל גרסאי — עם Backfill ו-Feature Flag.

סריקת Secrets — אין Secrets/Tokens ב-Prompt, Snapshot, Audit או Tombstone.

Shadow comparison מול המצב הקיים עד למעבר מלא.

9 · תוצרים מחייבים
Versioned stores — PolicyVersion, SystemSettingsVersion, AgentConfigVersion, PromptVersion, ModelVersion, SchemaVersion, AgentProfileVersion.VersionActivationEvent entity — הפעלת גרסה עם CAS ו-Audit.AuditEvent entity — Append-Only עם שרשרת Hash (previous_event_hash, event_hash), sequence_number, idempotency_key, hash_algorithm/hash_version, schema_version.AuditOutbox + Transaction לשינויים קריטיים (Policy, הרשאה, מחיקה, Admin) יחד עם כתיבת Audit.Lineage query — recoverFullLineage(decision_cycle_id) משלב ארבע שכבות.Retention matrix — Proposed Baseline, לפי סוג מידע, רישוי, רגישות ועלות.Tombstone עם legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה; מחיקת Payload פיזית מותרת לפרטיות/רישוי.Archive/Restore — Restore יוצר גרסה חדשה המקושרת למקור.Migration של SystemSettings/AgentConfig למודל גרסאי מופרד.כלי סריקת Secrets לפני שמירה.דוחות השוואת Shadow מול הנתיב הקיים.
10 · מגבלות והגנות

למידה אינה משנה Production אוטומטית — גרסאות נוצרות אך אינן מופעלות ללא אישור.

Secrets ו-Tokens אינם נשמרים ב-AuditEvent, Tombstone או Snapshot.

אין Cascade Delete לשרשרת החלטה — מחיקת Trade אינה מוחקת Fill/Audit.

Retention מספרי הוא Proposed Baseline — אינו ננעל לפני בדיקת רישוי/משפט/עלות.

שינוי Policy פעיל מחייב גרסה, approved_by ו-effective_from; הפעלה דרך VersionActivationEvent או מצביע פעיל עם CAS.

AuditEvent הוא Append-Only עם שרשרת Hash — אין עדכון או מחיקה; שרשרת Hash מוכיחה שלא בוצע שינוי.

שינוי קריטי (Policy, הרשאה, מחיקה, Admin) אינו נחשב מוצלח בלי Audit שנשמר ב-Transaction + Outbox.

ישות גרסאית Append-Only אינה מעדכנת effective_to של גרסה ישנה — הפעלה דרך VersionActivationEvent או מצביע פעיל.

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

Archive אינו משנה timestamps או versions מקוריים.

Tombstone נשמר עד תום Retention או Legal Hold — אינו נשמר לנצח. מחיקת Payload פיזית מותרת לפרטיות/רישוי עם Tombstone לא-רגיש.

legal_hold=true חוסם מחיקה/מחיקה פיזית מלאה עד להסרה מפורשת.

לא ניתן לחבר AuditEvent ל-Decision Snapshot לפני ש-CH5-003 ממומש ו-PUBLISHED.

לא ניתן לחבר Data Lineage לפני ש-CH5-004 ממומש.

11 · שינויי סכמה
ישותשינוישדות
PolicyVersion (Planned)ישות חדשה — מדיניות וספי סיכון בלבדpolicy_version_id, version, policy_snapshot (ספי סיכון ומדיניות), approved_by, effective_from, change_reason, supersedes_version, created_at
SystemSettingsVersion (Planned)ישות חדשה — הגדרות תפעולsettings_version_id, version, settings_snapshot (הגדרות תפעול), approved_by, effective_from, change_reason, supersedes_version, created_at
AgentConfigVersion (Planned)ישות חדשה — תצורת סוכןconfig_version_id, agent_id, version, config_snapshot (תצורה תפעולית), approved_by, effective_from, change_reason, supersedes_version, created_at
VersionActivationEvent (Planned)ישות חדשה — הפעלת גרסהactivation_id, entity_type, version_id, activated_by, activated_at, previous_active_version_id, cas_version, audit_event_id
PromptVersion (Planned)ישות חדשהprompt_version_id, agent_type, version, prompt_text, change_reason, approved_by, effective_from, supersedes_version, created_at
ModelVersion (Planned)ישות חדשהmodel_version_id, agent_type, model_profile, version, change_reason, approved_by, effective_from, supersedes_version, created_at
SchemaVersion (Planned)ישות חדשהschema_version_id, entity_name, version, schema_json, change_reason, migration_ref, effective_from, created_at
AgentProfileVersion (Planned)ישות חדשהprofile_version_id, agent_id, version, profile_snapshot, change_reason, approved_by, effective_from, supersedes_version, created_at
AuditEvent (Planned)ישות חדשה — Append-Only עם שרשרת Hashevent_id, event_type, entity_type, entity_id, actor, action_detail, before_ref, after_ref, decision_cycle_id, correlation_id, timestamp, ip_address, session_id, idempotency_key, sequence_number, previous_event_hash, event_hash, hash_algorithm, hash_version, schema_version
AuditOutbox (Planned)ישות חדשה — Transaction + Outboxoutbox_id, entity_type, entity_id, audit_event_payload, transaction_id, status (PENDING/CONFIRMED/FAILED), created_at, confirmed_at
Tombstone (Planned)ישות חדשה — עם Legal Hold ומחיקה מאושרתtombstone_id, entity_type, entity_id, deleted_by, deleted_at, reason, data_summary, payload_hash, retention_until, purge_due_at, legal_hold, deletion_approved_by, deletion_approval_date, exception_reason, cascade_ref
ArchiveRecord (Planned)ישות חדשה — Restore יוצר גרסה חדשהarchive_id, entity_type, entity_id, version, archived_at, archived_by, original_timestamps_preserved, restore_count, storage_tier, restored_as_version_id, restored_from_version_id
AnalysisOutput (existing)הוספת שדותpolicy_version_id, settings_version_id, config_version_id, prompt_version_id, model_version_id, schema_version_id, profile_version_id (input_refs לגרסאות ששימשו)
SystemSettings (existing)Migration לגרסאיcurrent_policy_version_id (PolicyVersion), current_settings_version_id (SystemSettingsVersion); שמירת תאימות לאחור
AgentConfig (existing)Migration לגרסאיcurrent_config_version_id (AgentConfigVersion), current_profile_version_id (AgentProfileVersion) — נפרדים
12 · מודולים משותפים
קובץתיאור
base44/shared/versionManager.ts (חדש)createVersion(entityType, snapshot, approved_by, change_reason): יוצר גרסה חדשה עם supersedes_version — Append-Only, אין עדכון effective_to של גרסה ישנה. activateVersion(version_id): מפעיל גרסה דרך VersionActivationEvent עם CAS ו-Audit. getActiveVersion(entityType): מחזיר את הגרסה הפעילה מתוך מצביע פעיל. Idempotent.
base44/shared/auditEventLogger.ts (חדש)logAuditEvent(...): יוצר רשומת Audit Append-Only עם idempotency_key, sequence_number, previous_event_hash, event_hash, hash_algorithm/hash_version, schema_version. שרשרת Hash מוכיחה שלא בוצע שינוי. סריקת Secrets לפני שמירה.
base44/shared/auditOutboxWriter.ts (חדש)writeWithAudit(entity_op, audit_payload): מבצע שינוי קריטי (Policy, הרשאה, מחיקה, Admin) וכתיבת Audit יחד ב-Transaction מקומי + Outbox. אינו נחשב מוצלח בלי Audit אמין. Retry מה-Outbox אם כשל.
base44/shared/lineageRecovery.ts (חדש)recoverFullLineage(decision_cycle_id): משלב ארבע שכבות — Snapshots (CH5-003), Data Lineage (CH5-004), ישויות מסלול (Candidate→Fill), גרסאות (Policy/Prompt/Model/Config) ו-Audit. שאילתה אחת.
base44/shared/tombstoneManager.ts (חדש)createTombstone(...): יוצר מצבה עם legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה. purgePayload(tombstone_id): מוחק Payload פיזית לפרטיות/רישוי ושומר Tombstone לא-רגיש עם Hash. cascadeRefCheck(): חוסם Cascade Delete לשרשרת החלטה. checkLegalHold(): בודק legal_hold לפני מחיקה.
base44/shared/archiveManager.ts (חדש)archiveRecord(...): מארכב לאחסון חסכוני. restoreVersion(archive_id): יוצר גרסה חדשה המקושרת למקור (restored_from_version_id), לא דורס גרסה פעילה. שומר timestamps ו-versions מקוריים כמטא-נתונים. יוצר AuditEvent RESTORE.
base44/shared/retentionPolicy.ts (חדש)getRetention(entity_type): מחזיר מדיניות Retention (Proposed Baseline). checkRetentionEligibility(entity_id): בודק אם ניתן למחוק/לארכב לפי רישוי/משפט/עלות ו-Legal Hold. checkPurgeDue(): בודק purge_due_at למחיקה פיזית מלאה.
base44/shared/secretScanner.ts (חדש)scanForSecrets(data): סורק נתונים לפני שמירה ב-Audit/Tombstone/Prompt/Snapshot. חוסם שמירת API Keys/Tokens.
base44/shared/settingsMigration.ts (חדש)migrateSystemSettings(): מעביר SystemSettings למודל גרסאי — PolicyVersion (ספי סיכון) ו-SystemSettingsVersion (הגדרות תפעול). migrateAgentConfig(): מעביר AgentConfig ל-AgentConfigVersion ו-AgentProfileVersion נפרדים. Idempotent Backfill. Feature Flag. Rollback.
13 · תנאי קבלה

הפרדת גרסאות: PolicyVersion (מדיניות וספי סיכון), SystemSettingsVersion (הגדרות תפעול), AgentConfigVersion (תצורת סוכן) — נפרדים; PolicyVersion אינו מכיל את כל SystemSettings.

AgentConfig מכיל current_config_version_id ו-current_profile_version_id בנפרד.

כל AnalysisOutput מקושר לגרסאות Policy/Prompt/Model/Schema/Profile/Config ששימשו (input_refs).

AuditEvent Append-Only עם שרשרת Hash — previous_event_hash, event_hash, sequence_number, idempotency_key, hash_algorithm/hash_version, schema_version; שרשרת Hash מוכיחה שלא בוצע שינוי.

כל AuditEvent מקושר ל-entity_type, entity_id, decision_cycle_id (אם רלוונטי) ו-correlation_id.

שינוי קריטי (Policy, הרשאה, מחיקה, Admin) וכתיבת Audit מתבצעים ב-Transaction מקומי + Outbox — אינו נחשב מוצלח בלי Audit אמין.

recoverFullLineage(decision_cycle_id) משחזר: Snapshots, Data Lineage, ישויות מסלול, גרסאות ו-Audit — ללא חיפוש ידני ב-Log.

Retry או עדכון אינם דורסים היסטוריה — גרסאות ישנות נשמרות.

הפעלת גרסה דרך VersionActivationEvent או מצביע פעיל עם CAS ו-Audit — אין עדכון effective_to של גרסה ישנה.

מחיקה מורשית יוצרת Tombstone — עם legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה.

מחיקת Payload פיזית מותרת לפרטיות/רישוי עם Tombstone לא-רגיש (Hash + הפניה) — אין מחיקה פיזית של שרשרת ראיות ללא אישור.

Tombstone נשמר עד תום Retention או Legal Hold — אינו נשמר לנצח. legal_hold=true חוסם מחיקה.

Cascade Delete אסור לשרשרת החלטה.

Restore אינו דורס גרסה פעילה — יוצר גרסה חדשה המקושרת למקור עם מטא-נתונים.

Archive אינו משנה timestamps או versions מקוריים.

אין Secret ב-Prompt, Snapshot, Audit או Tombstone — סריקה אוטומטית.

Retention matrix — Proposed Baseline; מספרים אינם נעולים לפני בדיקת רישוי/משפט/עלות.

Shadow comparison מול המצב הקיים עומדת בסבילות המאושרת.

Migration של SystemSettings/AgentConfig למודל גרסאי — Idempotent, עם Rollback.

14 · ראיות נדרשות בדוח הביצוע
דוח שחזור מחזור מלא — recoverFullLineage(decision_cycle_id).בדיקות Versioning — Policy/SystemSettings/AgentConfig/Prompt/Model/Schema/Profile גרסאי נפרד.בדיקת הפרדת גרסאות — PolicyVersion אינו מכיל הגדרות תפעול; AgentConfig מכיל config_version_id ו-profile_version_id נפרדים.בדיקת VersionActivationEvent — הפעלה עם CAS ו-Audit; אין עדכון effective_to של גרסה ישנה.בדיקת שרשרת Hash ב-AuditEvent — previous_event_hash, event_hash, sequence_number מוכיחים שלא בוצע שינוי.בדיקת Transaction + Outbox — שינוי קריטי ו-Audit נשמרים יחד; אינו מוצלח בלי Audit.בדיקת מחיקה/Tombstone — legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה; מחיקת Payload פיזית עם Tombstone לא-רגיש.בדיקת Archive/Restore — Restore יוצר גרסה חדשה; timestamps ו-versions מקוריים נשמרים כמטא-נתונים.סריקת Secrets — אין Secrets ב-Audit/Tombstone/Prompt/Snapshot.מטריצת Retention — Proposed Baseline; מספרים עברו בדיקת רישוי/משפט/עלות.בדיקת AuditEvent — כל שינוי מרכזי יוצר רשומה עם שרשרת Hash.בדיקת Cascade Delete — אסור לשרשרת החלטה.בדיקת Legal Hold — legal_hold=true חוסם מחיקה/מחיקה פיזית.דוח Shadow comparison.הוכחת Rollback — Migration ניתנת לביטול.
15 · Definition of Done

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

כל שינוי זוהה לפי קובץ/Entity/Function/Workflow וכולל תוכנית Rollback.

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

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

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

Audit Append-Only עם שרשרת Hash אינו ניתן לעדכון/מחיקה — נבדק; שרשרת Hash מוכיחה שלמות.

Transaction + Outbox לשינויים קריטיים — נבדק; אין שינוי מוצלח בלי Audit.

הפרדת גרסאות — PolicyVersion אינו מכיל הגדרות תפעול; AgentConfig מכיל config_version_id ו-profile_version_id נפרדים — נבדק.

הפעלת גרסה דרך VersionActivationEvent — אין עדכון effective_to של גרסה ישנה — נבדק.

Restore יוצר גרסה חדשה — אינו דורס גרסה פעילה — נבדק.

Tombstone עם legal_hold ו-purge_due_at — נבדק; מחיקת Payload פיזית מותרת לפרטיות/רישוי.

שרשרת ראיות אינה נשברת במחיקה מורשית — נבדק.

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

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

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

base44/entities/PolicyVersion.jsonc — ישות חדשה (מדיניות וספי סיכון בלבד; Append-Only גרסאי).

base44/entities/SystemSettingsVersion.jsonc — ישות חדשה (הגדרות תפעול; Append-Only גרסאי).

base44/entities/AgentConfigVersion.jsonc — ישות חדשה (תצורת סוכן; Append-Only גרסאי).

base44/entities/VersionActivationEvent.jsonc — ישות חדשה (הפעלת גרסה עם CAS ו-Audit).

base44/entities/PromptVersion.jsonc — ישות חדשה (Append-Only גרסאי).

base44/entities/ModelVersion.jsonc — ישות חדשה (Append-Only גרסאי).

base44/entities/SchemaVersion.jsonc — ישות חדשה (Append-Only גרסאי).

base44/entities/AgentProfileVersion.jsonc — ישות חדשה (Append-Only גרסאי).

base44/entities/AuditEvent.jsonc — ישות חדשה (Append-Only עם שרשרת Hash).

base44/entities/AuditOutbox.jsonc — ישות חדשה (Transaction + Outbox לשינויים קריטיים).

base44/entities/Tombstone.jsonc — ישות חדשה (עם legal_hold, purge_due_at, אישור מחיקה, סיבת החרגה).

base44/entities/ArchiveRecord.jsonc — ישות חדשה (Restore יוצר גרסה חדשה).

base44/entities/AnalysisOutput.jsonc — הוספת input_refs (כולל settings_version_id, config_version_id).

base44/entities/SystemSettings.jsonc — Migration לגרסאי (current_policy_version_id + current_settings_version_id).

base44/entities/AgentConfig.jsonc — Migration לגרסאי (current_config_version_id + current_profile_version_id נפרדים).

base44/shared/versionManager.ts (חדש) — ניהול גרסאות + הפעלה דרך VersionActivationEvent.

base44/shared/auditEventLogger.ts (חדש) — Audit Append-Only עם שרשרת Hash + סריקת Secrets.

base44/shared/auditOutboxWriter.ts (חדש) — Transaction + Outbox לשינויים קריטיים.

base44/shared/lineageRecovery.ts (חדש) — שחזור משולב.

base44/shared/tombstoneManager.ts (חדש) — מחיקה מורשית + legal_hold + מחיקת Payload + חסימת Cascade.

base44/shared/archiveManager.ts (חדש) — Archive/Restore (יוצר גרסה חדשה).

base44/shared/retentionPolicy.ts (חדש) — מטריצת Retention + Legal Hold + purge_due_at.

base44/shared/secretScanner.ts (חדש) — סריקת Secrets.

base44/shared/settingsMigration.ts (חדש) — Migration למודל גרסאי מופרד.

src/pages/Ch5Spec005.jsx — עמוד מפרט זה (תיעוד).

17 · סדר ביצוע

1. יצירת ישויות גרסאיות נפרדות: PolicyVersion (מדיניות), SystemSettingsVersion (תפעול), AgentConfigVersion (תצורת סוכן), PromptVersion, ModelVersion, SchemaVersion, AgentProfileVersion.

2. יצירת VersionActivationEvent — הפעלת גרסה עם CAS ו-Audit.

3. יצירת AuditEvent (Append-Only עם שרשרת Hash), AuditOutbox, Tombstone (עם legal_hold/purge_due_at), ArchiveRecord.

4. יצירת base44/shared/versionManager.ts — יצירה/הפעלה (VersionActivationEvent)/שאילת גרסאות.

5. יצירת base44/shared/auditEventLogger.ts — תיעוד Append-Only עם שרשרת Hash + סריקת Secrets.

6. יצירת base44/shared/auditOutboxWriter.ts — Transaction + Outbox לשינויים קריטיים.

7. יצירת base44/shared/lineageRecovery.ts — recoverFullLineage (משלב CH5-003/004).

8. יצירת base44/shared/tombstoneManager.ts — מחיקה מורשית + legal_hold + מחיקת Payload + חסימת Cascade.

9. יצירת base44/shared/archiveManager.ts — Restore יוצר גרסה חדשה; ללא שינוי timestamps.

10. יצירת base44/shared/retentionPolicy.ts — מטריצת Retention (Proposed Baseline) + Legal Hold + purge_due_at.

11. יצירת base44/shared/secretScanner.ts — סריקה לפני שמירה.

12. יצירת base44/shared/settingsMigration.ts — Migration למודל גרסאי מופרד (Policy/Settings/Config/Profile).

13. הוספת input_refs (גרסאות, כולל settings_version_id ו-config_version_id) ל-AnalysisOutput.

14. חיבור AuditEvent ל-decision_cycle_id/correlation_id (לאחר CH5-003 ממומש ו-PUBLISHED).

15. חיבור Data Lineage (לאחר CH5-004 ממומש ו-PUBLISHED).

16. Feature Flag: Shadow comparison מול המצב הקיים.

17. בדיקות קבלה: Versioning, Audit (שרשרת Hash), Transaction+Outbox, Lineage, Tombstone (legal_hold), Archive (Restore גרסה חדשה), Retention, Secrets.

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

תלות

CH5-003 מאושר לביצוע v0.3 (Snapshots ומזהי מחזור — נדרש ממומש ו-PUBLISHED לחיבור Audit ל-Decision Snapshot); CH5-004 v0.4 Approved for Implementation (שכבות נתונים ו-Data Lineage — נדרש ממומש ל-Lineage מקצה לקצה). ניתן להכין Versioned Stores ו-AuditEvent במקביל, אך חיבור ל-Lineage מלא דורש CH5-003/004 ממומשים.

מחוץ לתכולה

שינוי Policy עסקית, הפעלת למידה אוטומטית, מחיקה פיזית של שרשרת ראיות, או שינוי חוזי סוכן.

Approved v0.2 — Ready for Implementationמפרט חמישי מתוך ששת מפרטי CH5. v0.2 אושר לביצוע ב-09.08.2026 — לא נדרש סבב Review נוסף. Version 1.0 ייקבע לאחר המימוש ואישור דוח הביצוע. המפרט האחרון הוא CH5-006 (Least Privilege, התאוששות וקבלה משולבת).