symfonic.agent.cutover.governance_surfaces¶
governance_surfaces ¶
TA8.43's three rows, as data. The contract that reads them is next door.
Data only. Why C1-K is a REPLACE lives in
:mod:~symfonic.agent.cutover.authority, and what a governance surface is
lives in :mod:~symfonic.agent.cutover.governance_contract. Read those first --
this is the table they publish. It also holds
:data:REPLACED_GOVERNANCE_SETTINGS, the two configuration rows in the shape
:data:~symfonic.agent.cutover.retired_settings.RETIRED_SETTINGS folds in --
derived here, from the surfaces above, so the refusal an adopter reads and
the contract cannot drift apart.
The three shared names -- :data:GOVERNANCE_POLICY_GROUP,
:data:ADMIN_AUTHORITY_PATH and :data:EXECUTION_AUTHORITY_REASON -- are
re-exported here at the address importers already hold, the way
:mod:~symfonic.agent.cutover.pause_policy re-exports its own table's names.
GovernanceSurface
dataclass
¶
GovernanceSurface(path: str, subgroup: str, owner: str, kind: str, disposition: str, served_by: tuple[str, ...], refused_by: tuple[str, ...], inert_on: tuple[str, ...], consumer: str, observable: str, replaced_by: str | None = None, adopter_break: str | None = None, override_argument: str | None = None)
One C1-K row, and what 11.0 does with it on each entry point.
served_by / refused_by / inert_on partition
:data:~symfonic.agent.cutover.lifecycle_contract.PUBLIC_ENTRY_POINTS
exactly, for the reason LifecycleRow gives: an unmeasured third entry
point is the gap that made two thirds of this programme's earlier evidence
unusable, and a row with a hole in its surface would reintroduce it as a
data structure.
replaced_by and override_argument are mutually exclusive and one is
required, so this table cannot hold a row that was neither replaced nor
argued about -- "the triage recommended REPLACE and the code is silent" is
then not a state anybody has to infer from an absence. A replaced_by
without an adopter_break is refused for the reason this lane's
acceptance gives in as many words: collapsing REPLACE into MIGRATE ships a
breaking change as a migration note.
governance_surfaces_for_subgroup ¶
Every row of one TA8.25 subgroup, in declaration order.
Parity is asserted per field and never aggregated, so the tests read the lane one row at a time rather than reporting a single verdict.