fix: complete public production access hardening for mobile and anonymous users#270
Merged
BigSimmo merged 6 commits intoJul 5, 2026
Conversation
The golden retrieval set was 100% lexical fast-path (embedding_skipped_rate=1.0), so it could not measure whether a re-index changes vector/embedding retrieval quality. - forceEmbedding option on searchChunksWithTelemetry (SearchChunksArgs): bypasses every lexical text-fast-path so retrieval always exercises the embedding/vector stage. Diagnostic/eval-only; folded into the search cache key; never set on production paths. - eval-retrieval.ts: per-case `forceEmbedding` field + a global `--force-embedding` flag. - 10 `vector-*` cases (psychiatric monographs: PTSD, OCD, panic, anorexia, GAD, Tourette, postnatal, bipolar, ADHD, opioid) with forceEmbedding=true. Each is a clinical query that must be answered by vector retrieval of the right monograph — verified live at document_recall@5=1.0, content_recall@5=1.0, all via strategy=hybrid (embedding used). Rationale: forcing embedding is the correct instrument for re-index measurement — you want to measure the vector index directly, not have a lexical shortcut mask a regression. Wording alone can't reliably force the vector path (the fast-path is driven by emergent lexical-match strength), so the flag makes these probes deterministic. Live golden eval: 34/34 pass (24 existing + 10 new), no regression. verify:cheap green (980). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wire forceEmbedding through eval runners and retrieval cache keys, bypass coverage/lexical shortcuts when forced, and add golden-case failure metrics so vector regressions cannot hide behind text-fast-path or cache hits.
|
Updates to Preview Branch (cursor/fix-access-review-issues-5c94) ↗︎
Tasks are run on every commit but only new migration files are pushed.
View logs for this Workflow Run ↗︎. |
BigSimmo
marked this pull request as ready for review
July 5, 2026 14:05
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This was referenced Jul 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses all 20 issues identified in the content-access review and deep testing pass.
Security & access control
document_readrate limiting to all anonymous/authenticated document read routes (list, detail, signed-url, in-document search, image signed-url)withOwnerReadScopeso authenticated users can read both owned and public (owner_id IS NULL) documentsincludeMetafor unauthenticated callerssearch_document_chunksRPC owner scoping via migration (no change to RAG retrieval algorithms)Auth
shouldResolvePublicCatalogAccess)UX
DocumentViewercanViewSourceDocuments)Data / release gates
npm run backfill:gold-labels -- --all-owners --write --confirm)check:document-label-governanceandcheck:production-readinessnow passTests
ui-tools.spec.tsnpm run verify:cheap)Test plan
npm run verify:cheap(1076 tests)npm run check:document-label-governancenpm run check:production-readinessnpm run verify:ui(E2E fixes included; full run recommended before merge)Notes
OPENAI_API_KEYmust remain configured in deployment env (now passing locally)