uuid: 1f6b2c… kind: block name: Billing rationale: charges are the only money-moving path ownedFiles: [src/billing/**] contract: methods: [{ name: charge }] invariants: - id: amount-minor-int text: amounts are integer minor units tests: - path: test/billing.test.ts guards: [charge, amount-minor-int]
What an entry looks like
The record is data, not prose. A block says what it owns, what it promises, which invariants hold, which tests guard them — and why it exists at all. It travels in the repo and gets reviewed in the same pull request as the code it governs.
Connectors get entries of their own: transport, auth, design pattern, pinned schemas. They own the contract of the interaction.