actop 1.8.0
Added
- Net / disk I/O rates — the last open must-have on the roadmap (N track,
first flagged 2026-07-02 with an on-device feasibility spike), shipped end to
end:- Network via native
getifaddrs()/AF_LINK/struct if_databindings in
native_sys.py(read_network_totals()) — summed cumulative byte/packet
counters across non-loopback interfaces, list freed every call. - Disk via IOKit
AppleAPFSVolumeStatisticswith
IOBlockStorageDriverfallback (actop/disk_registry.py,
read_disk_totals()) — the same unprivileged traversal pattern as
gpu_registry.py, no new binding classes. - Sampler deltas both into bytes/s rates (
net_rx_bps/net_tx_bps/
disk_read_bps/disk_write_bps), averaged across sub-samples, on
SystemSnapshotwithnet_available/disk_availableflags mirroring
bandwidth_available. - Surfaced everywhere: TUI
Net ↓/↑andDisk R/Wrows (decimal throughput,
hide-row pattern when unavailable), NDJSON, and Prometheus gauges
(actop_network_receive_bytes_per_second,actop_network_transmit_bytes_per_second,
actop_disk_read_bytes_per_second,actop_disk_write_bytes_per_second). - Pre-work landed with it:
hw.memsize/hw.pagesizeare module-cached
instead of re-read viasysctlbynameevery tick.
- Network via native
Changed
- Export/config paths read the pre-computed
package_ref_w/max_total_bw
straight fromget_soc_info()(single source of truth) instead of
recomputing them from chart references. scripts/tag_release.shsetsACTOP_TAG_RELEASEso its own tag push no
longer trips the pre-push hook's tag warning.- Docs:
SPEC-system.mdcompacted and gained the net/disk as-built section
(§2.4); completed TODO/REVIEW docs dropped; cover page gained a Net/disk I/O
feature card.
Removed
-
Deprecated
*_gbaliases (deferred since the v1.5.0 reading-plane audit —
§3.5 of that release's notes). Everything that carried a rounded binary
quantity under a decimal name is gone after one full release cycle of
deprecation:SystemSnapshot.ram_used_gb/ram_total_gb/swap_used_gb/
swap_total_gb— read the exact*_bytesfields.ProcessSample.rss_mb— readProcessSample.rss_bytes.utils.convert_to_GBalias — useconvert_to_GiB.*_GBdict keys fromutils.get_ram_metrics_dict()— use the*_byteskeys.actop_ram_used_gigabytes/actop_swap_used_gigabytesPrometheus gauges —
scrapeactop_ram_used_bytes/actop_swap_used_bytes.
-
--alert-swap-rise-gbCLI flag (deprecated alias for
--alert-swap-rise-gibsince v1.5.0; the threshold was always compared
against GiB). The canonical spelling is the only one accepted.