symfonic.agent.cutover.continuation_admission¶
continuation_admission ¶
What the fourth door decides, and what a measurement of it must hold fixed.
TA8.46 drove every inventory row on the continuation door for the first time
and reported thirteen rows moving backwards to MISSING CONTRACT. TA8.47
tested that result instead of adopting it, and it does not survive: the
thirteen refusals are not a fact about the continuation door.
The rule this module exists to state. A disposition compares doors, so a
measurement of it may vary the door and nothing else. TA8.46 varied two things:
it read the three fresh doors from each row's own lane deployment at that row's
own declared non-default value, and read continuation from one stateless
pause deployment at a truthy sentinel. Every one of the thirteen
"contradictions" is that second change. Held fixed, the door never disagrees --
all four refuse the thirteen on TA8.46's own deployment with byte-identical
reasons, and all four admit them on each row's own lane deployment.
So the demotion is withdrawn by measurement rather than by relaxing anything.
:data:~symfonic.agent.cutover.arguments.ADMITTED_ARGUMENTS is unchanged, the
config allowlists are unchanged, and no continuation special case exists: a
field admitted on a resumed turn is admitted by the same default-DENY envelope,
on the same evidence, that admitted it on run.
Two things a continuation measurement must not conclude. A row refused on a
pause-capable deployment is not thereby refused by the continuation -- see
:data:REFUSAL_ATTRIBUTION. And a row whose declared non-default value is the
migrated baseline (the three
:data:~symfonic.agent.cutover.policy.BASELINE_OVERRIDES flags) cannot be
driven "at its non-default" by substituting a truthy sentinel; that measures the
pin, not the row.
ReconciledRow
dataclass
¶
ReconciledRow(*, path: str, deployment: str, value: str, disposition: str, resumed_observable: str | None = None, inert_because: str | None = None)
One of TA8.46's thirteen, and what re-driving it actually found.
resumed_observable is the point of the whole record. A row restored to
a migrated disposition on the strength of "the continuation admitted it"
would be TA8.19's session_id defect on the fourth door -- admitted, and
threaded to nothing. So every row here either names what moves on a
resumed turn when its value moves, or says in inert_because why no
resumed-turn observable exists and what was measured instead. Exactly one
of the two is set.