Skip to content

symfonic.agent.cutover.orchestrator_settings

orchestrator_settings

The five nested orchestrator knobs replaced on 11.0, as data (TA8.37, C1-E).

Data only, and split from :mod:~symfonic.agent.cutover.orchestrator_policy the way :mod:~symfonic.agent.cutover.pause_surfaces is split from pause_policy: the rows here, the contract that explains them and the rule that reads them next door. Read the contract module first -- it says why these five are REPLACE rather than RETIRE, and why they refuse through their own guard instead of through RETIRED_SETTINGS.

This file is one table and a row type, so adding or removing a row is a diff a reviewer can check against tests/agent/cutover/test_orchestrator_policy_lane.py's enumeration.

The stock baseline is derived, never stored. No row carries a default: :func:~symfonic.agent.cutover.orchestrator_policy.replaced_orchestrator_setting_supplied compares against a default-constructed instance of the live OrchestratorConfig, so a row here can never drift from the model it describes.

ReplacedOrchestratorSetting dataclass

ReplacedOrchestratorSetting(field: str, dead_because: str, replaced_by: str, adopter_break: str)

One nested orchestrator knob replaced on the 11.0 line.

replaced_by names the live surface an adopter moves to and adopter_break names what they lose moving there — both required, for the reason TA8.42's :class:~symfonic.agent.cutover.pause_surfaces. PauseSurface gives: a refusal that names the line and stops is a dead end, and a replacement named without its break is a breaking change shipped as a migration note.

path property

path: str

The dotted path, as FrameworkConfig reaches it.