CedarCopilot wants to merge 1 commit into staging from fix/hubspot-drop-dealstage-read-default
Live on prod, no production signal yet
Strict CloudWatch fallback found 90 prod failure log lines for [UpdateExternalCrmWorkflow] Driver update failed (Step updateOpportunityField failed: HTTP 400: [{\), but this domain-wide failure family is not tied to this intent.
Libra has verdicts on 0 of 1 tracked behaviors on prod; 1 is still being checked. Libra checks hourly for 3 days after each deploy.
The HubSpot driver hard-codes a default dealstage → status read mapping that getEffectiveCrmToCedarMappings (in services/crm/crm-pull-refresh.ts) always merges into the read set. Because a driver default is only dropped when a user has their OWN mapping for the same Cedar field, a user who deliberately removes their dealstage → status mapping to stop HubSpot's stage from overwriting Cedar's stage on the hourly resync gets the opposite result: the default un-shadows and keeps pulling HubSpot dealstage onto Cedar status.
This blocks the "Cedar owns the deal stage, ignore HubSpot's stage" setup (needed for Corgi, whose competitive line does not track stage in HubSpot). Removing this one default means HubSpot stage is pulled into Cedar only when a user explicitly maps it; reps who want stage synced still have their explicit mapping, so they are unaffected. Impact on the ~15 HubSpot connections currently relying on the default has been reviewed and is acceptable.
Removes only the dealstage → status entry from hubspotDriver.getDefaultCrmToCedarMappings. No other driver (Salesforce/Attio) and no other mapping (dealname → name, amount → dealValue, closedate → close_date) is touched.
🤖 Generated with Claude Code
Removes HubSpot’s default dealstage-to-status pull mapping so Cedar status is updated from HubSpot only when explicitly configured.
The PR appears safe to merge because the behavioral change is narrowly scoped and its compatibility impact is explicitly understood and accepted.
The effective CRM pull mapping now omits HubSpot stage unless a user has explicitly configured a status mapping, while all other HubSpot defaults remain intact.
| Filename | Overview |
|---|---|
| apps/server/src/services/integrations/crm/hubspot.ts | Removes only the implicit HubSpot stage-to-status read mapping, matching the documented intent to make this synchronization opt-in. |
Reviews (1): Last reviewed commit: "fix(crm): drop hardcoded HubSpot dealsta..." | Re-trigger Greptile
Context used:
Libra has not measured any production surfaces for this change yet.