fix(intern-decision-serve): 0.1.2 treats empty/null images as absent

Audit finding on 0.1.1: a Jev client that always sends an images array with no
images was rejected for nothing. Only a non-empty value is 422 now. Also aligns
the contract's response example with the wire (model is the name@revision
string, not an object).

Re-accepted live: images []/null -> 200, ["a.png"] -> 422; JevBench all 202/231,
hard 83/111, 0 changed rows across the bench's r1..r4 (924).
This commit is contained in:
vh
2026-09-30 13:04:31 -07:00
parent da50696fe8
commit 1866c003e8
14 changed files with 2893 additions and 11 deletions
@@ -29,3 +29,15 @@ JevBench v1.2.16 (5e95f23), its own `typesafe` adapter, over the 231 public item
`gpu1-peak.csv`: per-process GPU 1 footprint, nvidia-smi at 0.2 s, container PID resolved via
docker inspect. Largest accepted request (16 noul questions, 7,167-token prompt) found by binary
search. **Peak 9,866 MiB ≤ 9,876 budget** (10 MiB inside).
## 0.1.2 (audit fixes, same day)
infra-ops audit PASS with two low findings, both fixed in 0.1.2:
1. doc-only: the contract's response example showed `model` as an object; the wire returns the
`"<name>@<revision>"` string. Example and prose aligned.
2. `images: []` / `null` now count as ABSENT (only a non-empty value is 422) — a client that
always sends the field must not be rejected for nothing. Live: `[]`→200, `null`→200,
`["a.png"]`→422.
Re-run on 0.1.2 (jb2-* files, the 0.1.1 artifacts kept with their version suffix): all **202/231**,
hard **83/111**, **0 changed rows** across 924. 124 tests green. Rollback: 0.1.1.