Commit 833cce7
The surviving mutation was a question, not a verdict, and the answer is
"untested", not "dead": `gap_boundary` is reached on every run --
`build_from_wall_rects` calls it at `factor = 1.0` for its axis lift --
and the read genuinely moves the output. Zeroing it drops the axis
outline back onto the net gap, which the existing suite does catch.
What nothing caught is WHICH edge the read points at. Every fixture in
this file boxes its room with four walls of the SAME thickness, so
permuting `half_thickness` around the cycle moves nothing at all.
Verified on current main: rewriting the read as `cycle[(i + 1) % n]`
leaves the crate at 708 passed, 0 failed.
Area could not have closed this, which is the lesson #2913 recorded.
Offsetting a rectangle by a permutation of the same four numbers only
permutes which side each lands on, and the opposite-edge swap
(`cycle[(i + 2) % n]`) is exactly area-preserving: width stays 4.8 and
height stays 3.5 either way. So assert POSITION -- four distinct
half-thicknesses and one assertion per side of the offset rectangle,
each side displaced by exactly one edge's value, so any misrouting moves
at least one of them.
Bounds are taken as min/max rather than by vertex index, so the test
pins the geometry rather than which corner the face cycle starts at, and
the fixture asserts its own four values stay distinct -- a later edit
making them uniform would silently restore the blind spot.
Mutants killed (each verified individually, all six):
- `cycle[(i + 1) % n]` -> left side at -0.10, want -0.55
- `cycle[(i + n - 1) % n]` -> left side at -0.40, want -0.55
- `cycle[(i + 2) % n]` -> left side at -0.25, want -0.55 (area-neutral)
- `.half_thickness * 0.0` -> left side at 0, want -0.55
- `let off = half` -> factor=2 left side at -0.55, want -1.10
- `[-uy * off, ux * off]` -> left side at +0.55, want -0.55 (inset, not outset)
Test-only: the read is correct as written, so there is no production
change to make. `ifc-lite-geometry` lib 708 -> 709 passed, 0 failed;
`cargo clippy -p ifc-lite-geometry --all-targets -- -D warnings` clean;
module-size ratchet 5/5 (test files are exempt, ALLOWLIST_DIGEST
unmoved).
Co-authored-by: Louis Trümpler <78563314+louistrue@users.noreply.github.com>
1 parent 6095fe0 commit 833cce7
1 file changed
Lines changed: 94 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
54 | 148 | | |
55 | 149 | | |
56 | 150 | | |
| |||
0 commit comments