Binding constants (BIND)
Physics needs numbers that don't change: the gravitational constant, the speed of light,
Planck's constant. Step 2 of the pipeline binds those — the NIST CODATA 2018 fundamental
constants — to the operators selected in Step 1, before any computation happens. The source
is a single table in shared/api-core/src/lib/nistConstants.ts, so every node binds the same
value for the same constant, every time. That shared table is half of why two nodes that
never talk can still agree on a result.
The table
The constants are the CODATA 2018 recommended values, verbatim:
| Constant | Symbol | Value | Unit |
|---|---|---|---|
| Planck constant | h | 6.62607015 × 10⁻³⁴ | J·s |
| Reduced Planck | ħ | 1.054571817 × 10⁻³⁴ | J·s |
| Speed of light | c | 299 792 458 | m/s |
| Gravitational constant | G | 6.67430 × 10⁻¹¹ | m³·kg⁻¹·s⁻² |
| Boltzmann constant | k_B | 1.380649 × 10⁻²³ | J/K |
| Avogadro constant | N_A | 6.02214076 × 10²³ | mol⁻¹ |
| Elementary charge | e | 1.602176634 × 10⁻¹⁹ | C |
| Vacuum permittivity | ε₀ | 8.8541878128 × 10⁻¹² | F/m |
| Vacuum permeability | μ₀ | 1.25663706212 × 10⁻⁶ | H/m |
| Stefan–Boltzmann | σ | 5.670374419 × 10⁻⁸ | W·m⁻²·K⁻⁴ |
| Molar gas constant | R | 8.314462618 | J·mol⁻¹·K⁻¹ |
| Fine-structure constant | α | 7.2973525693 × 10⁻³ | — |
Plus the particle masses (m_e = 9.1093837015 × 10⁻³¹ kg, m_p = 1.67262192369 × 10⁻²⁷ kg,
m_n, m_u) and the atomic-scale references (Bohr radius a₀ = 5.29177210903 × 10⁻¹¹ m,
Hartree energy E_h, classical electron radius r_e).
The framework's own clock constants — f_H, τ, α_K — are imported into the same table
from zeq-kernel-constants.ts, so a solver that needs both NIST physics
and the HulyaPulse reads them from one place.
Binding by domain group
A relativity compute does not need the Stefan–Boltzmann constant; a thermodynamics compute
does not need the gravitational constant. bindConstants(domainGroup) binds only the subset
a group needs:
| Domain group | Constants bound (beyond the clock trio) |
|---|---|
| Core Physics | h, ħ, c, G, k_B, e, ε₀, μ₀, m_e, m_p, σ, R, N_A |
| Extended Physics | h, ħ, c, G, k_B, σ, R, m_e |
| Applied Sciences | k_B, R, N_A, e, ε₀, σ |
| Industry | k_B, R, N_A |
| Frontier | h, ħ, c, G, k_B, α, φ |
Every group also carries the three kernel constants (f_H, τ, α_K). The BIND step
records the CODATA release ("CODATA 2018"), the domain group, and the list of constants it
bound — so the result's transcript names exactly which numbers went into the physics.
Why binding from a fixed table matters
Two consequences:
- Reproducibility. Because the constant values are fixed and shared, the
recompute path can re-derive a result bit-for-bit on any
node. If
Gwere read from configuration or a live feed, two nodes could disagree on the Schwarzschild radius of the same star. They can't —Gis6.67430 × 10⁻¹¹everywhere. - Auditability. The bound constants are part of the result transcript. A reviewer can
confirm that a relativity answer used the CODATA
candG, not some adjusted values.
The CODATA release is pinned deliberately. When CODATA publishes a new adjustment, moving to it is a versioned change to the table — not a silent drift — so old results stay reproducible against the release they were computed under.
Read next
- Dimensional validation — Step 3: do the inputs fit the solver?
- The solvers — Step 4: the bound constants enter the physics
- The constants — the framework's own clock constants
Fixed constants, bound from one table, named in every transcript.