Commit graph

2,673 commits

Author SHA1 Message Date
Meta Vens
b3d1e92904 FlightTests: the patrolling fixture starts far from its circuit point
At distance 0 MoveToOrbit hands back to patrol every tick and the patrol
state's unconditional transition wins over the combat interrupt, so no
combat transition was ever reachable in the fixture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:52:43 +02:00
Meta Vens
a2ad79a68e FlightTests: combat transitions are looked for across the patrol sub-states' own hand-overs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:33:31 +02:00
Meta Vens
c1b83e84e5 FlightTests: the combat transition tests give the pilot a track it sees
Entity clears a target its pilot does not see; the earlier commit set one
without perception, so the pilot never entered combat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:31:32 +02:00
Meta Vens
1fea9cd2e1 FlightTests: pin the executor's combat and root transitions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:13:50 +02:00
Meta Vens
f91f658ad2 Flight: a member that cannot see the engaged track steers on its bearing
The member kept Target to its own sensors but fell back to patrol while a
flightmate fought; it now follows the engaged track as it followed the
hailed one (ruling shared-track-bearing-only: a bearing, never targeting data).

Builds: not yet verified at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:13:48 +02:00
Meta Vens
e95116b670 Tests: removal order, per-faction flights, zone tick, exponent margin
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 16:30:34 +02:00
Meta Vens
7217112873 FlightTests: a patrolling pilot never falls back to the root state
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 16:21:37 +02:00
Meta Vens
290b34331a Minion: a task change leaves its own state only; the walk no longer crosses into the other task's states
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 16:20:33 +02:00
Meta Vens
c3c6d12db8 FlightTests: boundary, selection, trespass, standoff and task-change pins
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 16:12:53 +02:00
Meta Vens
c8c544f489 PatrolOrbitsState: compare the task by reference
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 14:35:00 +02:00
Meta Vens
080dbed07d Catalog: doctrine-catalog apply (Zhestokost, Lucent Media, Aeronautics Unlimited)
Ran on Yggdrasil against the base catalog; the Pirates have no Faction record
(follow-up pirates-catalog-record), so their doctrine is not written. Miss
Terri's untouched.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 14:32:15 +02:00
Meta Vens
9978d28763 PatrolOrbitsState: arrival advances the circuit only while the pilot is still on its task
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 14:29:47 +02:00
Meta Vens
90462179b8 SteeringTests: Agent takes its RoleDoctrine
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 14:21:04 +02:00
Meta Vens
8f42265de3 Faction play 1: typed doctrine on Faction and one flight per faction per zone
FactionDoctrine/RoleDoctrine (Faction key 17), Flight as the only writer of
members' Target and Task, hail/grace/compliance, FollowTask/FollowState,
agent removal on Entities removal, doctrine-catalog command, FlightTests.
Not yet built or run; verification follows in later commits.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 14:18:41 +02:00
Meta Vens
4d664b537f EvasionTermTests: LookDirection became Aim and Ship.Turn is the only facing command parked/aether-drive
The merge brought tests that set Ship.LookDirection and relied on Ship.Update turning toward it. Master's helm split removed both. EvFace sets Aim and asks Steering.Toward for Turn each tick, the same law the old steering pass applied; the two multi-step loops now face per tick.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 22:33:16 +02:00
Meta Vens
179ab92abc Merge evasion-term: evasion is changes of vector plus a per-gun mount term; authored tracking rates in the catalog; the aether drive leaves the envelope
Soul gate closed at verdict cut-evasion-term.s5 (head 473a4bcc); remaining Low
test gaps are deferred to a follow-up. Merged under operator ruling
aetheria-release:ruling:completed-cuts-merge. Carries the migrated
GameData/Aetheria.cc (LFS sha256 63250cf2...7ae25); master did not change the
catalog.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 22:29:51 +02:00
Meta Vens
71894d1db1 Merge sim-mines: mines are free-floating sim bodies with hostile trigger and no leash
Soul gate closed at verdict cut-sim-mines.s2 (head 06efde6f; branch already contained master, so the merged tree is the verified head). Merged under aetheria-release:ruling:completed-cuts-merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:54:33 +02:00
Meta Vens
06efde6f51 MineTests: pin the layer's identity, the faction frozen at lay, and the blast disc as the trigger disc
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 21:17:41 +02:00
Meta Vens
231cb732e2 Merge origin/master (controls-helm) into sim-mines
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:36:32 +02:00
Meta Vens
0f568a018a Zone mine step: no empty-set fast path, one trigger scan; MineTests pin the turn with an oblique mount
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:17:47 +02:00
Meta Vens
df53360aa3 FloatingBodyTests: set Ship.Aim where the fixture set LookDirection
The helm split removed LookDirection. The ship-gravity test asserts only Velocity
after Update, so it needs no facing; Aim keeps the value the fixture carried
(Direction already defaults to the same +z facing).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:11:08 +02:00
Meta Vens
3fcdc20c00 Merge controls-helm: Ship.Turn is the only facing command; the helm split and face-the-aim
Soul gate closed at verdict cut-controls-helm.s3 (head b644fceb). Merged
under operator ruling aetheria-release:ruling:completed-cuts-merge.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:08:31 +02:00
Meta Vens
cbe975d9a9 MineTests: every delay is inclusive at its exact step
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:05:57 +02:00
Meta Vens
44cc356a05 MineTests: the launch angle is the mine's own dice; a mine layer ignores blast against range
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:05:34 +02:00
Meta Vens
473a4bcccd Evasion fix batch C: drop the unruled catalog thresholds, pin the jink price and the torque trim membership, give an unlimited gun on zero gear one meaning
- Delete ABigGunHitsABigShipAtRange and TheCatalogMeetsTheRuledOutcomes (rulings cshot-rainbowlite-rate, evasion-angular-velocity-r2).
- TheJinkIsForgivenPerShipInThePrice: HitProbability of two guns of different rates carries PDeviation(Evasion, Tracking(shooter)).
- TrackingRate: an unlimited gun is +infinity whatever the gear reads, not inf * 0 = NaN.
- EveryAggregateAndTheCompensationReadLiveThrust: trim membership read from the thrusters' torques, not Ship's private list.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 19:59:29 +02:00
Meta Vens
c100ba986f MineTests: a shield regenerates over the run, and a faction is not a catalog record
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 19:55:19 +02:00
Meta Vens
23aa848315 Mines in the sim: a mine layer lays a free-floating mine body in Zone
MineLayerData (union 40) lays through InstantWeapon -> FireControl.Fire -> Lay;
Zone.Mines steps each mine as a KinematicBody after the entity loop, arms it,
triggers it on a hostile hull its blast disc touches (FireControl.Touches, the
coverage Detonate uses) and detonates it through FireControl.Detonate at the
fuse delay or lifetime. Hostile trigger, faction-blind blast, no owner leash.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 19:47:21 +02:00
Meta Vens
9f8b3f4536 Merge floating-bodies: the floating body loot and mines share, one gravity law in Zone
Soul gate closed at verdict cut-floating-bodies.s3, head 6299627b, under
operator ruling aetheria-release:ruling:completed-cuts-merge.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 19:19:27 +02:00
Meta Vens
a6484c2599 EvasionTermTests: the range fixture's guns follow anything, so the evasion tests price evasion and not the catalog's mount rates
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 19:18:28 +02:00
Meta Vens
b644fceb24 Turn bound has one owner, the actuators; pin the turn rate and the 90 degree boundary
Ship.Update no longer clamps Turn: Thruster.Axis saturates and AetherDrive.Axis
clamps, which is where the bound is enforced. TurnIsClampedToOne becomes
TheActuatorsBoundATurnBeyondOne and asserts the actuator bounds directly. The turn
rate is pinned against a value computed from each thruster's Torque, Thrust,
TorqueMultiplier and the hull's Mass; the behind-the-hull rule is probed at 85 and
95 degrees.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 19:11:34 +02:00
Meta Vens
cdaef1a098 EvasionTrackingTests: EveryCatalogGunTracks, TheCatalogMeetsTheRuledOutcomes, PlightHasItsRuledShape
Data checks over the migrated catalog; no value is restated and nothing derives a rate from Shape.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 18:57:54 +02:00
Meta Vens
846f836aac AetherDb: delete evasion-catalog now that the migrated catalog is the table's only copy
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 18:54:17 +02:00
Meta Vens
3d77f2e038 Catalog: every weapon's Tracking and plight's 1x2 Shape, by evasion-catalog apply
Rates are the authored table (ruling weapon-tracking-authored); launchers and guided weapons stay +infinity. plight takes Spectra's one-by-two Shape (ruling plight-shape).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 18:53:07 +02:00
Meta Vens
1d85e1d4da AetherDb: evasion-catalog, the literal per-weapon tracking table and plight's 1x2 Shape
One-shot, dry run unless apply, refuses a second apply. Deleted in its own commit after the catalog lands.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 18:52:47 +02:00
Meta Vens
6299627b72 FloatingBodyTests: pin Ship.Update's gravity line through a real ship in a real well
Ship at +x in an empty zone with a slope: velocity after Update(delta) equals the
3035230b ship law scaled by delta * 60, at 1/60 and 1/30. Fails on `-=` and on a
changed delta factor.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 18:49:20 +02:00
Meta Vens
db19ecfeb7 EvasionTrackingTests: the entity overload's offset is checked with the shooter away from the origin
Stryker survivor at FireControl.cs:211 (target.Position + source.Position) was invisible while the shooter sat at 0.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:43:21 +02:00
Meta Vens
4dea45bb19 FloatingBodyTests: the legacy drift table is keyed by the normal's length, not its square
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:43:08 +02:00
Meta Vens
6c15a33315 Tests: pin For's double mix against the single-xor collapse and Commit's | 1u seed bit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:32:55 +02:00
Meta Vens
d62d44cb99 One gravity law in Zone: ships and floating bodies read Zone.GravityAcceleration
The law ships felt (normalize(f) * strength * (1/(1-|f|^2) - 1), gated at |f|^2 .001) is
now Zone.GravityAcceleration, per second via a 60 Hz reference rate; Ship.Update applies it
times delta, so ships push as before at 60 fps. Zone.GetForce's separate law is gone and
delegates to it. Floating-body drift at 60 fps now matches the legacy GridObject magnitude.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:32:53 +02:00
Meta Vens
97adf07aec TurnIsClampedToOne: say that the consumers clamp too
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:17:49 +02:00
Meta Vens
7d80af6dfe EvasionTrackingTests: both guns on the one shooter, at the origin at rest
A ship's targeting gear carries its own item quality, so Tracking(shooter) differs between two ships fitted alike:
the gun-times-ship comparison needs two designs on one ship. The gunner now carries FastBlast+- and ColdFire, and
the mount fixture puts it back at the origin so the sweep is the geometry the test states.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:02:52 +02:00
Meta Vens
2b7cf309d2 EvasionTermTests: EvLonginus carries the Targeting Computer at the generated Longinus's cell; the stop-jinking probe reads at a half-period of 0.5 s
Tool gear fits only interior hull cells and the Fire Control Array has no free one on a Longinus. The jink that
stops at t=3 s has been quiet longer than the 0.75 s window by t=4 s, so the Djinni reads 0 there: the jink is the
0.5 s half-period that was already used in the speed-demon rows.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:55:54 +02:00
Meta Vens
e5232ad9d3 EvasionTrackingTests: take the targeting gear offline through its durability, as the gear tests do
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:45:54 +02:00
Meta Vens
8e20617f5f AetherDrive: restore the Execute signature the drop commit deleted with Manoeuvre
e360ceeb removed one line too many (public override bool Execute), so the drop commit and its two successors do not
build. The file is now exactly the base minus the 24 lines of Manoeuvre.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:45:10 +02:00
Meta Vens
286a610b17 EvasionTrackingTests: the mount term's rules, with EvCross taking a velocity
AngularVelocityIsTransverseOverRange, TheMountHitsHalfAtItsRate, TrackingRateIsGunTimesShip,
LightAndHeavyGunsSplitOnAFastCloseCrosser, ABigGunHitsABigShipAtRange, TheJinkIsStillForgivenPerShip,
AShotFreezesItsMount, AnUnauthoredWeaponHasNoMountLimit. Rates are set on the loaded designs in code.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:43:32 +02:00
Meta Vens
b6487afd95 FireControl: the mount factor, AngularVelocity, TrackingRate and PMount, in the price, the freeze, Inspect and the HUD
PMount(AngularVelocity(source, target), TrackingRate(weapon, source)) multiplies HitProbability after the pFire gate;
Fire freezes it into PendingShot.PFire; Inspect and the debug HUD show omega, rate and the factor. TrackingRate is the
one product of the gun's rate and the ship's gear (ruling tracking-per-gun). Tracking(Entity) in metres still alone
forgives the changes of vector (ruling jink-per-ship).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:40:00 +02:00
Meta Vens
8cd71ed6da WeaponData.Tracking and Weapon.Tracking: the gun's mount rate in degrees per second
Key 33 (first free across WeaponData and its subclasses), default positive infinity: an unauthored gun has a mount
that follows anything. The resolver's NaN fallback to Min yields +infinity for the degenerate lerp.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:39:59 +02:00
Meta Vens
e360ceeb27 Evasion r6: drop the aether drive from the envelope; the gemini fixtures fly thruster hulls
Ruling retire-longinusx. AetherDrive.Manoeuvre and the drive line in Ship.RecalculateEnvelope go: the envelope
sums thrusters only. TheDrivesReportReadsItsStateAndTheShipsSpeed, the EvGemini fixture and the drive-only asserts
are deleted. Sideways jinks and the shooters' target move to the generated Djinni; the gun platforms (FastBlast+-,
ColdFire) are EvLonginus, the Duel's guns on a Longinus. TheThreeShipsOrder becomes TheShipsOrder.

Not built or run on its own: verified together with the mount term at the head.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:39:45 +02:00
Meta Vens
6833f5aa7f TurnIsClampedToOne: compare against the starting heading, not the hull's own
The reference-turn assertion measured the angle between the hull and itself.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:35:00 +02:00
Meta Vens
b0d7ccb4f8 Pin the agent steering writes and the helm rules Soul found unpinned
Holding heading after a state stops piloting (SteeringTests, and a Minion that
loses its target), Combat leading a moving target, MoveTo's Aim and Turn in the
low-delta regime, the behind-the-hull threshold, the Turn clamp, and the hold
branch clearing a stale MovementDirection.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 16:23:56 +02:00