Commit graph

3,175 commits

Author SHA1 Message Date
Meta Vens
2f718f7753 AetherDb pickup-catalog: fix two string literals broken by a newline; the previous commit did not build
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:20:59 +02:00
Meta Vens
68430771f3 Every generated ship carries a tractor beam; AetherDb pickup-catalog turns the Tractor Beam into Pickup gear (group B, code)
GenerateShipLoadout equips one gear whose behaviours include PickupData after the shared outfitting
(stations and turrets get none). The pickup-catalog command (retired in the next commit after apply) edits
the existing Tractor Beam. PickupTests: two fixes found by group A's run (equip is refused once a ship is
deployed, and the freeing tick takes one step). PickupGenerationTests needs the applied catalog and is
red until the catalog commit; the catalog itself is not in this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:18:15 +02:00
Meta Vens
e7a35135fe PickupData: gear only (CreateInstance for a consumable throws); the previous commit did not build
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:02:07 +02:00
Meta Vens
5aa989abbf Pickup is a capability: PickupData/Pickup run a timed grab through Zone's hold API and TryPickUp (group A, sim)
GrabEvent carries a FloatingBodyId; Zone gains TryHold/SetHeldProgress/Free and places a held item instead of
integrating it; Entity.TractorPower is derived from Pickup.Power and TractorCommand is the pilot's input
(ActionGameManager writes it undamped, the Time.deltaTime ramp is deleted). Binder and FieldTester change the
delegate type only. PickupTests and a save round-trip pin for the player's zone index.

Group A builds; no beam is on any generated ship until group B.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:00:22 +02:00
Meta Vens
e24d942b9d Smoke and wiring script: no GridObject or FloatingItemLifetime spelling outside the sim
Builds: Unity batchmode compile green (smoke run unity-smoke5 compiled and passed at this commit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:37:58 +02:00
Meta Vens
c7c7e58508 Unity draws Zone.FloatingItems and nothing else; the Unity loot roll, collision pickup, tractor pull and GridObject are gone
ZoneRenderer draws one ItemPickup per FloatingItem (load, ObserveAdd, ObserveRemove, ClearZone); ItemPickup.Bind places it
from the sim body and spins it for show. EntityInstance's drop loops, ShieldManager's pickup branch (the whole
OnCollisionEnter, which did nothing else), ZoneRenderer.DropItem/DestroyLoot/_loot, TractorBeam's pull, and
GameSettings' three loot fields are deleted; WireFloatingItems stripped GridObject from the five pickup prefabs and
reassigned ZoneRenderer's four pickup fields in ARPG.unity; FloatingItemsDrawnSmoke (play session, batchmode) pins the
lowering. GridObject and TimedDestroy were deleted in fa911f2d, so fa911f2d and 2565e2c5 do not build in Unity.
Assets/Resources/Settings.asset keeps three stale serialized GameSettings fields Unity ignores (LFS object, not rewritten).

Builds: Unity batchmode compile green at this commit; dotnet green at 2565e2c5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:36:47 +02:00
Meta Vens
2565e2c5d7 Retire the test that mirrored Unity's loot handler; route FireControlCut8Tests joins through Admit
Builds: with fa911f2d this is the tests project at the head of the Zone encapsulation; fa911f2d alone does not build
(FireControlCut8Tests still called the removed Entities.Add).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:17:26 +02:00
Meta Vens
fa911f2d85 Zone.Entities read-only outside Zone: Admit and Remove are the only membership writers
Entities is a MemberView with no mutating member; Admit installs the death watch with the
membership and refuses a member already present, Remove takes it away with the membership.
The Reset and duplicate-Add bypass paths of the death watch cannot be spelled any more.
Tests move to Admit/Remove; Admit also activates, so the explicit Activate calls that followed
a raw Add are dropped. Unity call sites route through Zone.Remove.

Builds: unverified at this commit (verified in the job at the head).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:13:43 +02:00
Meta Vens
38c2fcf6e4 Merge cut loot-1 (Soul verdict cut-loot-1.s4) 2026-10-13 01:44:56 +02:00
Meta Vens
4435ab16c9 Adapt vector-rows ShipRigTests to ShipAuthoringStore.Read's product element
Master's Read returns (Hull, Visual, Products); the branch's row-roundtrip
test deconstructed two. Mechanical; builds on the merged tree (the merge
commit before this does not build the test project).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 01:27:08 +02:00
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
fc5afd385f Map: hardpoint lines read schematic and model as separate spaces
Ruling schematic-and-model-are-separate-spaces: no model dimension from schematic
cells; sockets fix shape and proportion with scale per mount; radiator panels read
a region marked on the model.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:09:54 +02:00
Meta Vens
b6e0283f5a Merge origin/master into feedback-present merge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:03:24 +02:00
Meta Vens
fdf642f7da Add ThrottleLock.cs.meta, generated by Unity; no asset references its GUID
Follow-up aetheria-release:throttlelock-meta-missing left open. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:03:17 +02:00
Meta Vens
55904bed77 Map: hardpoint cut lines held for the operator walkthrough
Ruling hardpoint-work-held-for-walkthrough: mounts are named and hardpoint data
addresses them by name; the add-on-reads-cells premise is withdrawn.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:01:30 +02:00
Meta Vens
3b65985a0b Map: cut-sequence lines for hardpoint sockets, adapters, gear models, radiator geonodes and floating greebles
Rulings hardpoints-and-floating-greebles, hardpoint-sizes-are-footprint-palette,
radiator-panels-molded-by-geonodes and caliber-is-presentation (2026-10-13).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:46:32 +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
f2bf0c0410 Zone: a death watch exists only for a non-member and is disposed by Remove and Clear; tests for duplicate Add, Clear and the pickup room boundary
WatchDeath returns when the entity already holds a watch, so a duplicate
Entities.Add neither throws nor leaves a second live subscription;
Entities.Clear (ObserveReset) disposes every watch. Adds
AMemberAddedTwiceStillDropsEachItemOnce, AClearedZoneDropsNothingWhenAFormerMemberDies
(finding duplicate-add-leaks-second-watch) and
APickUpOfExactlyTheRoomLeftFitsAndOneMoreChangesNothing (finding
pickup-room-arithmetic-unpinned, from Soul's boundary probe). Unverified
until the Yggdrasil job; no commit here is known not to build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:43:12 +02:00
Meta Vens
55429376bc Research: hardpoint size systems (Aetheria Body facts and prior art)
Eyes facts file for the hardpoint size-system fork.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:39:36 +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
c000d5ca74 Aetheria.cc: smoke-rounds replayed on master's catalog (AetherDb smoke-rounds apply, Smoke Proximity and Smoke Delayed at energy 4)
Master's catalog (2e2d927a, with missile-stats) plus the five smoke weapons the command authors; not a hand merge of the two branches' binaries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:04:15 +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
27ecd1f9c0 RigChains owns what drives a joint; the judge refuses two actuators on a joint and a reach through a driven joint
RigChains.Actuates/Drives/Actuator are the one definition of actuator kinds; ValidateRig, BindRig and ShipModPlan consume
it, and the hand-derived gun-versus-row check and the chain stop are deleted. A nested actuator is now refused, as ruling
one-joint-one-actuator says. Findings nested-actuators-accepted and actuator-kinds-spelled-in-four-places.
Builds; the tests of the previous batch that pinned nesting are red until the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:31:14 +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
9afa5700a9 Wire ImpactFeedback into ARPG.unity (WireImpactFeedback output)
Adds the Impact Feedback object (TinyExplosion, the weapons' own hit effect, as the pooled hull effect) and a
CinemachineImpulseListener on the follow camera. Additions only (188 lines, 0 removed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:10:07 +02:00
Meta Vens
97d94ecfae Present landed impacts: shield ripple, hull reaction and camera kick through one ImpactPresenter
ImpactPresenter (bound on every EntityInstance by SetEntity through the one CapabilityPresentationBinder) renders
feedback-1's absorbs: Feedback.Cue decides intensity and shake, DrawAhead.Carried the drawn point; a hull absorb
spawns ImpactFeedback's pooled effect under the instance, and a cue with shake raises a Cinemachine impulse.
ShieldManager ripples on a Shield-layer absorb. MainMenu gains a Screen Shake slider that persists on Back.
Editor: WireImpactFeedback (scene wiring, scene diff in the next commit) and ImpactPresenterSmoke.
Unity batchmode compile 0 error CS; ImpactPresenterSmoke exit 0. The scene is not yet wired in this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:10:04 +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
82d4881ca2 Zone: the death watch is added, not overwritten, so a second one for a member cannot exist
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:53:15 +02:00
Meta Vens
cc9403ce58 Loot-1 fix batch: whole-or-nothing commodity store, and tests for the Soul s1/s2 findings
EquippedCargoBay.TryStore(SimpleCommodity) now returns false before touching anything when
TryFindSpace says the whole quantity does not fit (its documented contract: true only when ALL
is stored), so Zone.TryPickUp keeps "first accepting bay, otherwise nothing changes" with no
rollback in Zone. Tests: refused pickup of a stackable item changes nothing; a stack plus free
cell stores whole; first accepting bay; headings cover the circle; the loot stream is not the
mine stream; dock/undock and jump drop once and only in the zone the ship is in.
Untested on this commit: not yet built (verify job follows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:51:45 +02:00
Meta Vens
8120419ecd Merge origin/master into the loot branch (Self's direction)
One conflict, Zone.cs death subscription against contact-reveals' _departures insert: kept both.
The resolution already routes the death subscription through WatchDeath/UnwatchDeath (next
commit's fix target is the same line, so this commit resolves it in that shape).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:49:42 +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
08f19e6c6c Map: cut-sequence lines for mining-index-tree, mining-belt-cells, sim-speed-scale
Their specs were withdrawn under map-only-what-runs once their deferred
findings moved to follow-ups.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:05:11 +02:00
Meta Vens
734804b6d7 Aetheria release map: cut sequence of the 51 cuts withdrawn under map-only-what-runs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:00:40 +02:00
Meta Vens
6087fd967e zero-byte test asserts cultcache-py's own refusal, so a restored add-on size==0 branch fails it
The test compares type and message with SingleFileMessagePackBackingStore.pull_all on the same
file; the add-on's shape refusal (also a ValueError) no longer passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:00:35 +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
b0de7c746b AetherDb smoke-rounds: Smoke Proximity and Smoke Delayed draw 4 energy a shot
A stepped Fused Rounds arena showed no round fired from any weapon aboard, the DeathCluster included: the Smoke Test Hull's one
2x2 reactor (Core Power, charge 100) cannot carry two Spectra clones at 20-40 energy a shot, overloads, reaches 445 K within a
second and goes offline. The catalog is regenerated in the next commit; this commit's command no longer matches the committed
catalog, so SmokeRoundsCommandTests/stepped tests are not meaningful at this commit alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:50:13 +02:00
Meta Vens
b53d071ef6 Merge cut ships-addon-guards (Soul verdict cut-ships-addon-guards.s2) 2026-10-12 19:44:33 +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