Results

Validation

Browser numbers cannot be proven honest. They can be made hard to fake by accident and awkward to fake on purpose.

Ticketsigned, single useRunin the browser, 30 s+Submitchecks on the serverVerifiedranks, rewards, The StackUnrankedThe Stack onlyRejectedaudit only, never shown4xx, never stored:bad or used ticket, too fast,malformed, rate limited
Every submission gets exactly one status. Only verified runs rank or earn points.

Tickets

Issued
When a run starts, by POST /api/ticket. HMAC-signed with a server secret.
Minimum age
30 s when the result arrives (8 s for development quick runs).
Maximum age
30 minutes.
Duration
The claimed run duration cannot exceed the ticket's age plus 5 s.
Single use
The nonce is written to used_tickets in the insert transaction; a replay returns 409.

Rules

The server recomputes the score and applies these checks to every submission.

ConditionFlagOutcome
Unknown engine versionengine-mismatchRejected
Fewer than 5 kept samples in a phase (3 for latency)insufficient-samplesRejected
A phase reports zero or a non-finite valuezero-throughput, non-finiteRejected
Random above 0.5 × readimplausible-randomRejected
Copy above 1.2 × the larger of read and writeimplausible-copyRejected
Sustain above 1.1 × copyimplausible-sustainRejected
Latency below 60 ns or above 100 µsimplausible-latencyRejected
Run shorter than 30 stoo-shortRejected
Any phase above 1.1 × a fixed published peakexceeds-published-peakRejected
Quick mode submitted to productionquick-modeRejected
Above a fixed published peak, within 10 %above-published-peakUnranked
Above 1.1 × the envelope of a variable classabove-spec-envelopeUnranked
Model hidden, or WebGL and WebGPU disagreemodel-unresolvedUnranked
Model parsed but not in the spec tablemodel-unlistedUnranked
Software renderersoftware-adapterUnranked
Working set below 256 MiBreduced-workloadUnranked
Read, write or copy spread above 25 %unstableUnranked
Wall-clock timing, hidden tab, declared form factor, clamped byte countwall-clock-timing and othersNote

The same checks bound what reaches The Stack totals: working sets must be engine-shaped, and byte counts are capped at duration × peak throughput.

Flag meanings

What a result shows for each flag, rendered from src/lib/shared/resultView.ts.

quick-modeQuick mode: shortened phases for development. Not part of The Stack's production data.
model-unresolvedThis browser hides the GPU model, so the run cannot join a device class. Chrome and Edge expose it.
software-adapterA software renderer ran this test instead of your GPU.
reduced-workloadThe browser capped buffer sizes, so the working set was smaller than standard.
unstableSamples varied by more than 25 %. Close other GPU work and run again.
above-spec-envelopeThroughput above the published peak for this class. Flagged for review.
above-published-peakThroughput slightly above the published peak (overclocked memory or a measurement error). Measured, not ranked.
model-unlistedThis GPU model has no published memory spec on file yet, so its runs cannot rank until the class is added.
bytes-moved-clampedThe reported data volume exceeded what the run could have moved and was capped.
duration-mismatchThe run reported a longer duration than the time since it started.
exceeds-published-peakThroughput above the published peak for this device: caching or tampering.
insufficient-samplesToo few stable samples to report.
inconsistent-statsThe reported statistics contradict each other, so the run cannot be trusted.
duplicate-resultThis exact result was already submitted.
implausible-randomScattered reads outran sequential reads, which a real memory system cannot do.
implausible-copyCopy throughput is inconsistent with read and write.
implausible-sustainSustained throughput is inconsistent with copy.
implausible-latencyLatency outside any physical range.
too-shortThe run finished faster than the workload allows.
engine-mismatchUnknown benchmark engine version.
zero-throughputA phase reported no throughput.
non-finiteA phase reported an invalid number.
wall-clock-timingTimed with the wall clock because GPU timestamps were unavailable.
tab-hiddenThe tab was hidden for part of the run.
declared-laptopForm factor declared as laptop.
declared-desktopForm factor declared as desktop.

Limits

Tickets
40 per hour per client address
Submissions
24 per hour per client address, 60 per day per operator
Body
256 KB, enforced while streaming

Browser numbers cannot be proven honest. The checks keep obviously invalid runs off the boards; points are capped and every competitive reward is class-relative, so a forged number buys little.