Verity
How it works

One method, end to end

Verity turns a pair of 3-D surface scans into a calibrated likelihood ratio — and shows its work at every step. The same pipeline weighs three different kinds of mark; swap between them to see three real, calibrated verdicts from one algorithm — then follow the entire pipeline, step by step, on a bullet.

One pipeline · three marks
Striated · 1-D signature8 congruent matching regions
Mark AMark B

mark A vs mark B — registered by a single 1-D shift, then scored by the same congruent-regions algorithm.

Likelihood ratio

146×

moderately strong support for same source.

pooled bullet-land
AUC 0.984 · 146 + 1,755 reference pairs

How the bullet was scored

The full pipeline, step by step

Here is the entire machine on a real Hamby-252 bullet — six steps from raw scan to calibrated evidence. Flip between two bullets fired from the same firearm and two from different firearms, and watch the same algorithm reach opposite conclusions.

two bullets fired from one barrel

146×

moderately strong support for same source. The reference can support at most 146:1 either way (the bound), and the same algorithm produced this with zero parameters tuned to these bullets.

01

Every mark is a surface

A bullet land, a breech face, a toolmark — each is a 3-D height field z(x, y), measured as an X3P topography scan. Verity never looks at a photograph; it works on the geometry itself, so lighting and color are irrelevant. Drag to rotate the real scan.

02

Isolate what individualizes

The overall form (the curve of the barrel) and broad wavinessare shared by many sources — they hide the signal. An ISO 16610 band-pass removes them and keeps the fine roughness band that the specific tool left behind.

leveled scan

individualizing band

03

Reduce to a signature

The striae run in one direction. Verity orients them, collapses along them, and crops the high, common groove shoulders — leaving a 1-D striation signature, the object we actually compare. (Impressed marks keep a 2-D areal map instead; the rest of the pipeline is identical.)

04

Find the regions that agree

Slide windows of one signature against the other. Genuine matches make many windows lock onto one common shift; coincidences scatter. The windows that agree are the congruent matching regions — a generalization of the consecutive-matching-striae and CMC ideas to any mark. Their count is the score.

Here many regions link up with near-parallel connectors — a consistent, real correspondence.

Mark AMark B

8 congruent matching regionsmark A vs mark B

05

Turn the score into evidence

A score is not evidence until it is calibrated. Verity compares this score against a named reference of known same-source and different-source pairs, and maps it to a likelihood ratio — with a characterized cost (Cllr) and a bound on how strong a claim the data can support. The decision stays a transparent, monotone transform of the score.

score 0.153 → LR 146×different-sourcesame-source

146 same-source · 1755 different-source reference pairs · AUC 0.984 · Cllr 0.193

06

Report — don't decide

The output is a number an examiner and a court can audit: the likelihood ratio, its verbal weight, the exact regions that drove it, and an explicit statement of scope. Because the calibration is a bounded, monotone map, the report is interpretable regardless of how the score was computed — the firewall against the black box.

And it ships a reproducible recipe — every step, parameter, and input hash — under a content handle, so the result can be verified by re-running it. See the glass-box API →

Likelihood ratio

146×

moderately strong support for same source.

A calibrated weight of evidence on the pooled bullet-land reference — not a claim about the error rate of examination, which remains unknown.

One config, every modality

Three reductions, validated source-disjoint

The same congruent-matching-regions algorithm, under one scorer config, reduces to the field-standard method for each mark — and recovers it. Each figure is the held-out (source-disjoint) weight-of-evidence cost on the named reference, recomputed from the committed calibration data.

Bullet lands

recovers consecutive matching striae (1-D, inter-land aggregate)

0.19± 0.13 Cllr

AUC 0.989 · 146 same-source pairs · 10 folds

pooled: Hamby-252/173, PGPD Beretta, Phoenixvs. specialist: bulletxtrctr

Cartridge breech face

recovers congruent matching cells / CMC (2-D)

0.38± 0.19 Cllr

AUC 0.991 · 10 same-source pairs · 10 folds

Fadul (10 consecutively-manufactured slides)vs. specialist: cmcR

Screwdriver toolmark

recovers Chumbley consecutive matching striae (1-D)

0.33± 0.05 Cllr

AUC 0.957 · 3537 same-source pairs · 10 folds

tmaRks (56 tool-edges; source = mark generator)vs. specialist: toolmaRk (Chumbley U)

All three references share one scorer-config hash (ea4ddd513b57) — the same algorithm and parameters, not three tuned pipelines. These characterize weight of evidence on the named references, not field-wide error rates.

The same six steps, for any mark

Bullets, toolmarks, cartridge breech faces — they differ only in the registration group (a 1-D shift, or a 2-D shift-plus-rotation). Everything else is shared, which is what makes Verity one calibrated, explainable method rather than a pile of bespoke ones.

Try it on your own scans →