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.
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
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.
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.
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
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.)
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.
8 congruent matching regions — mark A vs mark B
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.
146 same-source · 1755 different-source reference pairs · AUC 0.984 · Cllr 0.193
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.
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)
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)
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)
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 →