---
title: "Conformance report"
description: "The auto-generated numerical conformance report: every check pins a standard clause's expected value against the value the library computes, regenerated and enforced in CI."
---

phonometry's key differentiator is not the feature list but the proof behind
it: every metric is implemented from the governing standard's text, and a
**numerical conformance report** pins each check to a standard, a clause or
table, the normative expected value and the value the library actually
computes, with the delta and a pass/fail verdict.

The report is an auto-generated document, regenerated by CI on **every pull
request** — the build fails if it drifts from the code — so it is always in
sync with the released library:

**[Read the full conformance report (CONFORMANCE.md on GitHub)](https://github.com/jmrplens/phonometry/blob/main/docs/CONFORMANCE.md)**

## What it contains

- **Filter classes** — the IEC 61260-1:2014 class verdict per filter
  architecture, with the measured relative attenuation at the *governing* band,
  the class-1 limit it must clear and the margin in dB.
- **Frequency weightings** — A/C (IEC 61672-1 Table 3) and G (ISO 7196 A.3)
  deviations from the nominal curves, judged at the governing frequency with the
  applicable tolerance band and headroom.
- **One conformance table per domain** (levels, psychoacoustics, room and
  building acoustics, sound power, materials, vibration, uncertainty, ...):
  `Standard | Quantity | Expected | Computed | Delta | Status`, where the
  expected values come from the standards' own worked examples or from closed
  forms synthesized to a known result.

## How it is generated

The registry of checks lives in
[`scripts/conformance_report.py`](https://github.com/jmrplens/phonometry/blob/main/scripts/conformance_report.py)
and is run locally with `make conformance`. Expected values are single-sourced
from the same reference tables the test suite enforces, so the report and the
tests cannot disagree silently.

For the design philosophy behind this approach — and a worked case study on
IEC 61672-1 time weighting — see
[Why phonometry](/phonometry/reference/why-phonometry/).
