Gate A focuses on the lowest-risk, highest-residency wins:
- skip Falcon CPU lookup unless the menu bar is rendering
CPU + Memory - skip disk polling when the disk card is hidden
xcodebuild -project MenuBarStats.xcodeproj \
-scheme MenuBarStats \
-destination 'platform=macOS,name=My Mac' \
build
xcodebuild -project MenuBarStats.xcodeproj \
-scheme MenuBarStats \
-destination 'platform=macOS,name=My Mac' \
testswift test --package-path MenuBarStatsPackage
swift test --package-path MenuBarStatsPackage --filter StatsRefreshCoordinatorTestsThe app emits signposts for:
SummaryRefreshFalconLookupDiskRefreshTopCPUProcessListTopMemoryProcessListStatusItemRender
Use these templates:
Time ProfilerLoggingSystem TraceAllocations
If a future Xcode install exposes a dedicated Points of Interest template again, it can be used in place of Logging.
Mandatory scenarios:
- closed idle, balanced preset,
CPU + Memory, 5 minutes - closed idle,
CPU %, 5 minutes - closed idle with disk hidden, 5 minutes
- open popover, balanced preset, 2 minutes
- open popover, frequent preset, 2 minutes
- preset switch: light -> balanced -> frequent -> balanced, 2 minutes
Suggested command shape:
xcrun xctrace record \
--template 'Logging' \
--attach <PID> \
--time-limit 5m \
--output .omx/artifacts/xctrace/gate-a-closed-idle.trace- app CPU %
- wakeups / timer activity
- child-process launches per minute
- p50 / p95 refresh durations
- resident memory drift
- status-item renders per minute
- closed
.iconOnly/.cpuPercent:0child-process launches per minute - disk hidden:
0disk refresh work items - closed average app CPU:
<= 0.5% - closed resident memory drift over 10 minutes:
<= 10 MB