Optionaloptions: ErrorOptionsReadonlyreasonAn optional machine-readable reason, rendered into the response body alongside the message. DECLARED HERE rather than sniffed structurally at the mapper so the channel is part of the contract a subclass opts into, and so the mapper needs no import of any subclass to render it (see the header for why that import must not exist).
ReadonlystatusThe response status, 4xx or 5xx; any other status answers 500.
The base for a refusal that carries its own HTTP status and an optional
reason— the taxonomy's extension point. A shell or a host route declares one:A CLASS, so opting in is
instanceof— deliberate and nominal, the posture AuditLogger takes. The structural alternative (any thrown value with a numericstatus) cannot tell a refusal this DO authored from the arbitrary values its routes throw: an upstream client's{status: 429}would become this API's 429, and{status: 0}— routine on HTTP-client error objects — would makenew Responseraise inside the very catch whose job is to never throw. Everything unrecognized stays a 500.The run refusals that runtime.ts and run-lifecycle.ts declare as plain Errors carry a plain
readonly statusinstead, and refusalStatus maps them by class. A thread object's signal routes render any DoStatusError with its own status and answer these 502, which the schedule tick retries; as subclasses they would tell a signal sender that the refusal of its own host's start was the sender's bad request or unknown thread. A new refusal, a host's included, extends this class.