CedarCopilot wants to merge 0 commits into staging from feat/fellow-connector
Live on prod, 1 of 7 behaviors degraded
Strict CloudWatch fallback found 54 prod failure log lines for sync.provider_read_failed_served_snapshot (Requested entity was not found.) in the last 24h while checking integrationstabcontent, initialsync, providerid, meeting_provider_ids, initial-sync, up from 32 in the.
OTEL fallback found no prod spans matching Fellow meeting integration connection flow since deploy.
OTEL fallback found no prod spans matching fellowDriver.listMeetings / fellow-get-meetings since deploy.
OTEL fallback found no prod spans matching fellowDriver.map since deploy.
OTEL fallback found no prod spans matching phase10c-fellow account-setup script / fellow-meetings-webhook-sync schedule since deploy.
OTEL fallback found no prod spans matching POST /webhooks/meeting-notes/fellow since deploy.
Libra has verdicts on 1 of 7 tracked behaviors on prod; 6 are still being checked. Libra checks hourly for 3 days after each deploy.
Adds Fellow (fellow.app) as a first-class meeting recorder, following the Clari poll-based pattern (a Superglue schedule polls each user's recordings and POSTs CedarMeetingData to /webhooks/meeting-notes/fellow with X-Webhook-Secret + X-User-Id). No native webhook , deliberate (poll gives correctness + ~5-min latency; Fellow's ai_note.generated has its own note-gen lag anyway).
Verified live against a real Fellow workspace: back-fetch returned 43 meetings with transcripts + resolved external attendee emails; the poller dry-run mapped 21 meetings correctly.
meetings/fellow.ts , driver, verifyFellowRequest (shared-secret + X-User-Id, with raw-payload schema-capture logging), mapFellowMeetingToCedar (normalizes; strips @resource.calendar.google.com room pseudo-attendees), getAllFellowMeetings (14-day-chunked back-fetch via fellow-get-meetings).'fellow' in index.ts, types.ts (both unions), capabilities.ts.phase10c-fellow.ts , registers a user into the fellow-meetings-webhook-sync Superglue schedule (idempotent; verifies other users untouched).AVAILABLE_INTEGRATIONS / derived INTEGRATION_INFO: Fellow entry (name/letter/color) → drives IntegrationIcon everywhere + the dynamic Settings→Connections list (name/fields/instructions already come from the driver).MeetingIntegrationCard: Fellow icon case.pagination/filters/include); flat params are silently ignored.include:{transcript,ai_notes} hydrates transcript inline on the list; attendee emails come from GET /note/{note_id}.event_attendees (not on the recording).https://{subdomain}.fellow.app/api/v1.docs/design/fellow-superglue-tools/) to prod + creating the */5 schedule.fathom row to a fellow connection.phase10c-fellow.ts to register him.🤖 Generated with Claude Code
The PR adds Fellow as a first-class meeting-notes provider using a Superglue back-fetch workflow and scheduled polling pipeline.
The PR should not merge until the scheduled poll exhausts Fellow pagination and webhook payload logging is moved behind authentication and stripped of meeting content.
The production-oriented poll can permanently omit recordings after its first 50-result page, and the public webhook path records meeting content before validating the caller; the remaining findings are repository-convention cleanup.
Files Needing Attention: apps/server/src/services/integrations/meetings/fellow.ts; docs/design/fellow-superglue-tools/fellow-meetings-webhook-sync.json
The new verifier logs parsed webhook contents before checking the shared secret. This exposes short transcript, note, title, and attendee values from legitimate requests to operational logs and permits unauthenticated callers to inject arbitrary logged payloads. How this was verified: the public route reaches the payload log at fellow.ts:117-127 before the secret check at lines 132-136.
| Filename | Overview |
|---|---|
| apps/server/src/services/in |
Libra has not measured any production surfaces for this change yet.