feat(recall): add corpus browser page - #1243
Conversation
Distilled entries need a corpus-wide inspection surface so extraction coverage and output quality can be assessed beyond one transcript. Expose read-only manager coverage and exact review-state filtering while keeping the first page bounded and management actions out of this slice.
roborev: Combined Review (
|
A fixed first page made older accepted entries unreachable, and exposing non-active extraction generations offered filters whose entries are not served by the browser. Cursor-bound pages keep the browse surface bounded without silently truncating the corpus, while active-only generation choices align the filter with the accepted-entry lifecycle.
roborev: Combined Review (
|
Cursor pagination must not change the established GET search contract. Keep recency keysets for unsearched corpus browsing, but page searched requests over the ranked query path so evidence and metadata matches, relevance ordering, scores, and ignored-query handling stay aligned with direct Recall queries.
roborev: Combined Review (
|
Offset pagination is only safe while ranked results refer to the same served corpus. Bind ranked cursors to the monotonic Recall revision and fail closed when it changes before or during a page request; the browser restarts from page one instead of appending a shifted result set.
roborev: Combined Review (
|
Ranked cursors need a revision covering every entry and evidence mutation, not the narrower embedding freshness counter. Install a dedicated query revision for stable continuation checks, and make the existing 500-result ranking boundary explicit in both the API and browser instead of silently ending pagination.
roborev: Combined Review (
|
A replacement archive can legitimately preserve none of the prior Recall entries. Ranked cursors still need to fail closed in that case, so the copied query revision must advance even when no row-level triggers fire. The HTTP read-only fixture also needs to model the new list endpoint instead of accidentally serving from its embedded SQLite store.
roborev: Combined Review (
|
Recall storage is unavailable through read-only backends, so advertising the browser leads users to a page that can only fail. Wait until backend capability is known, omit the navigation destination when Recall cannot be queried, and keep direct URLs on an explicit unavailable state without issuing unsupported requests.
roborev: Combined Review (
|
|
I need to do some QA on this before merging |
|
I tested #1243 locally end-to-end this evening. test setup: checked out the PR, pointed synthetic archivea first test (testfixture-generated, ~14 sessions) to shake out the pipeline before committing a several GPU hours processing my real session data. Looks good, no functional issues. extract doctor → clean probe on the first try, extraction ran with zero schema failures (Note: llama.cpp enforces the json_schema response format with grammar-constrained decoding, so a local gemma that was never tuned for this still produces valid entries every time; IME gemma/gemini wouldn't always do that naturally). my real session dataSame setup with real data completed in a few hours (I don't have specific timestamps off hand, but it was a few hours) processed 483 sessions with 5 sessions that couldn't complete the extraction. Note that 488 sessions was a small subset of my overall session data, but those were the sessions that were eligible for extraction given the expected constraints of the extraction (tl;dr protecting potentially sensitive data). Recall UIRecall page does what the PR description claims: status card with coverage/backlog, project/type/generation/review-state filters, lexical search flipping between keyset and ranked pagination, and the evidence links jump to the source transcript at the right ordinals. Screenshot: Some minor adjustments to the UI may be worthwhile aesthetic enhancements, but definitely not blocking IMO. |
|
Thank you. I'll work on making the UI less ugly! I'm not sure the 3-column layout is useful either |
roborev: Combined Review (
|

Adds Recall as a top-level page for browsing accepted distilled entries across sessions. The page provides lexical search and project, type, active extraction-generation, and review-state filters while preserving provenance warnings and transcript evidence links. Unsearched browsing uses bounded keyset pages; ranked searches retain existing relevance semantics, reject continuations after any entry or evidence mutation, and explicitly disclose the existing 500-result cap. Read-only backends omit the navigation destination, and direct Recall URLs show an unavailable state without issuing unsupported requests.
A read-only status card reports the configured extraction generation’s coverage, backlog, failures, units, and entry count. The HTTP response omits generation request configuration, and unconfigured servers present an explicit inactive state. Activation, retirement, and the separate Insights relocation remain follow-up slices.