eml 0.11.0

Epoch Merkle Log: the EML library instantiated at k=2, no prefix
Documentation
# eml — Epoch Merkle Log

**Tier L4 — an instantiation.** EML is the **general-purpose** append-only log: the
`polydigest` combinator over the single-algorithm `cml` engine — `polydigest(cml)` —
instantiated at arity **`k = 2`**, with no prefix and arbitrary subtrees allowed.
This is one of the three concrete crates where "Epoch" lives.

## Role

EML fixes the one opinion an instantiation makes — the arity — and re-exports the
whole `polydigest` surface, so a consumer reaches the library through `eml::*`. `k = 2`
is a sane default, not an opinion: binary spine traversal is cheaply logarithmic.
The caller's `Hasher` is used directly, with no domain-separation wrapper.

EML uses MMR **durable witnesses**: inclusion and binding-root verification are
preserved from the prior design; the consistency proof is upgraded to the MMR
prefix-form. Conformance is anchored by the Lean corpus and the durability property
tests, not a byte-equality oracle.

The re-exported driver still accepts any arity for callers that need a different
`k`; the `eml::config()` preset and the `new` / `from_storage` constructors fix
`k = 2`.

## Place in the layered model

```
merkle-spine → canonical-ml → polydigest → EML  (this: polydigest(canonical-ml) @ k=2)
```

Compare the sibling instantiation:

- **EMT** (`emt`) — the mutable peer, `polydigest(canonical-mt)` @ `k = 2`.

## Further reading

- `polydigest` — the combinator EML instantiates.
- `canonical-ml` — the single-algorithm append-only engine underneath.
- [`../docs/architecture.md`]../docs/architecture.md — the full design.