collectors::system_hw_tick in crates/signald/src/lib.rs is a todo!(). The Swift collector (macos-collector/) writes valid signal-schema frames to stdout or --out, but nothing reads them, so hardware signals never reach the hub, the history store, or any renderer.
Proposed design: signald spawns macos-collector as a child process and reads its stdout with the existing wire::read_frame, publishing each frame into the hub like any other collector. Add a --collector <path> flag (default: look up macos-collector on PATH; skip with a log line when absent so Linux and battery-less machines still run).
Done when:
system_hw_tickand itstodo!()are gone.- A subscriber to the socket sees
cpu_load,battery_pct,charging,battery_draw_w, andthermal_stateframes on a Mac. - The self-attestation in
main.rsreports the hardware collector as enabled, not "stub (phase 3)". - An integration test feeds canned frames through the ingest path and asserts they appear in a subscriber's snapshot.
closed by commit 42a6dcc60e by cmc: Ingest macos-collector frames in signald
2026-09-04 04:50 UTC