# Accepted mutmut survivors: the triage record for the scoped audit
# configured in pyproject.toml's [tool.mutmut] table.
#
# scripts/check_mutmut_survivors.py fails the nightly mutation run on
# any undetected mutant not listed here, and on any entry listed here
# that is no longer undetected. Every entry must say why that mutant is
# a true no-op or out of any test's reach; one a test *could* kill gets
# that test instead of an entry. Mutant numbers are positional, so
# editing an allowlisted function usually renumbers its mutants -- the
# gate then reports the entry as stale and it has to be re-triaged.

# checksum._pseudo_header's IPv6 arm packs its 32-bit length field with
# struct.pack("!IBBBB", ...); this mutant swaps "I" for the signed "i",
# which only diverges for a payload >= 2**31 bytes (2 GiB), which no
# test in this suite can construct or run in reasonable time/memory.
# The same mutation on the IPv4 arm's 16-bit length field *is* killed
# -- see test_ipv4_pseudo_header_length_field_is_unsigned in
# tests/test_checksum.py, which exercises the exact signed/unsigned
# boundary at a testable (40 KB) scale.
netprotocols.checksum.x__pseudo_header__mutmut_33

# dns._labels' final label decode, .decode("ascii", "replace"): this
# mutant upper-cases the codec name to "ASCII". Python's codec lookup
# normalizes case, so both name the exact same codec -- every input
# decodes identically either way, with no observable difference for
# any test to catch.
netprotocols.layer7.dns.x__labels__mutmut_122
