Skip to content

Add a visual instability heatmap to the frame diffs#2533

Merged
soulgalore merged 1 commit into
mainfrom
instability-heatmap
Jul 20, 2026
Merged

Add a visual instability heatmap to the frame diffs#2533
soulgalore merged 1 commit into
mainfrom
instability-heatmap

Conversation

@soulgalore

Copy link
Copy Markdown
Member

Per-frame diffs answer "what changed in this frame", but the question that cost us days on a recent Last Visual Change hunt was "which parts of the page keep changing" — invisible re-rasterization noise looks exactly like real churn until you see it accumulated. The diff loop already walks every adjacent frame pair, so it now also counts how many times each pixel changed and writes one instability.png: the final frame ghosted, changed pixels tinted amber (changed once) to deep red (changed ten or more times). Stable pages read as flat amber; noise reads as red speckle in the shape of the text; a restless ad slot reads as a solid red block. The color scale is fixed rather than normalized per run so two runs' heatmaps compare side by side.

A Frame Instability summary in the JSON (share of pixels changed once / repeatedly, max changes) lets dashboards track restlessness over time. Everything rides the existing videoParams.filmstripDiff flag.

Co-authored-by: Claude Fable 5 noreply@anthropic.com
Change-Id: I7022eb7f85d235adb8fff95838296f2107c2a520

Per-frame diffs answer "what changed in this frame", but the question
that cost us days on a recent Last Visual Change hunt was "which
parts of the page keep changing" — invisible re-rasterization noise
looks exactly like real churn until you see it accumulated. The diff
loop already walks every adjacent frame pair, so it now also counts
how many times each pixel changed and writes one instability.png:
the final frame ghosted, changed pixels tinted amber (changed once)
to deep red (changed ten or more times). Stable pages read as flat
amber; noise reads as red speckle in the shape of the text; a
restless ad slot reads as a solid red block. The color scale is
fixed rather than normalized per run so two runs' heatmaps compare
side by side.

A Frame Instability summary in the JSON (share of pixels changed
once / repeatedly, max changes) lets dashboards track restlessness
over time. Everything rides the existing videoParams.filmstripDiff
flag.

Co-authored-by: Claude Fable 5 noreply@anthropic.com
Change-Id: I7022eb7f85d235adb8fff95838296f2107c2a520
@soulgalore
soulgalore merged commit aa21aab into main Jul 20, 2026
17 checks passed
@soulgalore
soulgalore deleted the instability-heatmap branch July 20, 2026 06:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant