feat(ia): IA גל-2 — איחוד-משטחים: ערוץ-למידה אחד · /operations⊇/diagnostics · MET-2/3 (#131, X17) #208

Merged
chaim merged 1 commits from worktree-ia-wave2-consolidation into main 2026-06-11 21:05:40 +00:00
Owner

גל-2 מבקלוג #127 — איחוד-משטחים לפי משטח-היעד של X17. מקיים INV-IA1/IA3/IA4 + דלתות-הספ. שומר G10/INV-LRN1לא הוסר שום שער-אנושי, רק שער/דגל כפול.

אושר לביצוע ע"י חיים (2026-06-11, /goal "בצע את כל הגלים"), מרים את עצירת-3א של #127.

א) תיבת-אישור אחת (INV-IA1)

כרטיסי "אישור הלכות" + "פסיקה חסרה" ב-/operations הפכו למצביעים ל-/approvals ("לתיבת-האישורים ←"). /operations מנטר, /approvals מחליט — בעלים-יחיד למוני-הגייטים.

ב) ערוץ-למידה אחד (INV-IA3) — הסרת applied_to_skill

הדגל האינפורמטיבי-בלבד (LRN-1) שבלבל את היו"ר ב"שני שערים" — הוסר end-to-end:

  • UI: כפתור "סמן כ'אומץ'" + badge "אומץ" ב-lessons-tab; badge ב-curator-portrait (→ "מאושר" לפי review_status).
  • API: LessonPatch, _lesson_to_json, ה-patch, curator/stats.recent_findings (→ review_status).
  • db.py: list/add/update_decision_lesson לא בוחרים/כותבים applied_to_skill; הפרמטר הוסר. העמודה+אינדקס נשמרים (back-compat, ללא migration), מסומנים DEPRECATED.
  • types: DecisionLesson / LessonPatch / CuratorFinding.

review_status='approved' = הסטטוס היחיד "זורם-לכותב" (INV-LRN1, #126).

ג) MET-2/3 lost-update (INV-IA3)

_append_methodology_override רץ עכשיו בטרנזקציה אחת עם SELECT … FOR UPDATE — אין read-modify-write מתפצל מול עורך-המתודולוגיה או promote מקביל. /methodology = העורך-הקנוני; promote מבטל את ה-cache שלו (גל-1 MET-1).

ד) /operations⊇/diagnostics (INV-IA4)

גוף /diagnostics חולץ ל-<SystemHealthSection/> ומורנדר ב-/operations תחת "בריאות-מערכת". /diagnostics → redirect("/operations"); הוסר מהניווט. משטח-ניטור יחיד.

ה) דלתות-ספ (≥3 מקורות ב-X17)

  • X6: INV-UI7 (aggregate=SSoT, mutation מבטל queryKey, אין מונה-מתחרה) + INV-UI8 (render-or-remove, חלקיות מוצגת).
  • 07-learning §0.4: שער-אחד + טרנזקציה-אחת + applied_to_skill מוסר.
  • 00-constitution §G2: תאום-המתודולוגיה כהפרה-ידועה-ממותנת (append אטומי + invalidation).
  • X17 דלתות-ספ סומנו קודדו.

Invariants

מקיים INV-IA1/IA3/IA4 + INV-UI7/UI8 (חדשים), G2 (מקור-אמת יחיד), G10/INV-LRN1 (שערים-אנושיים נשמרים).

בדיקות

  • py_compile web/app.py + db.py
  • npx tsc --noEmit
  • npm run lint ✓ (לבד מ-learning-panel.tsx:109 — קיים-מראש ב-main)
  • next build נכשל ב-worktree רק בגלל symlink node_modules (Turbopack) — Docker/CI תקין.
  • api:types יתרענן בדפלוי (curator/lessons אינם response-modeled; הטיפוסים יד-כתובים עודכנו).

🤖 Generated with Claude Code

גל-2 מבקלוג #127 — איחוד-משטחים לפי משטח-היעד של [X17](docs/spec/X17-information-architecture.md). מקיים **INV-IA1/IA3/IA4** + דלתות-הספ. שומר **G10/INV-LRN1** — *לא הוסר שום שער-אנושי*, רק שער/דגל **כפול**. > אושר לביצוע ע"י חיים (2026-06-11, `/goal` "בצע את כל הגלים"), מרים את עצירת-3א של #127. ## א) תיבת-אישור אחת (INV-IA1) כרטיסי "אישור הלכות" + "פסיקה חסרה" ב-/operations הפכו ל**מצביעים** ל-/approvals ("לתיבת-האישורים ←"). /operations מנטר, /approvals מחליט — בעלים-יחיד למוני-הגייטים. ## ב) ערוץ-למידה אחד (INV-IA3) — הסרת `applied_to_skill` הדגל האינפורמטיבי-בלבד (LRN-1) שבלבל את היו"ר ב"שני שערים" — הוסר end-to-end: - **UI:** כפתור "סמן כ'אומץ'" + badge "אומץ" ב-`lessons-tab`; badge ב-`curator-portrait` (→ "מאושר" לפי `review_status`). - **API:** `LessonPatch`, `_lesson_to_json`, ה-patch, `curator/stats.recent_findings` (→ `review_status`). - **db.py:** `list`/`add`/`update_decision_lesson` לא בוחרים/כותבים `applied_to_skill`; הפרמטר הוסר. העמודה+אינדקס **נשמרים** (back-compat, ללא migration), מסומנים `DEPRECATED`. - **types:** `DecisionLesson` / `LessonPatch` / `CuratorFinding`. `review_status='approved'` = הסטטוס **היחיד** "זורם-לכותב" (INV-LRN1, #126). ## ג) MET-2/3 lost-update (INV-IA3) `_append_methodology_override` רץ עכשיו ב**טרנזקציה אחת** עם `SELECT … FOR UPDATE` — אין read-modify-write מתפצל מול עורך-המתודולוגיה או promote מקביל. /methodology = העורך-הקנוני; promote מבטל את ה-cache שלו (גל-1 MET-1). ## ד) /operations⊇/diagnostics (INV-IA4) גוף /diagnostics חולץ ל-`<SystemHealthSection/>` ומורנדר ב-/operations תחת "בריאות-מערכת". /diagnostics → `redirect("/operations")`; הוסר מהניווט. **משטח-ניטור יחיד.** ## ה) דלתות-ספ (≥3 מקורות ב-X17) - **X6:** `INV-UI7` (aggregate=SSoT, mutation מבטל queryKey, אין מונה-מתחרה) + `INV-UI8` (render-or-remove, חלקיות מוצגת). - **07-learning §0.4:** שער-אחד + טרנזקציה-אחת + `applied_to_skill` מוסר. - **00-constitution §G2:** תאום-המתודולוגיה כהפרה-ידועה-**ממותנת** (append אטומי + invalidation). - **X17 דלתות-ספ** סומנו ✅ קודדו. ## Invariants מקיים **INV-IA1/IA3/IA4** + **INV-UI7/UI8** (חדשים), **G2** (מקור-אמת יחיד), **G10/INV-LRN1** (שערים-אנושיים נשמרים). ## בדיקות - `py_compile web/app.py` + `db.py` ✓ - `npx tsc --noEmit` ✓ - `npm run lint` ✓ (לבד מ-`learning-panel.tsx:109` — קיים-מראש ב-main) - `next build` נכשל ב-worktree רק בגלל symlink `node_modules` (Turbopack) — Docker/CI תקין. - `api:types` יתרענן בדפלוי (curator/lessons אינם response-modeled; הטיפוסים יד-כתובים עודכנו). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-11 21:05:27 +00:00
גל-2 מבקלוג #127 — איחוד-משטחים לפי משטח-היעד של X17. מקיים INV-IA1/IA3/IA4 +
דלתות-הספ (X6 INV-UI7/8, 07-learning §0.4, 00-constitution G2). שומר G10/INV-LRN1
(לא הוסר שום שער-אנושי — רק שער/דגל כפול).

א) תיבת-אישור אחת (INV-IA1): כרטיסי "אישור הלכות"+"פסיקה חסרה" ב-/operations
   מצביעים ל-/approvals (לתיבת-האישורים ←) — /operations מנטר, /approvals מחליט.

ב) ערוץ-למידה אחד (INV-IA3): הוסר applied_to_skill end-to-end —
   - UI: כפתור "סמן כ'אומץ'" + badge "אומץ" ב-lessons-tab; badge ב-curator-portrait.
   - API: LessonPatch, _lesson_to_json, patch call, curator recent_findings (→review_status).
   - db.py: list/add/update_decision_lesson לא בוחרים/כותבים applied_to_skill;
     הפרמטר הוסר. העמודה+אינדקס נשמרים (back-compat, ללא migration), מסומנים DEPRECATED.
   - types: DecisionLesson/LessonPatch/CuratorFinding.
   review_status='approved' = הסטטוס היחיד "זורם-לכותב" (INV-LRN1, #126).

ג) MET-2/3 lost-update (INV-IA3): _append_methodology_override רץ עכשיו בטרנזקציה
   אחת עם SELECT ... FOR UPDATE — אין read-modify-write מתפצל מול עורך-המתודולוגיה
   או promote מקביל. /methodology = העורך-הקנוני; promote מבטל את ה-cache (גל-1 MET-1).

ד) /operations⊇/diagnostics (INV-IA4): גוף /diagnostics חולץ ל-<SystemHealthSection/>
   ומורנדר ב-/operations תחת "בריאות-מערכת". /diagnostics → redirect ל-/operations.
   /diagnostics הוסר מהניווט. משטח-ניטור יחיד.

ה) דלתות-ספ (≥3 מקורות ב-X17, אושר ע"י חיים /goal):
   - X6: INV-UI7 (aggregate=SSoT, mutation מבטל queryKey) + INV-UI8 (render-or-remove, חלקיות).
   - 07-learning §0.4: שער-אחד + טרנזקציה-אחת + applied_to_skill מוסר.
   - 00-constitution G2: תאום-המתודולוגיה כהפרה-ידועה-ממותנת.
   - X17 דלתות-ספ סומנו  קודדו.

בדיקות: py_compile app.py + db.py ✓ · tsc --noEmit ✓ · eslint ✓ (לבד מ-learning-panel:109
קיים-מראש). next build נכשל ב-worktree רק בגלל symlink (Turbopack) — Docker/CI תקין.
api:types יתרענן בדפלוי (curator/lessons אינם response-modeled; הטיפוסים יד-כתובים עודכנו).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 3757910079 into main 2026-06-11 21:05:40 +00:00
chaim deleted branch worktree-ia-wave2-consolidation 2026-06-11 21:05:40 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#208