<ul><li><strong>CRITICAL FIX — $siteid undefined in modals.php:</strong> modals.php used $siteid which is never defined in public module path. Fixed with TPLID constant fallback so siteidkey_fk always renders correct value.</li><li><strong>CRITICAL FIX — viewpetbtn data attribute had Tour class string:</strong> pets.php had data="&lt;PETItemID&gt; Tour-40-42-6" passing the tour class string as PETItemID. AJAX getProfileJson received invalid ID and returned null, breaking view modal. Fixed by moving Tour class into class attribute.</li><li><strong>CRITICAL FIX — getProfileJSON inner_join returning null:</strong> inner_join on uid_fk/users caused null result when user row missing. Changed to left_join so pet data always returns. View modal now shows all pet details and owner info.</li><li><strong>HIGH FIX — Postnotification topdirectory undefined:</strong> $_SESSION["topdirectory"] accessed without null coalescing in Postnotification constructor. Fixed with ?? guard.</li><li><strong>MEDIUM FIX — deprecated $.parseJSON() usage:</strong> 4 instances replaced with JSON.parse().</li><li><strong>MEDIUM FIX — missing onerror on img tags:</strong> 5 pet img tags (2 PHP + 3 JS-built) now have onerror fallback to default avatar.</li><li><strong>CRUD VALIDATED:</strong> Create/Read/Update/Delete all confirmed working via controller tests. View modal, edit modal, search, sort all functional. 0 JS errors, 0 network failures.</li></ul>