A factory rather than a codec with a registry inside it: core owns the GRAMMAR of a leg and
the server owns the roster, so the lookup arrives as the same ResolveBoxInput function
patch-identity.ts already defines and stageboxPatchIndex already builds. The closure reads
the roster AT DECODE, never a snapshot taken when the row was constructed — a box that
enrolled a second ago is patchable, and one that left is refused.
patchEndpointArray, bound to the roster that resolves an identity leg.
A factory rather than a codec with a registry inside it: core owns the GRAMMAR of a leg and the server owns the roster, so the lookup arrives as the same
ResolveBoxInputfunctionpatch-identity.tsalready defines andstageboxPatchIndexalready builds. The closure reads the roster AT DECODE, never a snapshot taken when the row was constructed — a box that enrolled a second ago is patchable, and one that left is refused.