CedarCopilot wants to merge 0 commits into staging from fix/per-thread-connection-and-soft-delete
Live on prod, no production signal yet
Strict CloudWatch fallback saw 1,651 success-shaped log lines matching pipeline, analytics, quota, aop, but no tied operation was present, so Libra is not calling this working.
Strict CloudWatch fallback found 96 recent prod failure log lines for [SCHEDULED] Failed to renew calendar watch (invalid_grant), but the same failure had 96 log lines in the comparable pre-deploy baseline. Libra is not blaming this PR intent without a post-deploy increase or.
Verifier did not provide positive runtime evidence tied to this intent, so Libra is keeping it inconclusive. Original assessment: OTEL fallback saw 133,381 prod spans for the repo/env since deploy with 782 error spans across 161 identified users.
Strict CloudWatch fallback found 56 prod failure log lines for [UpdateExternalCrmWorkflow] Driver update failed (Value \), up from 17 in the comparable baseline, but this domain-wide failure family is not tied to this intent.
Strict CloudWatch fallback found 34 prod failure log lines for mirror.upsertEmailThread failed (Failed query: insert into \), but this domain-wide failure family is not tied to this intent.
Libra has verdicts on 0 of 5 tracked behaviors on prod; 5 are still being checked. Libra checks hourly for 3 days after each deploy.
Review pass over this branch (588 files vs staging), plus every fix it surfaced.
One change was merge-blocking. email-processor.ts had switched to a default import of @barkleapp/css-sanitizer to fix tsx scripts , but Vite leaves default undefined for a CJS module with no __esModule marker, so 153 of 474 server suites died at collection. A namespace import with a .default fallback is the one shape that works under tsx and vitest both.
pnpm types:test , a task this branch introduces , was also red, on its own new test file and on result.company assertions that the branch's (correct) nullable-company widening invalidated.
purgeOwnedRows' retry loop cannot rescue a bad order , the file's own comment says as much, but only one of the two sets was ordered.action: 'delete'. NO ACTION is Postgres's default delete rule, so the next attribution column added with a plain references(user.id) would have landed here and deleted rows belonging to whoever the record is actually about (a conversation, an org) rather than to the account being erased.Not caused by this branch, but red and now green:
crm_company / crm_account_domains / crm_person dual-write shifted by three. Replaced with a shared mockInsertsByTable(), so insert-order changes can no longer mis-wire it silently.sanitizeContext deliberately keeps message/data for failed-send debugging, and get() deliberately emits label IDs without a per-thread labels.list call (607e61d08). Both tests still asserted the pre-change contract.email-composer-send timed out on all 42 tests. Four causes: flushPromises scheduled on a faked setTimeout; react-query mocks returning fresh identities each render; four missing store selectors; and a useForm override leaking to: [] into every test after it.stagingFour conflicts, two silent (auto-merged, no markers) , see the merge commit for the reasoning. Notably both branches independently fixed the same ERR_INVALID_ARG_TYPE date bind and each shipped a regression test for its own shape; only the drizzle-operator form satisfies both.
| Check | Result |
|---|---|
pnpm types | ✅ |
pnpm types:test | ✅ (was 13 errors) |
pnpm run autofix:local | ✅ oxlint · deps:check · 113 mail suites · 450 server suites / 4593 tests |
| apps/mail full jest | ✅ 166/166 suites, 1647 tests |
| apps/server full vitest | ✅ 461 suites, 5124 tests (was 154 suites failing) |
assertMigrationsApplied is exported but never called , only the check-migrations script uses getMigrationStatus. Left alone: wiring a startup gate is a production behavior change. Wire it into api-entry.ts?seedDefaultTaskGroups renamed 'Responses' → 'Responses needed' and seeding matches by name, so rename-responses-task-group.ts must run against prod before any account re-seeds, or affected users get a duplicate group. It's a manual script, not a migration.upload.ts dropped activitiesLimit: Number.MAX_SAFE_INTEGER , indexed external-CRM activities now fall back to the default limit. Intentional?wiki.ts widened page selection from documentType !== 'custom' to documentType === 'folder'. Intended with the agent-document work?apps/mail lint has 233 pre-existing errors repo-wide; this PR adds none (verified against the HEAD baseline of every touched file).🤖 Generated with Claude Code
Libra has not measured any production surfaces for this change yet.