This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+13 more
Summary
AI summaryUpdates The fix, draft_critique, and Quality Backend across a mixed release.
Full changelog
ReAct mode now confirms before acting — no more false "Done!" (ADR-070 amendment)
What was wrong
In ReAct mode (⚡), asking LIA to create / modify / reply / forward / delete (events, emails, contacts, tasks, files, labels) could answer "C'est fait." while nothing was actually performed. These mutation tools don't execute directly — they prepare a draft that must be confirmed via HITL before the real action runs. The default Pipeline mode wired this through task_orchestrator → hitl_dispatch (draft_critique) → response, but the ReAct loop had no equivalent: the prepared draft was collected into a dead, never-consumed wrapper field and the loop continued, so the model treated "draft prepared" as completion. Only hitl_required tools (e.g. delegate_to_sub_agent) reached an interrupt().
The fix (reuses existing nodes — no new HITL machinery)
react_execute_tools_nodedetects a prepared draft (tool_metadata.requires_confirmation), extracts the executable payload from the draft's registry item, and always setspending_draft_critique/pending_drafts_queue(None/[]when no draft) so a stale value can never mis-route the loop.- New
route_from_react_execute_toolsroutes a pending draft →hitl_dispatch(the shareddraft_critiquenode), otherwise loops back toreact_call_model. The existinghitl_dispatch → initiative → response_nodepath then runs the confirm/edit/cancel HITL and executes the confirmed draft viaexecute_draft_if_confirmed. - Confirmation lives downstream of
react_execute_tools, so resume re-entershitl_dispatchonly — the draft tool is never re-run (no duplicate drafts). - ReAct completion metrics preserved on the draft path (
react_agent_executions_total{status="draft"}). - Removed the now-redundant and previously-broken
_accumulated_draftscollector fromReactToolWrapper(it readdraft_contentfromtool_metadata, where it is empty rather than from the registry payload). - Reminder creation executes directly (no draft) and stays ungated — unchanged in both modes.
Quality
Backend (Ruff, Black, MyPy, 8266 unit tests) and frontend (ESLint, TypeScript) green; i18n parity preserved across 6 languages. Added 4 routing tests + 7 draft-detection tests; removed the obsolete test_collects_draft_metadata wrapper test.
Docs: ADR-070 amendment, ARCHITECTURE_LANGRAPH, REACT_EXECUTION_MODE, ADR_INDEX, knowledge/02_chat. In-app FAQ changelog v1.20.9 added in all 6 languages.
Full changelog: CHANGELOG.md
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About LIA
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]