account-configfix(review): address 6 findings from thermo-review of this session's commits
- .cursor/skills/account-config/SKILL.md: fix dangling references to the
deleted resources/ directory (a third skill mirror the consolidation
commit missed) -- repoint to the surviving .claude/skills files.
- load-skill: extract buildLoadSkillDescription() so the regression test
measures the actual wire payload (fixed prefix + terse catalog), not just
the inner catalog -- the real headroom before the 2KB limit was tighter
than the previous test tracked.
- conversationTool.ts: wrap selectedAopNames/visibleColumns/extraFields in
coerceJsonString too, for consistency with the other 5 fields already
wrapped by the same fix.
- content-shortcuts.ts: extractLineRange now rejects a reversed range
(end < start) with a clear message instead of silently returning an empty
slice; added a test.
- chat-message-persistence.ts: recordExternalChatMessage now verifies an
existing thread's userId matches the caller before attaching a message --
a reused/colliding host sessionId could otherwise mix one user's turns
into another user's thread once this dormant code is wired up.
- readDocumentTool.ts: the #lines shortcut's wordCount no longer counts each
line-number prefix as an extra word.
Co-Authored-By: Claude Sonnet 5 <<email>>Jul 10, 2026, 10:42 PMbug-triage-from-callsfeat: use checklist format in Linear ticket descriptions
Co-authored-by: isabelle-cedar <<email>>Mar 27, 2026, 11:12 AMcedar-reportingfeat: skill for user reporting and intelligence field fixesMar 30, 2026, 11:04 PMchangelogreplace cloudflare runtime with aws local servicesApr 6, 2026, 12:33 AMcommit-prfeat: small demo improvementsJun 24, 2026, 4:24 PMcopy-klavis-credential-to-userfeat: skill to copy klavis credentials from an admin toa userApr 8, 2026, 3:53 PMdata-integrityfeat: account setup + sync improvements (9 items)
- Item 1: Add STAGE FILTER block to Post-Event Task Executor prompt template
in account-setup skill; add inactive-stage suppression to Task Aggregator
- Item 2: Add CRM-linked deal gate in updateNextStepsAndTasksTool — injects
<crm_task_gate> prompt section when user has CRM but conversation has no
linked deal, preventing task creation for untracked prospects
- Item 3: Add Step 4b (onlyDraftForLinkedDeals) to account-setup Phase 4
- Item 4a: Add deal `name` as first default CRM→Cedar mapping in HubSpot
(dealname), Salesforce (Name), and Attio (name) drivers
- Item 4b: Add Step 4c (name field humanOnly) to account-setup Phase 4
- Item 5: Add Step 5.5 (external CRM deal audit) to data-integrity skill
covering stage count reconciliation, field mapping diffs, and domain mismatches
- Item 6: Restructure Step 6 in data-integrity skill — primary method is now
auditFieldMappingDiffs tRPC call; old SQL substeps become Step 6b fallback
- Item 7: Default conversationCanvas to crmSynced=synced when CRM is connected
(NewCanvasScreen.tsx, phase6-canvases.ts, account-setup skill Phase 6 note)
- Item 8: Add opportunity creation defaults section to account-setup Phase 2B;
add opportunity_creation row to skill content guide table
- Item 9: Add co-run deals detection (scope: org) to account-setup Phase 1
and document AOP scope toggle in account-config what-goes-where.md
Co-authored-by: Cursor <<email>>May 23, 2026, 9:39 PMproduct-updatesdocs: require changelog PR in product update automation
Co-authored-by: isabelle-cedar <<email>>May 11, 2026, 1:09 PMquery-dbUpdate CRM audit skills to use conversation updates
Co-authored-by: isabelle-cedar <<email>>Apr 26, 2026, 6:25 PMread-agent-tracesfix: use OTel propagation API for trace context + guard circular refs
- saveInitialSyncTraceContext now delegates to propagation.inject() so
traceFlags and tracestate are serialised correctly by the registered
propagators, removing the hardcoded 01 sampled flag and dropped tracestate
- sanitizeForSpan wraps JSON.stringify in try/catch to prevent circular
reference errors from propagating as real step failures
- Update read-agent-traces skill with correct Axiom field paths and
initial sync Step Functions query examples
Made-with: CursorApr 12, 2026, 8:09 PMread-cloudwatch-logsfeat: cursor skill for reading axiom traces and aws cloudwatch logsApr 12, 2026, 8:52 AMupdate-org-aopfix(server): typecheck apps/server clean (design: typecheck-build-boundary phase 1)
Split tests out of the main project (tsconfig.test.json) so it contains exactly the
sources that ship — Phase 2 emits declarations from it — then drove the remainder to
zero: 539 -> 253 -> 0. Tests still typecheck, via `types:test`.
`types` gates src only, deliberately. The test project carries 239 pre-existing errors
of its own; folding them in would keep the gate red forever and block caching for
everyone. Named backlog, not a silent exclusion. With the gate green, turbo can finally
cache it: 6.19s cold -> 188ms FULL TURBO.
Most of these were stale contracts, not sloppy typing — a WorkflowHandle cast to an
invented shape, Cloudflare globals that no longer exist post-AWS-migration, drizzle
result shapes read as node-pg, tool args deleted from the callee but not the caller.
The types were hiding real bugs. `validFields` was read out of scope and threw a
ReferenceError on every stage-batch apply. `corpus.ts` declared occurredAt as string
while holding a Date, so any conversation with 2+ meetings threw in the sort and got
swallowed by a catch. A conversation update dropped its hydrated events relation. A
dedup script keyed on columns that never existed on the table.
CustomFieldDefinition also regained strength/completeness. 2df812b33 collapsed the CRM
plane onto one `signal` rubric, but the taxonomy registry added two weeks later needs
two independent axes and the runtime has always read both — the type was lying, not the
code. Added them to the zod schema too, which strips unknown keys and would otherwise
silently delete every hand-authored rubric the first time it validated a write.
vitest: 4479 pass, 5 pre-existing failures in modifyCalendarEventTool (zero files
changed under that directory). deps:check clean.
Co-Authored-By: Claude Opus 5 (1M context) <<email>>Aug 1, 2026, 8:36 PM