V2-CH2-002 — Quorum ו-Deadline
כרך 2 · פרק 2 · משימה 002 · צילום סוכנים צפויים, חישוב quorum (≥60%) ו-deadline לניתוח
v1.0 Approved · 11.8.2026
מטרת המסמך
הגדרה פורמלית של מנגנון ה-quorum ב-Candidate: כיצד נבנה expected_agent_ids (צילום קבוע של סוכנים פעילים ורלוונטיים), כיצד מחושב quorum (ceil(60%)), וכיצד analysis_deadline מותח גבול זמן להשלמת הניתוח. סגירת קריטריון C4 מ-V2-CH2-001.
גבול כרך 1: מסמך תיאורי בלבד — אינו מוסיף שדות. expected_agent_ids ו-analysis_deadline כבר הוגדרו ב-V2-CH2-001 (Shadow Active).
מודל Quorum
| שדה | סוג | תיאור |
|---|---|---|
| expected_agent_ids | array<string> | צילום קבוע של מזהי הסוכנים הצפויים בעת יצירת ה-Candidate. כולל רק סוכנים פעילים (status=active) ורלוונטיים לנכס ולשוק (לפי asset_types ו-market ב-AgentConfig). מקפיא את קבוצת הסוכנים למחזור זה. |
| quorum_threshold | number (computed) | quorum = ceil(60% × |expected_agent_ids|). מחושב בעת יצירת ה-Candidate ואינו משתנה. |
| analysis_deadline | date-time | מועד אחרון להשלמת quorum. חייב להיות ≤ expires_at. אם לא הושג עד מועד זה — ה-Candidate עובר ל-EXPIRED. |
| outputs_received | number (derived) | מספר AnalysisOutput תקפים (status=VALID) עם candidate_id זהה. פלט תקף אחד בלבד לכל סוכן (ייחודיות על candidate_id+agent_id). |
| quorum_met | boolean (derived) | outputs_received ≥ quorum_threshold. נכון לרגע הבדיקה — אינו מאוחסן. |
סינון סוכנים ל-expected_agent_ids
| שלב | חומרה | כלל |
|---|---|---|
| 1 | P0 | סינון ראשוני: AgentConfig.status = active בלבד. |
| 2 | P0 | התאמת שוק: AgentConfig.market מכיל את השוק של הנכס (או רב-שוק). |
| 3 | P0 | התאמת סוג נכס: AgentConfig.asset_types מכיל את asset_type של הנכס. |
| 4 | P1 | התאמת אזור: AgentConfig.region תואם את האזור הגיאוגרפי של השוק (IL/US/EU/ASIA). |
| 5 | P0 | צילום: מזהי הסוכנים שעברו סינון נשמרים ב-expected_agent_ids בעת יצירת ה-Candidate. קפוא — אינו משתנה גם אם סוכן הופך ל-inactive במהלך המחזור. |
כללי Deadline
analysis_deadline נקבע בעת יצירת ה-Candidate וחייב להיות ≤ expires_at (TTL = 30 דקות מ-created_date).
אם quorum לא הושג עד analysis_deadline — ה-Candidate עובר ל-EXPIRED. אין קידום אוטומטי מחמת תום זמן.
סוכן שלא הגיש פלט עד deadline — אינו נספר ב-quorum. ניתן להגיש פלט מאוחר (status=STALE) אך הוא אינו משפיע על קידום שכבר התרחש.
קריטריוני קבלה
| מזהה | קריטריון | תוצאה |
|---|---|---|
| Q1 | expected_agent_ids נבנה מסוכנים פעילים (status=active) ורלוונטיים (market + asset_types + region) בלבד. | PASS |
| Q2 | expected_agent_ids קפוא בעת יצירת ה-Candidate — אינו משתנה גם אם סוכן הופך ל-inactive. | PASS |
| Q3 | quorum = ceil(60% × |expected_agent_ids|). מחושב ואינו משתנה. | PASS |
| Q4 | analysis_deadline ≤ expires_at. אם quorum לא הושג עד deadline — EXPIRED (אין קידום אוטומטי). | PASS |
| Q5 | פלט תקף אחד בלבד לכל סוכן (ייחודיות על candidate_id + agent_id). כתיבה חוזרת Idempotent. | PASS |
| Q6 | אין דריסה לאחר השגת Quorum — הפלט הראשון התקף לכל סוכן הוא הסופי. | PASS |
| Q7 | Portfolio Risk Agent נכלל ב-expected_agent_ids כאשר רלוונטי (P0_PROTECTION priority). | PASS |
מפרט · v1.0 Approved · 11.8.2026 · נעול
חזרה ל-V2-CH2-001