the same surfaces sampled twice in one page return the same answers
Every sampled surface returns an identical answer on both passes. Brave's stock farbling makes several of them move and is declined rather than scored.
What a detector infers
This is the two repeat-render rows generalised across every surface at once, and the argument for it comes from how detector scores actually behave rather than from any single probe. In a published teardown of a deployed commercial agent, identical captured payloads resubmitted a week apart came back with materially different tampering and anti-detect verdicts — model drift, accumulated replay history, or both, not separated by the researchers.
The lesson survives past that one vendor: an absolute score from a live detector is not a measurement, and the only comparison that carries information is a difference against a control taken in the same session. That discipline has to apply to this page too, because this page publishes a number.
A browser whose surfaces move between two samples taken seconds apart does not have a fingerprint — it has a distribution, and every other row in the report is a single draw from it, including the score at the top. Only surfaces that are functions of the BUILD are sampled: canvas, WebGL readback, text metrics, element geometry, the parameter table and the hardware scalars.
Everything that reads a clock or a counter is deliberately excluded, because those are supposed to move, and a stability check that flagged them would be measuring the wrong thing.
How to resolve it
Seed per-surface noise once per session rather than per call. Past the tell itself, instability undermines your own testing: interpreting any detector's score requires a control measured in the same session, and that comparison is only valid if the browser answers the same question the same way twice.
Nearby checks in Render & GPU
- the WebGL2 element-count limits are reported beside the renderer that claims them
webgl-max-elements-readoutMAX_ELEMENTS_INDICES and MAX_ELEMENTS_VERTICES are hints the driver publishes about how many indices and vertices it draws efficiently in… - the WebGPU preferred canvas format is reported beside the claimed platform
webgpu-canvas-format-readoutnavigator.gpu.getPreferredCanvasFormat() returns the texture byte order the platform's compositor wants to be handed — and that preference… - drawing the same scene twice produces the same pixels
canvas-repeat-render-determinismCanvas noise is usually reasoned about as a trade: give up a stable hash, gain an unlinkable one. - reading the same framebuffer twice returns the same bytes
webgl-repeat-readback-determinismThe same assertion as the canvas row beside it, asked one layer down the graphics stack, and separate from it because a build can be… - MathML scripts are shaped with real metrics, not flattened to text
mathml-metrics-vs-osMathML metrics sit in the long tail of a deployed collector's signal inventory, read through an <mmultiscripts> element. - a hidden child realm lays text out exactly as the page does
hidden-iframe-layout-agreementA deployed commercial agent does not run most of its collectors in the page. - the time a hidden frame takes to be created and measured in is reported
hidden-iframe-completion-budgetThe second failure mode of the hidden-frame modality, and one nothing in this audit could previously report: not a wrong answer, but no… - GPU-side pass timing is reported beside the wall clock
webgpu-timestamp-vs-wallclockA deployed commercial agent's GPU collector is not a pixel hash.
Clearcote is a browser built for fingerprint coherence
It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.
This audit takes no position on how Clearcote scores on Render & GPU checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.
See the other checks in Render & GPU — the family answer-stability-across-passes belongs to.
