CedarCopilot wants to merge 2 commits into staging from fix/skip-agent-runs-for-warmup-traffic
Live on prod, no production signal yet
Strict CloudWatch fallback found 102 recent prod failure log lines for [UpdateExternalCrmWorkflow] Driver update failed (Step updateOpportunityField failed: HTTP 400: [{\), but the same failure had 103 log lines in the comparable pre-deploy baseline. Libra is not blaming this.
Strict CloudWatch fallback found 3 recent prod failure log lines for mirror.upsertEmailThread failed (write CONNECTION_CLOSED aws-1-us-east-2.pooler.supabase.com:6543), but the same failure had 8 log lines in the comparable pre-deploy baseline. Libra is not blaming this PR.
Libra has verdicts on 0 of 2 tracked behaviors on prod; 2 are still being checked. Libra checks hourly for 3 days after each deploy.
Two related strands of work, both rooted in the coaching agent:
1. Skip agent runs on inbox warm-up traffic (the branch's namesake)
Email-warming vendors seed inboxes with synthetic threads. Those were reaching
handleExecuteSyncThread and triggering real agent executions , burning tokens and
polluting deal data with traffic that has no human on the other end. Detection keys on
the warm-up label, not the sending domain, since the same domains carry genuine mail.
2. The coaching agent , the bulk of the diff
A pre-call brief that applies the rep's playbook rather than delivering generic skill coaching, plus the document plumbing it needs:
scorecard and moment fenced blocks, taught to both the mail
TipTap editor (MomentFenceNode, ScorecardFenceNode) and the server markdown
parser/serializer, so a fence survives the full round-trip and Yjs sync intact.meetings/, log, overview), with the
overview split by section. Xander's, Keenan's, and Kasra's folders are published.coaching-dryrun CLI plus the write-coaching-* scripts.Also includes the Pirros discovery-diff analysis docs and a lint fix (an unused dims
parameter on a judge-workflow schema() whose only call site already passed nothing).
pnpm run autofix:local , oxlint --deny-warnings clean, deps:check clean,
paraglide compiles, 2659 mail tests pass, 7316 server tests pass.split-inbox-templates, TableSelection) , different test each run, both pass in
isolation in ~26-160ms against a 5s limit, and neither touches code this branch
changes.origin/staging with no conflicts before pushing.The PR adds coaching scorecard and moment fences across TipTap, server markdown/Yjs serialization, coaching prompts, per-rep path conventions, and operational dry-run tooling. It also skips event-agent execution for threads detected as inbox warm-up traffic.
The PR appears safe to merge after the non-blocking import-convention inconsistency is cleaned up.
The reviewed runtime paths did not establish a concrete blocking failure, but the new frontend coaching components depart from the repository's required absolute-import convention.
Files Needing Attention: apps/mail/modules/documents/coaching/MomentFenceNode.tsx; apps/mail/modules/documents/coaching/ScorecardFenceNode.tsx
| Filename | Overview |
|---|---|
| apps/mail/modules/documents/coaching/MomentFenceNode.tsx | Adds the moment-fence node view and markdown round trip; its local helper imports violate the frontend absolute-import convention. |
| apps/mail/modules/documents/coaching/ScorecardFenceNode.tsx | Adds scorecard table/radar rendering and markdown round trip, with the same relative-import convention issue. |
| apps/server/src/services/crm/email-events.ts | Adds a constrained body-token heuristic for identifying warm-up threads. |
| apps/server/src/mastra/routeHandlers/event |
Libra has not measured any production surfaces for this change yet.