Skip to content

symfonic.capabilities.governance.stages.steering

steering

Policy steering: is this call something this deployment permits?

Runs after preconditions, so the model is never made to argue policy about a call that was inadmissible anyway. Like preconditions it steers rather than refuses, and like preconditions a guard that raises admits — pinned to T3.1.3, where the argument is recorded in full: steering is a preference layered over tools that enforce their own authorisation, so a broken guard able to halt every turn would make the safety feature the outage.

PolicySteeringStage

PolicySteeringStage(guards: Sequence[Objector])

Ask every policy guard about every admitted call.

Source code in src/symfonic/capabilities/governance/stages/steering.py
def __init__(self, guards: Sequence[Objector]) -> None:
    self._guards = tuple(guards)