Expand description
Compile-time catalog of every CloudEvents type used across the mako
workspace.
One pub const per event type, organized in bounded-context modules.
Emitters and subscribers reference these constants instead of inline
string literals, so a rename is a one-line change and drift between
producer and consumer is a compile error rather than a silent mismatch.
§Conventions
- Every type starts with
de.and is entirely lowercase (CloudEvents §3.1 recommends lowercase reverse-DNS types). - Segments are separated by
., and a multi-word segment joins its words with-— never_. German domain nouns keep their established spelling (participles likebeliefert, compound nouns likenb-contract).segments_use_hyphen_not_underscoreenforces this. - A namespace names its facts in one language.
de.vertrag.*is German throughout (gekuendigt,preisgarantie-hinterlegt);de.mako.*,de.gabi.*andde.accounting.*are technical or English-domain and stay English.german_namespaces_use_german_participlesenforces the German set. This is about the participle, not the noun — and it does not mean.updatedand.geaendertare interchangeable: inde.markt.*they name different facts (any master-data write vs. a regulated GPKE Stammdatenänderung carrying its patch). ⚠ phantom:in a doc comment means no service in this workspace emits this type. That is the whole claim, and it is the oneunreferenced_constants_are_marked_phantomchecks. It says nothing about whether anything subscribes: some phantoms are subscriptions placed ahead of their emitter, others are neither emitted nor consumed, and each constant’s own doc comment says which and why. A phantom is a recorded gap, not a promise — an external consumer may match on it, but this platform will not make it fire.
Glob subscription patterns (e.g. de.mako.* in agentd trigger
configs) are not part of this catalog — only concrete types are. The
canonical pattern matcher every subscription mechanism uses is
matches().
§Scope (why mako-events, not mako-common)
This crate deliberately stays a single-purpose leaf: constants and logic
about CloudEvents types (the catalog, the naming convention, the
pattern matcher) and nothing else. A general mako-common/mako-core
grab-bag would become a dependency magnet — every crate depends on it,
every change rebuilds the workspace, and unrelated helpers accrete
without an owner. Shared logic already has purpose-named homes:
domain runtime in mako-engine, service framework in mako-service,
master-data types in mako-markt. New shared code goes to the crate
whose purpose it serves; a new purpose gets a new purpose-named crate.
Modules§
- accounting
- FI-CA subledger events (
de.accounting.*), emitted byaccountingd. - agent
- Agent runtime events (
de.agent.*), emitted byagentd. - billing
- Billing events (
de.billing.*), emitted bybillingd. - eeg
- EEG/KWKG settlement events (
de.eeg.*), emitted byeinsd. - gabi
- GaBi Gas balancing events (
de.gabi.*), defined inmako-gabi-gas. - invoic
- INVOIC receipt/payment events (
de.invoic.*), emitted byinvoicd. - mabis
- MaBiS Summenzeitreihe submission events (
de.mabis.*), emitted bymabis-syncd. - mako
- Core MaKo process lifecycle + EDIFACT transport events (
de.mako.*). - markt
- Market master-data events (
de.markt.*), emitted bymarktd. - messwert
- Meter-reading / energy-data events (
de.messwert.*), emitted byedmd. - netzbilanz
- MaBiS/Netzbilanzierung INVOIC events (
de.netzbilanz.*), emitted bynetzbilanzd. - obs
- Process-observability events (
de.obs.*). - sperr
- Sperr/Entsperr execution events (
de.sperr.*), emitted bysperrd. - tarif
- Product & tariff catalog events (
de.tarif.*), emitted byproductd. - vertrag
- Contract lifecycle events (
de.vertrag.*), emitted byvertragd. - vpp
- Virtual-power-plant events (
de.vpp.*).