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.
Do not merge until the reproduced unlinking, backfill traversal, and conversion-reporting failures are fixed, along with the two explicit repository requirements.
### Issue 1
apps/mail/modules/conversations/components/CrmAgentBadge.tsx:207-213
For a non-Deal CRM entry with both a record link and account metadata, clicking Account unlink sends no record or deal identifier. The server interprets that as removal of same-provider entries without a deal ID, which includes the displayed Lead or custom-record link. Users can silently lose the record association while trying to unlink only the account.
### Issue 2
apps/server/scripts/backfill-crm-object-records.ts:104-116
When a provider returns more matching records than its capped first result, every pass uses the same `since` value and fetches that same first page. After those records are linked, the next pass enqueues nothing and exits even though later records were never fetched. This leaves older CRM records permanently unbackfilled unless the operator changes the query; advance a provider cursor or an equivalent persisted partition before treating the result as exhausted.
### Issue 3
apps/server/src/services/crm/deal-metrics.ts:404-420
This classifier collapses a resolved AOP with no object binding and a deleted or unresolved AOP into `null`, then treats every transition from a custom-object AOP to either state as a conversion to Deal. Moves from Lead-bound AOPs to Spam, Vendor, another unbound AOP, or a missing AOP therefore inflate the Lead-to-Opportunity conversion rate. Count conversions only when the destination is the resolved Deal/Opportunity AOP.
### Issue 4
apps/server/src/cron/process-external-crm-sync.ts:71-74
This new boundary accepts `connectionMetadata` as `unknown` and immediately asserts that it is a record before reading it. That bypasses the repository directive requiring runtime narrowing or validation for untyped boundary values instead of using a type assertion to silence TypeScript. Validate the metadata or use an inferred typed value; this repository requirement must be satisfied before merging.
### Issue 5
apps/mail/modules/integrations/crm-integration-card.tsx:1108-1128
The new AOP selector manual
Libra has not measured any production surfaces for this change yet.