manifest: emits and consumes — the event relationship
A module declares the event types it emits and the patterns it consumes, parallel to provides/requires (novox/hq ADR 0046). Events span module.*, mesh.* and node.* sources; a consumes for an event nothing emits is a dangling edge. Fields only here; the dangling-edge check and the runtime wiring follow. Claude-Session: https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
This commit is contained in:
@@ -126,6 +126,17 @@ type Manifest struct {
|
|||||||
// Requires are names that must be provided by something assigned to the same node.
|
// Requires are names that must be provided by something assigned to the same node.
|
||||||
Requires []string `json:"requires,omitempty"`
|
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
|
// 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
|
// 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.
|
// that every new module would force its predecessors to update.
|
||||||
|
|||||||
Reference in New Issue
Block a user