Keldrion

2026-09-18

Kaimeter v0.1.0: the aluminium rule bundle

We've tagged v0.1.0. It is one crate and no application: kaimeter-rules writes the CBAM methodology for primary aluminium as code, with the provision each rule comes from recorded beside it.

What it implements:

  • Reporting-period identification - IR (EU) 2025/2547, Article 7.
  • Sector-dependent mark-ups - IR (EU) 2025/2621, Article 4(2), as corrected by IR (EU) 2026/1740.
  • Default-value selection, with the other-countries and Annex IV fallbacks.
  • Precursor averaging under Articles 13-14.
  • The Annex I scope table for aluminium, and the primary route with slope-method PFCs.

Every other sector is a stub.

The crate is no_std, does no I/O, and forbids floating-point arithmetic at the lint level. Every quantity is an integer scaled by 10⁶ and held in an i128; multiplication and division round half to even. The scale and the rounding rule are themselves part of the bundle's identity, so an independent implementation can reproduce every intermediate value exactly rather than approximately.

The bundle has a hash

crates/kaimeter-rules is a rule bundle: its semantic files are serialised canonically and hashed. Bundle 2026.2.0 is

sha256:cd4f4446cf09ac8c0b5bb5a5cf91dd774eeb885c034674c09507696f60604c27

and you can print it yourself from the tag:

cargo run -p kaimeter-rules --bin bundle-hash -- crates/kaimeter-rules

A test pins that value. Edit any semantic file - a rule, a parameter table, bundle.json, the citation map - and the hash changes, and CI fails until the constant is regenerated in the same commit. That is the property the paper asks for: the declared figure and the rules that produced it travel together.

What is not in it

No prover. The first zkVM guest, which evaluates this bundle as witness, is planned for v0.2 in November 2026, along with secondary aluminium and the overvoltage method. Steel follows in v0.3, in Q1 2027; cement, fertilisers and hydrogen after that. The crate is publish = false, so it is not on crates.io

All posts