Aetheria/tests/Aetheria.Shared.Tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens be5382170d Cut 12.3 fix batch: rework the F2 mirror test to compare hull totals, not per-cell sums
MirrorImageShotsProduceStatisticallyMirroredDamage compared per-cell armour
damage SUMS between a bearing and its mirror, using heavy (1000) uniform
armour. That armour never depleted, so no cell's absorption ever competed
with another lane's, and the test could not see the one thing the operator's
ruling is about: two lanes racing for one cell's finite armour under the old
one-cell spacing. Renamed to MirrorImageShotsProduceStatisticallyMirroredHullDamage,
it now resets a small, finite armour value before every individual shot (so
the race is live on every trial) and compares aggregate HULL damage, where a
lost race's leftover actually lands.

Finding, reported rather than hidden: even with this fix, the test does not
fail under the reverted one-cell spacing. Reasoning checked against measured
behaviour: FireControl.Apply always processes lanes in a fixed index order
(li ascending, i.e. lateral increasing), never based on the bearing's sign.
Over many INDEPENDENTLY random lateral draws, a bearing and its mirror sample
statistically equivalent distributions of "which side's lane goes first" --
the fixed-index tie-break rule respects the mirror symmetry in aggregate, so
independently-drawn trials wash out the order-dependent bias that Soul's own
LaneOrderDemo probe found (that probe compares ascending vs descending
processing of the SAME committed shot, not independently-drawn mirrored
bearings). A production-level test that reliably fails under the old spacing
for this specific property would need to force an exact, deterministic
lateral for two geometrically mirrored shots, which is not reachable through
Fire/Commit without reflection (Commit's lateral draw is randomised, and
Apply is private). NoCellIsStruckByTwoLanesAtAnAngledBearing and
FootprintWidensAtAnAngledBearingComparedToAxisAligned remain the two tests
that actually discriminate the ruling behaviourally (confirmed failing under
a hand-reverted one-cell spacing). The mirror test stays in the suite as a
true, currently-passing invariant and useful regression coverage, not as a
defense of this specific ruling.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 12:17:59 +02:00
..
Aetheria.Shared.Tests.csproj Pin AetheriaStores routing with tests; make PlayerSettings readable 2026-09-14 19:12:54 +02:00
AetheriaStoresTests.cs Resolve request/brownout conflict: evaluate power requests nominally 2026-09-19 06:58:57 +02:00
BrownoutTests.cs Resolve request/brownout conflict: evaluate power requests nominally 2026-09-19 06:58:57 +02:00
CapabilityEventsTests.cs Test that capability events route only to their own kind's subscribers 2026-09-17 14:37:07 +02:00
ConditionRatioTests.cs Cut 8: pin ConditionRatio -- perfect/dead/durability/heat/power/force-unchanged 2026-09-19 04:41:43 +02:00
FireAuthorityTests.cs Cut 12.3: drop two Cut 12.3 tests that called the deleted Entity.ApplyHit 2026-09-25 05:56:11 +02:00
FireControlCut4Tests.cs Cut 11 second round: one owner for PBase, and tests for what the 51 survivors showed 2026-09-22 16:39:52 +02:00
FireControlCut5Tests.cs Cut 6d: the dart-throw kernel replaces the coin-flip landing rule 2026-09-19 21:37:39 +02:00
FireControlCut6cTests.cs Fire control Cut 6c.1/6c.2: Resolution becomes reciprocal, targeting degrades instead of throwing 2026-09-19 18:31:46 +02:00
FireControlCut6dTests.cs Cut 12.2: where a hit lands is priced and drawn from one silhouette 2026-09-24 20:40:50 +02:00
FireControlCut6Tests.cs Cut 6d: the dart-throw kernel replaces the coin-flip landing rule 2026-09-19 21:37:39 +02:00
FireControlCut7Tests.cs Cut 12.2: where a hit lands is priced and drawn from one silhouette 2026-09-24 20:40:50 +02:00
FireControlCut8Tests.cs Cut 8: a removed entity is a dead entity, and re-anchor the stranded mutations 2026-09-22 00:50:57 +02:00
FireControlCut9Tests.cs Cut 12.2 Soul fix batch: half-open clamp, split assembly, real rolls 2026-09-24 23:08:19 +02:00
FireControlCut11Tests.cs Correct the Splash handedness claim: an undefended mutant, not a shipped bug 2026-09-22 18:37:12 +02:00
FireControlCut12Tests.cs Cut 12.3 fix batch: F10, an independent AlongBearing expectation at several bearings 2026-09-25 11:53:47 +02:00
FireControlCut123Tests.cs Cut 12.3 fix batch: rework the F2 mirror test to compare hull totals, not per-cell sums 2026-09-25 12:17:59 +02:00
FireControlTests.cs Fire control Cut 3: hit authority moves to FireControl 2026-09-19 14:07:07 +02:00
HeatResponseTests.cs Cut 1: close S5/S6's validation gaps, pin S7's surviving mutants 2026-09-18 18:42:10 +02:00
IffAndCombatTests.cs Test the IFF/grudge/detection rules and the weapon stance gate 2026-09-17 14:01:31 +02:00
InputCapacitorTests.cs Fire control Cut 3: hit authority moves to FireControl 2026-09-19 14:07:07 +02:00
LoadoutTests.cs Pin the targeting subsystem, reveal rule and Q4's required-equipment rule 2026-09-19 13:03:12 +02:00
PlayerSettingsSensitivityTests.cs Move mouse-look sensitivity into the PlayerSettings CultCache global 2026-09-17 17:22:09 +02:00
PowerBusTests.cs F2: gate the bus's reactors and consumers on Active, not Online 2026-09-19 05:06:31 +02:00
PowerCurveTests.cs Resolve request/brownout conflict: evaluate power requests nominally 2026-09-19 06:58:57 +02:00
PowerTierTests.cs F3: an empty tier is not a satisfied tier, and sub-epsilon demand pays its way 2026-09-19 05:15:30 +02:00
RoleAuthoringTests.cs Cut 7: refuse a stat naming a role its design lacks 2026-09-19 05:01:17 +02:00
RunSaveTests.cs Delete the persisted-behaviors feature per operator ruling 2026-09-17 05:44:37 +02:00
ShieldReserveTests.cs F4/F5: shield restore survives inactivity, and CanTakeHit stops mutating 2026-09-19 05:32:29 +02:00
StatResolverTests.cs Pin Gate 1, Gate 2 and F8's mutant fix with tests and mutations 2026-09-18 20:42:05 +02:00
stryker-config.json Cut 11 map: mutation testing moves to Stryker, and the survivors it found 2026-09-22 15:59:06 +02:00
TargetingSystemTests.cs Cut 6d: the dart-throw kernel replaces the coin-flip landing rule 2026-09-19 21:37:39 +02:00