One template file, two responses. Click Show details on any row — htmx requests ?fragment=contact-{id} and the server returns only that row's markup, not the whole page. Open DevTools → Network → XHR to confirm each swap is a single 200 response with just one <li> in the body. Try /demo/fragments/contacts?fragment=does-not-exist for the HTTP 404 case — fragment selector with no matching region, no fallback to the full page.