Commit graph

2,756 commits

Author SHA1 Message Date
Meta Vens
2843358430 Tests: a names-only replay, so apply still lands designs when no seller changes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 00:24:58 +02:00
Meta Vens
94f4a9872c Roles backfill: separate the null and map checks (definite assignment survives mutation)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 00:11:04 +02:00
Meta Vens
e97968e271 Roles backfill: read each stat with as, so Stryker can mutate the command
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 00:02:46 +02:00
Meta Vens
80b51d63ea Catalog: roles-backfill apply re-run (6 designs name their unnamed Quality terms)
Produced by `AetherDb roles-backfill apply` on Yggdrasil over the previous catalog blob (3d531aff). Dry run:

  DeathCluster  (Weapon/Ballistic)  roles [barrel, feed mechanism]
      AutoWeaponData.Count            12 -> 12..15  feed mechanism ^1
  Flak Gun  (Weapon/Ballistic)  roles [barrel, feed mechanism]
      AutoWeaponData.Count            6 -> 6..8  feed mechanism ^1
  GT 3K  (Weapon/Launcher)  roles [guidance system, thruster, warhead]
      LauncherData.MinRange         500 -> 500..50  guidance system ^1.75
  plight  (Weapon/Energy)  roles [focusing array, power coupling]
      ChargedWeaponData.DamageSpread     1 -> 1..3.3  focusing array ^1.25
  MoveOnPro  (Reactor)  roles [core, regulator]
      StatModifierData.Modifier         1.1 -> 1.1..1.25  core ^1
  MoveOnPro Station Reactor  (Reactor)  roles [core, regulator]
      StatModifierData.Modifier         1.1 -> 1.1..1.25  core ^1

6 design(s) and 0 product(s) to author.
Dry run. Pass "apply" to land them.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 23:50:35 +02:00
Meta Vens
c5ce2b6409 Tests: the replay leaves Small Drive's sellers as they shipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 23:50:14 +02:00
Meta Vens
d2f4061769 Tests: fix the broken join string in the catalog roles test
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 23:48:23 +02:00
Meta Vens
6218f9fdc1 Roles backfill: Count and MinRange take a role but are never ranged; fix a broken string in the catalog test
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 23:47:54 +02:00
Meta Vens
2e1c2c439b Tests: CB-R1 enforced whole, backfill replay on a scratch catalog, envelope and operability read the catalog
ShippedCatalogRolesAreLive checks every design of every kind: each non-flat stat reads one declared role,
declared roles are read, sellers author each once, role-mapped designs are not all flat (the tool answers
which, via Program.HasRoleMap). RolesBackfillIsAuthored pins ratios and roles, with the Autocannon
Penetration, Mine Range and LRMM72 LockAngle asserts. RolesBackfillCommandTests resets the backfilled designs
on a scratch catalog, applies, and expects the shipped catalog back, then replays as a no-op.
EveryShippedProductHasAMaker. TheEnvelopeComesFromTheGear bounds each drive by the catalog's Large Drive
Thrust range; ShippedWeaponOperabilityTests reads the catalog's DefaultEntitySettings.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 23:46:28 +02:00
Meta Vens
6a1eb68ddb Roles backfill: one role map per design, the six unnamed non-flat stats named, RolesBackfill takes a root
RoleMapFor answers for the Mine Launcher (MineLayerRoles) so roles-migrate and roles-backfill no longer
disagree on it; BackfillMapFor is deleted. Count, MinRange, DamageSpread and the reactor Modifier join their
kind maps, and the backfill points a varying stat's unnamed Quality term at its role without touching its
range. DeathCluster, Flak Gun, GT 3K, plight and both MoveOnPros join the backfill set (CB-R1 forces them).
RolesBackfill(apply, root) mirrors PiratesFaction so tests can replay it on a scratch catalog.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 23:46:26 +02:00
Meta Vens
303f73e19f Tests: the Longinus envelope's flank sides are each Talaria's own thrust
Each fitted Talaria has its own lot's thrust, so Left and Right are the two flanks'
accelerations, not both the larger one.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 22:39:21 +02:00
Meta Vens
f3550b67a4 Tests: roles-backfill fallout (Tractor Beam has no stat, Longinus fitted by name)
ShippedCatalogRolesAreLive skips gear with no PerformanceStat at all (Tractor Beam is a
thruster kind with none). TheEnvelopeComesFromTheGear fits the Longinus by name: the
generator's picks follow the item stream and every authored ProductRole draws from it, so
the generated hull stopped carrying Large Drives (Medium Drive and RevvITup instead). Its
forward bound is the drives' own thrust, since a Large Drive now rolls 0.8x to 1.2x.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 22:26:34 +02:00
Meta Vens
017da88334 Catalog: roles-backfill apply (6 designs, 6 products)
Output of `AetherDb roles-backfill apply` on origin/master 325ef4bc's catalog, run on
Yggdrasil at 54999a64. Dry run: Autocannon, LRMM72, SRMM72, Mine Launcher, Large Drive
and Small Drive gain roles and quality ranges; Autocannon (Zhestokost, Pirates),
LRMM72 (R&D), SRMM72 (DME), Mine Launcher (DME) and True North (Lightsail) author their
ProductRoles. A replay prints "already authored". At merge, take master's catalog and
rerun `AetherDb roles-backfill apply`.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 22:11:52 +02:00
Meta Vens
54999a642b Roles backfill: AetherDb command and catalog role tests (CB-R1)
AetherDb roles-backfill gives Autocannon, LRMM72, SRMM72, Mine Launcher, Large Drive
(and Small Drive, which declared roles no stat read) live roles: each mapped flat
stat becomes a 0.8x..1.2x range read through a Quality term naming its role, and
every seller authors a ProductRole per role from its maker profile. MineLayerRoles
is new; the maker profile table is hoisted so pd-gear and this command share it.
ShippedCatalogRolesAreLive and RolesBackfillIsAuthored read the shipped catalog.
The catalog blob lands in its own commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 22:09:18 +02:00
Meta Vens
e389e3972c Map: catalog breadth (weapon matrix, roles backfill, stat-boosting gear)
Body facts CB1-CB12, rules CB-R1..CB-R5 and rationale from the
imagination-catalog-breadth pass; specs and questions are in the mind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 21:57:21 +02:00
Meta Vens
325ef4bc1a Catalog: replay pirates-faction apply on master's catalog
Master's catalog (LFS 5ecf375f: PD gear, Mine Launcher, retirements) differs from this
branch's base, so the branch's blob was not taken. AetherDb pirates-faction apply was rerun
on master's catalog (merged tool, Yggdrasil container): the Pirates faction and eight
emoji-named products authored; catalog 5ecf375f -> 32a2e401 (12712398 bytes); a second run
reports the faction already exists and the blob is byte-identical.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 21:41:45 +02:00
Meta Vens
2c065937ee Merge origin/eureka/aetheria-release-pirates-record (8e51016f) into master
AetherDb Program.cs: both sides appended a command (pd-gear/mine-launcher, pirates-faction);
kept all, one usage line. GameData/Aetheria.cc: master's blob kept here, pirates-faction
apply replayed on it in the next commit (follow-up catalog-blob-merge-order).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 21:37:22 +02:00
Meta Vens
a8f71d463b Catalog: replay pd-gear apply on master's catalog
Master's catalog (LFS adba0389: Mine Launcher present, LonginusX and Traction retired)
differs from this branch's base, so the branch's catalog was not picked. AetherDb
pd-gear apply was rerun on master's catalog (merged tool): 3 designs and 11 products
authored, a second run reports it already authored, dangling reports 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 19:56:56 +02:00
Meta Vens
d17fe3a410 Merge origin/master (13a6b4f5, gear-without-presence and retire-longinusx) into eureka/aetheria-release-pd-gear
The catalog is regenerated from master's catalog with pd-gear apply (next commit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	GameData/Aetheria.cc
#	tools/AetherDb/Program.cs
2026-10-08 19:51:53 +02:00
Meta Vens
8e51016f23 PiratesFactionCommandTests: flush the name-file removal; tolerate a null empty role list
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 19:39:54 +02:00
Meta Vens
13a6b4f5b8 Catalog: replay retire-longinusx apply on master's catalog
Master's catalog (LFS 9e75d9a4, carrying the Mine Launcher and the gear-without-presence
merge base) differed from this branch's base, so the branch's catalog was not picked.
AetherDb retire-longinusx apply was rerun on master's catalog (tool as of 8038b46a plus
origin/master): the dry run listed the same four records (HullData LonginusX, GearData
Traction, their two FactionProductData), a second apply is refused, dangling reports 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 19:38:33 +02:00
Meta Vens
b385c65194 PiratesFactionCommandTests: pin the faction's fields, the eight products' designs, descriptions and roles, and the missing name file
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 19:15:37 +02:00
Meta Vens
284231f4c1 Merge origin/master (2403a5f3, gear-without-presence) into eureka/aetheria-release-retire-longinusx
Lands retire-longinusx on master after gear-without-presence. The catalog
is regenerated from master's catalog with retire-longinusx apply (next commit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	GameData/Aetheria.cc
2026-10-08 18:59:38 +02:00
Meta Vens
8cb53049aa PiratesFactionCommandTests: strip the copy through a shipped-assembly registry, then seed the test global AetherDb.Open demands
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 18:53:18 +02:00
Meta Vens
2403a5f393 Merge origin/master (594d3477) into eureka/aetheria-release-gear-without-presence
Brings gear-without-presence up to master ahead of landing it, with
eureka/aetheria-release-retire-longinusx following.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:33:40 +02:00
Meta Vens
0a57e417bd Catalog: pirates-faction apply lands the Pirates and eight emoji-named products
Operator approved the dry run as shown (ruling pirates-record-apply). Dry run output:

New faction "Pirates": influence 3, names "pleiades", allegiance 1.0 to 12 factions.
  colours: primary (0.42, 0.40, 0.37) primer grey, secondary (1.00, 0.45, 0.05) hazard orange
  A loose coalition of crews and hidden docks moving people and goods outside official control. No command, no common law: possession has a maintenance schedule.

New products (8):
  🫳🔫  [U+1FAF3 U+1F52B]
    design WeaponItemData "Autocannon" (made by Zhestokost), roles []
    "Serial number filed off. Still shoots."
  🪦🤠  [U+1FAA6 U+1F920]
    design WeaponItemData "Earp" (made by AU), roles [barrel, feed mechanism]
    "The previous owner had no further use for it."
  🧾🚫  [U+1F9FE U+1F6AB]
    design WeaponItemData "FastBlast+-" (made by NiteLife), roles [focusing array, power coupling]
    "Warranty void where prohibited, which is everywhere."
  🎨🙈  [U+1F3A8 U+1F648]
    design WeaponItemData "6k Shooter" (made by Zhestokost), roles [barrel, feed mechanism]
    "The logo underneath is somebody else's problem."
  🔥  [U+1F525]
    design WeaponItemData "scorched void policy" (made by DME), roles [guidance system, thruster, warhead]
    "Turns out we did start the fire after all."
  👀🎯  [U+1F440 U+1F3AF]
    design GearData "Targeting Computer" (made by Finch, Lucent, NiteLife), roles [processor, array]
    "Somebody else's eyes. They still work."
  🔑🏃💨  [U+1F511 U+1F3C3 U+1F4A8]
    design GearData "Small Drive" (made by Lightsail), roles [injector, nozzle]
    "Hotwired. Do not ask about the ignition."
  📦🤫  [U+1F4E6 U+1F92B]
    design CargoBayData "Store-All Plus" (made by Lightsail), roles []
    "Contents not as declared."

Dry run. Pass "apply" to land the Pirates faction and 8 products.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 18:29:23 +02:00
Meta Vens
78755fd176 pirates-faction: callable on a root, prints its colours; tests pin dry run, idempotence, conflict and missing design
Not yet built when committed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 18:16:10 +02:00
Meta Vens
594d347704 Merge origin/master (8a98aef5 sim-mines presenter) into eureka/aetheria-release-controls-mount-aim 2026-10-08 18:00:34 +02:00
Meta Vens
8a98aef5c1 Merge origin/master (ace81719 product-titles) into eureka/aetheria-release-sim-mines 2026-10-08 17:02:10 +02:00
Meta Vens
675e22d735 Operability test: assert performance above the online threshold, not above zero
Entity.UpdatePerformance sets ThermalOnline only when performance exceeds EntitySettings.ShutdownPerformance.
A weapon at 0.006 performance at a hull's starting temperature passed the old "> 0" test but could never fire.
The threshold is read from production (new EntitySettings().ShutdownPerformance).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:33:31 +02:00
Meta Vens
96e96319c8 Merge origin/master (bd46f942 boss-gate, 1476cfd0 map docs) into eureka/aetheria-release-sim-mines 2026-10-08 16:31:36 +02:00
Meta Vens
ace8171929 Merge origin/master into eureka/aetheria-release-product-titles 2026-10-08 16:27:49 +02:00
Meta Vens
32b14b966b Pin ManufacturerPreference: neutral without galaxy or faction, zero outside allegiance, table-bound distance
Kills the five Stryker survivors of the first pass on LoadoutGenerator.cs
availability and preference. Tests only; builds against the prior commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 16:12:48 +02:00
Meta Vens
2c7c20607f Tests: pin the PD designs' authored stats, the no-maker-name rule, and TrackingRate through the catalog design
PdGearStatsAreAuthored reads the shipped catalog and pins every authored value of the three designs against the spec
derivation (ammo draw, velocity, visibility, range, pellet count, heat, descriptions and the rest). PdDesignsCarryNoMakerName
enumerates the makers from the catalog and rejects any in a PD design's name or description. PdGunHoldsASpeedDemon now sets
the catalog design's authored Tracking on the fixture weapon and asks FireControl.TrackingRate, instead of recomputing it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:01:01 +02:00
Meta Vens
847e5eabf2 SolutionTests: compare the subject by reference so a failing assert does not format the entity graph
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:54:43 +02:00
Meta Vens
1476cfd0e0 Map: catalog growth, generic designs and branded products
Folds the catalog-growth addendum and the emoji-pirates product facts into a
new section: probes CG1-CG12 and LP1-LP9, the maker profile, PD product,
generic-name and weapon product-line tables, the model page rows (Title is
the one owner of an item's title; DisplayName is not a thing) and rationale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:42:12 +02:00
Meta Vens
c8376c354e Map: munition evasion core, mount term and autofire seams
Folds the munitions-autofire addendum into Missiles and point defense:
probes MA1-12, the munition Track and autofire-subject model page row
changes, and the rationale for the evasion core, the split cuts and the
close-crosser divert test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:40:53 +02:00
Meta Vens
573aae7e90 ItemTitleTests: Upsert already returns the faction ref (previous commit did not build)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:39:51 +02:00
Meta Vens
0e39a7f058 Map: faction-play re-anchor on 4d664b53 and the prelude retirement
Folds the faction-prelude addendum: faction-play probes BS1-3 and FP1-14
under Faction play, prelude probes PR1-11 and their rationale under Demo
scope, and the changed model page rows in both sections.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:39:50 +02:00
Meta Vens
4a38634e53 Map: full emoji body facts and model page rows
Folds the emoji section of the emoji-pirates addendum into Demo scope:
TextMesh Pro probes E1-E10, the font-asset rationale and rejected
alternatives, and the emoji and product model page rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:38:58 +02:00
Meta Vens
658e25054b Map: demo hulls, the Pirates record and the derived boss hull
Folds the demo-hulls and emoji-pirates (Pirates record r2, several package
products per hull) addenda into Demo scope: body facts H1-H11, the Pirates
record and product tables, the boss-hull rationale and the model page rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:38:15 +02:00
Meta Vens
7e400543b7 Fix the new pins: an unfused layer lays nothing, so the mine-layer exemption is pinned at the gate; decoy lot in the ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:31:50 +02:00
Meta Vens
7c211cee3c ItemTitleTests: pin the maker-without-product and crafted-commodity arms of Title
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:30:49 +02:00
Meta Vens
8761b3707f Loot scan label and FIRE CONTROL overlay read Title, not the design name
Every item-title display site now routes through ItemManager.Title. The grep
for design-name reads under Assets/Scripts outside ServerShared leaves only
log lines, exception text, console parsing and the Type row.
Does not build-verified yet; the Unity compile runs at the end of the batch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:30:48 +02:00
Meta Vens
24fb38496f Catalog: the Mine Launcher's heat envelope in kelvin (173.15..473.15, optimum 249.65, plateau 36)
Authored by AetherDb mine-launcher apply from the 532be3a5 catalog; the new blob is 9e75d9a4 (LFS).
Fixes the zero performance at a hull's starting 280 K; ShippedWeaponOperabilityTests is green from here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:24:38 +02:00
Meta Vens
b38589a1b4 Pin the mine-layer gate exemption and Solve's target argument (Soul s1 findings)
AMineLayerLaysWithTheAimOutsideItsArc: an unfused mine layer passes ArcPermitsFire and lays with the aim outside
its arc. SolveFliesToTheTargetItIsGiven: Solve flies to the decoy it is passed, not the designated target.
ATargetOutOfArcGivesNoSolution also asserts the subject of a designated target out of arc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:21:20 +02:00
Meta Vens
9e86bcd43d AetherDb mine-launcher: escape the newline in the two messages (baf90d34 did not compile)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:10:37 +02:00
Meta Vens
baf90d34c9 Mine Launcher heat in kelvin; every shipped weapon must perform at a hull's starting temperature
AetherDb mine-launcher now corrects an already authored launcher to 173.15..473.15 K (optimum 249.65, plateau 36,
the sibling weapon's) and authors new ones the same way. Entity.StartingCellTemperature names the 280 the hull
cells start at, and ShippedWeaponOperabilityTests reads it against the shipped catalog. The catalog blob follows
in the next commit, so the test is red at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:04:16 +02:00
Meta Vens
7262429a60 Delete WireMines: the run-once editor tool named the .sbsar material guids (clean-break-from-substance)
It served its single run; Mine.prefab and the scene wiring are committed and reference plain materials only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:04:14 +02:00
Meta Vens
e16288bfcf Pirates record: the demo tests read the shipped faction; tests pin its eight emoji-named products
Deletes the AddPirates stand-in and its 21 calls. DemoTerminus_missing_cast_refused removes the shipped record from its scratch
copy first. LoadoutGenerator.HasHome is public so the catalog test asks production's own home rule. These tests are red on
a catalog without the Pirates: the catalog commit (pirates-faction apply) follows separately.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 14:50:48 +02:00
Meta Vens
1f83235919 Tests: compare record keys with Equals (the previous commit does not build)
CultRecordKey has no == operator. 13d26df2 fails to compile for that reason.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 14:49:58 +02:00