Hmmm, so it is. Thank you for finding that in the object.cache.
But that moves the confusion to how that contact group gets into the service object. (forum breaks when I try to include a unicode thinking emoji)
ospf service object "use"'s xinetd-check-template.
xinetd-check-template object uses nothing.
Neither object has any contact groups at all. Here is the pre-compiled config for both of those:
define service {
service_description ospf
host_name syslog01[redacted-host]
use xinetd-check-template
action_url null
check_interval 2;
normal_check_interval 2;
max_check_attempts 1 ; Try every couple of minutes, report immediately on a "failure" as it is unlikely to repeat.

notification_interval 60 ; Re-notify about service problems every hour
notification_options w,u,c ; Do not alert on recovery, as for "event" checks like this, recovery is redundant.
process_perf_data 0 ; Process performance data
}
define service {
name xinetd-check-template
register 0; # just a template service
check_command check_wfx_remote_xinetd!-P [redacted-port]
action_url [redacted-uri]
active_checks_enabled 1 ; Active service checks are enabled
check_freshness 0 ; Default is to NOT check service 'freshness'
check_period 24x7 ; The service can be checked at any time of the day
contacts serveralert
event_handler_enabled 1 ; Service event handler is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
flap_detection_enabled 0 ; Flap detection is enabled
is_volatile 0 ; The service is not volatile
max_check_attempts 10;
normal_check_interval 5;
notification_interval 60 ; Re-notify about service problems every hour
notification_options w,c,r ; Send notifications about warning, critical, and recovery events
notification_period 24x7 ; Notifications can be sent out at any time
notifications_enabled 1 ; Service notifications are enabled
obsess_over_service 0 ; We should obsess over this service (if necessary)
parallelize_check 1 ; Active checks should be parallelized (disabling can lead to performance problems)
passive_checks_enabled 0 ; Passive service checks are enabled/accepted
process_perf_data 1 ; Process performance data
retain_nonstatus_information 1 ; Retain non-status information across program restarts
retain_status_information 1 ; Retain status information across program restarts
retry_check_interval 5 ; In minutes until a final hard state is determined
}
Now the syslog01 *host* has contactgroups admin, but that's because we want them to be notified if the entire host goes down. is ospf service object inheriting the host's contacts too?
If so, then how can we have a service not always alarm the contacts who need to know when the whole host is down?
And if not then how else could it be getting in?