Ledger is the schema registry and data obligation manager for distributed systems. Track every field, classify every tier, propagate every obligation — across databases, caches, queues, object stores, and external APIs.
One registry for every backend. One set of annotations for every obligation. One source of truth for the entire stack.
Register schemas for 12 backend types through a unified unit/unit_type abstraction. Postgres tables, Kafka topics, Redis key patterns, S3 object patterns — all stored verbatim, all queryable.
Parse SQL, Alembic, CQL, and Kafka schema evolution. Compute blast radius. Return BLOCKED, HUMAN_GATE, or AUTO_PROCEED based on annotation impact. No audit field ever dropped by accident.
Data-driven rules engine. Annotate a field as gdpr_erasable and Pact gets contract assertions, Arbiter gets classification rules, Sentinel gets severity mappings. No code changes for custom annotations.
Schema-aware test data. PII fields get realistic fakes. Encrypted fields get token-shaped values. Canary fields get fingerprinted values that Arbiter tracks through the system. Deterministic with seed.
Catch contradictory obligations at schema time. Immutable + erasable? Hard error. Audit + deletable? Hard error. REQUIRES satisfaction checked for every field. All violations reported, not just the first.
Export to Pact (contract assertions), Arbiter (classification rules), Baton (egress node config), Sentinel (severity mappings), and retention (infrastructure config hints). YAML out, machine-readable.
Every backend maps its native concept to unit / unit_type.
Annotations and propagation rules work identically across all of them.
CLASSIFICATION SEVERITY →
Define obligations on fields. Ledger propagates them into every downstream tool through a data-driven rules engine. No code changes for new annotations.
Every migration is analyzed against the annotation registry. The result is unambiguous.
Cannot proceed under any circumstances. An engineer must change the migration. No approval path exists.
Can proceed after explicit human approval with documented rationale. Review reference and justification recorded in the audit trail.
Safe to deploy automatically through the normal pipeline. No annotations affected, or only PUBLIC-tier changes to a declared component.
Ledger and Arbiter are peers — Ledger owns "what does data look like?" while Arbiter owns "who can touch it?" Together with Pact, Baton, Sentinel, and Constrain, they form a complete governance layer.