Commit graph Aetheria/tests
Author SHA1 Message Date
Meta Vens
27094e8859 Merge cut vector-rows-record (Soul verdict cut-vector-rows-record.s3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 01:21:40 +02:00
Meta Vens
d1f8302d54 Merge cut feedback-present (Soul verdict cut-feedback-present.s1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:44:56 +02:00
Meta Vens
addaa7c308 ShipRigTests: nesting is refused for a driven immediate parent or middle ancestor under an undriven root
Builds (tests only). Closes the surviving a11 mutant of the previous table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:35:12 +02:00
Meta Vens
836279e35f ShipRigTests: the bind tests ride the thruster on a pod joint of its own, apart from the gun's arm
Builds (tests only). The previous commit unset the gun's joint, which bind then refused against the model.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:21:54 +02:00
Meta Vens
cf981a2cf3 ShipRigTests: the bind tests ride a thruster on the arm without nesting the gun, and every shipped hull that names a rig passes the judge
Builds (tests only; production unchanged since 27ecd1f9).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:05:45 +02:00
Meta Vens
018a62be81 Merge cut scenarios-smoke-rounds (Soul verdict cut-scenarios-smoke-rounds.s2)
Catalog taken from master (2e2d927a); the branch's catalog change is replayed by the next commit. Scenarios.cs: both lists unioned.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 21:32:51 +02:00
Meta Vens
941a934ab6 ShipRigTests: nesting is refused, every shared-driving kind falls out of one rule, and the gun conflict is pinned at other sizes
Replaces the tests that pinned nested acceptance with refusal tests plus disjoint controls; gun arcs 10..360 against rows
of 1..5 thrusters; 360.01 and 360.5 against the thruster cap; a plan test that a thruster row adds no gun rig.
Findings nested-actuators-accepted and gun-conflict-pinned-at-fixture-sizes. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:31:16 +02:00
Meta Vens
aa851cfc72 ContactRevealTests: the Locker launcher fixture carries the five munition parts missile-stats requires
Mechanical merge adaptation: contact-reveals landed on master after missile-stats' base, and its fixture built a LauncherData without the
munition parts ValidateMunitionParts now demands (63 failures at Upsert). Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:14:26 +02:00
Meta Vens
789fe9fcdc Turn the shooter to the heading the direct-absorb test fires along
The mount fires inside an arc about the shooter's facing; the first version fired backwards and found no hit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:09:13 +02:00
Meta Vens
446f84458c Pin the feedback-1 cue path's remaining mutants (follow-up feedback-1-test-gaps)
A direct absorb's heading and damage type are the shot's, on both layers (non-Kinetic weapon, both heading
components negative); a blast absorb carries the blast's damage type and the target's height on both layers;
DrawAhead.Impact sits at the hull's height. Tests only; every commit builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:57:56 +02:00
Meta Vens
3535660cc5 Merge cut package-product (Soul verdict cut-package-product.s4) 2026-10-12 20:54:40 +02:00
Meta Vens
a19e3ba647 Merge cut missile-stats (Soul verdict cut-missile-stats.s2) 2026-10-12 20:54:30 +02:00
Meta Vens
16ed52d890 Merge cut feedback-1 (Soul verdict cut-feedback-1.s3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:30:02 +02:00
Meta Vens
9f85978f22 Merge cut scenarios-belt (Soul verdict cut-scenarios-belt.s1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:29:59 +02:00
Meta Vens
f85a0b0e17 Merge cut sim-contact (Soul verdict cut-sim-contact.s2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:29:56 +02:00
Meta Vens
7be5454742 AI discipline test flies half a minute: a hostile moved to 7000 m must fail it
The two-minute run let a hostile placed ten times farther still arrive; the hostile closes in about 15 s from 700 m (about 50 m/s),
so thirty seconds separates the arena's geometry from a mutant of it. Both controls fire within a second.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:23:52 +02:00
Meta Vens
96bbaa6320 validate shares Read's post-load composition; products, key, price rules pinned beyond the first product
ShipAuthoringStore.ValidateLoaded is the one composition of hull Validate and ValidateProducts;
Read and the draft branch of ship-authoring validate both call it (ValidateProducts is private).
Tests: a draft with an unnamed hull is refused; blank product name and key collision with the
offending product not first (both makers in turn); a negative hull price refused.
Builds untested here; the verify job runs at the end.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:00:18 +02:00
Meta Vens
2e92db41d1 Vector rows fix: one joint, one actuator; the judge owns every thruster arc's range; row rules tested at other sizes
- finding joint-moved-by-two-actuators (ruling one-joint-one-actuator): RigChains.Driven names every actuator's joint (weapon-mount and
  thruster-emitter anchors), so YawReach's chain stops at a thruster row's joint as it does at a gun's; Validate refuses a gun and a
  thruster row on one joint. The test that pinned the mixed joint as accepted is replaced.
- finding row-of-one-arc-uncapped: Validate refuses any Thruster hardpoint with FiringArc above 360, row or not; the named-row check keeps only
  the above-0 rule.
- finding row-rules-pinned-at-fixture-sizes: tests at row sizes 3 to 5, arcs 10 to 360, hair-width arc gaps, every non-thruster type, case-distinct rows.

All three findings land in this one commit (the edits share hunks in ShipAuthoring.cs and ShipRigTests.cs). Not yet built here; verified on Yggdrasil after.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:58:22 +02:00
Meta Vens
557edc5017 Tests: the ship-sum separation settles the ship and sums thruster thrust, so a munition thruster joining the ship's thrusters shows
Builds. The previous commit's test survived the hand mutant munition-thruster-joins-ship-thrusters because the ship was never stepped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:57:24 +02:00
Meta Vens
aac3e9f260 Stepped smoke-rounds tests with controls; the catalog regenerated with the lighter Smoke Proximity and Smoke Delayed
The two fused rounds draw 4 energy a shot, so the Smoke Test Hull's one reactor carries the Fused Rounds fit and the rounds fire
(sha256 b60cefa2). New tests: every weapon aboard fires in the stepped Fused Rounds arena with the DeathCluster as the control,
the round's flight is seconds and bursts on the first hull, the DeathCluster kills the fragile hull before the round lands (A.3),
the AI holds fire against its two controls, New Game lists the three arenas, and the command's replay writes the shipped records.
Not run at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:53:12 +02:00
Meta Vens
1f1d0bfa35 Tests: the gate holds each of the five parts, catalog load and Upsert run it, consumables are refused, and the ship-sum separation is read on a ship with drives and a sensor
Builds (unverified until the next ygg run).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:31:53 +02:00
Meta Vens
88dfd1da30 ImpactFeedbackTests: pin shield-layer absorb fields, blast order, impact height and cue saturation edges
Test-only; builds. Ports Soul's feedback-1 s2 probes as behavioural tests that
observe where each rule is decided (the published AbsorbEvent, the handler's
view of hull and shield, Feedback.Cue, DrawAhead.Carried). The blast shield
Magnitude is read against an unshielded twin's totalShare so a scale mutant
fails. Covers findings shield-layer-fields-unpinned, blast-order-unpinned,
height-fixtures-at-zero and cue-saturation-edges-unpinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:31:29 +02:00
Meta Vens
fdcd5298b1 ContactTests: add the 3000-mass Mid hull the unequal-mass tests use
The previous commit's ContactTests did not build a Mid hull, so ten tests failed on the missing hull (full run at
806641ae: 1481 passed, 10 failed). The commit builds; those ten tests are red until this one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:44:39 +02:00
Meta Vens
806641ae62 Ship contact is a restitution impulse along the normal while closing; e is GameplaySettings.ContactRestitution (.5)
Ruling ship-bounce-restitution-setting: j = -(1+e)(v_rel.n)/(1/m1+1/m2), applied only while closing. The old
exchange formula (PostCollisionVelocity) is deleted. ContactTests now pin momentum, frame shift, restitution,
no impulse while separating, slow closing, tangent of both bodies, inactive hulls, the contact point radius
and the three-body pile. Not yet built or run; verification follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:28:29 +02:00
Meta Vens
cf149c4280 ValidateJudgesProductsOnADraftAndInspectListsThem: drafts have no model, so validate takes the records-only path the finding names
The first version left the package's GLB in place, so validate judged records and model through ReadPackage and the test failed in the mutation baseline. Test-only; builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 07:03:48 +02:00
Meta Vens
faa05eec83 Merge cut vapour-cloud-presenter (Soul verdict cut-vapour-cloud-presenter.s2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 06:39:33 +02:00
Meta Vens
ae3740a050 Fix s2 findings: product validate/inspect/key-collision/price-1 tests; ship_cc.read drops the zero-byte compensator
ship_cc.read lets cultcache-py refuse a zero-byte file (CultLib pins that); the test expects the refusal. New behavioural tests: ValidateJudgesProductsOnADraftAndInspectListsThem (through ShipAuthoringCommands.Run), AProductKeyAlreadyInTheCatalogExcludesThePackage, and price 1 in ASoldPackageHullNeedsAPrice. Tests only plus the add-on deletion; all commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 06:38:09 +02:00
Meta Vens
febda87ec5 ContactTests: the docked-hull visitor is the heavy hull, which keeps closing after its first exchange
With equal masses the first exchange stops the visitor and a second contact with the docked hull cannot show.
Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 06:33:28 +02:00
Meta Vens
8d7b90111a ContactTests: the docked-hull test closes a third ship on the carrier, so excluding the docked hull is observable
A docked hull shares its carrier's velocity, so the pair alone never closes; a visitor does expose a second contact.
Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 06:32:58 +02:00
Meta Vens
7565458b4d ContactTests: the distant pair starts beyond the discs' reach after the tick's own movement
The pair moved 0.1 each before the contact step and so closed inside the 14.14 bound; start them 15 apart.
Builds; the first commit's only red test was this one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 06:05:48 +02:00
Meta Vens
6eebec78f9 ImpactFeedbackTests: direct-hit tests aim at an off-centre marker item so the production lateral draw lands the cell off centre
Moving the target after Fire never changed the cell: the lateral is drawn in the hull's frame about the aimed point. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 05:49:43 +02:00
Meta Vens
7392bc8fe1 Ship contact is a simulation rule: Zone steps Contacts, Unity physics writes no Entity
Contacts.Step exchanges normal velocity between touching hull discs (PostCollisionVelocity moved verbatim
from ShieldManager) and publishes Zone.Contacted; ShieldManager presents it; HullCollider.OnCollisionEnter
and ShieldManager's ship-on-ship branch are deleted. Not yet built or tested (verification follows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 05:46:32 +02:00
Meta Vens
31d19eae64 Merge eureka/aetheria-release-contact-reveals: reveals end on perception (cut-contact-reveals.r2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 05:18:17 +02:00
Meta Vens
22dba843a5 AShipHullWithoutATopSpeedIsRefused: the hull carries an unrelated behavior, so a rule that counts any behavior fails
Survivor of the top-speed-any-behavior-counts hand mutant: the cleared fixture hull held no behavior at all. Test-only; builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 05:03:02 +02:00
Meta Vens
a486a7cae2 ProductAndPriceCommands reads the reopened cache's own product handle; ship_cc.read treats a zero-byte file as holding no records
The test asked a second cache for the handle of an object loaded by the first (identity lookup, no handle); it now asks the reopened cache for its product. cultcache-py raises an Unpack error on a zero-byte file, so ship_cc.read names the empty file through its own shape refusal. Both commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:38:53 +02:00
Meta Vens
4c893b2a45 ImpactFeedbackTests: the target steps aside after Fire so direct hits land off the hull's centre
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:33:28 +02:00
Meta Vens
a249f86cef Tests: the lock fixtures carry munition parts; the migration and item-read tests read the stat the way the engine does
LockWarningTests builds launcher designs, which the new gate (ValidateMunitionParts) refuses without parts. The golden test
selects the role's Quality term among the stat's heat and durability terms, and the item-read test settles the ship at the
item's optimal temperature so only role quality moves the stat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:30:09 +02:00
Meta Vens
445bdb66f2 FireControlCut124Tests: the shipped catalog is fuse-neutral for the weapons a product sells; the product-less smoke weapons are the fused designs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:00:55 +02:00
Meta Vens
3c1e1e7421 Munition parts: five gear-part behaviours carry a missile type's stats; completeness gate; one-shot migrate command
MunitionHullData, MunitionThrusterData, MunitionSeekerData, MunitionControlData (with Cognition) and MunitionFuelData
(Behaviors union 43-47), read through MunitionParts.Of. StatValidation.ValidateMunitionParts refuses a launcher design
without exactly one of each and any other design carrying one, at catalog load and Upsert. AetherDb gains
munition-parts-migrate; LauncherRoles names the part's thruster stats by type and field (Range and Visibility also name
the seeker's and plume's flat stats, which RolesBackfill must not range).

Does not pass tests on its own: the shipped catalog is migrated in the next commit, and until then it fails the new gate at load.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:59:39 +02:00
Meta Vens
de7e4a0261 ImpactFeedbackTests: direct, shield, blast, mine and ordering absorbs; Cue, ScreenShake, Carried
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:58:37 +02:00
Meta Vens
8adda0b3de FireControl publishes every landed impact on the receiver's Capabilities; Feedback.Cue and DrawAhead.Carried
AbsorbEvent gains AbsorbLayer. Entity.Capabilities, four publish sites in ApplyDirectHit and Detonate (each before the damage it reports), Feedback.Cue, DrawAhead.Carried (Impact delegates), PlayerGraphicsSettings.ScreenShake. Not yet built or tested; tests follow in the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:58:34 +02:00
Meta Vens
1052a445fb ShipRigTests: the muzzle-on-a-joint refusal now says a thruster emitter may ride one too
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:58:26 +02:00
Meta Vens
cc77c4b5f5 ship_cc carries product envelopes through every push; PRODUCT_SCHEMA pinned; authoring doc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:54:31 +02:00
Meta Vens
943c492bb8 Packages carry their products: ship.cc homes FactionProductData at mod-product:<id>:<maker key>
ShipAuthoringStore.Load/Read return (Hull, Visual, Products); Open homes the third kind;
WriteProduct/DeleteProduct are the only product writers; ValidateProducts and the ship
top-speed rule; compose checks makers, keys and product names; ship-authoring product and
price commands. Unbuilt until the verify job (Python, pin test and docs follow in the next commit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:54:30 +02:00
Meta Vens
0388e39913 SmokeRoundsScenarioTests: the direct weapon's kill check counts a burst's rounds (Damage is per round, ammo per burst)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:43:41 +02:00
Meta Vens
5a5fde07c8 ShipValidationTests: the row cases use ItemRotation.None; the previous commit did not compile
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:41:09 +02:00
Meta Vens
5d5bdc25f8 SmokeRoundsScenarioTests: the kill check names its numbers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:40:03 +02:00
Meta Vens
e9d59cff72 BeltConditions: let the ship settle for a second before reading what its sensors see
A weapon's reach and a sensor's gain are zero until the ship's stats settle, so at the first instant no rock is in reach.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:39:59 +02:00
Meta Vens
b1f4a2aa08 Vectored rows recorded: HardpointData.Row, ThrusterData.Slew, the judge's row rules
Thruster hardpoints state a gimbal arc in FiringArc and join a row by Row (key 7);
the thruster design carries its slew (key 6). The judge refuses a Row on a
non-thruster, rows whose members disagree on Rotation or FiringArc, and a fixed
thruster, a mixed or split row, or a joint too short for the arc on a joint. Bind
treats a thruster emitter's joint as it treats a gun mount's. Not yet verified:
this commit has not been built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:38:29 +02:00
Meta Vens
8128bce6ba Belt scenario: an arena on seed 24, whose entrance zone carries a 615-rock belt, the player parked 100 m outside its ring
Spec cut-scenarios-belt.r1. Scenarios/Belt.cs stages the Longinus at the ring's edge nearest the origin facing along it; BeltConditions in
BeltScenarioTests.cs pins it. Built and tested through ygg-verify in the next commit's verification.
2026-10-12 03:38:06 +02:00