Network tickets never set issue_subtype, so every automated network alert
for a host hashed alike: Gandalf's "Interface enp3s0 link-down" for micro1
matched closed reboot ticket 993441773, got noted there as a recurrence,
and never got its own ticket.
Automated network tickets now key on the optional `check_code` payload
field when sent (it must name the instance, e.g. iface_down:enp3s0),
otherwise on the title text outside the [tags], normalised with digits
kept. Manual tickets and every other category hash exactly as before.
The hash logic moves to helpers/TicketHash.php so the new
scripts/rehash_network_tickets.php can re-key open network tickets once
after deploy (--dry-run first). Closed tickets keep their old hash so they
stop catching unrelated alerts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>