Compiled from
raw/architecture-docs/app-README.md
Lexery - U11 Verify
Runtime Role
U11 checks whether the drafted answer is complete, grounded, and acceptable to deliver.
Current Code Surfaces
apps/brain/write/verify.ts- current consumer path still tied into write-runtime split
Documented Surface
U11 docs explicitly mention:
- inputs / output
- current logic
- important April 9 truth
- concurrency and durable persistence
- code
- observability
- pipeline
Current Observed Themes
- verifier now respects coverage-gap reality more honestly
- citation requirements can be relaxed when coverage gap is real and explicit
- verify-complete finalization can skip unnecessary ORCH arbitration in some cases
Why It Matters
U11 is Lexery’s last legal trust gate before user delivery.
Best Reading
Observed: U11 is no longer a trivial “answer exists?” check.Inferred: verifier behavior is one of the project’s strongest product-trust differentiators.
Статус у коді: mode-aware scaffold
U11 у поточному Brain — це насамперед deterministic, mode-aware scaffold навколо evaluateVerifyResult у apps/brain/write/verify.ts, а не повноцінний critic loop з веб-перевіркою чи зовнішнім fact-check Lexery - Public Trace. Архітектурні діаграми прямо позначають Verify як етап з durable verify_result, тоді як «повний critic-loop» лишається в планах — варто тримати в голові цей розрив між продуктовою амбіцією й поточною реалізацією.
Ключові файли та тести
apps/brain/write/verifyConsumer.ts— production consumerhandleU11Event: зчитує RunContext /runs, викликаєevaluateVerifyResult, пише результат, вирішує наступний крок черезresolvePostVerifyOutcome, за потреби — inline orchestrator (maybeRunInlineDeterministicOrchestrator).apps/brain/tools/u11/test_verify_units.ts— юніт-перевірки вердиктів: наприклад, наявність цитати в law mode,retry_writeбез цитати,failed_groundingпри хибному law framing у docs_only,ask_userприclarification_pendingзask_user_reason_code: 'AMBIGUOUS_ACT_MATCH', dry-run bypass тощо. Запуск:pnpm brain:test:u11-units.
Durable verify_result у runs
Результат верифікації зберігається в таблиці runs у колонці verify_result (JSONB) згідно з контрактом VerifyResult: насамперед поля verdict та масив reasons (плюс опційні metrics, clarification_question, recommended_next_action). Це durable джерело істини: повторний вхід у U11 може short-circuit, якщо verify_result уже є в БД.
Переходи статусу run
Типовий шлях: після claim атомарно виставляється U11_RUNNING, після успішного збереження вердикту — U11_DONE (разом із узгодженими перехідними статусами на кшталт Deliver у legacy-шляхах — див. apps/brain/docs/architecture/app/u11/README.md). Це важливо для multi-instance (Azure) та ідемпотентності.
Маршрутизація після вердикту
- Якщо
verify_result.verdict === 'complete', наступний крок — U12 (deliverConsumer), без зайвого round-trip через ORCH, коли orchestrator вимкнений або коли inline ORCH не перехопив сценарій — див. Lexery - ORCH and Clarification таresolvePostVerifyOutcome. - Для
retry_write/retryз урахуванням ліміту спроб — повернення до U10 (Lexery - U10 Writer). - Для
retry_retrieval— відкат у сторону expand/retrieval (U6). - При сильному
AMBIGUOUS_ACT_MATCHу поєднанні зclarification_pendingвердиктask_userузгоджується з політикою clarification resume: після відповіді користувача orchestrator може відновлювати пайплайн із U7 (Evidence / Reasoning), а не завжди проганяти повний U4 знову — деталі в Lexery - ORCH and Clarification та документації U6.
Відомі обмеження
- Немає повного critic / web verification loop — лише правила та евристики на основі evidence, reasoning і тексту відповіді.
- Поведінка залежить від mode (law, docs_only, coverage gap): ті самі слова відповіді можуть дати різний
verdict.