Fun times in AppStream and Debian land: GNOME 2048 dropped the "GNOME" part from its app name, so that it is now just named "2048". Nobody expected app names to be plain integers, so when this value is written to a JSON/YAML file by libappstream's C code, it writes/reads a str, but type-aware parsers (in Python) parse it as int. In Debian's downstream tooling, something that should be str is suddenly an int and fails validation.

This in turn halted package publishing on the Debian archive...

I fixed it by adding some heuristics to libappstream to explicitly quote something we know should be a string if it starts with a digit/punctuation (for performance reasons).

I would just like to simply quote every string and be done with it (it's also more JSON-like). But keeping the more minimal style instead of changing how the emitted AppStream YAML looks like (breaking tests) was the better, more conservative fix. - For now.

@matk Aw geez. Type coercion strikes again!
@matk
I would claim, this is an incarnation of the design decision of yaml, called the Norway problem.
Just imagine you want to package the 'yes' binary and all of a sudden your scripts complain about true not being a string.
@x9c4 @matk Just say Norway to YAML
@x9c4 Some design decisions of YAML were pretty atrocious, fortunately YAML 1.2 fixed most of them, and with libfyaml AppStream now uses a library that can parse & emit YAML 1.2 properly.