diff --git a/internal/catalogue/manifest.go b/internal/catalogue/manifest.go index aab61d2..94abd4e 100644 --- a/internal/catalogue/manifest.go +++ b/internal/catalogue/manifest.go @@ -126,6 +126,17 @@ type Manifest struct { // Requires are names that must be provided by something assigned to the same node. Requires []string `json:"requires,omitempty"` + // Emits are the event types this module publishes onto the broker — dotted topic keys, e.g. + // "module.umami.site.created". Declared so the mesh knows the event graph; events are + // provisioning's lighter sibling — 1:many and broadcast, no credential (novox/hq ADR 0046). + Emits []string `json:"emits,omitempty"` + + // Consumes are the event patterns this module subscribes to — topic patterns over module, + // mesh and node events alike, e.g. "node.*.joined" or "#" (the audit logger). The runtime + // wires the subscription; the module ships the handler. A Consumes for an event nothing on + // the mesh Emits is a dangling edge. + Consumes []string `json:"consumes,omitempty"` + // Claims are singular resources. Two modules claiming one thing within a scope cannot both // be assigned there — which is how exclusivity is expressed, rather than as a list of rivals // that every new module would force its predecessors to update.