DEMO
velocity_std—path_efficiency—pause_count—movement_onset_ms—jerk_std—angular_velocity_entropy—timing_cv— Score —
Trace from green to red
PIPELINE
01
Proof of work SHA-256 hash prefix, 14–24 bits. Adaptive difficulty based on client signals.
02
Maze generation Growing Tree algorithm, seeded PRNG. Server regenerates from seed for trustless validation.
03
Motor-control analysis 12 behavioral features (7 public + 5 secret, server-only) extracted from raw pointer events. Scored against per-maze baselines.
04
Stroop probes Color-word interference at maze decision points. Server derives timing from event stream.
05
Signature binding ECDSA P-256 ephemeral keypair. Public key bound at challenge issuance, verified on submission.
06
Reputation Behavioral consistency across sessions. EMA trust scores keyed by stable device identifier.
FEATURES EXTRACTED
velocity_stdStandard deviation of tangential velocity across 60Hz resampled trajectory.path_efficiencyEuclidean start-to-exit distance divided by actual path length.pause_countIntervals where velocity < 0.0005 for ≥ 100ms. Correlated with maze decision points.movement_onset_msTime from first event to first significant movement above threshold.jerk_stdStandard deviation of the third derivative of position.angular_velocity_entropyShannon entropy of direction changes across 16 angular bins.timing_cvCoefficient of variation of raw inter-event intervals. Computed pre-resampling.INTEGRATION
ProtectedForm.tsx
import { Cerno } from '@cernosh/react'
function ProtectedForm() {
return (
<Cerno
siteKey="ck_05a716da..."
sessionId={session.id}
onVerify={(token) => submit(token)}
/>
)
} verify.ts
import { verifyToken } from '@cernosh/server'
const result = await verifyToken(token, {
secret: process.env.CERNO_SECRET,
sessionId: req.session.id,
})
// { valid: boolean }