Service
define { name; description?; package; capabilities; protocols?; config?; }
builds a typed ServiceSpec and attaches an operations field
holding the runtime-op program that materializes the service:
declareCapability(c1) … declareCapability(cN) # one per category
declareProtocol(p1) … declareProtocol(pM) # one per protocol
declareService(svc)
materializeUnit(svc.name)The eager compatibility check fires inside the underlying
mb.operations.service smart constructor — invalid services
cannot be constructed. compatibility and descriptor are
re-exported from mb.descriptions.runtime for consumer convenience.
program is a shortcut: pass either a service value or the
arguments to define, and receive an internalized builder program.