Skip to content

symfonic.agent.cutover.prompting_rows

prompting_rows

The shape of one TA8.38 row: recommended, applied, and the argument (C1 lane).

Split from :mod:~symfonic.agent.cutover.prompting_surfaces when that module passed its line budget, and split the way settings_contract and retired_settings are: the shape and its reasons here, the twenty-five rows next door. The trusted surface should be readable end to end without the validation that enforces it in the way.

The rule this type exists to make un-forgettable: the triage is a recommendation, and a lane may override it but may not ignore it silently. :attr:PromptingSurface.override_argument is required exactly when :attr:~PromptingSurface.applied is not what :attr:~PromptingSurface.recorded asks for, so the one state that cannot be expressed is the one this programme kept producing: a row that quietly did something other than what was filed.

PromptingSurface dataclass

PromptingSurface(path: str, subgroup: str, owner: str, recorded: str, applied: str, served_by: tuple[str, ...], refused_by: tuple[str, ...], inert_on: tuple[str, ...], consumer: str, observable: str, condition: str | None = None, override_argument: str | None = None)

One TA8.38 row: what the triage recommended, and what this lane did.

served_by / refused_by / inert_on partition :data:~symfonic.agent.cutover.lifecycle_contract.PUBLIC_ENTRY_POINTS exactly, for the reason :class:~symfonic.agent.cutover.admission_surfaces.AdmissionSurface 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.

recorded and applied are separate fields, and that is the whole point of the type. Every row must carry the disposition this lane actually applied; a row whose applied disposition differs from the recorded recommendation must carry an argument as well. Silence is the one state that cannot be expressed.

overridden property

overridden: bool

True when this lane did not apply the recorded recommendation.

NORMALISED_PER_ROW and REPLACE name a decision; the inventory vocabulary names an outcome, so the two are compared through the one pairing that means "applied as written" for each.