Commit e98904d
Port-first entry 2. `test/enemyBaseField.spec.ts` carries two claims, not one,
and only the first has a Rust counterpart. `worstAbs`/`worstRel` grade the
field's values, and `fixtures.rs` already reproduces those at both seeds in
three magnitude buckets. The second claim is `footprintDisagreements`: port and
game never fall on opposite sides of a cut at 0.05 through
`min(v, ENEMY_PLACEMENT_CAP)`. Nothing in Rust graded that.
The gap is real rather than theoretical, because the two checks cannot see each
other. An aggregate tolerance passes a residual that still moves a position
across the cut, and a cut is what the overlay does with this field. The nearest
Rust check, `the_enemy_fixture_is_mostly_basement_...`, compares positive
counts, so two positions could swap sides and the count would not move.
Planted rather than predicted:
| plant | result |
| --- | --- |
| bias the port by 0.011 | `a value sits 8.04e-4 from the cut` |
| bias the port by 0.03 | `port and game fall on opposite sides` - 3 at seed 123456 |
The second is the one that matters: 0.03 is 33x below the deleted spec's own
`ABS_TOL` of 1.0, so the aggregate arms would have passed it.
Two guards beside the probe, because a zero on its own can be luck. The count
of positions inside the cut is frozen per seed - 39 of 1032 at seed 123456, 37
at seed 777771 - so a port returning a constant cannot satisfy it. And the
nearest value to the cut is required to stay above 1e-3, so the f32 read cannot
be what decides a side.
This unblocks deleting `test/enemyBaseField.spec.ts`, which imports
`src/noise/enemies/enemyBaseField.ts` and therefore cannot outlive the #227
deletion. The spec stays until then; the coverage is now in both places.
Claude-Session: https://claude.ai/code/session_01UVcbv1pAhPUoCC6aBwZUtg
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 46c2032 commit e98904d
1 file changed
Lines changed: 73 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6068 | 6068 | | |
6069 | 6069 | | |
6070 | 6070 | | |
| 6071 | + | |
6071 | 6072 | | |
6072 | 6073 | | |
6073 | 6074 | | |
| |||
6202 | 6203 | | |
6203 | 6204 | | |
6204 | 6205 | | |
| 6206 | + | |
| 6207 | + | |
| 6208 | + | |
| 6209 | + | |
| 6210 | + | |
| 6211 | + | |
| 6212 | + | |
| 6213 | + | |
| 6214 | + | |
| 6215 | + | |
| 6216 | + | |
| 6217 | + | |
| 6218 | + | |
| 6219 | + | |
| 6220 | + | |
| 6221 | + | |
| 6222 | + | |
| 6223 | + | |
| 6224 | + | |
| 6225 | + | |
| 6226 | + | |
| 6227 | + | |
| 6228 | + | |
| 6229 | + | |
| 6230 | + | |
| 6231 | + | |
| 6232 | + | |
| 6233 | + | |
| 6234 | + | |
| 6235 | + | |
| 6236 | + | |
| 6237 | + | |
| 6238 | + | |
| 6239 | + | |
| 6240 | + | |
| 6241 | + | |
| 6242 | + | |
| 6243 | + | |
| 6244 | + | |
| 6245 | + | |
| 6246 | + | |
| 6247 | + | |
| 6248 | + | |
| 6249 | + | |
| 6250 | + | |
| 6251 | + | |
| 6252 | + | |
| 6253 | + | |
| 6254 | + | |
| 6255 | + | |
| 6256 | + | |
| 6257 | + | |
| 6258 | + | |
| 6259 | + | |
| 6260 | + | |
| 6261 | + | |
| 6262 | + | |
| 6263 | + | |
| 6264 | + | |
| 6265 | + | |
| 6266 | + | |
| 6267 | + | |
| 6268 | + | |
| 6269 | + | |
| 6270 | + | |
| 6271 | + | |
| 6272 | + | |
| 6273 | + | |
| 6274 | + | |
| 6275 | + | |
| 6276 | + | |
| 6277 | + | |
6205 | 6278 | | |
6206 | 6279 | | |
6207 | 6280 | | |
| |||
0 commit comments