Public verifier · No account required

Verify a .solus document.

Two independent axes, 29 checks total. A file that passes both earns the Verified Human™ mark. Everything runs in your browser — nothing is uploaded.

Drop a .solus file here

or click to browse your computer

Works with all Solus documents. No account required.

How verification works

Two independent axes. 29 checks. One badge.

Solus doesn’t hand out a single “authenticity score.” A .solus file’s cryptographic provenance and the writer’s typing pattern are graded independently, then combined into a verdict. Both run locally — your file never leaves this page.

Axis A Provenance Integrity

Purely cryptographic. Confirms the signature verifies against the certificate body, the certificate body’s hash matches its commitment, and the keystroke ledger + segment records still reproduce their commitments.

Archive integrity Provenance metadata Cryptographic seal Tamper-evident record

19 checks · any fail → verdict is tampered

Axis B Human-Origin Support

Behavioral. Does the writer have an established typing baseline, and does this submission’s rhythm match it? Composition-vs-transcription signal, pause-location distribution, and anti-transcription composite — all measured against the writer’s own history.

Writer identity Behavioral evidence Composition signals Policy + input purity

10 checks · any hard fail → unsupported; partial → limited

Verified Human™ is only awarded when both axes come back green. Anything less shows which axis fell short and why.

All 29 checks in detail

Every verification result includes each of these individually — with pass, warn, fail, or skip status.

Axis A · Provenance Integrity · 19 crypto checks
Archive integrity
A01
Magic prefix
First 7 bytes must be SOLUS\x01\x00. Rejects anything that isn’t a Solus document.
A02
Manifest present and parseable
manifest.json (desktop) or meta.json (web) exists in the archive and parses as JSON.
A03
Schema version declared
Manifest declares which .solus schema version it uses, so downstream field expectations are correct.
A11
Content payload present
One of content.enc, payload.bin, or document.json is present. Without it there’s nothing to grade.
Provenance metadata
A04
Document ID present
Every certified doc carries a UUID. Missing = the file was hand-assembled outside the editor.
A05
Creation timestamp valid
Valid ISO date. Enables audit chronology. Rejects timestamps far in the future.
A06
Certificate present
certificate.json exists and parses. It’s the object that gets signed and vouches for authorship.
Cryptographic seal
A07
Certificate body commitment
SHA-256 of the canonicalized cert body must match the stored certificateBodyCommitment. Catches post-signing edits that don’t break the signature.
A08
Signing public key present
Writer’s ECDSA-P256 public key is embedded so the signature can be verified offline.
A09
Signature value present
Signature field is present and non-empty. Its absence means nothing was signed.
A10
ECDSA-P256 signature valid
The signature cryptographically validates over the certificate body commitment. Primary tamper-detection check.
Tamper-evident record
A12
Ledger Merkle root matches
Keystroke ledger events re-hash to provenanceRecordCommitment. Detects edits to the keystroke log made after signing.
A13
Segment commitments match
Every segment’s SHA-256 matches its stored segmentRecordCommitment. Detects edits to individual segments.
A14
Source-quarantine linkage
Every source-derived segment has a valid reciprocal quarantine record — bidirectional. Detects attempts to hide a source derivation by removing one side of the link.
Axis B · Human-Origin Support · 10 behavioral checks
Writer identity
B01
Writer enrollment status
Writer is enrolled. Only enrolled writers can earn the badge; new writers show as enrolling and legacy files as unsupported.
B04
Baseline consistency
Doc’s typing dynamics match the writer’s established baseline (composite distance ≤ 0.15). Ties the document to the writer’s identity via biometrics.
B09
First-device penalty
Signed on a new device (chainReset=true) drops the verdict to limited. Prevents “steal account, sign on new machine” from earning the badge instantly.
Behavioral evidence
B02
Keystroke evidence sufficiency
Doc’s word count corresponds to a plausible keystroke count. Fewer than 1.5 keystrokes per word is consistent with pasted or imported content, not composition.
B03
Behavioral profile present
Certificate carries a behavioralIntegritySummary object with Welford dwell / flight / burst stats and derived signals.
Composition signals
B05
Composition-vs-transcription (baseline-relative)
Doc’s composition score sits inside the writer’s own baseline distribution. Catches drift from the writer’s normal composition pattern.
B08
Composition floor (absolute)
Composition score ≥ 55 regardless of baseline. Defeats the “poison your own baseline with transcription patterns during enrollment” attack.
B10
Anti-practiced-transcription composite
Five-signal composite catches the “read off a phone and transcribe” attack: pause locations vs sentence boundaries, attention continuity, dynamics KL vs baseline, non-linearity of edits, and word-timing predictability. Simultaneously gaming all five is hard.
Policy + input purity
B06
No synthetic input in accepted content
Zero programmatic keydowns reached the accepted doc. Any synthetic input in accepted content is a red flag — auto-typer, injection, or macro.
B07
Paste policy compliance
Actual paste behavior matches the declared policy (open / attributed / sealed_until_review / blocked). A doc that violates its own declared policy isn’t credible.

Understanding the verdict

Five possible outcomes. The Verified Human™ badge only appears for the first.

Verified Human

Both axes green

Provenance intact and the writer’s typing pattern matches their enrolled baseline. The strongest claim Solus can make.

⚠ Partial

Provenance intact, behavior limited

Cryptographic checks pass, but one or more behavioral signals came back mixed. Not a tamper — teacher reviews in context.

— Unsupported

Provenance intact, no baseline

File is cryptographically clean, but the writer hasn’t enrolled — behavioral verification wasn’t available. Common for legacy files and new users.

… Enrolling

Writer enrollment in progress

Provenance intact. The writer is still building their typing baseline; the badge will unlock on future submissions once enrollment completes.

Tampered

Cryptographic evidence altered

Signature doesn’t verify, cert body was mutated, ledger Merkle root doesn’t reproduce, or the archive was manipulated. A valid Solus file cannot become tampered by accident — treat this as a serious finding.

Your file never leaves your device.

Verification runs entirely in your browser using the Web Crypto API and JSZip. No data is sent to X Point's servers or any third party. You can verify this by disconnecting from the internet before dropping a file — it still works.

Want Solus for your class?

Students write in Solus free. Teachers verify with one click.