Files
OpenOPC/tests
LZH-YS1998 d502d66c60 fix: enforce task-wait checkpoint lifecycle and stop UI probe from rescanning tasks table
A company-mode review left a pending task_user_input checkpoint behind: the
runtime carried the paused work item forward via approval-card grants and a
fresh review attempt without ever replying through the engine checkpoint. The
orphan row then captured the user's next chat message and resumed through the
deprecated multi-agent path with an empty task list, returning an empty reply.

Invariants added:
- write side: when a task settles (done/failed/cancelled) its pending
  task_user_input/task_peer_wait checkpoints are superseded
- read side: checkpoint matching lazily resolves rows whose task settled or
  whose linked work item reached a terminal phase (heals existing dirty DBs)
- resume: the primary task is always part of the resumed set; the
  MULTI_AGENT/COMPANY_MODE value-alias no longer routes company checkpoints
  into _execute_multi_agent (which silently returned "" on empty task lists)

Perf: get_latest_pending_checkpoint_for_session is called per task on every
UI sync tick, and its parent-session resolution loaded and JSON-parsed the
entire tasks table each time (24MB with inline artifact blobs) — a full core
pegged at 100% and the event loop starved so replies never surfaced. Now a
no-live-checkpoints fast path returns immediately, and the resolution uses a
targeted session_id query backed by a new tasks(session_id) index.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 19:59:26 +08:00
..
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00
2026-07-01 17:56:31 +08:00