Aetheria/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens daa645601a Cut 2 Stryker fix batch: chunk-index bounds, respawn boundary, ChunkId equality
Stryker over Zone.cs (concurrency 1, 111 mutants tested) surfaced four real
gaps on this cut's own lines, all now killed:

- ChunkExists's range check (`index < 0 || index >= length`) survived both an
  AND weakening and a `>` boundary weakening, because nothing tried an
  out-of-range index on either side alone.
- The broken-until comparisons in ChunkExists/ChunkRadius and the pack-time
  pruning in IsExpired all survived a `>`/`<` vs `>=`/`<=` boundary flip,
  because every prior test advanced zone time well past BrokenUntil instead
  of landing on it exactly.
- ChunkId.Equals survived an AND-to-OR weakening: the wear dictionary's own
  GetHashCode already separates same-field/different-index and
  same-index/different-field pairs into different buckets, so a bad Equals
  was never reached through a lookup. Testing equality directly closes that.

Two survivors on this cut's lines are recorded as equivalent, not chased:
ChunkRadius's `wear.Damage <= 0f` boundary (at damage == 0, DamagedSize and
UndamagedSize evaluate the same curve at the same point, so no input
distinguishes the two branches), and ChunkId.GetHashCode's exact formula (a
hashcode's bit pattern isn't a contract; any deterministic function of the
same two fields trivially keeps equal keys hashing equal, and this
dictionary is too small for distribution to matter).

The remaining survivors (lines 44, 75, 170, 200, 212, 216, 319, 336-412) sit
in Update/GetOrbitPosition/GetSecurityLevel/GetHeight/GetNormal/PowerPulse,
none of which this cut touches; they predate it and are out of scope here.

Mutation score 38.62% -> 42.33% (78/111 killed, 2 timeout, 31 survived, all
31 either pre-existing or one of the two equivalents above).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 12:05:47 +02:00
..
Aetheria.Shared.Tests Cut 2 Stryker fix batch: chunk-index bounds, respawn boundary, ChunkId equality 2026-09-25 12:05:47 +02:00
mutation_tests_addressables_cut.py Un-clobber the item-provenance mutation harness; own file for this cut 2026-09-18 05:07:23 +02:00
mutation_tests_shield_panel_cut1.py Add the Cut 1 batchmode probe and its mutation harness 2026-09-18 06:08:24 +02:00
mutation_tests_shield_panel_cut2.py Fix ShieldManager's missing-envelope fallback regression 2026-09-18 06:45:07 +02:00
mutation_tests_shield_panel_cut3.py Add the Cut 3 batchmode probe and its mutation harness 2026-09-18 13:51:44 +02:00