An animated figure can pass every build check and still be the wrong figure. The input might have changed, the preparation step might have cropped it differently, or the renderer might have altered its proportions and coverage. Those failures can look similar on screen, but they need different checks.
The Tesseract Memory separates three questions: which files are the reference, what data was generated from them, and what the browser actually draws. Keeping those questions separate makes a failed comparison easier to investigate. It also prevents a green checksum check from being mistaken for visual approval.
Give each source a role
The source lock records three distinct roles: the supplied homepage reference, the Reach particle-source image, and the transparent Reach artwork master. They are not interchangeable files. The page reference establishes the intended composition; the transparent master is the image used for the static fallback and the native Reach particle data.
Each entry records a repository-relative path, a SHA-256 digest, and its dimensions. The verifier checks the file’s bytes, PNG signature, and recorded dimensions. It also resolves the actual filesystem path, so a repository-relative symlink cannot quietly point to a different file outside the project.

The transparent Reach artwork master used by the static fallback and native Reach particle data. This is the source image, not a capture of the animated renderer.
Make a changed input an explicit decision
A failed digest check stops the guarded workflow. Updating the expected hash simply to make the check pass would erase the distinction the lock is meant to preserve. A deliberate source replacement needs a reviewed change to the reference contract, followed by regenerated data and a new visual comparison.
npm run figure:verify
npm test
npm run buildThe default build command invokes the source verifier through its prebuild hook. The current dense-data and figure-sequence preparation commands also invoke it. This is a property of those entry points, not a universal filesystem guarantee: calling Next’s build command directly does not run the npm prebuild hook.
Check the generated representation separately
An unchanged image does not guarantee an unchanged particle representation. The data tests therefore check the compressed and decoded payload hashes, the source identities recorded in the manifest, and the complete four-state layout.
For Reach, the test walks the original image in row order. Every texel above the alpha threshold must retain its particle ID, original RGB, and original alpha. Position encoding is checked against the source coordinates. Other checks confirm that the four poses are distinct and retain the same anatomical populations.
These checks narrow the possible failure. If the source lock passes but the particle data does not, the preparation stage deserves attention. If both pass and the figure looks wrong, the browser transform, coverage, point rendering, or deformation rules still need inspection.
Leave the visual question open
Neither set of checks can establish that a hand reads clearly at a particular viewport, that the neck stays connected while breathing, or that a transition preserves the intended silhouette. That requires the actual page, including intermediate frames, reverse scrolling, responsive layouts, and fallback states.