The journalctl example is particularly interesting because a successful exit code doesn't necessarily mean the data was actually readable.
I’ve seen this same design problem come up in observability pipelines: imagine a Prometheus exporter that keeps returning HTTP 200, but a permission change prevents its collector from reading kernel or hardware metrics. The scrape succeeds, up stays at 1, and a dashboard can look perfectly healthy while the underlying measurements are missing or stale.
I’d be tempted to give each signal three separate states: healthy, unhealthy, and unknown, with freshness tracked independently. A successful scrape should prove that the endpoint responded, not that every collector produced valid data. Do you plan to expose per-signal collection timestamps or last-success times in FoxWatch? That could help distinguish a genuinely quiet machine from one whose monitoring has quietly stopped working.