codex/payton-hub-buildspec-2026-05-190AfUV000001X9Dd0AK0AfUV000001X9AP0A0 (15/15 tests passed)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.
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.