defenestrate — throw a person or object out of a window; no other exit is supported
defenestrate [-w WINDOW] [--out] [--resolve] OBJECT inside(x) -> outside(x); solved(x) unchanged
defenestrate relocates its OBJECT argument from inside a structure to outside it, transiting exactly one window. The transition is not gradual and not reversible. Unlike eject(1) or discard(1), the window is mandatory: remove it and the operation is a no-op with a clean pane.
The object's problem-state is not modified. defenestrate changes location, not resolution, then reports success on the grounds that a problem outside is no longer indexed by the process holding it. Callers who conflate the two are behaving as designed.
Weight is honored. Heavy arguments land short; light arguments flutter far. All arguments land.
The verb was coined in English around 1620 from Latin de- ("out of") and fenestra ("window"), minted specifically to name what Bohemian crowds kept doing to officials. In the Second Defenestration of Prague, on 23 May 1618, two Catholic regents and their secretary were thrown roughly seventeen metres from a Prague Castle window; all three survived, Catholic accounts crediting angels and Protestant accounts a dung heap. Prague repeated the act more than once, most recently in 1948, when foreign minister Jan Masaryk was found dead below his bathroom window.
--resolve returns 0 and calls the problem solved. The problem is outside. The exit code declines to distinguish these states.
--in is unimplemented; once out, objects remain out. Marked WONTFIX. This is the feature.
Ground-floor invocation exits 0 but yields no arc, no glass, and no satisfaction.
backpressure(3), tombstone(5), thrashing(1). The living exhibit demonstrates the word in motion:
▸ operate defenestrate