Cut C: delete ItemData.Manufacturer, derive census makers from products

The manufacturer does not belong to a design (operator ruling); it lives on
FactionProductData and branding is derived, never stored on the design.

- Delete ItemData.cs key 3 (Manufacturer), with a retired-key comment.
- AetherDb census now attributes a design's maker to the first product (in
  record-key order) that sells it, matching ItemManager.Brand's rule; a
  design no product sells shows "(none)".
- AetheriaStoresTests' catalog fixture moves its Manufacturer reference onto
  a FactionProductData selling the design, and FactionIsASingletonInstance
  reads it from there.
- mutation_tests.py gets a paired mutation for that fixture wiring.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-17 12:03:15 +02:00
commit 333a73709a
4 changed files with 35 additions and 8 deletions

View file

@ -276,9 +276,9 @@ public abstract class ItemData
[Inspectable, CultInspectorTextArea, JsonProperty("description"), Key(2)]
public string Description;
[Inspectable, JsonProperty("creator"), Key(3)]
public CultRecordRef<Faction> Manufacturer;
// MessagePack key 3 belonged to a removed creator/faction reference field; do not reuse it. That provenance
// now lives on FactionProductData, and branding is derived, never stored on the design.
[Inspectable, JsonProperty("mass"), Key(4)]
public float Mass;