EnvDefinition<any> is used only as the generic bound here (never surfaced to consumers):
TypeScript infers a precise, per-key literal type for S from the object passed to
createEnv, so the resolved contract type (see InferEnvValue) stays fully
strict. This is the same variance workaround used by schema libraries like zod/trpc for
heterogeneous generic maps.
A schema is a map of variable name -> definition.