primitive.posting — the journal-ready output. “Ledger” is the layer; Posting is the object.Constraint
Why schema-level enforcement
Application code changes weekly. Schemas change rarely. By the time an auditor inspects a 2026 transaction in 2031, the application that ran in 2026 may not exist — but the constraint will. A future verifier reading the database alone must be able to confirm that every ledger entry reflects co-authored reality. That is only possible if the rule lives in the schema.Example
JE-2026-04-0618 — supported by a confirmed bilateral event