Commit graph

3,007 commits

Author SHA1 Message Date
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
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
Meta Vens
91fe002596 ThrottleLock comment describes the floor; test pins the wormhole gate on the allocator
Builds: not yet verified at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 22:19:37 +02:00
Meta Vens
5a92b74e52 smoke_frame: pin the shield floor, the no-outline refusal before any change, and the collider check ahead of the verdict
Hand mutants (floor dropped; recentre before generation) survived the first Package pass; both now fail.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:24:02 +02:00
Meta Vens
8d9acf269d Package recentres on the grid's centre of mass and generates map icon, shield, tractor; no collider
AetherDb ship-authoring centre prints Shape.CenterOfMass; Package asks it and moves Ship Root so that point sits
at the world origin, after regenerating the unowned map icon, shield and tractor from the render meshes (Keep
leaves one alone). Package never makes a hull collider (ruling package-frame-defer-collider). smoke_package's
bound-collection rollback cases now rebind to a different path so a rollback that restores keys but not values fails.

C# not yet built when committed; the Blender smokes and Python unit tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:02:22 +02:00
Meta Vens
92b82e9aa5 Ships add-on: all-or-nothing bind, pin the cross-drive fallback
_bind_collection restores every aetheria.* key if the ID-property store
refuses a value, so a bad ship id or pending leaves the collection as it
was. smoke_package.py gains default-run cases: relpath raising ValueError
(the cross-drive signal) must store the absolute path and finish; a refused
id or pending must leave bound and unbound collections unchanged.
All commits build (Python only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 20:38:17 +02:00
Meta Vens
e1788e19c1 Tests: the Longinus's reach bound is derived from the allocator's own push, not a widened constant; stale mixer comments and unused using UniRx removed
Builds; not yet run (the run follows).
2026-10-10 20:32:18 +02:00
Meta Vens
5a6e81db75 wip reach probe 2026-10-10 20:23:27 +02:00
Meta Vens
54ac0fcfa7 Merge eureka/aetheria-release-ships-addon-frame-r4: ships authoring tool and add-on frame
# Conflicts:
#	tests/Aetheria.Shared.Tests/ShipSchemaPinTests.cs
2026-10-10 19:54:03 +02:00
Meta Vens
90f1775cb9 LockWarningTests: a paint waiting in the inbox does not outlive a deactivation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:49:56 +02:00
Meta Vens
66641b46de ThrustAllocatorTests: throttles stay in bounds and floors hold wherever the solve ends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:47:53 +02:00
Meta Vens
6fff037ac7 LockWarningTests: find the launcher gear by its weapon behaviour
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:46:48 +02:00
Meta Vens
9f779d42c0 ThrottleLockTests: the twin comparison reads to the solver's precision (1e-4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:42:37 +02:00
Meta Vens
033d37eda0 LockWarningTests: build the launcher as the existing lock fixtures do (a plain gear, the LockWeapon beside it)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:41:04 +02:00
Meta Vens
9ff6e4ba42 Tests: the floor's stick-independence at the allocator; throttle-lock twin diagnostics
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:39:42 +02:00
Meta Vens
3400268681 Tests: forward floor under the lock, thermal death tick, nominal columns under total brownout
Not yet run; this commit may not pass. Co-Authored-By below.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:26:51 +02:00
Meta Vens
534e402fdf Throttle lock is a forward floor on the solve; allocation moves after the performance update
The lock stops being an intent rewrite in Ship.Update: ThrustAllocator.Allocate takes forwardFloor, which ignores the
stick, asks full forward and holds every column with y > 0 at full (ruling overdrive-forward-floor). Ship allocates in
Entity's new UpdateThrottles phase, after every item's UpdatePerformance and before the power bus and Execute, so
liveness and thrust are the ones Execute acts on (finding liveness-read-before-performance).
Tests follow in the next commits; the test project still compiles, new behaviour is untested here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:26:49 +02:00
Meta Vens
e5cfc0d676 Lock warning: a painted ship owns a typed incoming-lock warning carrying the lock's strength
LockWeapon.Execute paints its target with its own Lock (the one value the outgoing indicator also reads);
Entity publishes the one-tick inbox as IncomingLocks; the HUD shows one incoming indicator on the strongest
warning with the outgoing indicator's curves. Unity HUD code not compiled here; tests not yet run at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:25:22 +02:00
Meta Vens
caa424f424 BrownoutTests: a throttle under the old .01 gate still asks for its power
Hand mutant powerrequest-gate-01 survived: the gate's only reach is the energy asked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:08:04 +02:00
Meta Vens
0caf1fa525 ConsumablesFirstSetCommandTests: the landed designs carry the thermal pins and linear Quality terms (the shipped-catalog pins cannot see the command)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 15:53:25 +02:00