Source: https://guthlabs.ai/docs/instruments/buffer-capacity-estimator/

instrument / verified-clean

# Buffer Capacity Estimator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/buffer-capacity-estimator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/buffer-capacity-estimator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/buffer-capacity-estimator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/buffer-capacity-estimator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Chemistry & Materials

**Tranche**: tranche-4

**Evidence ID**: t4-075

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core beta expression is acceptable under stated chemical assumptions, but the catalog specification must add pH as an input, define how [HA] and [A−] are derived, specify concentration units, and label the pKa±1 result as an approximate range. The output description says usable pH range shading, but no shading rule or capacity threshold is defined.

### Formula and scope findings

- The stated beta formula is standard for an ideal monoprotic HA/A− buffer when [HA] and [A−] are known: beta≈2.303·C_total·([HA][A−]/C_total²). However, the listed inputs omit pH and the individual species concentrations, so beta cannot be calculated from only pKa and total buffer concentration.

- The implementation must derive species fractions from pH and pKa, for example r=10^(pH−pKa), alpha_HA=1/(1+r), and alpha_A−=r/(1+r).

- The effective range pH=pKa±1 is an approximate rule of thumb, not an exact buffering-capacity boundary. It should be labeled as an approximate usable range rather than a rigorously calculated range.

- The formula assumes a monoprotic buffer, fixed total analytical concentration, ideal activities, and negligible water and other acid-base contributions. Those constraints are not stated.

### Unit assumptions

- pH and pKa are dimensionless base-10 quantities, and pKa refers to the same temperature, solvent, and ionic-strength conditions as the buffer.

- C_total must be a molar concentration in mol/L for beta to be reported in mol/L per pH unit. Concentration units cancel inside [HA][A−]/C_total² but not in the leading C_total factor.

- The test vectors convert mM to M before calculation.

- The numerical factor 2.303 is treated as an approximation to ln(10).

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

A zero total concentration produces the undefined expression 0/0, so the estimator requires explicit input rejection. The sign convention for pH-pKa is also not specified, creating a species-label ambiguity even though beta is symmetric and numerically unchanged.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "pKa": 4.76,
    "pH": 4.76,
    "total_buffer_concentration": 100,
    "concentration_unit": "mM"
  },
  "expected_outputs": {
    "beta_mol_L_per_pH": 0.057575,
    "effective_range_pH": {
      "lower": 3.76,
      "upper": 5.76
    }
  },
  "working": "Convert concentration: C_total=100 mM/1000=0.100 M. pH−pKa=4.76−4.76=0, so r=10^0=1. alpha_HA=1/(1+1)=0.5. alpha_A−=1/(1+1)=0.5. Species-product fraction=0.5×0.5=0.25. beta=2.303×0.100×0.25=0.057575 mol/L per pH. Range lower=4.76−1=3.76; upper=4.76+1=5.76."
}
````

## Related workflows

[Buffer Benchis it strong enough](<https://guthlabs.ai/docs/instrument-workflows/buffer-bench/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
