Libra CodeHub

CedarCopilot/cedar-mail

Branch: staging

[DEPLOY]

merged#2638CedarCopilot

CedarCopilot wants to merge 2 commits into main from staging

Live on prod, no production signal yetTimeline and evidence
  1. Opened
    Aug 31, 2026, 10:36 AM
  2. Live on prod
    Aug 31, 2026, 10:49 AM
  3. Observed 2 hours
    Aug 31, 2026, 10:49 AM
  4. Unobserved

    Live on prod, no production signal yet

    Aug 31, 2026, 10:49 AM
  5. Pipelines steady after this deploy
    Aug 31, 2026, 10:49 AM
  6. Merged
    Aug 31, 2026, 10:49 AM
  7. Aug 31, 2026, 11:25 AM

Behaviors Libra is checking

Authentication and access behavior from lib/auth-providers.ts, lib/auth.ts, drafting/draft-session-store.ts keeps working in prod.Not checked
prod
Calendar sync behavior from calendar/page.tsx, hooks/use-calendar-favicon.ts, calendar/day-1.svg keeps working in prod.Not checked
prod
Chat workflow behavior from chat/ChatDropZone.tsx keeps working in prod.Not checked
prod
CRM integration behavior from crm/conversations.ts, routes/crm.ts keeps working in prod.Not checked
prod
Data model behavior from migrations/user_tasks_sort_order.sql keeps working in prod.Not checked
prod
Email workflow behavior from login/login-client.tsx, two-factor/two-factor-client.tsx, (routes)/layout.tsx keeps working in prod.Not checked
prod

Failures attributed to this change

error @ GET /<redacted-token>/<id>.jsonIntroducedmedium confidence

unknown

prod, first seen Aug 31, 2026, 11:00 AM
error @ GET /<redacted-token>/<id>.jsonIntroducedmedium confidence

unknown

prod, first seen Aug 31, 2026, 11:36 AM
error @ GET /<redacted-token>/130203292.jsonIntroducedmedium confidence

unknown

prod, first seen Aug 31, 2026, 2:27 PM
error @ GET /<redacted-token>/<id>.jsonIntroducedmedium confidence

unknown

prod, first seen Aug 31, 2026, 3:59 PM
error @ GET /<redacted-token>/154477782.jsonIntroducedmedium confidence

unknown

prod, first seen Aug 31, 2026, 4:50 PM
error @ GET /<redacted-token>/155721179.jsonIntroducedmedium confidence

unknown

prod, first seen Aug 31, 2026, 4:50 PM
error @ GET /<redacted-token>/<id>.jsonIntroducedmedium confidence

unknown

prod, first seen Aug 31, 2026, 4:50 PM
Customer impact is not proven from the retained evidence. 0 hits · no retained affected-user count · no retained trace sample.Introducedmedium confidence

single_user

prod, first seen Aug 31, 2026, 10:50 PM
Affected user/workspace integration work can fail until the connection is reauthorized. 0 hits · 2 users · no retained trace sample.Introducedmedium confidence

customer_facing

prod, first seen Sep 7, 2026, 10:50 AM

Libra has verdicts on 0 of 8 tracked behaviors on prod; 8 are still being checked. Libra attributed 9 failures to this change at medium confidence and is still confirming them. Libra checks hourly for 3 days after each deploy.

Greptile Summary

This change adds persisted draft-session fingerprints to decide whether Cedar should update an existing provider draft or create a separate one. Executed drafting checks reproduced two cases where a user’s content is lost: editing the draft with the same normalized word count, and clearing the draft body. In both cases, the rewrite path retains the existing provider draft ID and replaces the user’s content.

Confidence Score: 3/5

Not safe to merge until the draft comparison preserves same-length edits and intentionally emptied drafts.

The executed integration reproduction exercised the provider rewrite path and directly observed both user-edit cases updating the existing draft in place.

Files Needing Attention: apps/server/src/services/drafting/draft-session-store.ts, especially the fallback comparison at lines 94 and 98.

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex produced a finding-comment-proof for a posted P1 finding and delivered an executable reproduction of the same-word-count and emptied-draft implicit rewrite.
  • T-Rex captured the baseline changed-word-count edit protection test output and the same-word-count and empty-draft reproduction output to validate the behavior.
  • T-Rex produced a second finding-comment-proof for another P1 finding, including a reproduction of the same-word-count and empty-draft overwrite and a focused drafting regression suite output.
  • T-Rex produced additional proofs for two P1 findings with no artifacts attached.
  • A general-contract-validation-proof confirms the validation path for the equal-word-count implicit rewrite, including authored source and test logs, with no external API or database requirements.

View all artifacts

T-Rex Ran code and verified through T-Rex

Comments Outside Diff (2)

  1. General comment

    P1 Same-word-count edits are silently overwritten by implicit draft rewrite

    • Bug
      • When a rep changes Cedar's provider draft without changing its normalized whitespace-delimited word count, matchesRecordedAgentBody returns true despite different SHA-256 hashes. createDraftInProvider consequently retains the draft as an implicit rewrite candidate and invokes createDraft with that existing draftId, replacing the rep's body.
    • Cause
      • matchesRecordedAgentBody uses current.wordCount === record.agentWordCount as a positive match after a hash mismatch at apps/server/src/services/drafting/draft-session-store.ts:98. Word count is not an identity comparison and cannot distinguish semantic substitutions with the same number of tokens.
    • Fix
      • Do not accept a hash mismatch solely because word counts match. Use a comparison that is robust to known provider serialization transformations but remains content-sensitive, and conservatively classify unresolved mismatches as edited so implicit rewrite creates a separate draft.

    <a href="https://www.greptile.

Show production surfaces and changed-file mapping

Production surfaces

Libra has not measured any production surfaces for this change yet.

Changed files → surfaces

  • .github/workflows/aws-builds.ymlno production surface mapped
  • .github/workflows/ci.ymlno production surface mapped
  • apps/mail/app/(auth)/login/login-client.tsxno production surface mapped
  • apps/mail/app/(auth)/two-factor/two-factor-client.tsxno production surface mapped
  • apps/mail/app/(routes)/calendar/page.tsxno production surface mapped
  • apps/mail/app/(routes)/layout.tsxno production surface mapped
  • apps/mail/app/(routes)/settings/general/page.tsxno production surface mapped
  • apps/mail/app/(routes)/settings/security/page.tsxno production surface mapped
  • apps/mail/app/root.tsxno production surface mapped
  • apps/mail/atoms/chatAtoms.tsno production surface mapped
  • apps/mail/components/icons/icons.tsxno production surface mapped
  • apps/mail/components/ui/citations/TranscriptViewerModal.tsxno production surface mapped
  • apps/mail/components/ui/citations/quote-match.tsno production surface mapped
  • apps/mail/components/ui/citations/useMarkHighlight.tsno production surface mapped
  • apps/mail/components/ui/option-picker.tsxno production surface mapped
  • apps/mail/config/shortcuts.tsno production surface mapped
  • apps/mail/docs/chat-lifecycle.mdno production surface mapped
  • apps/mail/docs/wiki/task-board-data-flow.mdno production surface mapped
  • apps/mail/lib/hotkeys/global-hotkeys.tsxno production surface mapped
  • apps/mail/lib/site-config.tsno production surface mapped
  • apps/mail/modules/auth/components/two-factor-setup.tsxno production surface mapped
  • apps/mail/modules/calendar/hooks/use-calendar-favicon.tsno production surface mapped
  • apps/mail/modules/cedar-os/__tests__/chatInput/ComposerActionButton.test.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatComponents/EmbeddedCedarChat.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatComponents/newChatWithSameContext.tsno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatComponents/startNewChat.tsno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatComponents/welcomeShortcuts.tsno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatInput/ChatInput.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatInput/ComposerActionButton.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatInput/ReasoningEffortPicker.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/components/chatInput/slashCommands.tsno production surface mapped
  • apps/mail/modules/cedar-os/src/components/chatInput/useCedarEditor.tsno production surface mapped
  • apps/mail/modules/cedar-os/src/components/renderers/messageRenderers.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/store/agentConnection/responseProcessors/clientExecutionResponseProcessors.tsno production surface mapped
  • apps/mail/modules/cedar-os/src/store/messages/messageStorage.tsno production surface mapped
  • apps/mail/modules/cedar-os/src/store/messages/messagesSlice.tsno production surface mapped
  • apps/mail/modules/conversations/components/LeftSidebarContent.tsxno production surface mapped
  • apps/mail/modules/conversations/components/files/ConversationFileTree.tsxno production surface mapped
  • apps/mail/modules/conversations/components/files/DriveSection.tsxno production surface mapped
  • apps/mail/modules/conversations/components/files/FilesTab.tsxno production surface mapped
  • apps/mail/modules/conversations/components/timeline/EventDetailDialog.tsxno production surface mapped
  • apps/mail/modules/conversations/components/timeline/SlackThreadDisplay.tsxno production surface mapped
  • apps/mail/modules/conversations/utils/findOpenEmptyChat.tsno production surface mapped
  • apps/mail/modules/documents/recording/MeetingRecordingPlayer.tsxno production surface mapped
  • apps/mail/modules/documents/table/CellDisplay.tsxno production surface mapped
  • apps/mail/modules/documents/table/TableColumnMenu.tsxno production surface mapped
  • apps/mail/modules/documents/table/TypedCells.tsxno production surface mapped
  • apps/mail/modules/documents/table/constants.tsno production surface mapped
  • apps/mail/modules/drafting/components/email-composer.tsxno production surface mapped
  • apps/mail/modules/drafting/components/extensions.tsno production surface mapped
  • apps/mail/modules/files/components/chat/ChatDropZone.tsxno production surface mapped
  • apps/mail/modules/integrations/drive-reauth-card.tsxno production surface mapped
  • apps/mail/modules/meetings/detail/MeetingDetailView.tsxno production surface mapped
  • apps/mail/modules/meetings/detail/meeting-detail-model.tsno production surface mapped
  • apps/mail/modules/meetings/detail/meeting-sections.tsno production surface mapped
  • apps/mail/modules/meetings/detail/transcript-lines.tsno production surface mapped
  • apps/mail/modules/threads/threadList/store/__tests__/markDraftAsUserEdited.test.tsno production surface mapped
  • apps/mail/modules/threads/threadList/store/__tests__/mergeDraftsByUserEdited.test.tsno production surface mapped
  • apps/mail/modules/threads/threadList/store/threadSlice.tsno production surface mapped
  • apps/mail/modules/userSettings/components/two-factor-settings.tsxno production surface mapped
  • apps/mail/modules/userTasks/TASK_KANBAN_DESIGN.mdno production surface mapped
  • apps/mail/modules/userTasks/TASK_REORDERING_DESIGN.mdno production surface mapped
  • apps/mail/modules/userTasks/TASK_REORDERING_HANDOFF.mdno production surface mapped
  • apps/mail/modules/userTasks/components/TaskKanbanBoard.tsxno production surface mapped
  • apps/mail/modules/userTasks/components/TaskKanbanCard.tsxno production surface mapped
  • apps/mail/modules/userTasks/components/TaskKanbanColumn.tsxno production surface mapped
  • apps/mail/modules/userTasks/components/TaskListView.tsxno production surface mapped
  • apps/mail/modules/userTasks/components/TaskTicketView.tsxno production surface mapped
  • apps/mail/modules/userTasks/components/TasksToolbar.tsxno production surface mapped
  • apps/mail/modules/userTasks/hooks/use-meta-key-held.tsno production surface mapped
  • apps/mail/modules/userTasks/hooks/use-optimistic-task-actions.tsno production surface mapped
  • apps/mail/modules/userTasks/hooks/use-task-group-buckets.tsno production surface mapped
  • apps/mail/modules/userTasks/hooks/use-task-list-view-options.tsno production surface mapped
  • apps/mail/modules/userTasks/lib/resolve-tasks-on-send.tsno production surface mapped
  • apps/mail/modules/userTasks/lib/task-send-match.tsno production surface mapped
  • apps/mail/modules/userTasks/lib/task-status-cache.tsno production surface mapped
  • apps/mail/modules/userTasks/utils/task-drop-plan.tsno production surface mapped
  • apps/mail/modules/userTasks/utils/task-order.tsno production surface mapped
  • apps/mail/package.jsonno production surface mapped
  • apps/mail/public/icons/calendar/day-1.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-10.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-11.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-12.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-13.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-14.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-15.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-16.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-17.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-18.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-19.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-2.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-20.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-21.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-22.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-23.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-24.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-25.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-26.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-27.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-28.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-29.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-3.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-30.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-31.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-4.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-5.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-6.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-7.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-8.svgno production surface mapped
  • apps/mail/public/icons/calendar/day-9.svgno production surface mapped
  • apps/mail/scripts/geist-bold-digits.jsonno production surface mapped
  • apps/mail/scripts/generate-calendar-favicons.mjsno production surface mapped
  • apps/mail/tests/components/extensions/exit-link-on-space.test.tsno production surface mapped
  • apps/mail/tests/lib/favicon-links.test.tsno production surface mapped
  • apps/mail/tests/modules/auth/twoFactorSetup.test.tsxno production surface mapped
  • apps/mail/tests/modules/chat-store/attachOnDraftChat.test.tsxno production surface mapped
  • apps/mail/tests/modules/chat-store/composerActionButton.test.tsxno production surface mapped
  • apps/mail/tests/modules/chat-store/draftChatOnArrival.test.tsno production surface mapped
  • apps/mail/tests/modules/chat-store/slashCommands.test.tsxno production surface mapped
  • apps/mail/tests/modules/chat-store/startNewChat.test.tsno production surface mapped
  • apps/mail/tests/modules/conversations/filesTabDrive.test.tsxno production surface mapped
  • apps/mail/tests/modules/conversations/filesTabHarness.tsxno production surface mapped
  • apps/mail/tests/modules/conversations/findOpenEmptyChat.test.tsno production surface mapped
  • apps/mail/tests/modules/documents/table/OptionPicker.test.tsxno production surface mapped
  • apps/mail/tests/modules/meetings/meetingSections.test.tsno production surface mapped
  • apps/mail/tests/modules/meetings/transcriptLines.test.tsno production surface mapped
  • apps/mail/tests/modules/userTasks/resolveTasksOnSend.test.tsno production surface mapped
  • apps/mail/tests/modules/userTasks/taskKanbanSorting.test.tsno production surface mapped
  • apps/mail/tests/modules/userTasks/taskOrder.test.tsno production surface mapped
  • apps/mail/tests/modules/userTasks/taskSendMatch.test.tsno production surface mapped
  • apps/mail/tests/modules/userTasks/taskTicketView.test.tsxno production surface mapped
  • apps/mail/tests/modules/userTasks/taskUpdatedProcessor.test.tsno production surface mapped
  • apps/mail/tests/modules/userTasks/taskViewOptionsStability.test.tsxno production surface mapped
  • apps/mail/tests/modules/userTasks/upcomingDrop.test.tsno production surface mapped
  • apps/mail/tests/modules/ux/layout/coldLoadArtifactDeepLink.test.tsno production surface mapped
  • apps/mail/vite.config.tsno production surface mapped
  • apps/server/docs/google-drive-integration.mdno production surface mapped
  • apps/server/docs/wiki/README.mdno production surface mapped
  • apps/server/docs/wiki/task-sort-order.mdno production surface mapped
  • apps/server/src/cli/__tests__/task-groups.test.tsno production surface mapped
  • apps/server/src/cli/task-groups.tsno production surface mapped
  • apps/server/src/container/aws-runtime-bindings.tsno production surface mapped
  • apps/server/src/cron/process-buffered-slack-webhook-events.tsno production surface mapped
  • apps/server/src/db/__tests__/sort-order-audit.test.tsno production surface mapped
  • apps/server/src/db/__tests__/user-tasks-sort-order.test.tsno production surface mapped
  • apps/server/src/db/migrations/user_tasks_sort_order.sqlno production surface mapped
  • apps/server/src/env.tsno production surface mapped
  • apps/server/src/lib/auth-providers.tsno production surface mapped
  • apps/server/src/lib/auth.tsno production surface mapped
  • apps/server/src/lib/driver/google.tsno production surface mapped
  • apps/server/src/lib/two-factor/README.mdno production surface mapped
  • apps/server/src/lib/two-factor/__tests__/policy.test.tsno production surface mapped
  • apps/server/src/lib/two-factor/policy.tsno production surface mapped
  • apps/server/src/mastra/tools/draft-comms/__tests__/saveDraftTool.test.tsno production surface mapped
  • apps/server/src/mastra/tools/draft-comms/saveDraftTool.tsno production surface mapped
  • apps/server/src/services/analytics/draft-analytics.tsno production surface mapped
  • apps/server/src/services/channels/adapters/index.tsno production surface mapped
  • apps/server/src/services/crm/conversations.tsno production surface mapped
  • apps/server/src/services/drafting/__tests__/create-draft-rewrite-in-place.test.tsno production surface mapped
  • apps/server/src/services/drafting/__tests__/create-draft-thread-recovery.test.tsno production surface mapped
  • apps/server/src/services/drafting/__tests__/create-draft-unowned-thread.test.tsno production surface mapped
  • apps/server/src/services/drafting/__tests__/draft-session-store.test.tsno production surface mapped
  • apps/server/src/services/drafting/__tests__/sweep-sibling-drafts.test.tsno production surface mapped
  • apps/server/src/services/drafting/draft-session-store.tsno production surface mapped
  • apps/server/src/services/drafting/drafting.tsno production surface mapped
  • apps/server/src/services/drafting/sweep-sibling-drafts.tsno production surface mapped
  • apps/server/src/services/integrations/google/__tests__/drive-access.test.tsno production surface mapped
  • apps/server/src/services/integrations/google/drive-access.tsno production surface mapped
  • apps/server/src/services/integrations/slack/__tests__/slack-connection-health.test.tsno production surface mapped
  • apps/server/src/services/integrations/slack/slack-connection-health.tsno production surface mapped
  • apps/server/src/services/mail/send/__tests__/delete-draft-phantom-thread.test.tsno production surface mapped
  • apps/server/src/services/mail/send/send.tsno production surface mapped
  • apps/server/src/services/user-tasks/sort-order-audit.tsno production surface mapped
  • apps/server/src/services/user-tasks/sort-order.tsno production surface mapped
  • apps/server/src/task-admin/cli.tsno production surface mapped
  • apps/server/src/trpc/routes/__tests__/get-task-by-id-ticket-fields.test.tsno production surface mapped
  • apps/server/src/trpc/routes/__tests__/restamp-sort-order.test.tsno production surface mapped
  • apps/server/src/trpc/routes/__tests__/user-tasks-conversation-scope.test.tsno production surface mapped
  • apps/server/src/trpc/routes/__tests__/user-tasks-task-access.test.tsno production surface mapped
  • apps/server/src/trpc/routes/crm.tsno production surface mapped
  • apps/server/src/trpc/routes/drive.tsno production surface mapped
  • apps/server/src/trpc/routes/integrations.tsno production surface mapped
  • apps/server/src/trpc/routes/mail.tsno production surface mapped
  • apps/server/src/trpc/routes/task-groups.tsno production surface mapped
  • apps/server/src/trpc/routes/user-tasks.tsno production surface mapped
  • apps/server/src/types.tsno production surface mapped
  • aws/docs/marketing-domain-split.mdno production surface mapped
  • aws/scripts/deploy-utils.shno production surface mapped
  • aws/scripts/publish-frontend-assets.shno production surface mapped
  • docs/changelogs/2026-W35.mdno production surface mapped
  • docs/customer-feedback/2026-08-30-A5-draft-divergence-investigation.mdno production surface mapped
  • docs/design/gold-standard-findings.mdno production surface mapped
  • docs/design/gold-standard-playbook.mdno production surface mapped
  • docs/design/gold-standard-sales-playbook.mdno production surface mapped
  • docs/design/kendall-followup-catalog.mdno production surface mapped
  • docs/design/matthew-followup-catalog.mdno production surface mapped
  • docs/design/rhocar-followup-catalog.mdno production surface mapped
  • docs/design/robert-followup-catalog.mdno production surface mapped
  • docs/design/willem-followup-catalog.mdno production surface mapped
  • pnpm-lock.yamlno production surface mapped