A Hydra sketch with no time or reactive term is static by construction, the [NOW] proxy for a frozen-frame check
The true frozen-frame check — measuring inter-frame difference over time while motion was intended — is [L3]-blocked. Its static [NOW] proxy is whether the sketch contains any time or reactive term at all: a time thunk (() => …), the time variable, or an a.fft[i] read. If none is present, the sketch is static by construction and cannot animate, which is detectable today by reading the code. A constant parameter therefore signals a frozen frame whenever motion was intended, without needing a screenshot.
Examples
.rotate(0.1) is a constant — static by construction, no motion. .rotate(() => 0.1 + a.fft[0]*0.3) contains a reactive thunk, so motion is at least possible.
Assessment
Describe the [NOW] proxy for a frozen-frame check. Given .scale(1.2) versus .scale(() => 1 + a.fft[0]*0.3), which is static by construction and why?