Skip to content

symfonic.agent.cutover.continuation_window_admission

continuation_window_admission

What the migration window did, in a value the dispatch below can read (TA8.58).

Its own module for the reason every other one-value module in this package has one, and for a second reason particular to it: it must be importable by :mod:~symfonic.agent.cutover.continuation_window, which the refusal that reads it already imports. A record living in either of those two would make the pair circular.

The window's decision was, until TA8.58, legible only from outside: an admitted redemption warned and fell through, and the dispatch below could not tell an admission apart from a deployment that carried no retired setting at all. That was harmless while one fallback body served both. It stops being harmless the moment that body is removed, because the refusal replacing it has to be able to say "the window admitted this and then could not serve it" rather than the weaker -- and for a stranded legacy token simply wrong -- "your configuration is retired".

Admission

Admission()

Whether the window admitted, and the one setting it admitted on.

Two fields and never a third. setting is singular for the reason continuation-guard-window.md gives: the four guards short-circuit on the first raise, so one redemption learns one setting.

Nothing reads this yet. The continuation doors take the window's context manager without binding it, and wiring the refusal that uses it is TA9.2's, at the moment it removes the body.

Source code in src/symfonic/agent/cutover/continuation_window_admission.py
def __init__(self) -> None:
    #: Whether this block ended in an admitted redemption.
    self.admitted = False
    #: The retired setting the admission was granted on, if there was one.
    self.setting: str | None = None