[{"id":"cpu.usageFraction","jsonPath":"sample.cpu.usageFraction","displayName":"CPU usage","unit":"fraction of one logical CPU aggregate","range":"0...1","nullable":false,"source":"host_statistics HOST_CPU_LOAD_INFO tick deltas","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":["First sample has no counter baseline."],"interpretationNotes":["Valid idle reading is a real zero.","Unreadable when host_statistics fails (availability unavailable)."]},{"id":"cpu.pressureFraction","jsonPath":"sample.cpu.pressureFraction","displayName":"CPU pressure (derived)","unit":"fraction","range":"0...1","nullable":false,"source":"max(cpuUsage, loadAverage1m/logicalCPUCount)","sourceStability":"derived","refreshCadence":"requested interval","derivation":"max(cpuUsage, min(1, loadAverage1m / logicalCPUCount))","thresholds":{"elevated":0.7,"constrained":0.85,"critical":0.95},"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"n/a (derived)","limitations":["Not macOS PSI; no Apple pressure API exists for CPU."],"interpretationNotes":["Derived saturation signal."]},{"id":"cpu.loadAverage1m","jsonPath":"sample.cpu.loadAverage1m","displayName":"1-minute load average","unit":"runnable+uninterruptible threads","range":">= 0","nullable":true,"source":"getloadavg","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Read once per sample.","rollbackBehavior":"Read failure reports null.","limitations":[],"interpretationNotes":["Normalize by logicalCPUCount before comparing across machines."]},{"id":"memory.usedBytes","jsonPath":"sample.memory.usedBytes","displayName":"Memory used","unit":"bytes","range":"0...totalBytes","nullable":false,"source":"host_statistics64: active + wired + compressed pages","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null with availability unavailable.","limitations":[],"interpretationNotes":["Compressed memory is already included in used."]},{"id":"memory.availableBytes","jsonPath":"sample.memory.availableBytes","displayName":"Memory available","unit":"bytes","range":"0...totalBytes","nullable":false,"source":"total - used","sourceStability":"derived","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null with availability unavailable.","limitations":[],"interpretationNotes":["Includes reclaimable inactive/purgeable/speculative pages; it is not the free-page count."]},{"id":"memory.cachedBytes","jsonPath":"sample.memory.cachedBytes","displayName":"Memory cached (reclaimable)","unit":"bytes","range":"0...availableBytes","nullable":false,"source":"inactive + purgeable + speculative pages, capped at available","sourceStability":"derived","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null with availability unavailable.","limitations":[],"interpretationNotes":[]},{"id":"memory.compressedBytes","jsonPath":"sample.memory.compressedBytes","displayName":"Compressed memory","unit":"bytes","range":"0...usedBytes","nullable":false,"source":"compressor_page_count","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null with availability unavailable.","limitations":[],"interpretationNotes":["Share of the working set held by the compressor; already inside usedBytes."]},{"id":"memory.swapUsedBytes","jsonPath":"sample.memory.swapUsedBytes","displayName":"Swap allocated (used)","unit":"bytes","range":">= 0","nullable":false,"source":"sysctl vm.swapusage","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null with availability unavailable.","limitations":[],"interpretationNotes":["Allocation is not activity; pair with swap I/O rates."]},{"id":"memory.swapInBytesPerSecond","jsonPath":"sample.memory.swapInBytesPerSecond","displayName":"Swap-in rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"host_statistics64 swapins page counter delta","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":[]},{"id":"memory.swapOutBytesPerSecond","jsonPath":"sample.memory.swapOutBytesPerSecond","displayName":"Swap-out rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"host_statistics64 swapouts page counter delta","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":[]},{"id":"memory.compressionBytesPerSecond","jsonPath":"sample.memory.compressionBytesPerSecond","displayName":"Compression rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"compressions page counter delta","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":[]},{"id":"memory.decompressionBytesPerSecond","jsonPath":"sample.memory.decompressionBytesPerSecond","displayName":"Decompression rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"decompressions page counter delta","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":[]},{"id":"memory.pressureFraction","jsonPath":"sample.memory.pressureFraction","displayName":"Memory pressure","unit":"fraction","range":"0...1","nullable":false,"source":"max(working-set utilization, macOS pressure floor)","sourceStability":"derived","refreshCadence":"requested interval","derivation":"max(used/total, floor by system level: nominal 0, elevated 0.72, constrained 0.86, critical 0.96)","thresholds":{"elevated":0.7,"constrained":0.85,"critical":0.95},"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null with availability unavailable.","limitations":[],"interpretationNotes":["Combines the macOS kernel pressure level with the working-set ratio used by trends."]},{"id":"memory.systemPressureLevel","jsonPath":"sample.memory.systemPressureLevel","displayName":"macOS memory pressure level","unit":"enum","range":"nominal|constrained|critical","nullable":true,"source":"sysctl kern.memorystatus_vm_pressure_level","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null.","limitations":[],"interpretationNotes":["macOS source, distinct from Searoom's derived memory pressure."]},{"id":"thermal.temperatureCelsius","jsonPath":"sample.thermal.temperatureCelsius","displayName":"Temperature","unit":"degrees Celsius","range":"-40...100","nullable":true,"source":"AppleSMC CPU/package sensor, AppleSmartBattery fallback","sourceStability":"best-effort undocumented","refreshCadence":"6 seconds","refreshCadenceSeconds":6,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Sensor failure reports null.","limitations":["Many Macs expose neither sensor.","battery source is the battery-pack sensor, not CPU/package temperature.","AppleSmartBattery values can be hundredths of a degree; normalized by the collector."],"interpretationNotes":[]},{"id":"thermal.systemPressureLevel","jsonPath":"sample.thermal.systemPressureLevel","displayName":"macOS thermal state","unit":"enum","range":"nominal|elevated|constrained|critical|unavailable","nullable":false,"source":"ProcessInfo.thermalState","sourceStability":"public","refreshCadence":"6 seconds","refreshCadenceSeconds":6,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Unknown system state maps to unavailable.","limitations":[],"interpretationNotes":["macOS source, separate from any temperature reading."]},{"id":"thermal.fans","jsonPath":"sample.thermal.fans","displayName":"Fans","unit":"rpm per fan","range":">= 0 per fan","nullable":false,"source":"AppleSMC fan speeds","sourceStability":"best-effort undocumented","refreshCadence":"6 seconds","refreshCadenceSeconds":6,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Empty list with availability unavailable means no fan telemetry.","limitations":["Names are positional labels (FAN 1, FAN 2), not SMC names."],"interpretationNotes":[]},{"id":"gpu.usageFraction","jsonPath":"sample.gpu.usageFraction","displayName":"GPU utilization","unit":"fraction","range":"0...1","nullable":true,"source":"IORegistry PerformanceStatistics utilization keys","sourceStability":"best-effort undocumented","refreshCadence":"7 seconds","refreshCadenceSeconds":7,"derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":["Absent without a supported IOAccelerator utilization key; then utilization, pressure, and working-set values are all null."],"interpretationNotes":[]},{"id":"gpu.pressureFraction","jsonPath":"sample.gpu.pressureFraction","displayName":"GPU pressure (derived)","unit":"fraction","range":"0...1","nullable":true,"source":"max(utilization, working-set ratio)","sourceStability":"derived","refreshCadence":"7 seconds","refreshCadenceSeconds":7,"derivation":"max(gpuUsage, gpuMemoryUsedBytes / gpuMemoryRecommendedBytes)","thresholds":{"elevated":0.7,"constrained":0.85,"critical":0.95},"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"n/a (derived)","limitations":["Derived; not an Apple pressure API."],"interpretationNotes":[]},{"id":"gpu.memoryUsedBytes","jsonPath":"sample.gpu.memoryUsedBytes","displayName":"GPU in-use system memory","unit":"bytes","range":"0...physical memory","nullable":true,"source":"IORegistry 'In use system memory'","sourceStability":"best-effort undocumented","refreshCadence":"7 seconds","refreshCadenceSeconds":7,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Out-of-bounds or zero values rejected as unavailable.","limitations":["Read-only undocumented key; some non-Apple drivers publish it in megabytes, so implausible values are rejected."],"interpretationNotes":[]},{"id":"gpu.memoryRecommendedBytes","jsonPath":"sample.gpu.memoryRecommendedBytes","displayName":"GPU recommended working set","unit":"bytes","range":"> 0","nullable":true,"source":"Metal recommendedMaxWorkingSetSize","sourceStability":"public","refreshCadence":"per launch (lazy)","derivation":null,"thresholds":null,"firstSampleBehavior":"Resolved once on first GPU read.","rollbackBehavior":"Absent when Metal reports no default device.","limitations":["The undocumented registry key is absent on Apple Silicon; the public Metal API is used instead."],"interpretationNotes":[]},{"id":"gpu.workingSetRatioFraction","jsonPath":"sample.gpu.workingSetRatioFraction","displayName":"GPU working-set ratio","unit":"fraction","range":"0...1","nullable":true,"source":"used / recommended","sourceStability":"derived","refreshCadence":"7 seconds","refreshCadenceSeconds":7,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Either input missing reports null.","limitations":[],"interpretationNotes":[]},{"id":"gpu.workingSetHeadroomBytes","jsonPath":"sample.gpu.workingSetHeadroomBytes","displayName":"GPU working-set headroom","unit":"bytes","range":">= 0","nullable":true,"source":"recommended - used","sourceStability":"derived","refreshCadence":"7 seconds","refreshCadenceSeconds":7,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Either input missing reports null.","limitations":[],"interpretationNotes":[]},{"id":"network.downloadBytesPerSecond","jsonPath":"sample.network.downloadBytesPerSecond","displayName":"Network download rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"getifaddrs if_data ibytes deltas over active non-loopback interfaces","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":[]},{"id":"network.uploadBytesPerSecond","jsonPath":"sample.network.uploadBytesPerSecond","displayName":"Network upload rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"getifaddrs if_data obytes deltas over active non-loopback interfaces","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":[]},{"id":"disk.readBytesPerSecond","jsonPath":"sample.disk.readBytesPerSecond","displayName":"Disk read rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"IOBlockStorageDriver Statistics 'Bytes (Read)' deltas","sourceStability":"best-effort undocumented","refreshCadence":"5 seconds","refreshCadenceSeconds":5,"derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":["A failed registry read keeps the last successful baseline; recovery spans the whole gap."],"interpretationNotes":[]},{"id":"disk.writeBytesPerSecond","jsonPath":"sample.disk.writeBytesPerSecond","displayName":"Disk write rate","unit":"bytes/second","range":">= 0","nullable":false,"source":"IOBlockStorageDriver Statistics 'Bytes (Write)' deltas","sourceStability":"best-effort undocumented","refreshCadence":"5 seconds","refreshCadenceSeconds":5,"derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":[]},{"id":"disk.capacityBytes","jsonPath":"sample.disk.capacityBytes","displayName":"Disk capacity","unit":"bytes","range":"> 0","nullable":true,"source":"statfs on the root volume","sourceStability":"public","refreshCadence":"30 seconds","refreshCadenceSeconds":30,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"statfs failure reports null.","limitations":[],"interpretationNotes":["The root shares its APFS container with the Data volume."]},{"id":"disk.availableBytes","jsonPath":"sample.disk.availableBytes","displayName":"Disk available","unit":"bytes","range":"0...capacityBytes","nullable":true,"source":"statfs f_bavail","sourceStability":"public","refreshCadence":"30 seconds","refreshCadenceSeconds":30,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"statfs failure reports null.","limitations":[],"interpretationNotes":["Excludes purgeable files; a neutral capacity reading, never a derived pressure level."]},{"id":"disk.usedBytes","jsonPath":"sample.disk.usedBytes","displayName":"Disk used","unit":"bytes","range":"0...capacityBytes","nullable":true,"source":"capacity - available","sourceStability":"derived","refreshCadence":"30 seconds","refreshCadenceSeconds":30,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Either input missing reports null.","limitations":[],"interpretationNotes":[]},{"id":"disk.usedFraction","jsonPath":"sample.disk.usedFraction","displayName":"Disk used fraction","unit":"fraction","range":"0...1","nullable":true,"source":"used / capacity","sourceStability":"derived","refreshCadence":"30 seconds","refreshCadenceSeconds":30,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Either input missing reports null.","limitations":[],"interpretationNotes":["Neutral fill indicator; disk capacity carries no pressure level."]},{"id":"power.batteryFraction","jsonPath":"sample.power.batteryFraction","displayName":"Battery charge","unit":"fraction of full charge","range":"0...1","nullable":true,"source":"IOPSCurrentCapacity / IOPSMaxCapacity","sourceStability":"public","refreshCadence":"30 seconds","refreshCadenceSeconds":30,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"No internal battery reports null.","limitations":["Desktop Macs have no battery."],"interpretationNotes":[]},{"id":"power.externalPower","jsonPath":"sample.power.externalPower","displayName":"External power connected","unit":"boolean","range":"true|false","nullable":true,"source":"IOPSPowerSourceState == AC Power","sourceStability":"public","refreshCadence":"30 seconds","refreshCadenceSeconds":30,"derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"No internal battery reports null.","limitations":[],"interpretationNotes":[]},{"id":"power.lowPowerModeEnabled","jsonPath":"sample.power.lowPowerModeEnabled","displayName":"Low Power Mode","unit":"boolean","range":"true|false","nullable":false,"source":"ProcessInfo.isLowPowerModeEnabled","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":["A system state, not a Searoom-derived pressure signal."]},{"id":"system.overallPressureLevel","jsonPath":"sample.system.overallPressureLevel","displayName":"Overall pressure","unit":"enum","range":"nominal|elevated|constrained|critical|unavailable","nullable":false,"source":"max of cpu, memory, thermal, gpu levels","sourceStability":"derived","refreshCadence":"requested interval","derivation":"max(cpuPressureLevel, memoryPressureLevel, thermalPressureLevel, gpuPressureLevel)","thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"system.processCount","jsonPath":"sample.system.processCount","displayName":"Process count","unit":"processes","range":">= 0","nullable":true,"source":"proc_listallpids","sourceStability":"public","refreshCadence":"60 seconds","refreshCadenceSeconds":60,"derivation":null,"thresholds":null,"firstSampleBehavior":"First read may report a cached zero (warmingUp).","rollbackBehavior":"proc_listallpids failure reports null.","limitations":[],"interpretationNotes":[]},{"id":"observer.cpuUsage","jsonPath":"sample.observer.cpuUsage","displayName":"Observer CPU","unit":"fraction of one core (may exceed 1)","range":">= 0","nullable":false,"source":"getrusage(RUSAGE_SELF) CPU-time deltas","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"First read is a zero baseline (availability warmingUp); the next sample carries the rate.","rollbackBehavior":"Counter rollback yields zero for that interval, never a negative rate.","limitations":[],"interpretationNotes":["Describes the sampling process: searoom-cli for live CLI output, searoom-app for persisted history.","Can exceed 1.0 on multiple cores; do not clamp without changing its meaning."]},{"id":"observer.residentMemoryBytes","jsonPath":"sample.observer.residentMemoryBytes","displayName":"Observer resident memory","unit":"bytes","range":">= 0","nullable":false,"source":"mach_task_basic_info resident_size","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured immediately.","rollbackBehavior":"Read failure reports null with availability unavailable.","limitations":[],"interpretationNotes":["Describes the sampling process, not the workloads being observed."]},{"id":"status.limitingResources","jsonPath":"status.limitingResources","displayName":"Limiting resources","unit":"list","range":"0...4 entries","nullable":false,"source":"resources tied at the highest pressure level","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":["Ties are retained: two resources at the same level both appear. Unavailable sensors are never limiting."]},{"id":"status.derived.memoryUsedFraction","jsonPath":"status.derived.memoryUsedFraction","displayName":"Memory used fraction","unit":"fraction","range":"0...1","nullable":true,"source":"usedBytes / totalBytes","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"status.derived.memoryCompressedFraction","jsonPath":"status.derived.memoryCompressedFraction","displayName":"Memory compressed fraction","unit":"fraction","range":"0...1","nullable":true,"source":"compressedBytes / totalBytes","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"status.derived.gpuWorkingSetHeadroomBytes","jsonPath":"status.derived.gpuWorkingSetHeadroomBytes","displayName":"GPU headroom","unit":"bytes","range":">= 0","nullable":true,"source":"recommended - used","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"status.derived.diskUsedFraction","jsonPath":"status.derived.diskUsedFraction","displayName":"Disk used fraction","unit":"fraction","range":"0...1","nullable":true,"source":"used / capacity","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"status.derived.powerStateLabel","jsonPath":"status.derived.powerStateLabel","displayName":"Power state label","unit":"label","range":"text","nullable":false,"source":"external power + Low Power Mode","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"status.derived.swapActivityState","jsonPath":"status.derived.swapActivityState","displayName":"Swap activity","unit":"enum","range":"active|idle|unavailable","nullable":false,"source":"any swap or compression rate >= 1 byte/second","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":["Activity, not pressure."]},{"id":"status.derived.fanState","jsonPath":"status.derived.fanState","displayName":"Fan state","unit":"enum","range":"spinning|idle|unavailable","nullable":false,"source":"any fan rpm > 0","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"status.derived.observerState","jsonPath":"status.derived.observerState","displayName":"Observer state","unit":"enum","range":"pressure level of clamped observer CPU","nullable":false,"source":"PressureLevel.from(min(1, observer.cpuUsage))","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":[]},{"id":"status.sustained","jsonPath":"status.sustained","displayName":"Sustained pressure","unit":"duration","range":"seconds","nullable":true,"source":"time the current overall level has held across recent persisted history","sourceStability":"derived","refreshCadence":"with sample","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived per sample.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":["null with a reason when history is missing or stale; one sample is never evidence of a sustained run.","boundedByHistoryWindow true means the run spans every retained sample and the duration is a floor."]},{"id":"history.sustainedBeforeFiltering","jsonPath":"history.sustainedBeforeFiltering","displayName":"Sustained pressure (full archive)","unit":"duration","range":"seconds","nullable":true,"source":"computed from the full persisted archive before --since/--until/--limit","sourceStability":"derived","refreshCadence":"per history read","derivation":null,"thresholds":null,"firstSampleBehavior":"Derived from the archive.","rollbackBehavior":"n/a","limitations":[],"interpretationNotes":["Prevents --limit from making a run appear bounded by the returned subset."]},{"id":"topProcess.byCPU","jsonPath":"sample.topProcesses.byCPU","displayName":"Top processes by CPU rate","unit":"list of 0...5 readable processes, strongest first","range":"0...5 entries; cpuUsage >= 0 per entry and unclamped","nullable":false,"source":"sysctl kern.proc enumeration with proc_pidinfo(PROC_PIDTASKINFO) per process; CPU rate from cumulative pti_total_user+pti_total_system deltas","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"The CLI primes per-PID baselines across one requested interval, so the first primed sample already carries a full ranking.","rollbackBehavior":"Counter rollback, usually a recycled PID, yields zero for that interval, never a negative rate.","limitations":["Readable processes only: sandboxed helpers and other-user processes that refuse the probe are omitted, never shown as zero.","kernel_task and hidden processes are not attributable per process.","The ranking lives beside the sample and is never persisted to history, so history documents carry no topProcesses key.","GPU and temperature attribution per process has no public macOS API and is deliberately not attempted."],"interpretationNotes":["cpuUsage is CPU seconds per wall second and can exceed 1.0 when a process uses several cores; do not clamp without changing its meaning.","A column with no measurable consumers is empty, which is a real zero reading rather than missing data."]},{"id":"topProcess.byMemory","jsonPath":"sample.topProcesses.byMemory","displayName":"Top processes by resident memory","unit":"list of 0...5 readable processes, largest first","range":"0...5 entries; residentBytes >= 0 per entry","nullable":false,"source":"pti_resident_size from the same proc_pidinfo(PROC_PIDTASKINFO) read as the CPU list","sourceStability":"public","refreshCadence":"requested interval","derivation":null,"thresholds":null,"firstSampleBehavior":"Measured on the first primed sample; no baseline needed.","rollbackBehavior":"n/a (instantaneous reading).","limitations":["Readable processes only: sandboxed helpers and other-user processes that refuse the probe are omitted, never shown as zero."],"interpretationNotes":["Resident memory is the working set, not the GPU working set; pair with gpu.memoryUsedBytes for unified-memory pressure."]}]