AssayIndex
Detection rule · severity high

AX-R05 — COA purity diverges from independent median

The supplier's certificate claims a purity more than 1.5 pp above the median of independent tests on the same lot.

HIGH26 records flagged0.39 % of the index
Section 1

The predicate

Published literally. A rule you cannot read is an accusation you cannot check.

batch.independentN >= 2 && coa.purity - median(batch.independentPurity) > 1.5
Section 2

Why this rule exists

The most consequential rule in the index, and the one that requires the most care to interpret.

The threshold of 1.5 pp is set well above the combined uncertainty of the two measurements. Inter-lab limits of agreement in this index are approximately ±0.5 pp for the well-behaved compounds and ±0.9 pp for the difficult ones; gradient-length differences add up to 0.5 pp on the acylated incretins; and within-lot vial-to-vial variation contributes a further 0.3 pp. Stacking those pessimistically gives roughly 1.2 pp of explainable difference. Beyond 1.5 pp, method and sampling differences are not a sufficient explanation.

The rule requires at least two independent tests of the same lot, because a single independent result disagreeing with a certificate is a disagreement, not a finding. With two or more, the median is a defensible estimate and the divergence is attributable.

Direction matters and the rule is deliberately one-sided. A certificate that understates purity is not flagged. This asymmetry is a value judgement the index makes explicitly: overstatement misleads a buyer, understatement does not.

In practice the rule works as a document-version detector. Every instance the index has followed up resolved the same way: the certificate that travelled with the consignment was the batch-level release document, written against the class specification, rather than the lot-specific report. The lot-specific document existed in each case, was produced on request, and agreed with the independent median. That is why the rule fires on well under one per cent of the index rather than on the several per cent that systematic optimism would produce. Ask for the lot-specific certificate before reading anything at all into a divergence.

Section 3

Incidence

How often the rule fires, where, and when. A rule that never fires is not calibrated; a rule that fires on half the index is measuring the population rather than screening it.

Records flagged 26 n=26
Share of index 0.39% n=6584
Distinct suppliers 5 n=5
Distinct batches 5 n=26
SupplierFlaggedRecords in indexRate
SinoPep81624.9%
WXT73012.3%
HYB52412.1%
SGN42211.8%
HJ22470.8%

Flagged records per quarter

2024-Q1: 0 · 2024-Q2: 0 · 2024-Q3: 0 · 2024-Q4: 4 · 2025-Q1: 14 · 2025-Q2: 0 · 2025-Q3: 0 · 2025-Q4: 0 · 2026-Q1: 0 · 2026-Q2: 8 · 2026-Q3: 0

Section 4

Recently flagged

The 30 most recent of 26 records flagged by AX-R05. Every flagged record →
ReportCompoundSupplierLotLabQuarterPurity %Water %Recovery %ProvenanceFlagsResult
AX-2026-041921MazdutideSinoPepSNP-2602-U4281Janoshik2026-Q298.214.1892.9Buyer-sourced1MARGINAL
AX-2026-041920MazdutideSinoPepSNP-2602-U4281Janoshik2026-Q297.774.4188.7Buyer-sourced2MARGINAL
AX-2026-041919MazdutideSinoPepSNP-2602-U4281Nordanalyt2026-Q298.014.3793.8Buyer-sourced1MARGINAL
AX-2026-041922MazdutideSinoPepSNP-2602-U4281VendorInvestigate2026-Q297.883.6891.3Buyer-sourced1MARGINAL
AX-2026-041916MazdutideSinoPepSNP-2602-U4281Janoshik2026-Q297.923.65Buyer-sourced1MARGINAL
AX-2026-041918MazdutideSinoPepSNP-2602-U4281Janoshik2026-Q297.493.95102.3Buyer-sourced1MARGINAL
AX-2026-041915MazdutideSinoPepSNP-2602-U4281PeptideMeter2026-Q297.894.1094.8Buyer-sourced1MARGINAL
AX-2026-041917MazdutideSinoPepSNP-2602-U4281Janoshik2026-Q298.023.9890.6Buyer-sourced1MARGINAL
AX-2025-020988CJC-1295 with DACWXTWXT-2409-Y3760Janoshik2025-Q196.834.78Buyer-sourced1FAIL
AX-2025-019349TirzepatideHYBHYB-2408-W6301Medutest2025-Q199.103.88Buyer-sourced3FAIL
AX-2025-020992CJC-1295 with DACWXTWXT-2409-Y3760Janoshik2025-Q197.205.8490.3Buyer-sourced1FAIL
AX-2025-020994CJC-1295 with DACWXTWXT-2409-Y3760Kestrel2025-Q197.826.04Buyer-sourced1MARGINAL
AX-2025-019348TirzepatideHYBHYB-2408-W6301PeptideMeter2025-Q198.784.1896.6Buyer-sourced2MARGINAL
AX-2025-019347TirzepatideHYBHYB-2408-W6301PeptideMeter2025-Q199.123.95Buyer-sourced2MARGINAL
AX-2025-019863IGF-1 LR3HJHJ-2410-G5632Medutest2025-Q198.283.10Buyer-sourced1MARGINAL
AX-2025-020993CJC-1295 with DACWXTWXT-2409-Y3760Janoshik2025-Q196.995.8198.1Buyer-sourced1FAIL
AX-2025-020990CJC-1295 with DACWXTWXT-2409-Y3760Janoshik2025-Q197.515.66Supplier-supplied1MARGINAL
AX-2025-020989CJC-1295 with DACWXTWXT-2409-Y3760Kestrel2025-Q197.165.31Buyer-sourced1FAIL
AX-2025-019350TirzepatideHYBHYB-2408-W6301VendorInvestigate2025-Q197.964.27105.7Buyer-sourced2MARGINAL
AX-2025-019864IGF-1 LR3HJHJ-2410-G5632PeptideMeter2025-Q198.233.43Buyer-sourced1MARGINAL
AX-2025-020991CJC-1295 with DACWXTWXT-2409-Y3760Janoshik2025-Q197.215.47102.2Buyer-sourced1FAIL
AX-2025-019346TirzepatideHYBHYB-2408-W6301Janoshik2025-Q199.014.3899.3Buyer-sourced2MARGINAL
AX-2025-020698TirzepatideSGNSGN-2408-S8580Janoshik2024-Q498.193.26Buyer-sourced1MARGINAL
AX-2024-005132TirzepatideSGNSGN-2408-S8580Kestrel2024-Q498.372.9799.1Buyer-sourced2FAIL
AX-2024-005131TirzepatideSGNSGN-2408-S8580PeptideMeter2024-Q498.012.84Supplier-supplied1MARGINAL
AX-2024-005130TirzepatideSGNSGN-2408-S8580Janoshik2024-Q497.863.6990.0Buyer-sourced1MARGINAL