report: Combined verification + architecture analysis (#5441, #5442, #5443)#5578
Open
report: Combined verification + architecture analysis (#5441, #5442, #5443)#5578
Conversation
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
Combined verification report for PRs #5441, #5442, #5443 with architecture analysis of recent shifts in the Omi backend. All 3 PRs are now merged. This PR is a report-only artifact — no code changes.
Section 1: Verification Report
PR #5441 — People/Conversations 500s Fix (yuki)
Unit Tests: 14/14 pass
Live API Verification (dev Firestore, real data):
GET /v1/users/people→ 200 (fresh user + existing data)GET /v1/conversations?limit=50→ 200, 141KB response (previously 57MB with embedded photos)GET /v1/conversations/{id}→ 200 (individual conversation detail)created_at/updated_at) → all return 200Key Changes Verified:
get_conversations_without_photos()— new function that skips photo subcollection loads for list endpointsget_people()— injects doc ID viadata.setdefault('id', person.id)for legacy doc compatibilityget_people_by_ids()— usesdb.get_all(doc_refs)batch fetch instead ofwhere("id","in",...)Codex Audit: 6 gaps identified, 5 resolved with evidence, 1 accepted risk (cross-pod 30s TTL for non-critical paths)
PR #5442 — Multipart 401 Retry (kenji)
Unit Tests: 7/7 pass
Emulator Verification:
Code Review — 3 retry handlers verified in
app/lib/backend/http/shared.dart:makeApiCall()— standard HTTP 401 retrymakeMultipartApiCall()— multipart with full request rebuild (streams can't be reused)makeMultipartApiCallStreaming()— streaming multipart with identical rebuild patternKey Decision: Force sign-out after second consecutive 401 failure — prevents infinite retry loops
PR #5443 — Firestore Read Ops Cache (hiro)
Unit Tests: 19/19 pass
Latency Improvements (measured with local backend):
Cache Architecture Verified:
Key Decision: 30s memory TTL chosen to balance freshness vs Firestore cost (mentor notification fires every 1s per active stream)
Combined Results
LOCAL_DEVELOPMENTflags active)Section 2: Architecture Insights
1. New: Two-tier caching layer (PR #5443, PR #5378)
database/cache.py,database/cache_manager.py2. New: Photo-less list endpoints (PR #5441)
get_conversations_without_photos()skips photo subcollection loads for list endpoints3. New: Multipart 401 resilience (PR #5442)
4. Shifted: Firestore cost model (PR #5378, deployed + verified)
5. Shifted: Database module scope
database/now includes caching infrastructure (cache.py, cache_manager.py), not just Firestore/Redis connectionsdatabase/→utils/→routers/→main.pydatabase/cache_manager.pyand imported by utils/routers6. Stable: Service map unchanged
E2E Evidence
gs://omi-pr-assets/pr-5445/core-flow-e2e/Overall Verdict: PASS ✅
All 3 PRs verified independently and combined. Now merged to main.
🤖 Generated with Claude Code