5e45031789
- safeParsePhotos(): corrupted photo_urls JSON no longer crashes every request that loads the dog - DELETE /photos/:idx rejects NaN/out-of-range indexes with 400 (was silent no-op) - PUT /:id returns 404 for missing dogs (was silent success) - POST/PUT validate sire/dam exist, have the right sex, and aren't the dog itself - Dog create (dog+parents), update (dog+parent swap), and cascade delete now run in transactions — no more partial writes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>