ADR 0001: The event-log acceptance test

Decision

A feature proposal must be expressible as one or more of:

(a) new event or attestation types over the existing append-only log, (b) new guard vocabulary evaluated purely from (events, now), (c) porcelain or lens behavior deriving from (a) and (b).

Proposals requiring stored mutable state, imperative stage transitions, or verification paths that leave the log are rejected or redesigned.

One carve-out, so the test cannot be misread: features necessary to preserve the integrity, authenticity, or reproducibility of the log itself — canonical serialization, signature algorithms, hash migration, witness sidecars, store verification — are trust substrate, governed by their own ADRs (0004–0007), not by this test. The substrate may never introduce domain truth outside the log; it exists to make (a)–(c) trustworthy. “A new signature algorithm is neither an event nor a lens, therefore rejected” is a misreading, not an application, of this ADR.

Context

The kernel’s value is that stage is derived, merges are union, and verification is offline-forever. Every mechanism designed so far — disputes, OIDC key/role enrollment, server countersigning, cross-instance federation, replay-based notifications, MCP/agent actors — passed this test, several by shrinking rather than growing. The test exists to defend the kernel from its own maintainers under deadline pressure.

Consequences

see history · edit this page