The field-based declarative path: Model::from_fields derives the column list, theCREATE TABLE DDL, and the INSERT binding from a [Field] array — each fieldpairs column metadata with the attribute it binds. You supply only the from_rowdecoder (the record constructor MoonBit cannot synthesise without reflection), andRow::read reads each cell as the field's type. #orm annotations generate exactlythis; see 22-annotations. Field::name exposes the per-field metadata; then aSession round trip over @moondb.MockDriver.