func Chosen
ActionChosen is the whole record: the server, and the address that chose it.
ONE READ AND NOT TWO, and this exists for that reason alone. kourt.xyz asks both questions together and acts on the pair — it publishes the guild AND records the setter as who signed for it — and two qeval calls can straddle a change. A moderator re-aiming the binding between them hands one decision's guild to another decision's signer, which is then written into the site's database as fact. A pair that cannot be read atomically should not be read as a pair.
BOTH EMPTY OR NEITHER. A court that never chose answers ("", ""), which is the commonest answer and is not an error.
THE SETTER IS WHO ASKED, NOT WHO MODERATES NOW. A court that replaces its moderators does not change this — the choice was made by whoever made it, and rewriting that would destroy the only record of who did. Whether they STILL moderate is a separate question, and kourtv2 is the one to ask it.
STRINGS AND NOT AN address, because the caller is a machine reading qeval's printed output: an address prints as `("g1…" .uverse.address)` and a string as `("g1…" string)`, and the second is the one a parser can hold to.