Catalog (GameData/Aetheria.cc, LFS): master's blob 00c59a64 re-saved by `AetherDb range-falloff apply` -> sha256 7c9cf240ab5e64973603fe3fe5cadaddfeb620ecb75b0ffae9cc2d84ad72bc9f.
Dry run: 27 weapon records to rewrite. A second apply left the bytes unchanged. Decoded against master's: 273 keys equal, schemas
equal, exactly 27 weapon records' payload differs, nothing else.
The test fix renames the design literal SRMM72 to Short-Range Missile Rack (generic-design-names table).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts: FusedRounds scenario brief and fixture comment, SmokeRoundsSteppedTests, and AetherDb's usage line keep both sides, with
DeathCluster renamed Cluster Cannon. GameData/Aetheria.cc is master's blob; range-falloff is rerun on it in the next commit.
This commit's catalog does not carry the falloff stats, so CatalogRole/falloff catalog tests do not pass here.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A mine layer carries no EffectiveRange or DamageAtMaxRange (StatValidation.ValidateMineLayerFlat, run wherever the other catalog rules run), so RangeFactor is 1 inside its gate for the mine, the AI and the panel without any reader branching on type; Lay's damage is the weapon's damage again. Adds a test that fails without Deliver's min(reach, MaxRange) clamp. Not built or tested yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fire-reads-fire-range mutant survived the first table: no test separated BurstReach from FireRange for a round Fire delivers.
Both commits build (verified on Yggdrasil, Aetheria.Shared.Tests).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A no-lock fused round reads RangeFactor in CommitBurst at the distance it travelled to the hull it stops on; every round whose point
Solve plans reads it once at Fire (PendingShot.DeliveredAtCommit says which). Lay reads it at its own distance 0. PerformanceStat.Evaluate
no longer interpolates a single-value span, so an unauthored +infinity stat evaluates unequipped. Tests: the round that stops short, the
Fused Rounds hull ahead, a mine layer's authored ranges, the group pick at the target's real distance, unequipped SRMM72/Mine Launcher.
Not yet built (verify job follows).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Imagination probe of the operator's sketch: the bodies as Voronoi sites, the distance metric varied
(power, additive, multiplicative, equal potential, flow-stretched, Minkowski), the lattice web pulled
toward the edges. Images, logs and scripts in docs/research/2026-10-14-body-voronoi-probe/.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applies rulings habitat-trophic-dag and voronoi-primitive and the operator's
correction that CultMath owns shader/C# parity. The target's Placement law
becomes a layered, donor-controlled DAG (environment, the Skein, producers,
grazers, predators and ambushers) with pointwise and stencil operators only,
nodes in CultMath and compositions in Aetheria; invariants trophic-dag-acyclic,
-pointwise, trophic-nodes-in-cultmath and skein-gate-continuous are added. The
map gains r4 body facts B28-B36 (CultMath's node and parity surface, the tape,
the probe), decisions, two questions and the r4 cut sequence. The probe renders
filament candidates and trophic layers on the orbiting B20 zone and measures
popping and turnover.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Behaviors.cs union list keeps sensor-catalog's ListenerData at 50 and
this cut's ScannerData at 51. No old design-name literal on the branch.
Commit builds unverified until the merge verify job.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Units cannot be lifted by hand (Entity.Update resets Position.y to the zone's height), so the first version of the test never put the target off the plane. The zone's depth now does it, and the Dart claim's Range is set between the two distances.
Builds: yes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Falloff made the DeathCluster too slow at the old Fragile position (443 m, past its 308 m effective range). Fragile moves to (80, 240), 253 m on the same bearing, and the scenario test asserts it against the weapon's evaluated EffectiveRange. Inside effective range the kill takes about 2.35 s whatever the distance and a Smoke Proximity round flies 1.75 s, so the round is fired once the hull has lost half its durability; the scenario Brief says the same. Probe: lead 0 landed 1.75 / dead 2.35; lead 1.0 dead 2.35 before the round.
Builds: yes. Not run yet (verified at the final job).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The planar-distance mutant survived the first mutation table; no test put a target off the ground plane.
Builds: yes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bdc8f1d0 ran Execute before the always-updated pass in ConsumableItemEffect.Update; that moved StatModifier timing for every consumable (TheOverdriveLocksAndBoosts failed). The scan's decay is now derived from the zone clock since the last held tick (Scanner.Progress, one site), so it is the same on the tick it breaks for an equipment host and a consumable host, and Scanner is no longer an IAlwaysUpdatedBehavior. The pilot-path test attaches a task-less Agent: a patrolling Minion needs zone orbits. bdc8f1d0 does not pass its own suite; this commit is the intended state.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Output of `dotnet run --project tools/AetherDb -- sensor-stat-set apply` on origin/master be01ee06's catalog
(sha256 9ee82a86...; result sha256 00c59a641efc5f3cce3504bf604a9dd25781c06494b141a47cc9aaf56727525d). A second apply
changed nothing. The dry run printed:
Census: 2 sensor designs, 0 listener designs.
Compact Sensor [Sensors] roles [emitter, receiver]
not if i see you first by DME: emitter 0.71, receiver 0.75
Sensor Array [Sensors] roles [emitter, receiver]
The Bat by Miss Terri's: emitter 0.45, receiver 0.57
New design: Passive Array [Tool] 1x1, EnergyDraw 10/s, Multiple 2-3 reading receiver; products Murmur by Finch, Wallflower by NiteLife
Intercept factor: 2 designs and 2 products to change, 4 sensor products to add; Passive Array to author.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ConsumableItemEffect.Update now runs Execute before the always-updated pass, as EquippedItem.Update does, so a consumable-hosted scanner decays on the tick the scan breaks. Tests: AScanReadsNoHostility (hostile/friendly, honest/lying), AScanTakesTheSamePathForAnyPilot (AI-agent ship and agentless ship), AConsumableScannerDecaysOnTheSameTick, ScannerDataRoundTripsAsUnionKey51. Not yet verified at this commit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
master's NoDesignTextNamesAProduct fails on the first name, Feather, because the Racing Drive's
functional text begins "Feather-light". The product is renamed; its design text is generic-designs' and untouched.
Builds. The catalog does not yet carry the command's output (next commit).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts: EvasionTermTests keeps the branch's EvLonginusDrive split with master's generic
design names; AetherDb Program.cs keeps both the sensor-stat-set and generic-designs cases and
lists both in the usage line. GameData/Aetheria.cc is taken from origin/master unchanged;
sensor-stat-set apply is rerun on it in the next commit. Tests that read the sensor catalog
(TheCatalogCarriesSensorStats and the roles checks) do not pass at this commit: it builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EffectiveRange takes Range's role in the roles maps; the lock weapon's array
header grows to 37 with the weapon base's new keys; the AI test builds its
gun's effective range in the encounter fixture. Not yet verified.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Moves the closed-form habitat probe scripts and the images each habitat
question option names into docs/research/2026-10-14-fauna-habitat-probe/,
points the map there, and adds the option renders under the spec's law and
the probe that shows the convergence lattice is FlowField's own structure.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applies ruling aetheria-fauna:ruling:fauna-placement-ruled: the target gains a
Placement law section and replaces fauna-placement-seeded with the placement
invariants closed-form, story, nested and no-pop. The map gains r3 body facts
(B24-B27, the closed-form density probe), decisions, the two questions and the
r3 cut sequence.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
WeaponData.RangeFactor is the one function of damage over range: 0 outside
[MinRange, Range], 1 up to EffectiveRange, one lerp to DamageAtMaxRange.
DamageCurve (key 7, retired) and its formula parameters, CurveField's
BezierCurve path, and every fixture curve line are deleted. Fire freezes
damage times the factor at BurstReach; the AI's DPS reads, Combat's optimum
sampling and the properties panel chart read the same function. AetherDb
gains range-falloff (command only; the catalog is re-saved in a later commit).
Cut and wiring land in one commit rather than two; this commit has not been
built yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scanner (ScannerData, Union 51) builds Progress while the ship's Target is tracked within Range, paints the target (PaintMode.Scan), emits at Range / InterceptFactor and decays in IAlwaysUpdatedBehavior.Update when not held. At 1 Entity.RecordInspection records every fitted non-hull non-destroyed item through RecordReveal with channel null and the subject's claim. Reveal.Channel and RecordReveal take SignatureChannel?. Scanner.cs.meta is hand-written with a fresh guid; Unity has not compiled this yet. Builds on the headless test project only if the next verify says so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>