CedarCopilot wants to merge 2 commits into staging from fix/crm-field-mapping-pushenabled-dead-code
Live on prod, no production signal yet
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.
pushEnabled was stored per CRM field mapping and echoed back through list-fields/link-mapping, but was never read by the actual push path , update-external-crm-workflow.ts loads and pushes every mapped field unfiltered, regardless of this flag.connection-config.ts (write), list-fields.ts + link-mapping.ts (read/echo), and the three MCP tool Zod schemas (config-tool-shared.ts, config-write-tool.ts, applyConfigChangeTool.ts) , including one tool description that flatly misstated behavior ("When true, Cedar will push updates for this field back to the CRM").apps/mail, zero references), it was never part of the formal CrmFieldMappingSchema to begin with, and any stale pushEnabled key already sitting in stored connection metadata is now simply inert.pnpm --filter @zero/server run types , clean, zero errorspushEnabled references in apps/server/src (excluding the unrelated, real externalCrmPushEnabled connection-level switch)staging tip in an isolated worktree to confirm no unrelated driftš¤ Generated with Claude Code
https://claude.ai/code/session_01KuoDhNC8dK169ShDF4Ysny
This PR removes the unused per-field pushEnabled property across CRM mapping configuration, service results, and Mastra tool schemas.
The implementation appears behaviorally sound, but the PR should not merge until the affected test fixtures and assertions are updated to the new mapping contract.
The removed field is not used by the CRM push path, but several existing tests still pass or expect it and therefore conflict directly with the changed implementation.
Files Needing Attention: apps/server/src/services/integrations/connection-config.ts, apps/server/src/services/aop/link-mapping.ts, apps/server/src/services/aop/list-fields.ts
| Filename | Overview |
|---|---|
| apps/server/src/services/integrations/connection-config.ts | Removes pushEnabled from mapping writes, but the existing persistence test still expects it to be stored. |
| apps/server/src/services/aop/link-mapping.ts | Removes the property from link parameters and results, while an existing call assertion retains the old argument. |
| apps/server/src/services/aop/list-fields.ts | Stops exposing the property in mapping summaries, while an existing result assertion still requires it. |
| apps/server/src/mastra/tools/config/config-write-tool.ts | Removes the obsolete field from link-mapping input, output, proposal, and service invocation shapes. |
| apps/server/src/mastra/tools/config/config-tool-shared.ts | Removes the obsolete field from the shared mapping output schema. |
| apps/server/src/mastra/skills/account-config/tools/applyConfigChangeTool.ts | Removes the obsolete field and its inaccurate behavior description from account-config changes. |
### Issue 1
apps/server/src/services/integrations/connection-config.ts:210
**Mapping Tests Keep Old Contract**
Removing `pushEnabled` from the mapping write and serialization paths leave
Libra has not measured any production surfaces for this change yet.