The dirty-tree component matters most in practice. Most measuring happens on uncommitted work, and
keying on the SHA alone makes ten experiments overwrite each other under one identity.
Run identity
A build can be measured many times. Each synthetic run gets a sortable id and an environment fingerprint:Route identity
Trends are keyed on the page file path, not the URL pattern:.perf/aliases.json stitches it back.
Orphaned history
Squash merges destroy the pre-squash SHAs, so ancestry lookup finds nothing. Every snapshot also stores asourceSignature — a hash of the route table and module set — so an orphaned baseline can
be re-linked by content.