/creatures/:id/delete now just removes the row, matching how
POST /creatures (adopt) just inserts one — no side effects on anything
else. The auto-reseed was scope creep for a feature that only ever made
sense as a public marketing-site action; now that delete lives in the app
itself as a per-creature control, that safety net isn't needed.
Adds a Delete button next to Feed/Play/Sleep/Revive on every creature
card, same creatureAction() plumbing as the existing actions.
POST /creatures/:id/kill poisons a creature (is_alive=false), the same
state natural decay reaches — feeds tamagotchi_creatures_dead_total and
therefore the real TamagotchiCreatureDied -> Alertmanager -> n8n revival
chain. Deliberately app-level, not a pod action.
POST /creatures/:id/delete permanently removes a creature and immediately
reseeds a replacement. Does not touch the dead gauge on purpose: it
demonstrates the app defending its own roster rather than the monitoring
chain, so a public unauthenticated action can't empty it out over time.
PostgreSQL only accepts FILTER on an aggregate call. It was attached to
ROUND, so the whole query was rejected and /api/stats answered 500. The
showcase reads that endpoint for its live creature stats, which meant the
homepage displayed five dashes instead of numbers.
FILTER now sits on AVG, with the rounding applied to the result.