diff --git a/server/data/systems.db b/server/data/systems.db index e06ff502d..56ad83082 100644 Binary files a/server/data/systems.db and b/server/data/systems.db differ diff --git a/tooling/economy-db/import_economics.py b/tooling/economy-db/import_economics.py index 67d4d58a7..4cc2421d2 100755 --- a/tooling/economy-db/import_economics.py +++ b/tooling/economy-db/import_economics.py @@ -72,6 +72,7 @@ CREATE TABLE IF NOT EXISTS brand_products ( shadow_viable INTEGER NOT NULL DEFAULT 0, brand_tier TEXT NOT NULL, halo_brand_id TEXT REFERENCES brand_products(brand_product_id), + price_tier TEXT, updated_at TEXT DEFAULT (datetime('now')) ); @@ -177,6 +178,7 @@ COLUMN_MIGRATIONS = [ ("corporations", "behavioral_archetype", "TEXT"), ("corporations", "supply_chain_role", "TEXT"), ("corporations", "shadow_economy_access", "INTEGER DEFAULT 0"), + ("brand_products", "price_tier", "TEXT"), ] @@ -743,6 +745,7 @@ VALID_VALUE_TRAJECTORIES = {"appreciating", "depreciating", "timeless"} VALID_SCARCITY_CLASSES = {"capped", "constrained", "scalable", "unlimited"} VALID_BRAND_TIERS = {"halo", "volume"} VALID_CURRENCY_DENOMINATIONS = {"tractus", "mark", "mixed", "sol_adjacent"} +VALID_PRICE_TIERS = {"mass", "premium", "luxury", "flagship", "institutional"} def import_brands( @@ -780,6 +783,7 @@ def import_brands( int(p.get("shadow_viable", False)), p["brand_tier"], p.get("halo_brand_id"), + p.get("price_tier"), )) input_rows = [] @@ -797,8 +801,8 @@ def import_brands( value_trajectory, scarcity_class, product_subcategory, base_premium_multiplier, premium_floor, origin_system, terroir_locked, currency_denomination, shadow_viable, - brand_tier, halo_brand_id - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", + brand_tier, halo_brand_id, price_tier + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", product_rows, ) conn.executemany( @@ -947,12 +951,15 @@ def validate_brands(conn: sqlite3.Connection) -> list[str]: ("scarcity_class", VALID_SCARCITY_CLASSES), ("brand_tier", VALID_BRAND_TIERS), ("currency_denomination", VALID_CURRENCY_DENOMINATIONS), + ("price_tier", VALID_PRICE_TIERS), ] for column, valid_set in enum_checks: bad = conn.execute( f"SELECT brand_product_id, {column} FROM brand_products" ).fetchall() for pid, value in bad: + if value is None: + continue # nullable columns (e.g. price_tier) may be unset if value not in valid_set: errors.append( f"V-B06: brand_product '{pid}' has {column}='{value}' — " diff --git a/wiki/economics/corporations/brands.toml b/wiki/economics/corporations/brands.toml index aff684f10..9361581e8 100644 --- a/wiki/economics/corporations/brands.toml +++ b/wiki/economics/corporations/brands.toml @@ -63,6 +63,7 @@ terroir_locked = true currency_denomination = "tractus" shadow_viable = true brand_tier = "halo" +price_tier = "flagship" [[brand_inputs]] brand_product_id = "calloway-single-malt-halo" @@ -90,6 +91,7 @@ currency_denomination = "tractus" shadow_viable = true brand_tier = "volume" halo_brand_id = "calloway-single-malt-halo" +price_tier = "premium" [[brand_inputs]] brand_product_id = "calloway-reserve-volume" @@ -123,6 +125,7 @@ terroir_locked = true currency_denomination = "tractus" shadow_viable = true brand_tier = "halo" +price_tier = "luxury" [[brand_inputs]] brand_product_id = "vgv-premier-cru-halo" @@ -150,6 +153,7 @@ currency_denomination = "tractus" shadow_viable = false brand_tier = "volume" halo_brand_id = "vgv-premier-cru-halo" +price_tier = "premium" [[brand_inputs]] brand_product_id = "vgv-standard-volume" @@ -183,6 +187,7 @@ terroir_locked = true currency_denomination = "tractus" shadow_viable = false brand_tier = "halo" +price_tier = "luxury" [[brand_inputs]] brand_product_id = "thrds-origin-halo" @@ -210,6 +215,7 @@ currency_denomination = "tractus" shadow_viable = false brand_tier = "volume" halo_brand_id = "thrds-origin-halo" +price_tier = "premium" [[brand_inputs]] brand_product_id = "thrds-standard-volume" @@ -244,6 +250,7 @@ terroir_locked = true currency_denomination = "mark" shadow_viable = true brand_tier = "halo" +price_tier = "flagship" [[brand_inputs]] brand_product_id = "bifrost-grade-a-halo" @@ -271,6 +278,7 @@ currency_denomination = "mixed" shadow_viable = true brand_tier = "volume" halo_brand_id = "bifrost-grade-a-halo" +price_tier = "luxury" [[brand_inputs]] brand_product_id = "bifrost-commercial-volume"