governance Operations Service
The one object a person or an agent reaches the loop through: read the drift log and the current declaration, run a check, release a quarantined proposition.
Declared last on purpose. @ConditionalOnBean is evaluated in declaration order within a configuration class, so the runner and the sweep above are already registered when this condition is tested.
The conditions are the loop's own: with no drift log there are no reports to read, with no runner there is no check to run, and with no sweep there is no hold to lift. Under the default in-memory backend, and under drift.mode=off, none of those exist and neither does this bean.
Registering it runs nothing. It is the object a host calls, or hands to GovernanceController and GovernanceTools.
It is also the only governance bean either front end needs. GovernanceController arrives with DiceRestConfiguration, the one import that opens any DICE REST surface, and switches itself on when this bean exists. GovernanceTools is constructed by the host, the way every DICE tool object is; nothing here registers one.