CedarCopilot wants to merge 4 commits into staging from fix/concentrate-bug-bundle-sept16
Live on prod since Thu, 4 of 12 surfaces working
Verification cited only 3 matching post-deploy events, below the 20-event floor for calling a change verified. Nothing is failing; there is not yet enough traffic to confirm it.
Strict CloudWatch fallback saw 638 success or completion log lines and 30,570 failure-shaped log lines matching googlemailmanager, sendmessage, clientexecutionresponseprocessors, google, googlemailmanager.sendmessage; this needs a tied operation before Libra moves the card.
Libra measured 4 of 12 production surfaces on prod. 1 surface had under 20 requests, so Libra has not judged it; 6 surfaces had no requests at all. Libra checks hourly for 3 days after each deploy.
Two independently root-caused bug fixes:
Raw internal JSON leaking into the chat transcript (apps/mail/modules/cedar-os/src/store/agentConnection/responseProcessors/clientExecutionResponseProcessors.ts)
Cause: TaskObjectSchema.taskChannel was z.string(), rejecting the legitimate null the backend sends for a task with no linked draft/output (the common case for a plain follow-up task). The failed Zod validation fell through to a fallback that renders the raw event object as a JSON code block in the visible chat.
Fix: one-line change to z.string().nullable(). (Verified taskChannel is a legacy, write-only field never branched on downstream, so this doesn't need any further hardening.)
HTML entities rendered literally in email subject lines (apps/server/src/lib/driver/google.ts)
Cause: the drafting LLM sometimes fills a subject with HTML-escaped angle brackets (literal </>); nothing decoded it before calling Gmail's API on the write path, even though the read path already does (he.decode when reading a subject back).
Fix: he.decode(...) immediately before both setSubject() call sites (createDraft and send/parseOutgoing). No-op when the subject was never escaped.
checkThreadForNewerActivity) to also run for non-email-triggered drafting dispatches , was originally bundled here to address a customer-reported duplicate/stale-draft bug. Deeper investigation (checking DraftAnalytics/Axiom telemetry and task-execution history for the actual reported case) found no evidence this code path was the mechanism behind that bug, so it's been pulled pending further investigation rather than shipped as an unproven fix. It is no longer part of this PR./api/conversation-events SSE endpoint , grew large enough (a brand-new HTTP endpoint, not just a hook change) that it's been split out into its own PR: #2803.apps/server/src/lib/driver/google.ts is a pre-existing large file (5400+ lines); this PR's addition to it is small and doesn't attempt any decomposition, which is out of scope here.pnpm --filter @zero/server run types , cleanpnpm --filter @zero/mail run types , cleanpnpm deps:check , no dependency violationspnpm --filter @zero/server exec vitest run src/mastra/tools/event-execution/__tests__/drafter-executor-prompt.test.ts , 28/28 passingš¤ Generated with Claude Code
| Surface | Requests | Errors | p95 | Users | Verdict |
|---|---|---|---|---|---|
| /a8n/notify/google | 720 ā 1146 | 0 ā 0 (0%) | 221 ms ā 204 ms | 0 | Working 1,146 requests since the deploy with 0 errors (0 errors in the 720-request baseline before it). p95 204 ms, was 221 ms. |
| POST /a8n/notify/google | 72 ā 382 | 0 ā 0 (0%) | 398 ms ā 205 ms | 0 | Working 382 requests since the deploy with 0 errors (0 errors in the 72-request baseline before it). p95 205 ms, was 398 ms. |
| /a8n/notify/google-calendar | 83 ā 132 | 0 ā 0 (0%) | 1312 ms ā 133 ms | 0 | Working 132 requests since the deploy with 0 errors (0 errors in the 83-request baseline before it). p95 133 ms, was 1312 ms. |
| POST /a8n/notify/google-calendar | 5 ā 44 | 0 ā 0 (0%) | 2392 ms ā 133 ms | 0 | Working 44 requests since the deploy with 0 errors (0 errors in the 5-request baseline before it). p95 133 ms, was 2392 ms. |
| gmail.users.threads.get | 484 ā 617 | 9 ā 12 (2%) | 436 ms ā 444 ms | 84 | Pre-existing 12 of 617 requests failed (1.9%) since the deploy, matching the 1.9% baseline error rate before it. Not attributable to this change. |
| calendar.events.instances | 0 ā 6 | 0 ā 6 (100%) | not measured ā 157 ms | 0 | Insufficient traffic 6 requests, under the 20 Libra needs |
| mail.getMessageAttachments | 0 ā 0 | 0 ā 0 (0%) | not measured | 0 | No traffic No requests recorded since this deploy. |
| GoogleMailManager.createDraft | 0 ā 0 | 0 ā 0 (0%) | not measured | 0 | No traffic No requests recorded since this deploy. |
| GoogleMailManager.sendMessage | 0 ā 0 | 0 ā 0 (0%) | not measured | 0 | No traffic No requests recorded since this deploy. |
| google_subscription_subscribe | 0 ā 0 | 0 ā 0 (0%) | not measured | 0 | No traffic No requests recorded since this deploy. |
| /api/trpc/recall.getCallSessionByGoogleEventId | 0 ā 0 | 0 ā 0 (0%) | not measured | 0 | No traffic No requests recorded since this deploy. |
| /api/auth/callback/google | 1 ā 0 | 0 ā 0 (0%) | 165 ms ā not measured | 0 | No traffic No requests recorded since this deploy. |