InvestIQ

InvestIQ

ניהול השקעות אוטומטי 1.0

דאשבורדהתראותתיק השקעותחיפוש וניתוח ניירות ערךעסקאותהודעותשווקיםדוח כספים יומישאלות ותשובותשאל את המערכתדוחות מסהגדרותמדריךדף הנחייה למערכת
מצב: PAPER TRADING
info@investiq.co.il054-4860090
מפרטים ומסמכים/V2-CH2/V2-CH2-003

V2-CH2-003 — קישור ראיות (Evidence Linkage)

כרך 2 · פרק 2 · משימה 003 · AnalysisOutput.candidate_id כמקור אמת, ייחודיות, Idempotency

v1.0 Approved · 11.8.2026

מטרת המסמך

הגדרה פורמלית של קישור הראיות בין AnalysisOutput ל-Candidate: מקור האמת (candidate_id ב-AnalysisOutput), ייחודיות על (candidate_id, agent_id), Idempotency של כתיבה חוזרת, והכלל "אין דריסה לאחר Quorum". סגירת קריטריון C3 מ-V2-CH2-001.

גבול כרך 1: AnalysisOutput.candidate_id כבר נוסף ב-V2-CH2-001 (Shadow). מסמך זה מתעד את החוזה — אינו מוסיף שדות.

כללי קישור ראיות

מזההחומרהכלל
L1P0AnalysisOutput.candidate_id הוא מקור האמת לקישור פלט-ל-Candidate. אין לסמוך על מערך candidate.analysis_outputs[] אלא לקריאה בלבד.
L2P0ייחודיות על (candidate_id, agent_id): פלט תקף אחד בלבד לכל סוכן לכל Candidate. ניסיון ליצור פלט שני לאותו סוכן — No-Op (מחזיר את הקיים).
L3P0כתיבה חוזרת Idempotent: אם סוכן מגיש פלט עם אותו (candidate_id, agent_id) והפלט הקיים status=VALID — הקריאה היא No-Op. אין "האחרון דורס".
L4P1לאחר השגת Quorum — פלטים חדשים מתקבלים אך אינם משנים את ה-Decision שכבר נוצר (או עומד להיווצר). הם נשמרים עם status=STALE.
L5P0candidate.analysis_outputs[] הוא נגזרת לקריאה בלבד — מחושב מ-AnalysisOutput.candidate_id. אין לכתוב אליו ישירות.
L6P1Candidate.decision_id (מתמלא בקידום) מקשר ל-Decision שנוצר. Decision.candidate_id (אופציונלי, V2-CH2-001) מקשר בחזרה. קישור דו-כיווני.

דיאגרמת קישור

Candidate← decision_id →Decision
↕ candidate_id
AnalysisOutput[1..N]
ייחודיות: (candidate_id, agent_id) · Idempotent · אין דריסה לאחר Quorum

קריטריוני קבלה

מזההקריטריוןתוצאה
L1AnalysisOutput.candidate_id קיים כשדה אופציונלי — מקור האמת לקישור.PASS
L2ייחודיות על (candidate_id, agent_id) מאומתת — פלט תקף אחד לכל סוכן.PASS
L3כתיבה חוזרת Idempotent — אין דריסה. קריאה חוזרת עם אותו (candidate_id, agent_id) היא No-Op.PASS
L4לאחר Quorum — פלטים חדשים נשמרים כ-STALE ואינם משנים Decision.PASS
L5candidate.analysis_outputs[] נגזר בלבד — אין כתיבה ישירה.PASS
L6קישור דו-כיווני: Candidate.decision_id ↔ Decision.candidate_id.PASS
L7פלט ללא candidate_id (סוכן שרץ מחוץ צינור Candidate) — תקין ב-shadow, אינו נדחה.PASS
מפרט · v1.0 Approved · 11.8.2026 · נעול
חזרה ל-V2-CH2-002