A cross-cutting notifications layer: one dispatcher in
core collects events from every module, splits them across two
addressing models and channels, and journals delivery. The module has no
screen of its own — the feed and settings are rendered by the surfaces
(index below).
The module has no frontend of its own: each surface reads the feed with its own screen — → Web App for the employee, → Admin Panel for the administrator; channel and route settings live on the → notifications screen in Admin Panel.