Commit graph

3,025 commits

Author SHA1 Message Date
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
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
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
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
Meta Vens
86323768e0 PaintModeTests: a cloud-thinned echo reads as nothing within the cloud's own fade, not exactly zero
The cloud fades linearly over its lifetime, so an opaque cloud's two legs read 3e-5 a few ticks in. The zero cases compare within a tolerance.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:23:28 +02:00
Meta Vens
dd896528cc Sensor: the pinger's swept set decides each crossing once; allies credit a published ping return inside the bistatic oval
Deletes the stateless interval crossing (_previousRadius, PreviousRadius, Crossing) and the allied-pinger scan over
other ships' Sensors. The pinging Sensor remembers the subjects its wavefront has reached (_reached), in the beam
or not, and a subject's first sweeping tick inside the radius is its one crossing. On it the pinger paints, credits
itself and posts a PingReturn to each ally; Entity publishes returns with paints (PublishPaints is now
PublishInbox) and the ally's own sensors credit them for one tick at the geometric mean range, inside
Rt x Rr < PingRange^2, through the geometric mean of both legs' obscuration (ruling ally-echo-bistatic-oval).
This commit builds and replaces the sensor the previous commit's tests were written against.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:22:29 +02:00
Meta Vens
e1827c9db0 PaintModeTests: the swept-set and bistatic-echo rules, written against the c1d5487b sensor
Eight new tests (moving subjects, list order, stopped illuminator, bistatic oval, cloud legs, drift behind the
front, late arrival, BeamWidth key 12 and its JSON name) and the ally credit of AnAllyHearsTheReturnSilently
restated as bistatic (.21213). This commit builds; the moving-subject, list-order, stopped-illuminator, oval, cloud
and ally-echo tests are expected to fail against the Sensor of c1d5487b, which the next commit replaces.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:22:08 +02:00
Meta Vens
1f6ba67d5f Release map and prior art: one owner per ping crossing, bistatic ally credit
Map R2/R3 rewritten after Soul failed paint-modes h1: the pinging sensor
keeps a per-ping reached set and posts PingReturn to allies through the
zone inbox; ally credit gated by the bistatic oval (R_t * R_r < range^2).
Research section 7: bistatic radar, cooperative engagement, game gaps.
Serves cut_spec paint-modes r3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:17:33 +02:00
Meta Vens
c1d5487b72 PaintModeTests: a pinging ship is not a subject of its own ping, observed through its ally
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:24:57 +02:00
Meta Vens
8c5825ed94 PaintModeTests: concurrent sweeps credit once per crossing; factionless ships are not allies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:09:32 +02:00
Meta Vens
5731fcee94 PaintModeTests: the hull radiates nothing, so visibility is the fixture's own constant
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:07:47 +02:00
Meta Vens
9dc4ae092f Sensing.cs: using CultMath for PaintWarning's float2 (the previous commit does not build)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:06:24 +02:00
Meta Vens
c47ced9cfd Paints carry search or track; a ping sweep warns every ship it crosses in its beam; allies hear the return silently
LockWarning becomes PaintWarning with a PaintMode (Search for a ping sweep, Track for a lock);
Entity.IncomingLocks becomes IncomingPaints. Sensor replaces the _pingedEntities set with a stateless
crossing rule over the previous and current wavefront radius, limited to a new BeamWidth stat (key 12,
absent reads 360), and credits allied pings from the receiving sensor's own sensitivity and distance.
The HUD lock indicator follows Track paints only. Folds in the radiator sampling-instant pin.

Unverified at this commit (first build still to run).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:05:16 +02:00
Meta Vens
a47f967d13 Merge eureka/aetheria-release-signature-channels
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 13:43:49 +02:00
Meta Vens
f30c3550ab SignatureTests: the one-view check fails by assertion, not by a test-host abort (Assert.Same formatted the entity graph)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:24:52 +02:00
Meta Vens
4059e53351 SignatureTests: decay channels named per writer, radiator strength at a nonzero exponent and two temperatures, the view is not a Dictionary
Findings decay-channel-baseline-vacuous (expected DrivePlume, Emission, LaunchFlash per source, not a post-tick
baseline), radiator-temperature-factor-unpinned (T^2 x multiplier x emissivity at two temperatures) and
one-writer-castable (the exposed view is not a Dictionary, is the same object each read, refuses writes).
Not built locally; verified on Yggdrasil.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:06:27 +02:00
Meta Vens
c76584ee21 Entity.VisibilitySources: a ReadOnlyDictionary created once over the private field, so a cast back to Dictionary fails
Finding one-writer-castable. Test commit follows; builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:06:04 +02:00
Meta Vens
fb0c18b4fd SignatureTests: decay test uses sources nothing rewrites (the item-swap mutant survived the first fixture)
Mutant decay-item-from-last-entry survived dc244686: the gun was the last-inserted entry, so
Values.Last().Item was its own, and every other entry was rewritten by its Execute after the
decay loop. The fixture now stops the drive and pings once, so the gun, the drive and the ping
are touched by decay alone and their three items differ. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 12:05:18 +02:00
Meta Vens
dc24468609 SignatureTests: pin decay items, key 3 and ordinals, radiator and ping strength, channels at two strengths
Decay with a gun, a drive and two Visibility gears checks every entry keeps its own item.
Key 3 of union 22 by golden bytes, the old three-slot record reads Thermal, the five ordinals,
json "channel", and a reopened catalog file. The radiator's strength is HeatRadiationMultiplier
x Emissivity at exponent 0; the ping's is its authored PingVisibility at two values. Gun,
beam and thruster channels hold at a strong and a sub-threshold strength.
Not yet built or run at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 11:37:08 +02:00
Meta Vens
6f2dea3849 Entity.VisibilitySources is a read-only view: SetSignature and the decay loop are the only writers
The dictionary is private; the public member is an IReadOnlyDictionary over it, so a write
around SetSignature is a compile error, not a grep. Readers (Thruster, tests) use only the
read members. Builds; the test project at this commit still compiles (no reader writes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 11:37:07 +02:00
Meta Vens
78c6c78e60 SignatureTests: light every channel in the sum fixture (a mutant dropping Reflection from the sum survived on a zero)
Builds and passes are verified at the previous commit; this commit changes the test only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:59:05 +02:00
Meta Vens
28250600f1 Merge eureka/aetheria-release-cultmath-0-4-1-pin: CultMath 0.4.1, the allocator's answer no longer depends on its warm start
Soul held (aetheria-release:verdict:cut-cultmath-0-4-1-pin.s1); master
moved only in docs since the branch point, so the branch's verify stands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:46:34 +02:00
Meta Vens
2cb3ded00f Release map and prior art: quiet gear identifiable, hull layout from class
Map: hull layout and aim point (V15, V16), model rows for layout, located
item and the scan, rules R8-R11, and cuts layout-aim and inspection-scanner,
for ruling quiet-gear-identifiable-hull-layout-known. Research section 6:
game scanners and identification of non-emitting equipment, serving
questions scanner-reveals-its-user and scanner-held-or-pulse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:18:24 +02:00
Meta Vens
1d14edea3a Signatures: every light signature names its channel and item through Entity.SetSignature
VisibilitySources holds Signature (channel, strength, item); the eight direct writes
go through the one writer; Visibility stays the sum; SignatureOn(channel) splits it.
VisibilityData gains Key(3) Channel. No number changes. Not yet built or tested at this
commit (verification follows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:13:24 +02:00
Meta Vens
e0b123a98d Release map: the visibility rework (signature channels, paint modes, reveal record, emissions heard)
Body facts, model page, authority map, rules, rationale and cut order for
ruling visibility-per-capability-reveal folded with sensor-stat-set; seven
cuts pinned at 93b7ff8d.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 08:59:17 +02:00
Meta Vens
1b5499cf78 ThrustAllocatorTests: System.Random (CultMath.Random is ambiguous); fixes the build of the previous commit
c7dcf178 does not build (CS0104); this commit does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 08:46:54 +02:00
Meta Vens
c7dcf178f3 ThrustAllocator: cold and warm starts agree on the hull that stopped early
The finding's fixture (Synthetic(8, 7005), the seeded random walk through its
eighth intent) compares a warm allocator with a fresh one at every step. Fails
on the 0.4.0 pin, passes on 0.4.1. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 08:44:04 +02:00
Meta Vens
b4d5cee48e CultMath pin to 0.4.1 (BoundedLeastSquares stopping fix and Validate)
CultMathRevision, the manifest tag and the lock hash move together to
cultmath-unity-v0.4.1 (9c1b06cd). CultLibRevision is unchanged. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 08:44:02 +02:00
Meta Vens
93b7ff8da0 Merge eureka/aetheria-release-envelope-from-columns: the evasion envelope is the box extremes of the thrusters' columns at live thrust
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 04:46:26 +02:00
Meta Vens
ab80aa8f73 Envelope: pin each side as the sum of its thrusters; drop the unused ManoeuvreEnvelope operator +; document Column(Thrust) against the allocator's Column(NominalThrust)
Builds not verified yet at this commit; verification follows on Yggdrasil.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 04:08:09 +02:00
Meta Vens
e386e1c437 Merge eureka/aetheria-release-lock-warning: a painted ship owns a typed incoming-lock warning
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 03:53:33 +02:00
Meta Vens
7437b13a5b TheEnvelopeIsWhatTheGrantAllows: let the grant settle one tick
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 01:21:05 +02:00
Meta Vens
844e363cbf Envelope tests under a partial and a nil power grant: live thrust and the unpowered gate are pinned (two Stryker-style hand mutants survived without them)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 01:19:06 +02:00
Meta Vens
02ca78f1e1 ReachIsWhatTheShipCanDo: the Longinus's reach is bounded above by the allocated reach (1.3 nose-on, 1.2 broadside), not open
Finding cut-thrust-allocator.s3.longinus-envelope-unbounded. The allocated reach carries the envelope's turn terms, which now include the
drives' yaw, so the measured broadside lower bound moves from .9 to .85 of it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 00:26:43 +02:00
Meta Vens
3056171c41 TheEnvelopeCountsTheMains: yaw is rad/s, fixture threshold .1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 00:23:07 +02:00
Meta Vens
db3103a026 Envelope from columns: Ship.RecalculateEnvelope sums the thruster columns' box extremes; Thruster.Manoeuvre and TorqueFloor deleted
Unverified at this commit (first build still to run); ceiling test not yet restored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 00:14:31 +02:00
Meta Vens
efaa8f5b54 LockWarningTests: pin the full-lock strength through the launcher's own Execute (a zone tick resolves the shot a full lock fires) 2026-10-10 23:45:21 +02:00
Meta Vens
230aeccdd3 Merge thrust-allocator-wire: Ship.Update hands intent and live columns to ThrustAllocator
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	tests/Aetheria.Shared.Tests/RestoredHullsTests.cs
2026-10-10 23:44:54 +02:00
Meta Vens
a403b44ab5 LockWarningTests: a full lock fires and spends the launcher's lock; read the emitter's own Lock only below it 2026-10-10 23:43:03 +02:00
Meta Vens
cbf31c2719 Research: launcher lock, launch signatures and graded contact knowledge
Eyes pass for the operator's lock and visibility rethink: how Aetheria
represents visibility today, LOBL/LOAL and loitering munitions, warning
receivers, provocation, graded contacts in games, and the novella passages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:42:18 +02:00
Meta Vens
3022741745 LockWarningTests: author the launcher as LauncherData (the catalog round-trips it); last commit's tests did not run 2026-10-10 23:41:54 +02:00
Meta Vens
1c5c602054 Lock warning fix 1: publish paints in a zone phase, one lock-indicator curve, strength and progress-term pins
- Zone.Update publishes every entity's paints before any entity updates (Entity.PublishPaints), so a broken lock clears on the same tick whatever the entity order.
- ActionGameManager.ApplyLockProgress is the one lock-indicator curve, called by the outgoing and the incoming indicator.
- LockWarningTests drive the real LockWeapon through Zone.Update; pins on strength across 0.15..1.0, the direction and sensor progress terms, and both entity orders.

Not yet run: this commit's tests have not been built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:29:27 +02:00
Meta Vens
6a8ecb9b8d Merge ships-addon-package-frame: Package recentres on the centre of mass and generates map icon, shield, tractor
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:09:30 +02:00
Meta Vens
429c651a2a Package: sweep only what it generated (aetheria.generated), pin bounds centre, Source-only and collider-in-Generated
Stale sweep identified generated anchors by collection membership and role, so an author's hull-collider in
Generated was deleted. Generated anchors now carry aetheria.generated; the sweep removes only those. New smoke
pass package_asymmetric_pass: an L-shaped render hull pins tractor X and shield centre to the bounds centre,
a Source-only ship pins that generation never reads the Source fallback, and a collider placed in Generated
survives Package. All commits build.

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