# Former


`mkBuilderKind { name, base, builderOps, runtimeOps, stateSpec }`
derives the operation coproduct surface (`Eff`, `Resp`, `reviewOp`,
`opNames`, `injectorsWith`, `dispatch`) and the state ornament
(`State`, `forget`, `forgetWith`) from one argument tuple, so the
op side and the state side cannot drift. The derived `forget` is
op-blind: it never depends on the operation datatypes, so it is
operations-preserving by construction.

