docs: say what simon cannot do, and make the saying enforceable
The crate described itself as "comprehensive hardware monitoring ... across all platforms". macOS has no GPU, power or temperature reader. That sentence is what crates.io shows to someone deciding whether to trust this tool. Adds a "What simon cannot do" section, placed before the feature list rather than after it, because caveats a reader meets only if they keep going are decorative. Every entry is something this project has checked and can point at: - Windows CPU frequency is nominal, not live — 4400 MHz measured constant while system idle went 79.7% to 11.4%. - CPU percentages on Linux and macOS are averages since boot. - The Windows ATA SMART parser has never met a SATA drive. - The Linux profile writers have never executed anywhere. - macOS readers are checked for plausibility, not correctness. - `simon tune` can apply and cannot verify: the metric registry is empty because no candidate metric survived being checked. - Intrusion detection watches socket tables, not traffic; file integrity is a watchlist, not a sweep; a first scan cannot report a machine clean. Also corrects two specific falsehoods: "Complete hardware monitoring" over the CLI reference, and the agent feature list claiming "real-time hardware metrics" when the CPU figures it reads are averages since boot. `tests/honesty.rs` makes these claims checkable rather than remembered. The description may not contain completeness absolutes; the limits section must precede the features; the empty-metric-registry claim is verified against `metric_for`, and registering one fails the build until the sentence is rewritten; a first IDS scan is asserted non-conclusive; the ids module is asserted to contain no write path, since that is exactly what gets added with good intentions during an incident. Verified the tests can fail: reinstating "comprehensive" fails the description check, and moving the limits section below the features fails the placement check. Both reverted. The write-path check initially failed on src/ids/file.rs, because its own tests create and delete fixtures. It now scans only production source — a check that cannot tell a test fixture from a monitored host is one somebody weakens rather than fixes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A
Adam Erickson committed
b785b46487aa91d546cd7d3f8e7637b2f7374b9e
Parent: b3b08ef