Commit graph

3,065 commits

Author SHA1 Message Date
Meta Vens
efee2a2adc Merge origin/master into merge/contact-reveals
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 05:40:05 +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
26cdd578c1 Merge eureka/aetheria-release-ships-addon-mounts (cut-ships-addon-mounts.s2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:44:13 +02:00
Meta Vens
96b255541c Mirror Mount reflects the footprint's cells about the centre line, derived once from the footprint
hull_grid.mirror_position gives the twin Position as grid_w - a - w, so an even-width footprint mirrors to its true
reflection and the cell lookup's tie rule no longer decides a mirror; the twin's object stands in the cell that Position
puts it in, so Package derives the same Position back. test_hull_grid pins the reflection on odd and even grids and
rows of 4 or more cells; smoke_mounts runs footprint widths 1 to 4 at every cell of an even and an odd grid, the
boundary tie, the armour and arc copy, the muzzle's local X, the centre-line threshold, the grid edge and the parent
check, and keeps a mirrored pair of two-cell footprints through Package and the validator. Every commit builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:33:26 +02:00
Meta Vens
56129b43d5 Package derives no mounts for a ship with no Ship Root, and refuses a framed one whose layout is not loaded
smoke_package's hand-tagged ship has a weapon-mount object, no Ship Root and no loaded
buffer; the first mounts commit refused it. A ship with no frame has no grid to derive
from, so Package leaves its rows alone as before. A framed ship with a mount and an
unloaded buffer is refused with 'Load Layout first'. All commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:03:12 +02:00
Meta Vens
d50f54bf53 Release map: refresh 2026-10-12, feedback and loot (body facts RF1-RF9, the sim/present splits)
Imagination imagination-aeth-refresh-feedback-loot, session self-2026-10-11-ag2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:51:46 +02:00
Meta Vens
730a4e5a52 Release map: missile-stats r3 (stat groups as gear-part behaviours) and its body facts MS1-MS9
Replaces "The missile's stats" paragraph and appends the refresh's premise
check, body facts, rationale and downstream notes (Imagination
imagination-aeth-refresh-missile-stats, session self-2026-10-11-ag2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:48:57 +02:00
Meta Vens
a89d885c6b smoke_mounts: an asymmetric footprint shows Mirror Mount turning it
All commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:47:44 +02:00
Meta Vens
42227f3435 Blender add-on weapon mounts: Add Weapon, Add Muzzle, Mirror Mount, Remove Mount; Package derives mounted Position and yaw
hull_grid gains mounted_position, facing_yaw, mirror_rotation and mirror_footprint. The
mount helpers edit the layout buffer and create a tagged weapon-mount object with its row
as a pair; Package derives each mounted row's Position from its object and each mount's yaw
from its row's Rotation, then saves the buffer through _save_layout. The panel gets a
Mounts box and greys a mounted row's x and y. smoke_mounts.py pins the gunboat flank,
derive and remove paths. All commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:45:12 +02:00
Meta Vens
b614260607 Release map: package-product r4 body facts (refresh against b6262467)
Imagination imagination-aeth-refresh-package-product, session self-2026-10-11-ag2:
ShipAuthoringStore registers no product type, the product writer, sequencing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:44:38 +02:00
Meta Vens
0af394bd4b Exact-gate departure test: the observer sits where its info per unit light is a power of two (previous commit's test does not pass)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:03:43 +02:00
Meta Vens
ddbd120af0 Pin the departure gate's strictness with a light exactly at the threshold
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:02:54 +02:00
Meta Vens
53ff5f7c01 Unreachability test: the departing ship leaves by the warp path, so its own subscriptions to the observer are not the question
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 02:23:33 +02:00
Meta Vens
f815406e9e Qualify ReferenceEqualityComparer (a3 commit does not build: ambiguous name)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 02:22:42 +02:00
Meta Vens
a23a76b608 Step-kill test lights the ship at its death; the unreachability test walks the observer's fields
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 02:22:12 +02:00
Meta Vens
c212ec0232 Reveal book: no scratch holds a departed entity, a destroyed lit gun is refused at the gate, one IsDestroyed rule, departure and allocation pins
Not verified yet at this commit (build and tests run next).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 02:20:46 +02:00
Meta Vens
b6262467f0 Merge cut-scenarios-smoke (verdict cut-scenarios-smoke.s2)
Scenarios.cs Tests list: kept WeaponFeel, Pursuit and Crossing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 23:28:05 +02:00
Meta Vens
336cf3a684 Merge cut-scenarios-crossing (verdict cut-scenarios-crossing.s3)
Scenarios.cs Tests list: kept Pursuit and Crossing both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 23:27:47 +02:00
Meta Vens
9131cce3b9 Merge cut-scenarios-pursuit (verdict cut-scenarios-pursuit.s1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 23:27:39 +02:00
Meta Vens
396c02b08f Perceived item destruction ends the reveal in the observer's Sense; moving-subject bearing pinned
Restores the Identified item-end pass and its tests (AnIdentifiedObserverSeesGearDestroyed, the flashing-gun tick case,
the Identified part of SenseAllocatesNothingOnceWarm) that 49ace47f held for this batch, and extends
AnActIsRevealedOnItsOwnTickWhateverTheListOrder to a moving subject (two velocities, both observer orders).
Builds: all commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:58:10 +02:00
Meta Vens
4658fa7af6 RunStartTests: the offered-gear checks read the hulls a product sells
GenerationOffersExactlyTheSoldGearSomeHullCanFit compares against LoadoutGenerator.SoldHulls; GearNoHullCanFitIsOfferedOnlyOnceAHullTakesIt
gives its scratch hull a product, since a hull no product sells is no home. The previous commit (2a943370) left both red (found by the
full run); this one is the head. Commit 2a943370 does not pass the full suite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:51:07 +02:00
Meta Vens
2a943370ab Smoke Test Hull fixes: the home rule reads sold hulls only; command and flank geometry pinned; turret off the starboard line
LoadoutGenerator.SoldHulls is the one definition of the hulls HasHome considers (a hull some product sells); AvailableProducts and the
tests read it, so the product-less test hull gives no gear a home. TheSoldHardpointGearWithNoHomeToday describes production again.
SmokeHullCommandTests pins each added hardpoint's firing arc, armour and shape; ArcsFlanks asserts the flank hulls abeam from the
player's facing within 5 degrees; Arcs' Turret moves to (600,300). Not yet built or run at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:35:25 +02:00
Meta Vens
49ace47f34 Leave perceived item destruction to batch B: drop the Identified item pass and its tests from this cut
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:06:24 +02:00
Meta Vens
d03b85ea34 ContactRevealTests: departure fixtures put the ship's other light out and show exactly the authored signature
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:05:16 +02:00
Meta Vens
22296ae4eb ContactRevealTests: settle the last flash before the departure signature; identified-observer tick fixture
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:04:34 +02:00
Meta Vens
b6c2a2368b Reveal book: one gate, one removal counterpart; departure ends reveals on perception; departed subjects age out
RecordReveal gates on zone membership and EndReveals is the only way out; the observer's Zone.Entities handler no longer wipes the book and PublishInbox no longer decides membership. Zone records each removal as a one-tick Departure that each observer's Sense judges under the light-act gate; a departed subject's entries are pruned once older than BearingMemory. Unverified build at this commit (first test run follows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:03:20 +02:00
Meta Vens
8d38409d60 Crossing: Brief says coasting pass; pin idle pass, crosser x speed, rest default
Builds (test and Brief text only; not yet run).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:48:39 +02:00
Meta Vens
2a62d90b3f Release map: the Reveal row ends a reveal only on what the observer perceives
Amends the model page to Defaulted ruling reveal-ends-on-perception (Soul
findings cut-contact-reveals.s2.perceived-destruction-never-ends-reveal and
unseen-departure-clears-contact): zone departure no longer empties books.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:47:15 +02:00
Meta Vens
5c294ef994 GameData/Aetheria.cc: smoke-hull apply on the 2x2-flank hull (replaces the previous commit's catalog)
Output of `AetherDb smoke-hull apply` on this tree's base catalog, run on Yggdrasil: one HullData,
Smoke Test Hull, 17 hardpoints, no product.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:36:21 +02:00
Meta Vens
043a73eb0a Smoke Test Hull: 2x2 side mounts on a two-cell margin; test classes read sold hulls only
The 1x1 Ballistic side mount tripped IsFilledByAgreesWithACellOracle (Shape.FitsWithin never places a
design whose only cell is not its origin, so Takes and the oracle disagree on a 1x1 hardpoint); the
side mounts are 2x2 now, which needs two columns of margin on each side, so every Longinus cell and
hardpoint moves right by two. The two catalog-wide tests that listed every hull now list sold hulls.
This commit does not pass the suite: GameData/Aetheria.cc still holds the previous hull until the
next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:32:50 +02:00
Meta Vens
6b0f15d76a GameData/Aetheria.cc: smoke-hull apply (Smoke Test Hull, no product)
The catalog is the output of `AetherDb smoke-hull apply` on this tree's catalog, run on Yggdrasil.
It adds one HullData, 17 hardpoints (the Longinus's 13 and four new ones), and nothing else.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:16:48 +02:00
Meta Vens
fed0e61d11 smoke-hull: fix the dry-run and apply message literals and the lambda names that shadowed the hull
e8442328 does not build (newline inside two string literals); this one does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:11:26 +02:00
Meta Vens
e8442328df Smoke Test Hull command, Weapon Feel and Arcs on the test hull (catalog not yet applied)
AetherDb smoke-hull [apply] adds a product-less Longinus copy with a 2x2 Energy and a 2x2 Ballistic
hardpoint past the bow and a 1x1 side mount on each flank. Weapon Feel (seed 107) stages it with
ChargeBlast SG, Autocannon and FastBlast+-; Arcs flies it with a mount on each flank and a Port and
Starboard hull. This commit does not build a passing suite: the scenarios name the hull and
GameData/Aetheria.cc does not hold it until the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:04:09 +02:00
Meta Vens
34ec64356e Release map: the Reveal row keeps a reveal of gear destroyed out of sight; only the aiming read filters on live gear
Amends the model page to Defaulted ruling contact-reads-book-aim-reads-live
(Soul finding cut-contact-reveals.s1.unseen-destruction-leaks-into-contact).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:54:39 +02:00
Meta Vens
c86f28e93f MiningCut3Tests: ChunkInfo equals the bits recorded at base 12dfcef5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:34:59 +02:00
Meta Vens
b3c003dc3e Contact reads only the observer's book; a stale paint never recreates a reveal; Sense runs after every update; tests for the unpinned rules
- RevealsOf returns the book and nothing the subject's gear or Durability says (ruling contact-reads-book-aim-reads-live); FireControl.IsRevealed stays the live aiming read.
- PublishInbox records a paint's reveal only for an emitter still in the zone.
- Sense moves from Entity.Update to a Zone.Update phase after all entities have updated, so reveals do not depend on list order.
- ChunkInfo calls PassiveInfo(position, brightness) in the original multiplication order (PassiveInfoPerSignature becomes PassiveInfo with the signature argument).
- Tests: unseen destruction, ghost paint, Search paint reveal, no self-sense, quiet tracked ship levels, list-order independence.

Not built or run locally; verified on Yggdrasil after the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:34:58 +02:00
Meta Vens
4897d8d157 Crossing test: the crosser is placed moving across the bow, and FastBlast+- mounts forward
Not yet verified at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:13:13 +02:00
Meta Vens
4f12d581cb Crossing: the crosser starts to port at 50 m/s and the test observes the pass over simulated time; fit and hull pinned
Not yet verified at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:57:16 +02:00
Meta Vens
dc34562fdb ScenarioStage.Place: a placed ship can start moving (velocity), the one staging capability a crossing needs
Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:50:13 +02:00
Meta Vens
7ab267c314 Crossing scenario and Djinni Shakedown targets, with their staging tests
Crossing (seed 112, demo cast): the Arcs Longinus fit with plight and FastBlast+- under the Fire Control Array, a piloted
hostile Djinni crossing the bow inside 400 m, an unpiloted neutral one at 80% of plight's Range. Djinni Shakedown gains
bare Longinus targets Ahead (inside the generated Djinni's ballistic mount arc) and Abeam (outside it). CrossingConditions
and DjinniShakedownTargets read what each arena staged. Not yet verified on a full-suite run at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:52:35 +02:00
Meta Vens
9ccc846c1a Pursuit scenario: Cargo stages consumables; a hostile on your tail, a Mine Launcher fitted, vents and overdrives in the hold
ScenarioStage.Cargo resolves one name across equippable and consumable
designs; a consumable is built from its first available product in key
order. Pursuit (seed 111, demo cast) lists last in Scenarios.Tests.
All commits build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:41:48 +02:00
Meta Vens
b32729de22 ContactRevealTests: an Emission entry is not light; the freshest reveal gives the bearing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:41:21 +02:00
Meta Vens
b888b20c33 Release map: scenarios for operator checks (check-to-scenario table, six cuts)
Body facts SC1-SC16, the table of every operator check against the
scenario that stages it, and the cut order for scenarios-smoke r4,
smoke-rounds, pursuit, crossing, belt and lock-on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:31:17 +02:00
Meta Vens
dcc6f0a7d2 ContactRevealTests: a null-item signature from a non-hull source reveals nothing
Unverified; the running verify job predates it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:31:13 +02:00
Meta Vens
e0758fdf1c ContactRevealTests: reveals by act, by paint, contact levels, lifetime and Sense allocation
Does not build or pass yet unverified: first verify run follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:26:00 +02:00
Meta Vens
6894c2093e Entity records reveals and derives Contact; ChunkInfo reads PassiveInfoPerSignature
The observer's Entity owns a reveal book keyed (subject, item). Sense records a
light act when its strength times PassiveInfoPerSignature clears the detection
threshold; PublishInbox records an emitter whose paint arrived. ReceivePaint takes
the emitter and its item. ContactOf derives Detected, Tracked, Classified and
Identified from track, reveals, the zone clock and GameplaySettings.BearingMemory.
ChunkInfo's arithmetic moves into PassiveInfoPerSignature; ActiveSensors fills one
buffer instead of allocating per call.

Not yet built or tested: verify follows with the tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:25:57 +02:00
Meta Vens
12dfcef563 Merge eureka/aetheria-release-paint-modes: paint modes, swept ping set and ping returns
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 17:39:31 +02:00
Meta Vens
d2709d550e Sensor: one reset of the swept set; a ping belongs to its zone; PaintModeTests pin the ending step and the return inbox
The idle _reached.Clear() at the end of Execute is deleted: Ping() is the one per-ping reset
(ASecondPingCrossesTheSameShipAgain). A sweeping tick drops reached subjects that left the zone,
and a ping ends when its pinger is in another zone than it began in. New tests: the ending step's
band, every return credited, an inactive ally posted none, Deactivate clearing the inbox, a ping
ending on a zone change, and a leave-and-return subject crossed again.

Not yet verified: no verify job has run on this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:42:16 +02:00
Meta Vens
0b917630ad PaintModeTests: a second ping crosses the same ship again
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:26:45 +02:00
Meta Vens
34a9e72ce1 PaintModeTests: the cloud fixture lives long enough that its fade does not move the zero cases, and the finished ping is read at its last radius
Opacity falls linearly over the cloud's lifetime and the receive leg takes a square root, so a thousand-second cloud turned an opaque leg's 3e-4 into a .004 credit. The finished ping's radius is 300 within float rounding, not above it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:25:08 +02:00