Clipping guard: after the p99 pass, if more than this fraction of the lit
subject is blown to near-white (bright AND desaturated), step exposure down
until it isn't. This is what actually kills the additive/HDR white-out that
a percentile target alone misses (the subject can have a huge blown core yet
a below-target p99). scripts/gallery/score_exposure.py re-derives the same
three numbers offline (hand-synced, and off a lossless PNG rather than this
pass's JPEG-q70 screenshot, so the two can disagree at the margin). The
scorer does not mirror the guard's range or step: a clipped frame that
exhausts the guard is independently OVER offline, while background-only
exhaustion is intentionally a harness-only warning.
Clipping guard: after the p99 pass, if more than this fraction of the lit subject is blown to near-white (bright AND desaturated), step exposure down until it isn't. This is what actually kills the additive/HDR white-out that a percentile target alone misses (the subject can have a huge blown core yet a below-target p99).
scripts/gallery/score_exposure.pyre-derives the same three numbers offline (hand-synced, and off a lossless PNG rather than this pass's JPEG-q70 screenshot, so the two can disagree at the margin). The scorer does not mirror the guard's range or step: a clipped frame that exhausts the guard is independently OVER offline, while background-only exhaustion is intentionally a harness-only warning.