Commit graph Aetheria/tests/Aetheria.Shared.Tests/ThrustAllocatorTests.cs
Author SHA1 Message Date
Meta Vens
66641b46de ThrustAllocatorTests: throttles stay in bounds and floors hold wherever the solve ends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:47:53 +02:00
Meta Vens
9ff6e4ba42 Tests: the floor's stick-independence at the allocator; throttle-lock twin diagnostics
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:39:42 +02:00
Meta Vens
3400268681 Tests: forward floor under the lock, thermal death tick, nominal columns under total brownout
Not yet run; this commit may not pass. Co-Authored-By below.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:26:51 +02:00
Meta Vens
ffda2a8a76 Tests: add the missing usings (UniRx, System.Linq)
Fixes the compile errors of the previous commit; that commit does not build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:47:58 +02:00
Meta Vens
df61900db8 Rewrite the tests that read the mixer; add the ship-level allocator tests
EvasionTerm: the aggregate reads go; SteeringTests: ATurnIsThatFractionOfTheHullsTurn;
Brownout/ConditionRatio seat the lone thruster on the centre column; ThrottleLockTests
compare a locked ship to an unlocked twin through the same ticks; ThrustAllocationTests
(Duel flight, lost/degraded/repaired drives, dead thrusters, full turn, arena-stepped
flight); ThrustAllocatorTests.AMicroIntentIsServed.

Not yet verified green at this commit; the test project builds only against the
deleted aggregates' removal in the previous commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:44:22 +02:00
Meta Vens
144b2f5b95 ThrustAllocator tests: System.Random, not CultMath.Random, in the large-hull fixture
The previous commit (8bfce189) does not build: CS0104 ambiguous Random in ThrustAllocatorTests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:27:59 +02:00
Meta Vens
8bfce1899e ThrustAllocator: zero intent returns exact zeros before the solve; the 1e-9 output flush is deleted (zero-intent-warm-nonzero, zero-intent-at-the-cap)
Nothing asked, nothing fired is a fact about the intent: when all three clamped intents are exactly zero Allocate returns the zeroed buffer before the solve, so a warm solve that stops at the iteration cap can no longer fire thrusters. The output flush is gone. The warm start is left at the last solved point. Tests: the two 40-thruster hulls Soul found, and a small intent still answered at any column scale. Builds untested locally; verified on Yggdrasil.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:08:55 +02:00
Meta Vens
22cb76e85b ThrustAllocator tests: the drive's leak pins the sign of TA-R2's cost row (cost-row-sign-unpinned)
A cost row pulling the errors the other way lowers the pre-onset drive throttle by about 20 percent (1.30e-4 to 1.06e-4 at turn .5); the bounds sit 8 percent under the measured value.

Commit builds: yes (tests/Aetheria.Shared.Tests not yet run on this commit; the full run is the closing job).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 07:59:43 +02:00
Meta Vens
87e9bfd06b ThrustAllocator tests: a full turn against a full reverse keeps its whole yaw (error-bound-unpinned)
The turn leaves a forward error of 2, the top of TA-R2's error box; a bound of 1 or 1.5 gives yaw back.

Commit builds: yes (tests/Aetheria.Shared.Tests not yet run on this commit; the full run is the closing job).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 07:59:39 +02:00
Meta Vens
aa5e45a2ff ThrustAllocator tests: IterationLimit keeps the solver's iterate (iteration-limit-untested)
128 torque-free forward thrusters from a cold start reach the 100-iteration cap through the public surface; the call must keep the iterate it reached, not zero it.

Commit builds: yes (tests/Aetheria.Shared.Tests not yet run on this commit; the full run is the closing job).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 07:59:36 +02:00
Meta Vens
c770e11bfa ThrustAllocator: tests for a one-thruster first call and for stale rows; drop the b clear
Stryker survivors 12390 (initial _columns +1 skips the first resize at n = 1) and
12399/12400 (A not cleared between same-count calls) get tests. Array.Clear on b was an
equivalent mutant: rows 0-6 are assigned every call and the ridge rows are never written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 03:23:50 +02:00
Meta Vens
1d031bd273 ThrustAllocator tests: a bad column zeroes the caller's buffer after a good call
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:31:58 +02:00
Meta Vens
f78fc421ef ThrustAllocator tests: the drive's pre-onset throttle bound is 3e-4, measured 1.6e-4 at most
Removes the scratch probe. The spec pinned 1e-4; the optimum leaks 1.2e-4 (Duel) and
1.6e-4 (halved Talaria) from the first touch of Turn. Builds; ran 18 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:31:14 +02:00
Meta Vens
e355747dae ThrustAllocator: one bounded least-squares solve, yaw first, translation error paid linearly
Rules TA-R1 to TA-R4 of cut-thrust-allocator-core.r2, tests on synthetic columns
(Duel, damaged Duel, symmetric hull). First draft; not yet run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:29:05 +02:00