- The input needs to be a sequence of mappings
- A top-level YAML sequence where each entry is a mapping converts cleanly: each entry becomes a row and the union of keys becomes the header. A single mapping produces a one-row file. A deeply nested config with no repeated structure has no table representation and is rejected with an explanation.
- Nested mappings become dotted columns
- A nested mapping under a key becomes dotted column names, so an address mapping with city and postcode produces address.city and address.postcode. This is lossless for mappings of any depth.
- Sequences inside a row become JSON text
- A list nested inside a record has no fixed-width column form, so it is written as JSON inside its cell. If you need one row per list item, restructure the YAML before converting.
- Types and comments do not survive
- CSV cells are untyped text, so booleans and numbers become plain characters and null becomes an empty cell, indistinguishable from an empty string. YAML comments are dropped, as CSV has no place for them.