Skip to content

feature(client): summary-first SCT events in CLI and web UI#5

Open
CodeLieutenant wants to merge 4 commits into
feat/event-summarization-evalfrom
feat/sct-event-summary-ui
Open

feature(client): summary-first SCT events in CLI and web UI#5
CodeLieutenant wants to merge 4 commits into
feat/event-summarization-evalfrom
feat/sct-event-summary-ui

Conversation

@CodeLieutenant

Copy link
Copy Markdown
Owner

Extracted from scylladb#1048 to keep the summarization backend (worker + eval harness) separate from the user-facing surfaces.

What

  • CLI (argus run events): renders the AI summary field summary-first, with --raw to force the original message. JSON output is additive (summary alongside message).
  • Web UI (SctEvent.svelte): per-event toggle between original and AI summary, an "AI summary" badge, and a per-user default persisted in localStorage (original-first). No summary → renders exactly as before; the copy button still copies the original message.

Stacking

Based on feat/event-summarization-eval (the scylladb#1048 backend branch) so summaries render end-to-end here. Retarget the base to master once scylladb#1048 merges. Both surfaces are additive and inert without the backend — the CLI falls back to message and the toggle only appears when event.summary exists.

Dispatch a bounded, best-effort summarization pass from the event-similarity
worker: sanitize and BGE-embed through a shared EventEmbedder, then hand
ERROR/CRITICAL events to an OpenAI-backed Summarizer whose result is written
to the new sct_event.summary column. Summarization runs on a capped thread
pool with a backlog gate and can never break embedding. Summary prompts are
externalized to versioned files.
Add an offline harness that sweeps prompts and models over real SCT events,
scores each summary with an LLM judge (coverage/faithfulness/conciseness),
tracks token-based cost, compression and latency, and renders an HTML report.
Optionally collapses near-duplicate events through the worker's embedder so
the sweep sees the canonical set production would summarize. Regenerates
uv.lock for the new openai/tiktoken/chromadb dependencies.
Add a Summary field to the SCT event model and render it in `argus run
events` where present, falling back to the original message so output is
never blank. A --raw flag forces the original; JSON output is additive
and carries both message and summary. Marks the CLI plan phase done.
Add an optional AI-summary view to SctEvent: when an event carries a
summary, a labelled toggle switches the body between the original message
and the summary, defaulting to original-first. The chosen default is a
per-user preference in localStorage. Events without a summary render
exactly as before, and copy-to-clipboard always copies the original.
@CodeLieutenant
CodeLieutenant force-pushed the feat/event-summarization-eval branch from 976bee8 to 4f4b18a Compare July 23, 2026 15:45
@CodeLieutenant
CodeLieutenant force-pushed the feat/sct-event-summary-ui branch from ffb94e5 to 3764708 Compare July 23, 2026 15:45
@CodeLieutenant
CodeLieutenant force-pushed the feat/event-summarization-eval branch 5 times, most recently from 6f8150f to 5447b55 Compare July 24, 2026 12:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant