CedarCopilot wants to merge 1 commit into main from staging
Not deployed
Libra has no production signal for this change yet because it has not deployed. Libra checks hourly for 3 days after each deploy.
This change expands attendee-aware meeting routing, organization-domain calendar processing, user-settings updates, task ownership guards, analytics exports, and usage-report tooling.
Two failures were reproduced. In apps/server/src/services/posthog/posthog.ts, a failed usage query is represented as zero activity when replay coverage remains available, which makes missing analytics data appear to be a real inactive period. In apps/server/scripts/usage-tracker/upload_drive.py, an unescaped user identifier can alter the OAuth-token lookup and select another account's Drive token. These issues should be fixed before merging.
The change is not safe to merge until the analytics failure state and Drive token-query injection are corrected.
Focused runtime checks reproduced both reported behaviors: a PostHog HTTP failure produced trusted zero-valued usage metrics, and crafted user-ID input changed the generated token-selection query.
Files Needing Attention: apps/server/src/services/posthog/posthog.ts needs to preserve usage-query failure state, and apps/server/scripts/usage-tracker/upload_drive.py needs a parameterized credential lookup.
The Drive report uploader builds its account-token SQL query by interpolating the operator-provided user ID. A crafted value can change the query predicate, return another stored Google OAuth token, and cause that token to be used as the Drive bearer credential. Bind the user ID and provider through a parameterized query.
What T-Rex did
General comment
Usage-query failures are reported as trusted zero usage
apps/server/src/services/posthog/posthog.ts:293-296, a non-OK usage-by-day HogQL response is logged and returned as []. apps/server/src/services/analytics/product-usage.ts:195-205 then treats that empty result as no usage; because coverage is fetched independently and passes MIN_REPLAY_COVERAGE_PCT at lines 207-211, the returned report at lines 248-254 emits activeUsageTime: 0, totalActiveMinutes: 0, and activeAllThree: 0 rather than marking the usage signal unavailable. activeMinutesPerUser is null only because there are zero derived usage users.Libra has not measured any production surfaces for this change yet.