Lint / JS (eslint) (push) Successful in 12s
Lint / PHP (phpcs PSR-12) (push) Successful in 27s
Lint / PHP requirements (version + extensions) (push) Successful in 33s
Lint / Notify on failure (push) Skipped
Lint / Deploy (push) Successful in 9s
Lint / PHP (phpcs PSR-12) (pull_request) Successful in 1m12s
Security / PHP Security (semgrep) (push) Successful in 3m26s
Lint / PHP requirements (version + extensions) (pull_request) Successful in 35s
Lint / JS (eslint) (pull_request) Successful in 11s
Lint / Deploy (pull_request) Skipped
Lint / Notify on failure (pull_request) Skipped
Security / PHP Security (semgrep) (pull_request) Successful in 1m48s
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>