PR + deploy

Headline result

Payton no-contact stale prompts dropped from 20 to 10 of 138 open matters once the new MatterCommsRollup firmwide utility replaced the old LastActivityDate fallback. 50% false-positive reduction. The hub no longer flags matters as stale solely because the standard LastActivityDate field was missing.

Items shipped

Item 4 — Stale Case Needing Action (full, including comms rollup)

New firmwide class MatterCommsRollup (with sharing) at force-app/main/default/classes/MatterCommsRollup.cls. Public static method lastActivityByMatter(Set<Id> matterIds) returns Map<Id, Date> of the max activity date across:

Each source wrapped in try/catch so missing managed packages do not throw.

AttorneyHubPaytonController.addNoContactPrompts calls into the firmwide helper and returns rows with incidentDate, caseType, and stage so the LWC can render name | incident date | case type | stage. Rows with daysSinceLastActivity > 30 get the .prompt-row.stale-30 CSS class (orange left border + soft cream background; no orange fill, brand-compliant).

Future hub clones (Austin Pollard, Jimmy Brown, Jon Hollan, Nick Wilson, Terry Goodspeed, Trent Burns) reuse the same MatterCommsRollup definition without copy-paste.