The voice-learning panel produced 81 vetted style lessons — all stuck at review_status='proposed' with 0 ever approved — so the writer (which reads only 'approved') received NONE of them. The system captured learning but never let it flow. Chair decision (2026-06-28): a GRADUATED gate by content risk. - STYLE lessons (categories style/structure/lexicon/tabular) the 2/2 panel kept → created as review_status='approved' → flow to the writer immediately, reversibly (chair vetoes in /training). The deepseek+gemini panel only emits style_method and only on 2/2 consensus, so this is exactly the gate's criterion; substance is already filtered out and skipped, and routes through the strict halacha gate. - SUBSTANCE (halacha/precedent/fact) stays a HARD chair gate — unchanged. style_lesson_panel.py: _review_status_for(category) sets the gate explicitly (approved for _STYLE_CATEGORIES, else proposed); the apply loop passes it to db.add_decision_lesson (which already accepts review_status — no DB change). Spec: INV-LRN1 rewritten as the graduated gate (hard for substance; reversible auto-flow for consensus style — still "under user control" via veto, per NCSC/CEPEJ); §0.6 updated to match. A one-time backfill of the 81 existing panel style lessons to 'approved' runs separately (DB, post-merge). Invariants: INV-LRN1 (amended — graduated), INV-LRN5 (style-only, substance never auto-flows), G10 (human control preserved as reversible veto). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
16 KiB
16 KiB