Aetheria/docs/stats-power-cut7-roles.md
Meta Vens c4f6029e5d Cut 7: author roles into the catalog, and the operator review table
roles-migrate apply, run once: 32 of 51 designs now declare roles (183
stats pointed at the role that governs them; the other 19 designs' kinds
either carry no quality-bearing behaviour at all, or every candidate stat
is authored flat with no observable role-vs-workmanship difference). 28 of
37 products authored matching ProductRole quality; the rest sell an
unrolled design or a design no product sells (Core Power, Industrial
Thermostatic Heater, pswarm, plight -- all already flagged unsold in the
Cut 1 census).

docs/stats-power-cut7-roles.md is the legible review table the map's O7
calls for: every design's roles and which stat took each, grouped by item
kind, plus every product's authored mean/deviation and its basis (one real
brand identity -- Arctica/Alakrita on heat efficiency, from
item-provenance-target.md -- the rest generic placeholders flagged for
operator review).

Verified before/after: AetherDb dangling/station-fit/hardpoint-fit output
is byte-identical; `loadout 1` output is byte-identical (no generation
behaviour moved); census reports 0 designs with roles and no matching
product spread; 144 Aetheria.Shared.Tests pass (was 141); the six-mutation
harness in mutation_tests_stats_power_cut8.py all behave as declared.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 05:01:43 +02:00

13 KiB

Cut 7 (Roles Authored): Operator Review

Generated by dotnet run --project tools/AetherDb -- roles-migrate (dry run captures this exact table; apply landed it in GameData/Aetheria.cc). Regenerate with roles-migrate any time the catalog changes — this file is a snapshot for review, not a second source of truth.

Role vocabulary is small and shared within a kind: the same handful of part names cover every design of that kind, not one bespoke name per item. A stat is only pointed at a role when it both carries a Quality term and actually varies with quality (Min != Max) — Cut 1's flat placeholder stats (Min == Max, a harmless leftover Heat^1 term) have no observable role-vs-workmanship difference, so pointing a role at one would be authoring fiction, not content.

Product role means below are almost all generic placeholders (deterministic per product+role, not hand-tuned) flagged "needs operator review" — the one exception is Arctica/Alakrita, where docs/item-provenance-target.md already states a brand identity ("optimizing for heat efficiency"). Every other product is waiting on the operator to decide who is actually good at what; right now they only differ from each other by an arbitrary seed, not by authored intent.

Designs and their roles, by item kind

AetherDrive

Design Roles Stat → role
Traction coupling, rotor AetherDriveData.MaximumRpm → rotor · AetherDriveData.Torque → rotor · AetherDriveData.CouplingEfficiency → coupling · AetherDriveData.EnergyDraw → coupling · AetherDriveData.PassiveCoupling → coupling

Role meanings: rotor — the spinning core that produces RPM and torque. coupling — how efficiently that output couples into drive and how much bleeds off passively.

CargoBay, ControlModule, DockingBay, Hull/Station, Hull/Turret — no roles

SafeStuff II, Store-All Enterprise Edition, Store-All Plus, Store-All Plus Mini (CargoBay); Cockpit 2x2, Turret Control Module (ControlModule); Medium Docking Bay (DockingBay); Zenith (Hull/Station); Turret (Hull/Turret).

Why: none of these kinds' behaviours read StatSource.Quality at all today (cargo capacity, docking, cockpit draw and hull cross-section on these particular designs are flat or non-quality stats) — there is no per-part distinction for a role to express yet. Generic quality stays. Turret's own ReflectorData.CrossSection is present but authored flat (Heat^1, no Quality term), unlike LonginusX's.

Hull/Ship

Design Roles Stat → role
LonginusX plating ReflectorData.CrossSection → plating

Role meaning: plating — the hull's armor/stealth coating, which is what actually governs radar cross-section.

Radiator

Design Roles Stat → role
Arctica fins, pump, reservoir Emissivity→fins · WasteHeat→fins · PumpedHeat→pump · EnergyUsage→pump · ThermalMass→reservoir
cold like my heart fins, pump, reservoir same five fields, same roles
OK Disperser fins, pump, reservoir same five fields, same roles
Iapyx reservoir ThermalMass→reservoir only (Emissivity/PumpedHeat/WasteHeat/EnergyUsage are authored flat, Heat^1, no Quality term)
Skiron reservoir same as Iapyx

Role meanings: fins — the radiating surface (emissivity, waste heat). pump — the coolant pump (heat moved, its own energy cost). reservoir — the thermal mass of the coolant loop itself.

Reactor

Design Roles Stat → role
Core Power core, regulator Efficiency→core · OverloadEfficiency→regulator · ThrottlingFactor→regulator (Charge authored flat here)
Manhattan core, regulator Charge→core · Efficiency→core · OverloadEfficiency→regulator · ThrottlingFactor→regulator
MoveOnPro core, regulator same four
Notorious core, regulator same four
Vulcan core, regulator same four

Role meanings: core — the primary reaction chamber (raw charge and efficiency). regulator — the safety and throttling electronics (overload behaviour, throttling).

MoveOnPro also carries a StatModifierData.Modifier (Quality-termed) — left at generic quality: it modifies an external stat rather than the reactor's own part, so no reactor role fits it.

Sensors

Design Roles Stat → role
not if i see you first emitter, receiver Sensitivity→receiver · PingBoost,PingEnergy,PingVisibility,PingRange,PingCooldown→emitter
The Bat emitter, receiver Sensitivity→receiver · PingBoost,PingVisibility,PingRange,PingCooldown→emitter (PingEnergy authored flat here)
Tractor Beam (none) dead design (S1, Cut 1 findings): every field is flat, nothing to point

Role meanings: receiver — passive sensitivity. emitter — the active ping subsystem (boost, cost, visibility, range, cooldown).

Thruster

Design Roles Stat → role
deep space burnout injector, nozzle Thrust→nozzle · Visibility→nozzle · Heat→injector (EnergyUsage authored flat 0/0, no terms)
Large Drive (none) every field authored flat (Heat^1/Quality^1 but Min == Max throughout)

Role meanings: nozzle — exhaust output and plume (thrust, visibility). injector — fuel/power feed, whose byproduct is heat.

Tool

Tool is not a shared kind the way a laser or radiator is — each design is its own bespoke gadget, so roles are authored per design rather than from one shared field map.

Design Roles Stat → role
Industrial Thermostatic Heater heating element EnergyDrawData.EnergyDraw→heating element · HeatData.Heat→heating element
PotaT+- converter, storage cell CapacitorData.Capacity→storage cell · CapacitorData.Efficiency→converter
Assembly Line, Deep Ore Extractor, Refinery, Shipyard, Surface Ore Extractor (none) carry no PerformanceStat behaviour at all in the current catalog

Weapon/Ballistic

Design Roles Stat → role
6k Shooter barrel, feed mechanism Damage,Range,Velocity→barrel · Heat,Visibility,Spread→feed mechanism
Earp barrel, feed mechanism same shape as 6k Shooter
ClearPath barrel, feed mechanism Damage,Range,Velocity→barrel · Cooldown,Energy,Heat,Visibility,Spread→feed mechanism
DeathCluster barrel, feed mechanism same shape as ClearPath
pretty pretty bang bang barrel, feed mechanism same shape as ClearPath (charged weapon, same field names)
Autocannon (none) dead design (S1, Cut 1 findings): every field flat

Role meanings: barrel — the part that decides damage, range and muzzle velocity. feed mechanism — cycling: rate of fire, spread, heat and signature it generates, and (where authored) its energy cost.

Weapon/Energy

Design Roles Stat → role
CShot RainbowLite Lazer focusing array, power coupling Damage,Range→focusing array · Cooldown,Energy,Heat,Visibility,Spread→power coupling
ColdFire focusing array, power coupling same shape
Spectra focusing array, power coupling same shape
FastBlast+- focusing array, power coupling Damage,Range,Velocity→focusing array · Cooldown,Heat,Visibility,Spread→power coupling
ChargeBlast SG focusing array, power coupling Damage,Range,Velocity→focusing array · ChargeTime,ChargeHeat,Cooldown,Visibility,Spread→power coupling
ChargeBlast+- focusing array, power coupling same shape as ChargeBlast SG
plight focusing array, power coupling Damage,Range→focusing array · ChargeTime,ChargeEnergy,ChargeHeat,Cooldown,Heat,Visibility→power coupling

Role meanings: focusing array — the beam optics that decide damage, range and velocity. power coupling — everything about how the weapon draws, stores and discharges energy (including charge-up on charged lasers) and the heat/signature that produces.

Weapon/Launcher

Design Roles Stat → role
GT 3K guidance system, thruster, warhead Damage,DamageSpread→warhead · LockSpeed,SensorImpact,LockAngle,DirectionImpact,Decay,Range,Cooldown,Energy,Heat,Visibility→guidance system · Thrust,MissileVelocity,Velocity→thruster
pswarm guidance system, thruster, warhead Damage,DamageSpread→warhead · Cooldown,Range,Energy,Heat,Visibility→guidance system · Thrust,MissileVelocity,Velocity→thruster
scorched void policy guidance system, thruster, warhead same shape as pswarm
LRMM72, SRMM72 (none) dumbfire volleys authored fully flat: every field Heat^1, nothing varies

Role meanings: warhead — payload (damage, damage spread, penetration). guidance system — the seeker (lock speed/angle, sensor and direction sensitivity, decay, targeting range, cooldown, its own energy/heat/ signature). thruster — the missile's own motor (thrust, flight/missile velocity).

Product role quality authored

37 products exist; 28 got role-quality entries this pass (the rest sell a design that authored no role, or are one of the two-missile launchers left flat). All means/deviations are generic placeholders except Arctica's fins, and every row below needs an operator pass to become real brand identity rather than an arbitrary seed.

Product (= design; content pass to split brand vs. design names is separate scope) Role Mean Dev Basis
Arctica fins 0.78 0.07 lore: Alakrita brands on heat efficiency (item-provenance-target.md)
Arctica pump 0.47 0.11 generic — needs review
Arctica reservoir 0.53 0.14 generic — needs review
cold like my heart fins, pump, reservoir 0.54 / 0.74 / 0.73 0.17 / 0.17 / 0.09 generic — needs review
OK Disperser fins, pump, reservoir 0.61 / 0.57 / 0.59 0.14 / 0.10 / 0.18 generic — needs review
Iapyx reservoir 0.61 0.17 generic — needs review
Skiron reservoir 0.64 0.16 generic — needs review
Manhattan core, regulator 0.48 / 0.63 0.08 / 0.12 generic — needs review
MoveOnPro core, regulator 0.62 / 0.46 0.15 / 0.15 generic — needs review
Notorious core, regulator 0.65 / 0.46 0.15 / 0.17 generic — needs review
Vulcan core, regulator 0.75 / 0.58 0.12 / 0.16 generic — needs review
not if i see you first emitter, receiver 0.71 / 0.75 0.09 / 0.18 generic — needs review
The Bat emitter, receiver 0.45 / 0.57 0.09 / 0.16 generic — needs review
deep space burnout injector, nozzle 0.64 / 0.67 0.12 / 0.14 generic — needs review
Traction coupling, rotor 0.69 / 0.65 0.10 / 0.10 generic — needs review
LonginusX plating 0.48 0.13 generic — needs review
PotaT+- converter, storage cell 0.67 / 0.53 0.17 / 0.11 generic — needs review
6k Shooter barrel, feed mechanism 0.59 / 0.46 0.14 / 0.14 generic — needs review
ClearPath barrel, feed mechanism 0.71 / 0.57 0.10 / 0.10 generic — needs review
DeathCluster barrel, feed mechanism 0.65 / 0.68 0.17 / 0.11 generic — needs review
Earp barrel, feed mechanism 0.73 / 0.68 0.13 / 0.10 generic — needs review
pretty pretty bang bang barrel, feed mechanism 0.51 / 0.63 0.10 / 0.09 generic — needs review
CShot RainbowLite Lazer focusing array, power coupling 0.71 / 0.54 0.16 / 0.11 generic — needs review
ChargeBlast SG focusing array, power coupling 0.51 / 0.54 0.09 / 0.10 generic — needs review
ChargeBlast+- focusing array, power coupling 0.45 / 0.51 0.17 / 0.18 generic — needs review
ColdFire focusing array, power coupling 0.68 / 0.58 0.10 / 0.13 generic — needs review
FastBlast+- focusing array, power coupling 0.74 / 0.61 0.11 / 0.13 generic — needs review
Spectra focusing array, power coupling 0.75 / 0.63 0.09 / 0.13 generic — needs review
GT 3K guidance system, thruster, warhead 0.69 / 0.63 / 0.58 0.15 / 0.17 / 0.16 generic — needs review
scorched void policy guidance system, thruster, warhead 0.61 / 0.61 / 0.68 0.08 / 0.12 / 0.15 generic — needs review

Not authored (no product sells the design, so nothing to author): Core Power, Industrial Thermostatic Heater, pswarm, plight (all previously flagged "no product sells" in the Cut 1 census; still true here).

O7 — what the operator should actually do with this

Everything above the "generic — needs review" line is mechanically correct (verified: census's new "(product, role) pairs where a sold, role-bearing design authors no matching spread" check reports 0, and two products of one design with different means resolve a role-termed stat to different, deterministic values — RoleAuthoringTests.TwoProductsOfOneDesignWithDifferentRoleMeansResolveDifferentValues). What it is not is real market segmentation: every design still has exactly one product, so nothing yet demonstrates "a second product with a role pumped up." That is next scope, and it needs the operator's judgment on which manufacturer is good at what — this table is the jumping-off point, not the destination.