Calibration Certificate

Every certificate this package produces is a specimen

SymbolicUncertainties.jl is not an calibration laboratory. Documents produced here carry a watermark saying so on every page, in the header, and across the diagonal. The watermark cannot be switched off — only reworded, for a laboratory that works in another language.

Issuing a calibration certificate is an act performed by a body holding accreditation, under its own quality system. This page produces a document in the shape the standard requires, which is a drafting aid and a checklist — not a certificate.

report renders a result. A certificate is the document that result travels in, and ISO/IEC 17025:2017 §7.8 is prescriptive about what it must carry.

Building one

using SymbolicUncertainties

result = report(99.98, 0.014; symbol = "R", unit = "Ω",
                k = 2, coverage_probability = 0.95)

cert = certificate(
    result;
    identifier = "CAL-2026-0417",
    laboratory = "Laboratoire d'essais, 12 rue de la Mesure, Poitiers",
    location = "Permanent facility, Poitiers",
    customer = "Atelier Dupont & Fils",
    method = "Comparison against a calibrated reference (MP-04)",
    item = "Standard resistor, 100 Ω, s/n 4471-C",
    date_received = "2026-09-01",
    date_performed = "2026-09-03",
    date_issued = "2026-09-05",
    authorised_by = "S. Celles, technical manager",
    conditions = "(23.0 ± 0.5) °C, (45 ± 10) % RH",
    traceability = "Traceable to the SI through reference standard " *
                   "R-118, calibrated by LNE, certificate 2026-3391",
    model = "R = V / I",
    conformity = ConformityStatement(
        "R at 23 °C",
        "Nominal 100 Ω ± 0.1 %",
        :pass;
        decision_rule = "Simple acceptance, guard band w = 0 " *
                        "(ILAC-G8:2019 §4.2.1)",
    ),
)
════════════════════════════════════════════════════════════════════════
  SPECIMEN — NOT AN OFFICIAL CALIBRATION CERTIFICATE
════════════════════════════════════════════════════════════════════════

CALIBRATION CERTIFICATE
Certificate No. CAL-2026-0417   (ISO/IEC 17025:2017 §7.8)

Laboratory            Laboratoire d'essais, 12 rue de la Mesure, Poitiers
Location              Permanent facility, Poitiers
Customer              Atelier Dupont & Fils
Item                  Standard resistor, 100 Ω, s/n 4471-C
Method                Comparison against a calibrated reference (MP-04)
Received              2026-09-01
Calibrated            2026-09-03
Issued                2026-09-05
Conditions            (23.0 ± 0.5) °C, (45 ± 10) % RH

Measurement model
  R = V / I

Result (§7.8.4.1 a)
  R = 99.980 Ω with u_c = 0.014 Ω
  R = 99.980(14) Ω
  R = 99.980(0.014) Ω
  R = (99.980 ± 0.014) Ω

  R = (99.980 ± 0.028) Ω, where the number following the symbol ± is the numerical value of an expanded uncertainty U = k·u_c, with U determined from a combined standard uncertainty u_c = 0.014 Ω and a coverage factor k = 2, and defines an interval estimated to have a level of confidence of 95 percent.

Metrological traceability (§7.8.4.1 c)
  Traceable to the SI through reference standard R-118, calibrated by LNE, certificate 2026-3391

Statement of conformity (§7.8.6)
  Applies to:    R at 23 °C
  Specification: Nominal 100 Ω ± 0.1 %
  Result:        CONFORMS to the specification
  Decision rule: Simple acceptance, guard band w = 0 (ILAC-G8:2019 §4.2.1)

The results relate only to the item calibrated (§7.8.2.1 l).

Authorised by (§7.8.2.1 o)
  S. Celles, technical manager

— End of certificate —

════════════════════════════════════════════════════════════════════════
  SPECIMEN — NOT AN OFFICIAL CALIBRATION CERTIFICATE
  Produced by SymbolicUncertainties.jl, which holds no accreditation as a
  calibration laboratory and carries no warranty. See LICENSE.md.
════════════════════════════════════════════════════════════════════════

Missing clauses are printed on the document

A certificate lacking its traceability statement is defective. The failure mode of a separate checking function is that nobody calls it, so unmet clauses are rendered in place:

certificate(result; identifier = "DRAFT-1")
════════════════════════════════════════════════════════════════════════
  SPECIMEN — NOT AN OFFICIAL CALIBRATION CERTIFICATE
════════════════════════════════════════════════════════════════════════

CALIBRATION CERTIFICATE
Certificate No. DRAFT-1   (ISO/IEC 17025:2017 §7.8)


Result (§7.8.4.1 a)
  R = 99.980 Ω with u_c = 0.014 Ω
  R = 99.980(14) Ω
  R = 99.980(0.014) Ω
  R = (99.980 ± 0.014) Ω

  R = (99.980 ± 0.028) Ω, where the number following the symbol ± is the numerical value of an expanded uncertainty U = k·u_c, with U determined from a combined standard uncertainty u_c = 0.014 Ω and a coverage factor k = 2, and defines an interval estimated to have a level of confidence of 95 percent.

The results relate only to the item calibrated (§7.8.2.1 l).

— End of certificate —

────────────────────────────────────────────────────────────────────────
This certificate is incomplete. Clauses of ISO/IEC 17025:2017
§7.8 that are not satisfied:
  §7.8.2.1 b)  the name and address of the laboratory
  §7.8.2.1 c)  the location where the calibration was performed
  §7.8.2.1 e)  the name of the customer
  §7.8.2.1 f)  identification of the method used
  §7.8.2.1 g)  an unambiguous description and identification of the item
  §7.8.2.1 h)  the date the item was received
  §7.8.2.1 i)  the date the calibration was performed
  §7.8.2.1 j)  the date the certificate was issued
  §7.8.2.1 o)  identification of the person authorising the certificate
  §7.8.4.1 b)  the environmental conditions that influence the measurement result
  §7.8.4.1 c)  a statement identifying how the measurements are metrologically traceable
────────────────────────────────────────────────────────────────────────

════════════════════════════════════════════════════════════════════════
  SPECIMEN — NOT AN OFFICIAL CALIBRATION CERTIFICATE
  Produced by SymbolicUncertainties.jl, which holds no accreditation as a
  calibration laboratory and carries no warranty. See LICENSE.md.
════════════════════════════════════════════════════════════════════════

That turns the type into a working checklist against §7.8. The clauses it tracks are §7.8.2.1 b), c), e), f), g), h), i), j) and o); §7.8.4.1 b), c) and d); §7.8.6.2 c); and §7.8.4.3.

An empty cert.findings means every clause this package can see is filled. Nothing here checks that a traceability statement is true, only that one was made.

Two clauses worth knowing about

§7.8.6.2 c) — a statement of conformity must name its decision rule. The rule is what makes a pass/fail statement mean anything: it fixes how the measurement uncertainty is set against the tolerance (ILAC-G8). A pass declared without one is not interpretable, so omitting it produces a finding:

certificate(
    result;
    identifier = "DRAFT-2",
    conformity = ConformityStatement(
        "R at 23 °C", "Nominal 100 Ω ± 0.1 %", :pass,
    ),
).findings
12-element Vector{CertificateFinding}:
 CertificateFinding("7.8.2.1 b)", "the name and address of the laboratory")
 CertificateFinding("7.8.2.1 c)", "the location where the calibration was performed")
 CertificateFinding("7.8.2.1 e)", "the name of the customer")
 CertificateFinding("7.8.2.1 f)", "identification of the method used")
 CertificateFinding("7.8.2.1 g)", "an unambiguous description and identification of the item")
 CertificateFinding("7.8.2.1 h)", "the date the item was received")
 CertificateFinding("7.8.2.1 i)", "the date the calibration was performed")
 CertificateFinding("7.8.2.1 j)", "the date the certificate was issued")
 CertificateFinding("7.8.2.1 o)", "identification of the person authorising the certificate")
 CertificateFinding("7.8.4.1 b)", "the environmental conditions that influence the measurement result")
 CertificateFinding("7.8.4.1 c)", "a statement identifying how the measurements are metrologically traceable")
 CertificateFinding("7.8.6.2 c)", "the decision rule applied, unless it is inherent in the requested specification (see ILAC-G8)")

§7.8.4.3 — a calibration certificate shall not recommend a calibration interval unless that was agreed with the customer or is required by law. The interval depends on how the instrument is used and on the customer's own risk, which the calibrating laboratory does not know. Stating one records a finding unless interval_agreed = true.

From a model, with units

With DynamicQuantities loaded, the result and its unit are derived from the measurement model:

using Symbolics, DynamicQuantities

@variables V I σV σI
R = (V ± σV) / (I ± σI)

readings = Dict(
    V => 10.000us"V", σV => 1e-3us"V",
    I => 0.10002us"A", σI => 1e-5us"A",
)

certificate(
    R, readings;
    symbol = "R", k = 2, coverage_probability = 0.95,
    identifier = "CAL-2026-0418",
    laboratory = "Laboratoire d'essais, Poitiers",
    traceability = "SI via LNE certificate 2026-3391",
    model = "R = V / I",
).result
Measurement result — JCGM 100:2008 §7.2.2
  R = 99.980 Ω with u_c = 0.014 Ω
  R = 99.980(14) Ω
  R = 99.980(0.014) Ω
  R = (99.980 ± 0.014) Ω

Expanded uncertainty — §7.2.4
  R = (99.980 ± 0.028) Ω, where the number following the symbol ± is the numerical value of an expanded uncertainty U = k·u_c, with U determined from a combined standard uncertainty u_c = 0.014 Ω and a coverage factor k = 2, and defines an interval estimated to have a level of confidence of 95 percent.

LaTeX

latex(cert) returns a complete document — \documentclass through \end{document} — that compiles with pdflatex and no package installation beyond a standard TeX distribution:

write("certificate.tex", latex(cert))
# pdflatex certificate.tex

The watermark is applied with eso-pic to every shipped page, sized against the paper rather than by a fixed factor, so a longer wording does not run off the edge. Each page carries the certificate number and Page n of m (§7.8.2.1 d), and the document ends with an explicit End of certificate.

LaTeX-special characters in the fields you supply are escaped, and so are the ones metrology actually writes: Ω, µ, °, ±, and unit exponents like A⁻¹ or . pdflatex rejects every one of those even under utf8 input encoding, and a certificate that does not compile is worse than one that does not exist — the failure surfaces at the worst possible moment. The test suite compiles a document containing all of them whenever a TeX engine is available.

What this does not do

  • It does not check that your traceability statement is true, that your method is fit for purpose, or that your laboratory is competent. Those are what accreditation assesses.
  • It does not compute a conformity verdict. You supply the verdict and the decision rule; ILAC-G8 gives several, and choosing between them is a risk decision belonging to the laboratory and its customer.
  • It does not include the uncertainty budget in the document. Build one with uncertainty_budget and add it alongside if your quality system calls for it.

API reference

SymbolicUncertainties.certificateFunction
certificate(result::UncertaintyReport; identifier, kwargs...)
certificate(m::SymbolicMeasurement, values::AbstractDict; identifier, kwargs...)

Build a CalibrationCertificate in the shape ISO/IEC 17025:2017 §7.8 prescribes.

The second form needs DynamicQuantities loaded and takes the measurement with unit-carrying values, deriving the result — and its unit — from the model. Keywords not listed here are passed to report, so k, coverage_probability, digits and unit work as they do there.

Arguments

  • result — the reported result, from report.
  • identifier (keyword, required) — the unique identification of the certificate, §7.8.2.1 d).
  • laboratory, location, customer, method, item, date_received, date_performed, date_issued, authorised_by (keywords) — the general clauses of §7.8.2.1. Dates are strings, so a laboratory writes them in whatever form its accreditation expects.
  • conditions, traceability, adjustment (keywords) — §7.8.4.1 b), c) and d): the environmental conditions, the metrological traceability statement, and the results before and after any adjustment or repair.
  • conformity (keyword) — a ConformityStatement, §7.8.6.
  • calibration_interval, interval_agreed (keywords) — §7.8.4.3 forbids recommending an interval unless it was agreed with the customer; stating one without interval_agreed = true is recorded as a finding.
  • model, notes (keywords) — the measurement model and any additional remarks.
  • watermark (keyword) — the wording of the specimen watermark. It cannot be removed; an empty string restores the default.

The findings

Unmet clauses are collected in cert.findings and printed on the document. A certificate missing its traceability statement is defective, and a checker nobody calls does not help.

An empty findings is not a claim that the certificate may be issued. This package is not an accreditation holder — see LICENSE.md and Limitations — which is why every rendering carries a specimen watermark.

Traces REQ-241. Implements ISO/IEC 17025:2017 §7.8.

source
SymbolicUncertainties.CalibrationCertificateType
CalibrationCertificate

A calibration certificate built by certificate. Show it for the text rendering; latex(cert) produces a compilable document.

findings lists the ISO/IEC 17025:2017 §7.8 clauses left unsatisfied. An empty vector means every clause this package can check is filled; it is not a claim that the certificate is fit to issue, which depends on an accreditation this package does not have.

Traces REQ-241.

source
SymbolicUncertainties.ConformityStatementType
ConformityStatement(applies_to, specification, verdict; decision_rule = nothing)

A statement of conformity, in the shape ISO/IEC 17025:2017 §7.8.6.2 requires: it must identify the results it applies to, the specification met or not met, and the decision rule applied.

verdict is :pass, :fail, or :conditional.

decision_rule is optional only because §7.8.6.2 c) excuses it when the rule is inherent in the requested specification. Leaving it out otherwise produces a finding on the certificate — the rule is what makes a pass/fail statement mean anything, since it fixes how the measurement uncertainty is set against the tolerance (ILAC-G8).

Traces REQ-241.

source
SymbolicUncertainties.latexMethod
latex(c::CalibrationCertificate) -> String

Render a CalibrationCertificate as a complete, compilable LaTeX document — \documentclass through \end{document}.

The specimen watermark is applied with eso-pic to every shipped page, not only the first, and is repeated as text in the header and the footer. It cannot be switched off.

Special characters in the supplied fields are escaped, so a laboratory name containing & or % still compiles.

Traces REQ-241.

source