FLOCKWATCH / LOCAL EXPERIMENT

Error-Amplification Lab

A transparent 100:1 plate-key collision and 600 open-model synthetic OCR inferences test how missing characters can become false certainty.

fictional identifiersopen OCR model98% test coverage

The laboratory reproduces a mechanism, not a vendor error rate. No real plate images, private movement data, or proprietary systems are used.

The public failure chain

Joel Feder reported that two manufacturer plates—34 03 DTM and 34 10 DTM—were reduced to the same shortened value, 34 DTM, at different layers of a police/Flock alert chain. That lossy equivalence propagated into multi-day tracking and a four-cruiser stop.

The event illustrates four distinct questions:

  1. Did the source record preserve the complete identifier?
  2. Did the camera preserve every distinguishing character?
  3. Did the matching interface represent a partial read as ambiguous?
  4. Did officers independently verify the state, plate type, full identifier, and vehicle?

Experiment 1: deterministic key collision

The code generates 100 fictional identifiers from 34 00 DTM through 34 99 DTM. The tested transform removes the middle two-digit token and separators.

34 00 DTM ─┐
34 01 DTM  │
34 02 DTM  ├── delete middle token ──> 34DTM
    ...    │
34 99 DTM ─┘

Result: 100 full identifiers collapse to one match key. The unit tests explicitly pin the 34 03 DTM / 34 10 DTM pair.

This is not a probability. It is the cardinality of the ambiguity set under the defined transformation. A safe interface should expose that ambiguity rather than present one confident “hit.”

Experiment 2: synthetic OCR degradation

We rendered 100 fictional plate crops with a smaller middle token and processed each under six conditions using Fast Plate OCR 1.1.0's cct-xs-v2-global-model on local CPU.

Synthetic plate 34 03 DTM at native resolution Synthetic source image. Fictional identifier rendered with the open Noto Sans Mono font.

Exact string recovery and token preservation by condition 100 identifiers per condition. The unusual small-token layout is intentionally out of distribution; values are not an operational ALPR benchmark.

ConditionExact stringMiddle token preserved
Native20%24%
Half resolution30%31%
Quarter resolution3%10%
Half resolution + blur1%2%
Quarter resolution + blur0%1%
Low-contrast quarter resolution0%1%

The improvement at half resolution is a warning against overinterpretation: interpolation can make a synthetic glyph distribution more familiar to a model. The bounded finding is that the distinguishing small token frequently disappeared under controlled degradation.

The combined mechanism

The OCR test supplies a plausible deletion pathway. The deterministic registry measures what happens after deletion. Together they show why a system must preserve uncertainty:

small token lost → shortened key → enlarged candidate set → distributed alert → officer action

That sequence can be interrupted at every arrow. Full-string validation, confidence display, candidate counts, vehicle-metadata comparison, current hot-list confirmation, and independent officer verification are all fault-containment controls.

Reproduce

.venv/bin/python scripts/run_ocr_lab.py
.venv/bin/pytest tests/test_plate_lab.py tests/test_ocr_lab.py

Download all 600 inference rows → · View the governance controls →