feat(recall): add corpus browser page - #1243
Conversation
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
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 (
|
Distilled recall needs a corpus-wide inspection surface that stays useful across both small and large archives. The browser keeps management out of scope while providing bounded, stable access to accepted entries and extraction coverage. - Paginate corpus browsing and limit generation filters to served entries - Preserve ranked search semantics and reject stale pagination cursors - Track every query-relevant mutation, including empty resync replacement - Hide the browser when the active backend cannot serve Recall - Replace the dense card grid with a padded, expandable fact table
roborev: Combined Review (
|
Ranked cursors require every request to slice the same diversified order; otherwise changing the query limit between pages can duplicate one source and omit another. Build the complete unique-source-first ordering before applying the caller limit so its prefixes remain stable.\n\nThe mobile drawer also needs the same backend capability gate as desktop navigation so supported users can return to Recall after the hamburger routes through Sessions.
roborev: Combined Review (
|
Extraction-manager lifecycle state is not the same as the corpus exposed by Recall. Human review can preserve entries from retired runs, and reconciliation can serve imported entries without a manager status provider. Expose distinct source runs from accepted entries through the existing status response so the browser offers every selectable run while continuing to exclude archived staging generations.
roborev: Combined Review (
|
Extraction can finish while the Recall browser remains mounted, leaving both visible entries and coverage metrics outdated with no way for the user to reconcile them. Use the shared refresh control so one bounded refresh reloads both views and keeps the page current on the standard interval.
roborev: Combined Review (
|

Adds Recall as a top-level corpus browser. Accepted entries appear in a padded, single-row table for quick comparison; each row expands in place to show the full fact, trigger, uncertainty, extraction metadata, provenance state, and transcript evidence. Search and filters cover project, type, active extraction generation, and review state.
Browsing stays bounded with cursor pagination. Ranked searches preserve relevance semantics, reject stale continuations after corpus mutations, and disclose the existing 500-result cap. The page also reports extraction coverage and stays unavailable on read-only backends.