CedarCopilot wants to merge 3 commits into staging from feat/inbox-client-composed-feed
Live on prod since Thu, 2 of 4 behaviors working
Since the deploy, 32 prod OTEL spans matching /mail via use-search-query-sync and mail.listThreads ran with 0 error spans. In the 55h before the deploy the same surface ran 16 OTEL spans with 0 error spans. Confidence is medium because the surface was already clean before the.
Since the deploy, 52 prod OTEL spans matching MailList / mail.listThreads ran with 0 error spans across at least 4 identified users. In the 55h before the deploy the same surface ran 32 OTEL spans with 0 error spans. Confidence is medium because the surface was already clean.
Verification reached its budget before a verdict.
Since deployment, telemetry shows 5 successful `crm.updateConversation` calls and 0 explicitly tied failures; `crm.upsertWorkingMemory` had 0 observed calls. However, these shared mutation calls cannot establish that the table-cell date-picker popover mounted open, stayed.
Libra has verdicts on 2 of 4 tracked behaviors on prod; 2 are still being checked. Libra checks hourly for 3 days after each deploy.
The bulk of this branch is a LinkedIn counterpart profile , knowing who you are talking to before you write to them , built up over several phases, plus a set of surrounding fixes.
LinkedIn counterpart profile
Chat
Elsewhere
formatRelativeDate says "3h ago" rather than "Today" for everyone west of UTC.pnpm check:brand in precommit to keep it out. It matches the path data, not just filenames, so recolouring or renaming the glyph does not get it past.pnpm run autofix:local , brand check, oxlint --deny-warnings, deps:check, paraglide compile, Jest, the timezone suite, and server Vitest.
One known flake, not from this branch: token-refresh.test.ts > coalesces N concurrent resolves of one entry into a single grant fails intermittently under full-suite parallel load (it lost its coalescing window and saw 2 grants instead of 1). It passes in isolation, and the file is untouched by this branch , it belongs to staging via 34b7d0807 / b3575de16.
🤖 Generated with Claude Code
This PR adds a cache-backed LinkedIn counterpart profile, expands live chat context and deferred approvals, introduces editable CRM-bound table cells, adds file collections and restore UI, fixes mail search/paging and relative dates, and retires legacy brand assets.
This PR is not safe to merge until the LinkedIn tenant and seat boundaries, private file listing, and conflicting bound-cell write behavior are corrected.
The current implementation can mix LinkedIn cache state across organizations, spend another user’s LinkedIn quota, disclose previews of private peer-owned documents, permanently strand budget-blocked profiles, and partially apply multi-cell CRM edits.
Files Needing Attention: apps/server/src/db/migrations/linkedin_person_profiles.sql, apps/server/src/services/integrations/linkedin/person-profile.ts, apps/server/src/services/integrations/linkedin/person-profile-refresh.ts, apps/mail/modules/linkedin/hooks/use-counterpart-profile.ts, apps/mail/modules/documents/table/use-grid-commands.ts, apps/server/src/trpc/routes/documents.ts
Three secu
Libra has not measured any production surfaces for this change yet.