Output of `dotnet run --project tools/AetherDb -- launch-suppressor apply` at 18fa8a5e on the catalog at fa6108de (sha256 of the base 1a2cb55b63f77a113dea0571716994ef8311d5da572a4fc41cbd3a7d2561fb68, of the result f1642a12c3f7b1184a159985944f128704bd489151f8fb9077a057b9c0fa7347). Decoded against the base: 258 -> 266 records, header equal, 8 added, no base record changed (the previous blob re-encoded four). The dry run printed:
/src/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs(49,25): warning CS0067: The event 'LockWeapon.OnLocked' is never used [/src/Aetheria.Shared/Aetheria.Shared.csproj]
/src/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs(51,25): warning CS0067: The event 'LockWeapon.OnLockLost' is never used [/src/Aetheria.Shared/Aetheria.Shared.csproj]
/src/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs(50,25): warning CS0067: The event 'LockWeapon.OnBeginLocking' is never used [/src/Aetheria.Shared/Aetheria.Shared.csproj]
New designs:
Launch Suppressor 1x1 Tool mass 60 price 40000 durability 50 roles [baffles, heat sink]
Factor 0.08-0.03 (baffles)
HeatPerUnit 1.4-0.8 (heat sink)
RatedTemperature 310-330 (heat sink)
"Baffles and a heat sink remove nearly all of a weapon's launch flash, hiding the shot from its target. The removed light is dissipated as heat in the device's own cell; above its rated temperature it passes the full flash."
Launch Baffle 1x1 Tool mass 60 price 25000 durability 50 roles [baffles, heat sink]
Factor 0.4-0.2 (baffles)
HeatPerUnit 0.8-0.5 (heat sink)
RatedTemperature 310-330 (heat sink)
"Baffles dim a weapon's launch flash to a fraction and a heat sink absorbs the difference. The target still sees the shot; distant observers do not. The sink sustains the effect through a long fight."
New products:
Launch Suppressor -> "Velvet Rope" by NiteLife, every role mean 0.55 dev 0.12: Keeps the flash on the inside. Nobody sees who you let out.
Launch Suppressor -> "Hush" by Finch, every role mean 0.65 dev 0.2: Small, quiet, and the first shot is a secret. The second, probably.
Launch Suppressor -> "lights out" by DME, every role mean 0.55 dev 0.2: no flash/ no name/ nobody saw a thing
Launch Suppressor -> "Plausible Deniability" by R&D, every role mean 0.6 dev 0.15: Hides 100% of launches!* *Launches defined as the ones nobody saw.
Launch Baffle -> "Low Profile" by Lightsail, every role mean 0.55 dev 0.1: Quiet on the manifest, quiet on the scope. A hauler nobody notices is a hauler that gets paid.
Launch Baffle -> "Fast Pass Dim" by Alakrita, every role mean 0.6 dev 0.14: Takes the glare off every launch and keeps the schedule. Anyone close enough to mind was already your problem.
Dry run. Pass "apply" to author 2 designs and 6 products.
The full Aetheria.Shared.Tests suite passed on this catalog (1714 passed, 0 failed) at 18fa8a5e.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Command: the batch carries ExpectUnchanged, so CultCache lands it onto the file as it is. A plain commit re-encoded every record through today's types (two sensors lost a retired key-7 payload and gained a trailing nil, LRMM72 and GT 3K gained a trailing nil); this one leaves every record it did not author byte-identical. A conflicting writer now fails the apply instead of being overwritten.
Tests: the mild baffle stores exactly flash x Factor and pays exactly its predicted heat for the first 30 launches of a 300 flash or 8 of a 1000 flash, then is either hidden or bright; the rating is pinned to half a kelvin either side at three heat-sink qualities; suppression and heat are checked at six flash strengths; the observer fits the named sensor 'not if i see you first'; the command test widens every payload and checks apply leaves all other records byte-identical.
This commit's GameData/Aetheria.cc pointer is the previous apply's output; the regenerated catalog follows in its own commit. Not built or run at this commit yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Output of `dotnet run --project tools/AetherDb -- launch-suppressor apply` on the catalog at fa6108de (sha256 of the base 1a2cb55b63f77a113dea0571716994ef8311d5da572a4fc41cbd3a7d2561fb68, of the result 3c2f3649762d35f66f3f220dbd4aa289d1711f05f8b7195a4cc3e5cc43085fa8). The dry run printed:
New designs:
Launch Suppressor 1x1 Tool mass 60 price 40000 durability 50 roles [baffles, heat sink]
Factor 0.08-0.03 (baffles)
HeatPerUnit 1.4-0.8 (heat sink)
RatedTemperature 310-330 (heat sink)
"Baffles and a heat sink remove nearly all of a weapon's launch flash, hiding the shot from its target. The removed light is dissipated as heat in the device's own cell; above its rated temperature it passes the full flash."
Launch Baffle 1x1 Tool mass 60 price 25000 durability 50 roles [baffles, heat sink]
Factor 0.4-0.2 (baffles)
HeatPerUnit 0.8-0.5 (heat sink)
RatedTemperature 310-330 (heat sink)
"Baffles dim a weapon's launch flash to a fraction and a heat sink absorbs the difference. The target still sees the shot; distant observers do not. The sink sustains the effect through a long fight."
New products:
Launch Suppressor -> "Velvet Rope" by NiteLife, every role mean 0.55 dev 0.12: Keeps the flash on the inside. Nobody sees who you let out.
Launch Suppressor -> "Hush" by Finch, every role mean 0.65 dev 0.2: Small, quiet, and the first shot is a secret. The second, probably.
Launch Suppressor -> "lights out" by DME, every role mean 0.55 dev 0.2: no flash/ no name/ nobody saw a thing
Launch Suppressor -> "Plausible Deniability" by R&D, every role mean 0.6 dev 0.15: Hides 100% of launches!* *Launches defined as the ones nobody saw.
Launch Baffle -> "Low Profile" by Lightsail, every role mean 0.55 dev 0.1: Quiet on the manifest, quiet on the scope. A hauler nobody notices is a hauler that gets paid.
Launch Baffle -> "Fast Pass Dim" by Alakrita, every role mean 0.6 dev 0.14: Takes the glare off every launch and keeps the schedule. Anyone close enough to mind was already your problem.
Dry run. Pass "apply" to author 2 designs and 6 products.
Builds and passes the full suite (1687 passed, 0 failed) at this commit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The catalog tests need the applied catalog; this commit does not pass them until the next commit lands the apply output.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 1b line leaves the cut sequence. The spec is blocked on question ew-suppressor-strength
(what the suppressor hides from: its target or only distant observers), recommended
hides-from-the-target. Probes ran on Yggdrasil from a scratch commit never pushed to origin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Imagination pass (imagination-aeth-fauna, self-2026-10-13-ag2). Target: fauna are
simulated props seen through the one gain rule, each class with a legible motion
law (ruling disguise-held-by-flying). Map: body facts B1-B14 with a cost probe on
Yggdrasil, nine draft questions, first cut fauna-krill-swarms as a draft spec,
later cuts one line each. Docs only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts: Behaviors.cs keeps Union(48, PickupData) and Union(49, LaunchSuppressorData);
Zone.cs keeps the departure record on _entities with master's Visibility (emissions-heard);
ContactRevealTests.cs keeps master's removal of the emission-departure test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes finding shield-ripple-draws-on-untracked. ShieldManager already reaches
ActionGameManager (Clock), so DrawsAt stays the one owner. Unity code; compile
verified separately.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
beam-corner-claim-loop: InBeam is the one region predicate; Select claims from it and the pre-pull cancel holds the item only while it stays in it (an item at 74 along, 20 off is collected, not claimed and dropped every other tick).
full-hold-regrab-pins-and-blocks: Select skips an item no cargo bay can store whole, asked of the bay's own TryFindSpace (the test TryStore opens with), per ruling beam-skips-unstorable-items; a hold that fills mid-grab still cancels at the end.
pickup-test-gaps: smoothstep pose, spin-down while the gear is inactive, Remove freeing only the removed holder's items.
phase-ticks-not-rate-invariant: the claim is corrected in the tests; each phase fires on the first tick at or after its boundary, pinned at 1/60, 1/600 and an uneven dt cycle.
Builds; not yet run (the verify job follows).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A failing Assert on a collection of Entity prints the whole entity graph and aborted the test host, so two hand
mutants read as a crash rather than a named failing test. Builds (test-only change).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A warning lives one tick, so the end-state read could not see a paint selection wrote; a hand mutant that paints
on SetTarget survived. Builds (test-only change).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Selection is nothing the selected ship can sense: TargetedBy, TargetedByCount, their subscriptions and the music
read of them are deleted. Indicator fills, the target panel, the compass, music and the enemy schematic rows now
read CurrentEntity's ContactOf / RevealsOf / RevealedSubjects (new, the book's keys); the schematic rows are built
by one builder from the book and rebuilt when the revealed set changes. Impact hull effect and projectile hit
effects at another ship's position draw only through ActionGameManager.DrawsAt (the player's own ship or a Tracked
contact). Builds untested in Unity at this commit; tests NothingReadsSelection and RevealedSubjectsListsTheBook.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found by the mutation table: two mutants read 'Test Run Aborted' instead of naming the failing test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found by the mutation table: a mutant that never claims hung the test host, and a mutant that doubled the
range survived because the observation landed between two attempts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The old pin (d4a27def) is exactly what this tree leaves with EquipPickup's call removed (run: passes), so the
new values differ from it only by the one product draw each generated ship makes for its beam.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tests only; production unchanged. Fixture gear SuppressorBright (Factor 3) and SuppressorNegative (Factor -1).
Maps Soul findings clamp-unpinned and rated-boundary-unpinned. Builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AetherDb pickup-catalog apply on the previous catalog (5efc5225...): result 1a2cb55b... (12730143 bytes), the
Tractor Beam's price 0 -> 25000; a second dry run printed "already authored", dangling reports zero. The ship
generator now requires a sold tractor beam, so the five synthetic catalogs that generate ships (LoadoutTests,
RunSaveTests, FireControlCut6cTests, TargetingSystemTests, ConsumableSupplyTests) each sell one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found by the full suite on the previous catalog: every generated ship threw 'no compatible tractor beam'.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pins the cancel rules (inactive gear, out of range before the pull and not after it), TryHold refusing a held
item, the next-item selection, and the held pose as a function of progress.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applied on Yggdrasil from the base catalog (sha256 ce5c8be5...), result 5efc5225... (12730141 bytes); a second
dry run printed "already authored" and dangling reports zero. Builds; PickupGenerationTests needs this commit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7e0b950d builds; its reveal test failed on a KeyNotFound for the control gun after later ticks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
LaunchSuppressorData (union key 49; key 48 is held by cut loot-2 on eureka/aetheria-release-loot-2)
and LaunchSuppressor: Entity.SetSignature folds each light signature through the equipped
suppressors in equipment order. Only LaunchFlash is scaled, only while the item is Active and at
or below its rated temperature; each pays (removed x HeatPerUnit) through Behavior.AddHeat.
Fixture gear and LaunchSuppressorTests added. Not yet built or run (verify job follows).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
Imagination imagination-aeth-loot-2's map edit, ported from the operator's
checkout (where it was written against aac2cf91) onto master. loot-2 r3 is
mapped on loot-1-present and alone restores pickup in play.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The previous push (07854ed5) came from `git pull --rebase`, which linearized the merge and dropped the
adaptation of master's ContactTests and LootTests to the deleted TargetArmorInfoThreshold, so master did not
compile its tests. This commit joins the reveals branch history and sets the tree to the verified merge
(c7edbf0b: Yggdrasil full suite 1624 passed, 0 failed) plus master's two docs-only commits since.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>