The module can indeed contain any operation. Anything at all really, it might be "my_crazy_dialect.do_rm_rf"() : () -> ().
The translation to LLVM IR (which is what you actually ran, this IR is perfectly valid and would roundtrip just fine) only supports certain operations and requires a structure that matches both MLIR and LLVM IR expectations. In MLIR, constants are defined as SSA values and are translated locally within each function.