1. [correctness] `apps/haskell/static/app.js:22` — Every action response replaces the entire list, discarding any edit started while that request was pending. Toggle one item, then double-click another and type before the response arrives: the editor disappears and the typed changes are lost. Preserve pending edits when applying responses.
2
3
2. [spec] `apps/haskell/app/Main.hs:103` — `parseListen` accepts any `127.x.x.x` address, although the brief requires binding only to `127.0.0.1`. For example, `--listen 127.0.0.2:8080` passes validation. Require the exact permitted address.