Technical reference · For reviewers, procurement, and skeptics

How Solus detects transcription.

The single most common critique of any keystroke-provenance system is straightforward: what if someone reads an AI response on their phone and types it verbatim into the editor? The keystrokes are physical. The certificate signs the file. Every pathway-based check confirms the pathway is genuine — because it is. So what does the verification actually prove?

Last reviewed: August 2026 · Full technical spec: public repository · Questions: soluseditor@gmail.com

"Composed writing and transcribed writing are pathway-identical but behaviorally distinct. A person composing text produces a characteristic temporal, editorial, and spatial signature that a person transcribing text — from any source, phone, second monitor, printed page — does not naturally reproduce."

The transcription-attack ceiling

Solus's primary provenance checks (paste quarantine, hardware-injection detection, ledger signing, similarity-to-source detection, certificate integrity) each answer a question about the input pathway. Under a phone-transcription attack, all of them pass because the pathway is genuine: real keystrokes, real user, real signature. That is not a Solus bug — that is the mathematical limit of pathway-based verification.

Solus's answer is not to pretend the ceiling doesn't exist. It is to add a second, orthogonal layer of measurement on top of the pathway: six behavioral signals computed from the timing, editorial, spatial, attention, and personal-rhythm patterns of the keystrokes themselves. Composition and transcription are behaviorally distinct even when they are pathway-identical, and the difference is statistically detectable.

The six behavioral signals

Each signal is a pure function over the keystroke ledger the editor already records. No new instrumentation. No content analysis. Every signal is interpretable — a teacher can point to specific evidence, not a black-box classifier verdict.

1Typing rhythm

Real writing alternates 5-30 second typing bursts with 2-90 second thinking pauses. The pause distribution is heavy-tailed. Transcription is metronomic — each pause reflects the constant cost of glancing at the source.

Composed: high coefficient of variation on pause lengths
Transcribed: narrow, uniform distribution

2Editing behavior

Real writers backspace 10-30% of their keystrokes and use the cursor to revise. Transcribers correct typos only; backspaces are rare and cursor jumps are near-zero.

Composed: 10-30% edit ratio, frequent cursor jumps
Transcribed: under 3% edits, linear text flow

3Text-flow linearity

Real writers jump around the document — write the introduction, expand paragraph three, go back and revise the introduction. Transcribers write top-to-bottom in the order they read.

Composed: 20-60% of text is out-of-typing-order
Transcribed: near-100% linear insertion

4Pause locations

Composer thinking pauses cluster at sentence and paragraph boundaries — the natural cognitive-load points. Transcriber pauses cluster at word boundaries — the "look at phone, read a few words, look back, type" rhythm.

Composed: 55-80% of pauses at semantic boundaries
Transcribed: 60-85% of pauses at word boundaries

5Attention / focus loss

The transcriber-from-phone pattern leaves a distinctive attention trace: many short window-blur events, each in the one-to-four-second glance range, with typing resuming within milliseconds of regaining focus. Real writers rarely blur; when they do, it's for a real interruption and they re-engage before typing.

Composed: 0-1 blurs, minutes-long if any, seconds-long resume
Transcribed: 5-20+ blurs, 1-4s away each, sub-second resume

6Personal typing baseline

Each writer has a unique keystroke rhythm — dwell time per key, gap time between digraphs. After a few submissions the app learns the pattern. When someone else types on the account (or the same person is transcribing — which is slower and more uniform than natural composition), the rhythm signature deviates.

Composed: matches user's own historical rhythm
Transcribed: shifted dwell distribution, uniform cadence

How the signals combine — two independent axes

Signals feed into a two-axis verdict. Axis A is the cryptographic provenance layer — the paste blocker, hardware-injection detection, ledger integrity, and certificate signature. Axis B is the behavioral layer described above. The Verified Human™ badge is only awarded when both axes pass:

A+B
Verified Human — provenance intact AND the writer is enrolled AND their typing pattern matches their baseline. Badge renders.
A only
Provenance intact, behavior limited — the cryptographic checks all pass but the writer hasn't fully enrolled yet, or their behavioral pattern only partially matches. No badge, but the file isn't tampered with.
A, ~B
Provenance intact, pattern mismatch — enrolled writer, but this submission's typing dynamics don't match the writer's own baseline. Either someone else typed it, or the writer is transcribing from an external source. Badge withheld; reviewer sees the specific flagged signals.
¬A
Tampered — the certificate has been altered, the signature doesn't verify, or the ledger's Merkle root is broken. Badge withheld regardless of behavioral score.

Two-axis rather than one-score is deliberate. Cryptographic integrity is a hard fact — the signature either verifies or it doesn't. Behavioral consistency is a probabilistic signal. Combining them into a single 0-100 number would hide which axis actually failed, and let a would-be attacker guess whether pathway-tampering or behavioral-mimicry got them caught. Reviewers see both axes independently.

What this catches, honestly

Casual transcription — student reads ChatGPT on their phone and types the essay into Solus — is detected reliably. The scoring separates composed and transcribed sessions in every synthetic and real-world case we've tested; a metronomic 30-minute transcription with few edits and no cursor jumps scores near zero.

A determined attacker who reads this page and takes active steps to counter each signal — inserting artificial pauses at sentence boundaries, adding fake backspaces, jumping the cursor around occasionally — can approximate a composition profile over enough time. The design premise is not that this is impossible; it is that the effort required to fake it exceeds the effort of doing the assignment. In practice, the transcription attack was appealing because it took 30 seconds to generate and 30 minutes to type. When "type it convincingly" turns into 90+ minutes of consciously mimicking composition patterns, the economics collapse.

What this does not attempt: to judge the quality or content of the writing, to identify individual authors from a global corpus, or to detect stress, mood, or health conditions. It answers one question — does this session's behavior look like composition or transcription? — and reports the answer with per-factor evidence a reviewer can weigh.

Known false-positive patterns

Not every low score is a cheater. The reviewer UI shows the underlying metric so judgment can override the score. Documented patterns where a legitimate writer may score lower than composition-typical:

Where it fits

The behavioral layer is additive. It does not replace, weaken, or reword any existing check. The Verified Human™ shield now renders when both hold: tamper-clean AND composition-consistent.

Reviewers who want more than the categorical label can expand the per-signal breakdown to see exactly which pattern the analyzer picked up on. The model version is stamped on every score, so the same submission scored months apart always reports the same number as long as the model hasn't changed.