Libra CodeHub

CedarCopilot/cedar-mail

Branch: staging

[2026-09-08] merging staging to main

merged#2727CedarCopilot

CedarCopilot wants to merge 1 commit into main from staging

Not deployedTimeline and evidence
  1. Opened
    Sep 8, 2026, 11:38 AM
  2. Sep 8, 2026, 11:40 AM
  3. Merged
    Sep 8, 2026, 12:01 PM
  4. Live on staging, live on prod, observed
    Pending
  5. Not deployed

    Not deployed

    Pending

Libra has no production signal for this change yet because it has not deployed. Libra checks hourly for 3 days after each deploy.

Greptile Summary

This update adds broad client, server, and infrastructure work across inbox interactions, document deletion and restore flows, chat proposal replay, boards, integrations, and supporting UI. One non-blocking issue remains: older proposal cards can present an approval action even when the persisted proposal cannot be replayed.

Confidence Score: 4/5

Safe to merge, with a non-blocking usability defect in historical chat proposal cards.

The confirmed issue affects an older proposal state by offering an action that the server will reject, but does not compromise data integrity or access control.

Files Needing Attention: apps/mail/modules/cedar-os/src/store/messages/renderers/ProposedMutationRenderer.tsx

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex produced two finding-comment-proofs for a posted P2 finding.
  • A historical proposal validation test and the renderer change artifacts were prepared and reviewed to validate the proposed update.
  • The historical render attempt and the replayable render attempt artifacts were examined to verify renderer behavior under past scenarios.
  • A general-contract-validation-proof confirmed the exact code location and that the ProposedMutationRenderer.issue-validation.test.tsx tests pass.

View all artifacts

T-Rex Ran code and verified through T-Rex

Prompt To Fix All With AI
### Issue 1
apps/mail/modules/cedar-os/src/store/messages/renderers/ProposedMutationRenderer.tsx:195
**Hide unavailable legacy approvals**

Historical proposal messages without persisted replay instructions still render an enabled approval button because a thread ID and message ID are treated as sufficient to apply them. The server rejects these rows as too old to apply, so users can confirm a change that is guaranteed to fail instead of seeing the unavailable state. Expose an applicability flag for rehydrated messages, or preflight applicability before enabling the action. This is non-blocking, but it creates misleading approval controls and avoidable failed requests.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "Merge pull request #2726 from CedarCopil..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

Context used (5)

Show production surfaces and changed-file mapping

Production surfaces

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

Changed files → surfaces

  • apps/mail/app/globals.cssno production surface mapped
  • apps/mail/components/icons/agent-avatar.tsxno production surface mapped
  • apps/mail/components/icons/icons.tsxno production surface mapped
  • apps/mail/components/providers/hotkey-provider-wrapper.tsxno production surface mapped
  • apps/mail/components/ui/citations/TranscriptViewerModal.tsxno production surface mapped
  • apps/mail/docs/optimistic-files.mdno production surface mapped
  • apps/mail/docs/unified-files-ui.mdno production surface mapped
  • apps/mail/docs/wiki/files-ui.mdno production surface mapped
  • apps/mail/docs/wiki/optimistic-mutations.mdno production surface mapped
  • apps/mail/docs/wiki/unibox-hotkeys.mdno production surface mapped
  • apps/mail/docs/wiki/unified-feed-composition.mdno production surface mapped
  • apps/mail/jest.setup.jsno production surface mapped
  • apps/mail/modules/agentCanvas/components/AgendaCalendarSidebar.tsxno production surface mapped
  • apps/mail/modules/agentCanvas/components/AgendaEventBlock.tsxno production surface mapped
  • apps/mail/modules/agentCanvas/components/AgendaListView.tsxno production surface mapped
  • apps/mail/modules/agentCanvas/components/AgendaMeetings.tsxno production surface mapped
  • apps/mail/modules/agentCanvas/components/CalendarCanvas.tsxno production surface mapped
  • apps/mail/modules/agents/components/AgentConversationFilesFolder.tsxno production surface mapped
  • apps/mail/modules/agents/components/AgentHeader.tsxno production surface mapped
  • apps/mail/modules/agents/components/AgentsGrid.tsxno production surface mapped
  • apps/mail/modules/calendar/store/calendarSlice.tsno production surface mapped
  • apps/mail/modules/canvas/components/ReportCanvasView.tsxno production surface mapped
  • apps/mail/modules/cedar-os/__tests__/chatComponents/ChatContextRow.test.tsxno production surface mapped
  • apps/mail/modules/cedar-os/__tests__/chatComponents/ContextKindIcon.test.tsxno production surface mapped
  • apps/mail/modules/cedar-os/__tests__/chatComponents/ProposedMutationRenderer.test.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatComponents/AmbientContextChip.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatComponents/ChatContextRow.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatComponents/ContextKindIcon.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/cedar-os-components/chatInput/ContextBadgeRow.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/store/messages/renderers/ProposedMutationRenderer.tsxno production surface mapped
  • apps/mail/modules/cedar-os/src/store/messages/renderers/describeProposedMutation.tsno production surface mapped
  • apps/mail/modules/company/components/CompanyExplorer.tsxno production surface mapped
  • apps/mail/modules/conversations/components/LeftSidebarContent.tsxno production surface mapped
  • apps/mail/modules/conversations/components/files/AgentFilesGroup.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/files/optimistic-files.tsno production surface mapped
  • apps/mail/modules/crm/utils/meeting-display.tsno production surface mapped
  • apps/mail/modules/documents/board/BoardDisplayMenu.tsxno production surface mapped
  • apps/mail/modules/documents/board/BoardDocumentView.tsxno production surface mapped
  • apps/mail/modules/documents/board/BoardSchemaDialog.tsxno production surface mapped
  • apps/mail/modules/documents/board/BoardSchemaMenu.tsxno production surface mapped
  • apps/mail/modules/documents/board/index.tsno production surface mapped
  • apps/mail/modules/documents/board/useYBoard.tsno production surface mapped
  • apps/mail/modules/documents/recording/MeetingRecordingPlayer.tsxno production surface mapped
  • apps/mail/modules/files/chat/newChatArtifact.tsno production surface mapped
  • apps/mail/modules/files/components/FileDataSync.tsxno production surface mapped
  • apps/mail/modules/files/components/list/FileListColumns.tsxno production surface mapped
  • apps/mail/modules/files/components/list/FileListRow.tsxno production surface mapped
  • apps/mail/modules/files/components/list/index.tsno production surface mapped
  • apps/mail/modules/files/components/list/types.tsno production surface mapped
  • apps/mail/modules/files/graph/useGraphData.tsno production surface mapped
  • apps/mail/modules/files/utils/file-presentation.tsno production surface mapped
  • apps/mail/modules/files/utils/workspace-visibility.tsno production surface mapped
  • apps/mail/modules/home/widgets/HomeAgentsWidget.tsxno production surface mapped
  • apps/mail/modules/inbox/hooks/use-channel-hotkey-actions.tsno production surface mapped
  • apps/mail/modules/inbox/hooks/use-inbox-item-actions.tsno production surface mapped
  • apps/mail/modules/inbox/hooks/use-open-channel-item.tsno production surface mapped
  • apps/mail/modules/inbox/lib/hotkey-targets.tsno production surface mapped
  • apps/mail/modules/meetings/detail/MeetingDetailView.tsxno production surface mapped
  • apps/mail/modules/reports/components/ReportsView.tsxno production surface mapped
  • apps/mail/modules/threads/thread/utils/thread-display-hotkeys.tsxno production surface mapped
  • apps/mail/modules/threads/threadList/utils/mail-list-hotkeys.tsxno production surface mapped
  • apps/mail/modules/ux/layout/LayoutUrlSync.tsxno production surface mapped
  • apps/mail/tests/modules/cedar-os/describeProposedMutation.test.tsno production surface mapped
  • apps/mail/tests/modules/conversations/filesTabHarness.tsxno production surface mapped
  • apps/mail/tests/modules/conversations/filesTabOptimistic.test.tsxno production surface mapped
  • apps/mail/tests/modules/conversations/filesTabTree.test.tsxno production surface mapped
  • apps/mail/tests/modules/crm/utils/meeting-display.test.tsno production surface mapped
  • apps/mail/tests/modules/documents/board/BoardDocumentView.empty.test.tsxno production surface mapped
  • apps/mail/tests/modules/documents/board/BoardDocumentView.render.test.tsxno production surface mapped
  • apps/mail/tests/modules/files/brain-explorer.test.tsxno production surface mapped
  • apps/mail/tests/modules/files/list/FileListRow.test.tsxno production surface mapped
  • apps/mail/tests/modules/files/list/file-presentation.test.tsno production surface mapped
  • apps/mail/tests/modules/files/workspaceVisibility.test.tsno production surface mapped
  • apps/mail/tests/modules/inbox/hotkeyTargets.test.tsno production surface mapped
  • apps/mail/tests/modules/inbox/uniboxHotkeys.test.tsxno production surface mapped
  • apps/mail/tests/modules/reports/reportsUndoDelete.test.tsxno production surface mapped
  • apps/mail/tests/modules/thread/pendingComposeAction.test.tsxno production surface mapped
  • apps/mail/tests/modules/ux/layout/agentCloseUrl.test.tsxno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/SKILL.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/building-an-agent.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/choosing-a-trigger.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/diagnose-and-repair.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/fields-and-values.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/limits-and-escalation.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/playbook-anatomy.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/scope-and-sharing.mdno production surface mapped
  • apps/server/.claude/skills/cedar-configuration/using-and-configuring-extracted-fields.mdno production surface mapped
  • apps/server/.claude/skills/playbook-authoring/SKILL.mdno production surface mapped
  • apps/server/docs/design/reversible-writes-and-approval.mdno production surface mapped
  • apps/server/docs/wiki/approval-and-reversibility.mdno production surface mapped
  • apps/server/docs/wiki/board-documents.mdno production surface mapped
  • apps/server/docs/wiki/chat-context-provenance.mdno production surface mapped
  • apps/server/docs/wiki/document-deletion-lifecycle.mdno production surface mapped
  • apps/server/package.jsonno production surface mapped
  • apps/server/src/board-admin/cli.tsno production surface mapped
  • apps/server/src/cron/cron-task-registry.tsno production surface mapped
  • apps/server/src/cron/purge-deleted-documents.tsno production surface mapped
  • apps/server/src/db/__tests__/disposable-accounts.tsno production surface mapped
  • apps/server/src/docs/bug-draft-saving-post-deploy-2026-09-05.mdno production surface mapped
  • apps/server/src/lib/__tests__/credentials-encryption.test.tsno production surface mapped
  • apps/server/src/lib/credentials-encryption.tsno production surface mapped
  • apps/server/src/lib/driver/__tests__/provider-draft-id.test.tsno production surface mapped
  • apps/server/src/lib/driver/provider-draft-id.tsno production surface mapped
  • apps/server/src/mastra/context/values.tsno production surface mapped
  • apps/server/src/mastra/mcp/external/__tests__/mutating-actions-are-administrable.test.tsno production surface mapped
  • apps/server/src/mastra/mcp/external/__tests__/scope-map.test.tsno production surface mapped
  • apps/server/src/mastra/mcp/external/scope-map.tsno production surface mapped
  • apps/server/src/mastra/skills/account-config/__tests__/knowledge-claims-resolve.test.tsno production surface mapped
  • apps/server/src/mastra/skills/account-config/index.tsno production surface mapped
  • apps/server/src/mastra/tools/__tests__/master-surface.test.tsno production surface mapped
  • apps/server/src/mastra/tools/config/__tests__/config-read-output-schema.test.tsno production surface mapped
  • apps/server/src/mastra/tools/config/__tests__/configTool.test.tsno production surface mapped
  • apps/server/src/mastra/tools/config/config-read-tool.tsno production surface mapped
  • apps/server/src/mastra/tools/config/config-tool-shared.tsno production surface mapped
  • apps/server/src/mastra/tools/config/config-write-tool.tsno production surface mapped
  • apps/server/src/mastra/tools/debug/__tests__/debugTool.test.tsno production surface mapped
  • apps/server/src/mastra/tools/debug/debugTool.tsno production surface mapped
  • apps/server/src/mastra/tools/document/__tests__/documentTool.delete.integration.test.tsno production surface mapped
  • apps/server/src/mastra/tools/document/__tests__/documentTool.test.tsno production surface mapped
  • apps/server/src/mastra/tools/document/boardTool.tsno production surface mapped
  • apps/server/src/mastra/tools/document/documentTool.tsno production surface mapped
  • apps/server/src/mastra/tools/master-surface.tsno production surface mapped
  • apps/server/src/mastra/tools/task/__tests__/listTasksTool.draft-fetch.test.tsno production surface mapped
  • apps/server/src/mastra/tools/task/listTasksTool.tsno production surface mapped
  • apps/server/src/mastra/utils/__tests__/approval.test.tsno production surface mapped
  • apps/server/src/mastra/utils/__tests__/chat-message-persistence.test.tsno production surface mapped
  • apps/server/src/mastra/utils/approval-policy.tsno production surface mapped
  • apps/server/src/mastra/utils/approval.tsno production surface mapped
  • apps/server/src/mastra/utils/chat-message-persistence.tsno production surface mapped
  • apps/server/src/mastra/workflows/chat/__tests__/agent-bound-chat.test.tsno production surface mapped
  • apps/server/src/mastra/workflows/chat/chat-workflow.tsno production surface mapped
  • apps/server/src/mastra/workflows/chat/harness/request-context.tsno production surface mapped
  • apps/server/src/mastra/workflows/chat/harness/subagents.tsno production surface mapped
  • apps/server/src/scripts/document-lifecycle.tsno production surface mapped
  • apps/server/src/scripts/purge-deleted-documents.tsno production surface mapped
  • apps/server/src/services/aop/__tests__/custom-field-management.test.tsno production surface mapped
  • apps/server/src/services/aop/__tests__/list-fields.test.tsno production surface mapped
  • apps/server/src/services/aop/custom-field-management.tsno production surface mapped
  • apps/server/src/services/aop/field-ownership.tsno production surface mapped
  • apps/server/src/services/aop/list-fields.tsno production surface mapped
  • apps/server/src/services/auth/authorize.tsno production surface mapped
  • apps/server/src/services/chat/conversation-visibility.integration.test.tsno production surface mapped
  • apps/server/src/services/chat/conversation-visibility.test.tsno production surface mapped
  • apps/server/src/services/chat/conversation-visibility.tsno production surface mapped
  • apps/server/src/services/documents/__tests__/purge-deleted-documents.test.tsno production surface mapped
  • apps/server/src/services/documents/__tests__/soft-delete.test.tsno production surface mapped
  • apps/server/src/services/documents/board/__tests__/board-field-patch.test.tsno production surface mapped
  • apps/server/src/services/documents/board/__tests__/board-view.test.tsno production surface mapped
  • apps/server/src/services/documents/board/board-ops.tsno production surface mapped
  • apps/server/src/services/documents/board/board-types.tsno production surface mapped
  • apps/server/src/services/documents/index.tsno production surface mapped
  • apps/server/src/services/integrations/meetings/__tests__/circleback-mcp.test.tsno production surface mapped
  • apps/server/src/services/integrations/meetings/circleback.tsno production surface mapped
  • apps/server/src/services/integrations/meetings/recording-url.tsno production surface mapped
  • apps/server/src/services/integrations/slack/__tests__/list-bot-slack-channels.test.tsno production surface mapped
  • apps/server/src/services/integrations/slack/slack-api.tsno production surface mapped
  • apps/server/src/services/playbook/__tests__/test-run-subagent.test.tsno production surface mapped
  • apps/server/src/services/playbook/crm-updater-config.tsno production surface mapped
  • apps/server/src/services/playbook/subagents.tsno production surface mapped
  • apps/server/src/services/playbook/test-run-subagent.tsno production surface mapped
  • apps/server/src/services/playbook/write-document-guarded.tsno production surface mapped
  • apps/server/src/trpc/routes/admin-boards.tsno production surface mapped
  • apps/server/src/trpc/routes/boards.tsno production surface mapped
  • apps/server/src/trpc/routes/chat.tsno production surface mapped
  • apps/server/src/trpc/routes/documents.tsno production surface mapped
  • aws/lib/stacks/app-stack.tsno production surface mapped