SIGN IN SIGN UP

feat(macos): wire the CPU and memory readers into the ontology resolver

`ontology::resolve::read_cpu_stats` and `read_memory_stats` had no macOS
arm. They returned None unconditionally, and the resolver then reported
"the platform CPU reader returned an error" — which was false. No reader
had been called. Reporting a fabricated cause for an absence is the exact
mistake this crate exists to avoid, and it was sitting in a note string.

Eight entities were affected on macOS: cpu.total.utilization, memory.total,
memory.used and memory.utilization as "reader returned an error", and
cpu.model, cpu.cores.logical, cpu.cores.physical and cpu.total.idle as "no
resolver bound on this build" — all four of those non-nullable, so the
schema was promising values it never delivered.

Everything needed was already in platform/macos.rs and unused:
per_core_ticks (the only source of nice time), aggregate_ticks, vm_stat,
sysctl_u64, swap_usage. This adds the two adapters that assemble them into
CpuStats and MemoryStats, and wires both resolvers.

Where macOS genuinely has nothing, it says so rather than inventing:
governor is left empty, which the resolver converts to unavailable with a
reason, and per-core frequency is None because no unelevated source exists.
A nominal figure there would repeat precisely the Windows CurrentMhz problem
documented in tuning::verify.

Only visible now because cargo test stops at the first failing binary and
documentation_links sorts before ontology_conformance: fixing the prose test
is what let this one run.

Compile-checked against aarch64-apple-darwin. It has never executed — there
is no Mac here — so macos-latest in CI is the check, exactly as open work 2
says.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A
Adam Erickson committed
4542005fb20d953f173923df37d2ae34a76d6020
Parent: 4989046