varve 0.28.0

The PulseEngine toolchain layer manager — pinned, signed, dated toolchain bundles
# Signing keys

A varve signing key is **128 hex characters**: a 32-byte ed25519 seed followed by its 32-byte public key. The public half alone — 64 hex characters — is what a realm pins as `trust-root`. Stated here once, because it used to be discoverable only by brute force.

```sh
varve keygen --out root.key --pub root.pub   # mint one
varve pubkey root.key                        # re-print the public half
```

`keygen` writes the key mode 0600 and refuses to overwrite either file: a signing key and a published trust root are both things you lose quietly and expensively.

## What the key is

It is the whole of a realm's authority. Every layer a realm publishes is accepted because it verifies against this one value, so the key's custody *is* the realm's security. varve's own rolling key is provisional and marked as such; a real root is generated in a ceremony, not on a build machine.

## What varve checks

Before signing anything, varve round-trips a probe through the key: it signs, then verifies with the public half the file carries. A key whose halves disagree is refused outright, because it signs happily and produces layers **no trust root can ever verify** — a permanently broken release artifact that looks successful. That check runs at every signing command, not just `deposit`.

## Rotation and revocation — the honest state

varve has neither yet. There is one root per realm, no key roles, no thresholds, no expiry, and no revocation channel. A compromised key today means publishing a new realm definition and having consumers re-pin it. Key roles, thresholds and a signed revocation record are the substance of the v1.0 trust-root ceremony; until then, treat the key as a single point of failure and store it accordingly.