From f707f628bfdfb534deb1f9778ac38b83fc790906 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Thu, 22 Oct 2026 20:57:06 -0700 Subject: [PATCH] Keep audit visibility lookups independent of tool history --- internal/store/migrations/103-index-discard-attention.sql | 2 ++ internal/store/store.go | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 internal/store/migrations/103-index-discard-attention.sql diff --git a/internal/store/migrations/103-index-discard-attention.sql b/internal/store/migrations/103-index-discard-attention.sql new file mode 100644 index 0000000..e9e6d25 --- /dev/null +++ b/internal/store/migrations/103-index-discard-attention.sql @@ -0,0 +1,2 @@ +DROP INDEX events_attention; +CREATE INDEX events_attention ON events(task_id) WHERE kind IN ('inbox.created', 'task.ready', 'session.error', 'session.rate_limited', 'task.discard_suggested'); diff --git a/internal/store/store.go b/internal/store/store.go index 004a0db..3acabb6 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -1688,7 +1688,8 @@ const taskColumns = `id, project_id, title, merge_title, branch, worktree_path, // Keep the child lookup separate from the task itself so SQLite can use tasks_parent. const backgroundExpr = `(audit != '' OR EXISTS (SELECT 1 FROM tasks r WHERE r.id = tasks.parent_task_id AND tasks.workflow_stage != '' AND r.audit != '')) AND NOT EXISTS (SELECT 1 FROM events WHERE events.task_id IN (SELECT tasks.id UNION ALL SELECT c.id FROM tasks c WHERE c.parent_task_id = tasks.id AND c.parent_task_id != '' AND tasks.workflow_name != '') - AND (kind IN ('inbox.created', 'task.ready', 'session.error', 'session.rate_limited') + AND kind IN ('inbox.created', 'task.ready', 'session.error', 'session.rate_limited', 'task.discard_suggested') + AND (kind != 'task.discard_suggested' OR (kind = 'task.discard_suggested' AND NOT EXISTS (SELECT 1 FROM tasks r JOIN workflow_definitions d ON d.id = r.workflow_definition_id WHERE r.id IN (tasks.id, tasks.parent_task_id) AND d.auto_discard))))` const sessionColumns = `id, coalesce(task_id, ''), owner, vendor, model, vendor_session_id, state, role, member, created_by, created_at, forked_from, forked_at, subagents`