Runs & comparison (Pro)
Capacity questions are almost never asked once. The interesting form is “what changed” — and none of that is visible in a single number, however accurate.
What a run stores
A run is a snapshot of what Heat believed at a moment:
- The projection: ceiling, ranked walls, the ladder, the verdicts.
- The machine it was taken on, including which values were read and which inferred.
- The workload: every per-request cost, whether measured or estimated, and the mix.
- The assumptions and warnings in force at the time.
- The environment, and Craft’s own configuration findings.
Replayed, not recomputed
Opening an old run rebuilds its projection from the machine and costs it was taken with, not today’s. That is the entire reason runs are worth keeping: a projection replayed against the current server would silently answer a different question from the one it was saved to answer, and the difference between the two is precisely what somebody opening a three-month-old run is trying to see.
What it catches
- The release that added forty queries to the homepage.
- The cache that stopped being warmed.
- The host that quietly halved the CPU quota.
- The plugin whose event handler doubled the cost of every save.
- The outbound API that got slower without anyone noticing, because the CPU graph never moved.
Keep one before a release and one after. That comparison is worth more than either number alone.
Keeping one
From the control panel, Keep this projection on the Overview. From the console:
php craft heat/capacity --save
php craft heat/measure --save
Retention
Pro keeps the last 50 by default, configurable. Lite keeps the most recent one — enough to look at what you just asked for.
A run’s payload is a complete snapshot, a few tens of kilobytes of JSON. A scheduled projection running nightly would put tens of megabytes into the database in a year for information nobody will read, so the window is bounded rather than infinite. Individual measurement samples are deliberately not stored: a pass takes a few hundred, they are only interesting while the spread is being read, and keeping them would be megabytes of noise per run.
Environments
A run records which environment produced it, because a run from a laptop and a run from production are not comparable and the list has to be able to say so at a glance. The same applies to costs: if the stored measurements came from somewhere other than where you are projecting, Heat says so — measurements from a laptop and a machine configured for production are each reasonable and together meaningless.