Source: https://guthlabs.ai/docs/instruments/typing-wpm-accuracy-calculator/

instrument / verified-clean

# Typing WPM / Accuracy Calculator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/typing-wpm-accuracy-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/typing-wpm-accuracy-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/typing-wpm-accuracy-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/typing-wpm-accuracy-calculator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Everyday & Life

**Tranche**: tranche-5

**Evidence ID**: t5-062

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The arithmetic formulas are standard under the stated assumptions, but the instrument is not fully specified. Define the elapsed-time unit, character-counting convention, and exact meaning of error_count before implementation. The honest label should distinguish gross WPM from net WPM and state the 5-characters-per-word convention; labeling the result simply as words per minute could imply actual word counting.

### Formula and scope findings

- The accuracy formula requires correct_chars, but the declared inputs provide only typed text and error count; it is ambiguous whether correct_chars should be calculated as total_chars − error_count.

- The meaning of error_count is undefined: character errors, incorrect keystrokes, uncorrected errors, and error events produce different accuracy and net-WPM results.

- The formulas require minutes, but the input is only described as elapsed time; the unit must be explicitly defined or converted.

- The formula is valid only when minutes > 0, characters_typed >= 0, and 0 <= error_count <= total_chars if errors represent incorrect characters.

### Unit assumptions

- characters_typed and total_chars count all characters included by the product's convention, including or excluding spaces consistently.

- elapsed time is converted from seconds to minutes when necessary: minutes = elapsed_time_seconds / 60.

- The standard WPM convention is 5 characters per word.

- For the test vectors, error_count is assumed to mean incorrect character count, so correct_chars = characters_typed − error_count.

- WPM and error-rate calculations use decimal minutes; no rounding rule is specified for displayed outputs.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

Zero elapsed time makes both gross WPM and net WPM undefined, so the instrument must reject that input. The specification also does not state the elapsed-time unit and does not explicitly define correct_chars from error_count, creating additional ambiguity.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "characters_typed": 300,
    "elapsed_time_seconds": 120,
    "error_count": 15
  },
  "expected_outputs": {
    "gross_WPM": 30,
    "net_WPM": 22.5,
    "accuracy_percent": 95
  },
  "working": "minutes = 120 / 60 = 2; gross_WPM = (300 / 5) / 2 = 60 / 2 = 30; correct_chars = 300 − 15 = 285; accuracy = (285 / 300) × 100 = 0.95 × 100 = 95%; net_WPM = 30 − (15 / 2) = 30 − 7.5 = 22.5."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
