Overhaul rack system with split FLOPS, VRAM, cooling, interconnect, and multi-vendor SKUs
CI / build-and-push (push) Successful in 29s

Expand from 10 to 18 rack SKUs across NVIDIA, AMD, and custom ASIC vendors, each with
distinct training vs inference FLOPS, VRAM capacity, cooling requirements, and interconnect
technology. Adds cooling hierarchy (air/liquid/immersion) that gates rack deployment, VRAM
requirements that gate model training by generation, interconnect multipliers for distributed
training scaling, and PUE-based energy cost reduction for advanced cooling. Includes save
migration from v4 to v5, 6 new research nodes, and UI updates showing split compute stats.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-25 02:27:03 -04:00
parent 54220fca70
commit fc1f371c8c
12 changed files with 749 additions and 100 deletions
+393 -61
View File
@@ -1,4 +1,4 @@
import type { DCTier, DCTierConfig, RackSkuId, RackSkuConfig, SwitchTier, SwitchTierConfig, CampusTierCost, ClusterCostConfig } from '../types/infrastructure';
import type { DCTier, DCTierConfig, RackSkuId, RackSkuConfig, SwitchTier, SwitchTierConfig, CampusTierCost, ClusterCostConfig, CoolingType, CoolingTypeConfig, NetworkFabric, NetworkFabricConfig } from '../types/infrastructure';
export const TICK_INTERVAL_MS = 1000;
export const MAX_OFFLINE_TICKS = 86_400;
@@ -209,18 +209,87 @@ export function maxComputeRacks(totalSlots: number, dcTier: DCTier): number {
return lo;
}
// --- Cooling Type Configs ---
export const COOLING_TYPE_CONFIGS: Record<CoolingType, CoolingTypeConfig> = {
air: {
name: 'Air Cooling',
upgradeCost: { small: 0, medium: 0, large: 0, mega: 0 },
upgradeTimeTicks: 0,
pueMultiplier: 1.0,
},
liquid: {
name: 'Liquid Cooling',
upgradeCost: { small: 200_000, medium: 600_000, large: 2_000_000, mega: 6_000_000 },
upgradeTimeTicks: 300,
pueMultiplier: 0.85,
},
immersion: {
name: 'Immersion Cooling',
upgradeCost: { small: 500_000, medium: 1_500_000, large: 5_000_000, mega: 15_000_000 },
upgradeTimeTicks: 600,
pueMultiplier: 0.70,
},
};
export const COOLING_ORDER: CoolingType[] = ['air', 'liquid', 'immersion'];
// --- Network Fabric Configs ---
export const NETWORK_FABRIC_CONFIGS: Record<NetworkFabric, NetworkFabricConfig> = {
'ethernet-100g': {
name: '100G Ethernet',
upgradeCost: { small: 0, medium: 0, large: 0, mega: 0 },
upgradeTimeTicks: 0,
trainingScalingBonus: 0,
},
'ethernet-400g': {
name: '400G Ethernet',
upgradeCost: { small: 100_000, medium: 300_000, large: 1_000_000, mega: 3_000_000 },
upgradeTimeTicks: 200,
trainingScalingBonus: 0.10,
},
'infiniband-ndr': {
name: 'InfiniBand NDR',
upgradeCost: { small: 300_000, medium: 900_000, large: 3_000_000, mega: 9_000_000 },
upgradeTimeTicks: 400,
trainingScalingBonus: 0.25,
},
'infiniband-xdr': {
name: 'InfiniBand XDR',
upgradeCost: { small: 800_000, medium: 2_400_000, large: 8_000_000, mega: 24_000_000 },
upgradeTimeTicks: 600,
trainingScalingBonus: 0.40,
},
};
export const FABRIC_ORDER: NetworkFabric[] = ['ethernet-100g', 'ethernet-400g', 'infiniband-ndr', 'infiniband-xdr'];
// --- Rack SKU Configs ---
export function skuTotalFlops(sku: RackSkuConfig): number {
return sku.trainingFlops + sku.inferenceFlops;
}
export const RACK_SKU_CONFIGS: Record<RackSkuId, RackSkuConfig> = {
// === STARTUP ERA ===
'consumer-x4': {
id: 'consumer-x4',
name: 'Consumer GPU x4',
era: 'startup',
gpuVendor: 'nvidia',
gpuModel: 'RTX Consumer',
gpuCount: 4,
flopsPerRack: 4,
trainingFlops: 2,
inferenceFlops: 4,
vramPerGpuGB: 12,
totalVramGB: 48,
requiredCooling: 'air',
intraNodeInterconnect: 'pcie-gen4',
intraNodeBandwidthGBps: 64,
powerDrawKW: 0.4,
baseCost: 3_200,
requiredResearch: null,
requiredResearch: [],
pipelineTimeTicks: { manufacturing: 20, receiving: 10, installation: 15, testing: 15 },
testFailureRate: 0.05,
productionFailureRate: 0.0002,
@@ -230,11 +299,19 @@ export const RACK_SKU_CONFIGS: Record<RackSkuId, RackSkuConfig> = {
id: 't4-x4',
name: 'NVIDIA T4 x4',
era: 'startup',
gpuVendor: 'nvidia',
gpuModel: 'T4',
gpuCount: 4,
flopsPerRack: 32,
powerDrawKW: 1.2,
baseCost: 20_000,
requiredResearch: null,
trainingFlops: 8,
inferenceFlops: 32,
vramPerGpuGB: 16,
totalVramGB: 64,
requiredCooling: 'air',
intraNodeInterconnect: 'pcie-gen4',
intraNodeBandwidthGBps: 64,
powerDrawKW: 0.5,
baseCost: 12_000,
requiredResearch: [],
pipelineTimeTicks: { manufacturing: 30, receiving: 15, installation: 25, testing: 20 },
testFailureRate: 0.07,
productionFailureRate: 0.0003,
@@ -243,115 +320,370 @@ export const RACK_SKU_CONFIGS: Record<RackSkuId, RackSkuConfig> = {
't4-x8': {
id: 't4-x8',
name: 'NVIDIA T4 x8',
era: 'scaleup',
era: 'startup',
gpuVendor: 'nvidia',
gpuModel: 'T4',
gpuCount: 8,
flopsPerRack: 64,
powerDrawKW: 2.4,
baseCost: 38_000,
requiredResearch: null,
trainingFlops: 16,
inferenceFlops: 64,
vramPerGpuGB: 16,
totalVramGB: 128,
requiredCooling: 'air',
intraNodeInterconnect: 'pcie-gen4',
intraNodeBandwidthGBps: 64,
powerDrawKW: 1.0,
baseCost: 22_000,
requiredResearch: [],
pipelineTimeTicks: { manufacturing: 40, receiving: 20, installation: 30, testing: 30 },
testFailureRate: 0.08,
productionFailureRate: 0.0003,
repairCostFraction: 0.12,
},
'a100-x4': {
id: 'a100-x4',
name: 'NVIDIA A100 x4',
// === SCALEUP ERA ===
'l4-x8': {
id: 'l4-x8',
name: 'NVIDIA L4 x8',
era: 'scaleup',
gpuVendor: 'nvidia',
gpuModel: 'L4',
gpuCount: 8,
trainingFlops: 30,
inferenceFlops: 180,
vramPerGpuGB: 24,
totalVramGB: 192,
requiredCooling: 'air',
intraNodeInterconnect: 'pcie-gen5',
intraNodeBandwidthGBps: 128,
powerDrawKW: 0.8,
baseCost: 28_000,
requiredResearch: ['inference-specialization'],
pipelineTimeTicks: { manufacturing: 35, receiving: 15, installation: 25, testing: 25 },
testFailureRate: 0.07,
productionFailureRate: 0.0002,
repairCostFraction: 0.10,
},
'a100-pcie-x4': {
id: 'a100-pcie-x4',
name: 'A100 PCIe x4',
era: 'scaleup',
gpuVendor: 'nvidia',
gpuModel: 'A100 PCIe 80GB',
gpuCount: 4,
flopsPerRack: 160,
powerDrawKW: 4.0,
baseCost: 60_000,
requiredResearch: 'advanced-gpu-arch',
trainingFlops: 100,
inferenceFlops: 140,
vramPerGpuGB: 80,
totalVramGB: 320,
requiredCooling: 'air',
intraNodeInterconnect: 'pcie-gen4',
intraNodeBandwidthGBps: 64,
powerDrawKW: 2.0,
baseCost: 55_000,
requiredResearch: ['advanced-gpu-arch'],
pipelineTimeTicks: { manufacturing: 60, receiving: 25, installation: 50, testing: 45 },
testFailureRate: 0.10,
productionFailureRate: 0.0004,
repairCostFraction: 0.15,
},
'a100-x8': {
id: 'a100-x8',
name: 'NVIDIA A100 x8',
'a100-sxm-x8': {
id: 'a100-sxm-x8',
name: 'A100 SXM x8',
era: 'scaleup',
gpuVendor: 'nvidia',
gpuModel: 'A100 SXM 80GB',
gpuCount: 8,
flopsPerRack: 320,
powerDrawKW: 8.0,
trainingFlops: 320,
inferenceFlops: 200,
vramPerGpuGB: 80,
totalVramGB: 640,
requiredCooling: 'liquid',
intraNodeInterconnect: 'nvlink-3',
intraNodeBandwidthGBps: 600,
powerDrawKW: 5.0,
baseCost: 115_000,
requiredResearch: 'advanced-gpu-arch',
requiredResearch: ['advanced-gpu-arch'],
pipelineTimeTicks: { manufacturing: 70, receiving: 30, installation: 55, testing: 55 },
testFailureRate: 0.12,
productionFailureRate: 0.0004,
repairCostFraction: 0.15,
},
'h100-x4': {
id: 'h100-x4',
name: 'NVIDIA H100 x4',
era: 'bigtech',
gpuCount: 4,
flopsPerRack: 480,
'mi250x-x8': {
id: 'mi250x-x8',
name: 'AMD MI250X x8',
era: 'scaleup',
gpuVendor: 'amd',
gpuModel: 'MI250X',
gpuCount: 8,
trainingFlops: 240,
inferenceFlops: 160,
vramPerGpuGB: 128,
totalVramGB: 1024,
requiredCooling: 'air',
intraNodeInterconnect: 'infinity-fabric',
intraNodeBandwidthGBps: 400,
powerDrawKW: 5.6,
baseCost: 140_000,
requiredResearch: 'next-gen-gpu',
pipelineTimeTicks: { manufacturing: 80, receiving: 30, installation: 65, testing: 65 },
baseCost: 80_000,
requiredResearch: ['amd-ecosystem'],
pipelineTimeTicks: { manufacturing: 75, receiving: 30, installation: 60, testing: 60 },
testFailureRate: 0.15,
productionFailureRate: 0.0005,
repairCostFraction: 0.18,
},
'h100-x8': {
id: 'h100-x8',
name: 'NVIDIA H100 x8',
// === BIG TECH ERA ===
'h100-pcie-x4': {
id: 'h100-pcie-x4',
name: 'H100 PCIe x4',
era: 'bigtech',
gpuVendor: 'nvidia',
gpuModel: 'H100 PCIe 80GB',
gpuCount: 4,
trainingFlops: 180,
inferenceFlops: 480,
vramPerGpuGB: 80,
totalVramGB: 320,
requiredCooling: 'air',
intraNodeInterconnect: 'pcie-gen5',
intraNodeBandwidthGBps: 128,
powerDrawKW: 1.8,
baseCost: 130_000,
requiredResearch: ['next-gen-gpu'],
pipelineTimeTicks: { manufacturing: 80, receiving: 30, installation: 65, testing: 65 },
testFailureRate: 0.12,
productionFailureRate: 0.0004,
repairCostFraction: 0.15,
},
'h100-sxm-x8': {
id: 'h100-sxm-x8',
name: 'H100 SXM x8',
era: 'bigtech',
gpuVendor: 'nvidia',
gpuModel: 'H100 SXM 80GB',
gpuCount: 8,
flopsPerRack: 960,
powerDrawKW: 11.2,
baseCost: 270_000,
requiredResearch: 'next-gen-gpu',
trainingFlops: 960,
inferenceFlops: 600,
vramPerGpuGB: 80,
totalVramGB: 640,
requiredCooling: 'liquid',
intraNodeInterconnect: 'nvlink-4',
intraNodeBandwidthGBps: 900,
powerDrawKW: 7.0,
baseCost: 280_000,
requiredResearch: ['next-gen-gpu'],
pipelineTimeTicks: { manufacturing: 90, receiving: 35, installation: 75, testing: 80 },
testFailureRate: 0.18,
productionFailureRate: 0.0005,
repairCostFraction: 0.18,
},
'b200-x4': {
id: 'b200-x4',
name: 'NVIDIA B200 x4',
'h200-sxm-x8': {
id: 'h200-sxm-x8',
name: 'H200 SXM x8',
era: 'bigtech',
gpuCount: 4,
flopsPerRack: 1600,
powerDrawKW: 8.0,
gpuVendor: 'nvidia',
gpuModel: 'H200 SXM 141GB',
gpuCount: 8,
trainingFlops: 1000,
inferenceFlops: 650,
vramPerGpuGB: 141,
totalVramGB: 1128,
requiredCooling: 'liquid',
intraNodeInterconnect: 'nvlink-4',
intraNodeBandwidthGBps: 900,
powerDrawKW: 7.0,
baseCost: 340_000,
requiredResearch: ['next-gen-gpu'],
pipelineTimeTicks: { manufacturing: 95, receiving: 35, installation: 80, testing: 85 },
testFailureRate: 0.18,
productionFailureRate: 0.0005,
repairCostFraction: 0.18,
},
'mi300x-x8': {
id: 'mi300x-x8',
name: 'AMD MI300X x8',
era: 'bigtech',
gpuVendor: 'amd',
gpuModel: 'MI300X 192GB',
gpuCount: 8,
trainingFlops: 700,
inferenceFlops: 450,
vramPerGpuGB: 192,
totalVramGB: 1536,
requiredCooling: 'liquid',
intraNodeInterconnect: 'infinity-fabric',
intraNodeBandwidthGBps: 500,
powerDrawKW: 7.5,
baseCost: 200_000,
requiredResearch: 'frontier-compute',
requiredResearch: ['amd-ecosystem'],
pipelineTimeTicks: { manufacturing: 100, receiving: 35, installation: 75, testing: 80 },
testFailureRate: 0.20,
productionFailureRate: 0.0006,
repairCostFraction: 0.20,
},
'l40s-x8': {
id: 'l40s-x8',
name: 'NVIDIA L40S x8',
era: 'bigtech',
gpuVendor: 'nvidia',
gpuModel: 'L40S 48GB',
gpuCount: 8,
trainingFlops: 120,
inferenceFlops: 900,
vramPerGpuGB: 48,
totalVramGB: 384,
requiredCooling: 'air',
intraNodeInterconnect: 'pcie-gen5',
intraNodeBandwidthGBps: 128,
powerDrawKW: 3.5,
baseCost: 160_000,
requiredResearch: ['inference-specialization'],
pipelineTimeTicks: { manufacturing: 70, receiving: 25, installation: 55, testing: 50 },
testFailureRate: 0.10,
productionFailureRate: 0.0003,
repairCostFraction: 0.12,
},
'b100-x8': {
id: 'b100-x8',
name: 'NVIDIA B100 x8',
era: 'bigtech',
gpuVendor: 'nvidia',
gpuModel: 'B100 192GB',
gpuCount: 8,
trainingFlops: 1800,
inferenceFlops: 1100,
vramPerGpuGB: 192,
totalVramGB: 1536,
requiredCooling: 'air',
intraNodeInterconnect: 'nvlink-5',
intraNodeBandwidthGBps: 1800,
powerDrawKW: 7.0,
baseCost: 320_000,
requiredResearch: ['frontier-compute'],
pipelineTimeTicks: { manufacturing: 100, receiving: 40, installation: 80, testing: 80 },
testFailureRate: 0.20,
productionFailureRate: 0.0006,
repairCostFraction: 0.20,
},
'b200-x8': {
id: 'b200-x8',
name: 'NVIDIA B200 x8',
// === AGI ERA ===
'b200-sxm-x8': {
id: 'b200-sxm-x8',
name: 'B200 SXM x8',
era: 'agi',
gpuVendor: 'nvidia',
gpuModel: 'B200 SXM 192GB',
gpuCount: 8,
flopsPerRack: 3200,
powerDrawKW: 16.0,
baseCost: 380_000,
requiredResearch: 'frontier-compute',
trainingFlops: 3200,
inferenceFlops: 1800,
vramPerGpuGB: 192,
totalVramGB: 1536,
requiredCooling: 'liquid',
intraNodeInterconnect: 'nvlink-5',
intraNodeBandwidthGBps: 1800,
powerDrawKW: 10.0,
baseCost: 400_000,
requiredResearch: ['frontier-compute'],
pipelineTimeTicks: { manufacturing: 120, receiving: 45, installation: 95, testing: 100 },
testFailureRate: 0.22,
productionFailureRate: 0.0006,
repairCostFraction: 0.20,
},
'custom-x8': {
id: 'custom-x8',
name: 'Custom ASIC x8',
'gb200-nvl72': {
id: 'gb200-nvl72',
name: 'GB200 NVL72',
era: 'agi',
gpuVendor: 'nvidia',
gpuModel: 'B200 NVL72',
gpuCount: 72,
trainingFlops: 36_000,
inferenceFlops: 18_000,
vramPerGpuGB: 192,
totalVramGB: 13_824,
requiredCooling: 'liquid',
intraNodeInterconnect: 'nvlink-domain',
intraNodeBandwidthGBps: 14_400,
powerDrawKW: 120.0,
baseCost: 2_500_000,
requiredResearch: ['frontier-compute', 'rack-scale-compute'],
pipelineTimeTicks: { manufacturing: 180, receiving: 60, installation: 120, testing: 120 },
testFailureRate: 0.28,
productionFailureRate: 0.0008,
repairCostFraction: 0.15,
},
'mi325x-x8': {
id: 'mi325x-x8',
name: 'AMD MI325X x8',
era: 'agi',
gpuVendor: 'amd',
gpuModel: 'MI325X 256GB',
gpuCount: 8,
flopsPerRack: 6400,
trainingFlops: 2400,
inferenceFlops: 1400,
vramPerGpuGB: 256,
totalVramGB: 2048,
requiredCooling: 'liquid',
intraNodeInterconnect: 'infinity-fabric',
intraNodeBandwidthGBps: 600,
powerDrawKW: 7.5,
baseCost: 280_000,
requiredResearch: ['amd-ecosystem'],
pipelineTimeTicks: { manufacturing: 130, receiving: 40, installation: 90, testing: 95 },
testFailureRate: 0.22,
productionFailureRate: 0.0006,
repairCostFraction: 0.20,
},
'custom-training-x8': {
id: 'custom-training-x8',
name: 'Training ASIC x8',
era: 'agi',
gpuVendor: 'custom',
gpuModel: 'Custom Training ASIC',
gpuCount: 8,
trainingFlops: 8000,
inferenceFlops: 2000,
vramPerGpuGB: 256,
totalVramGB: 2048,
requiredCooling: 'immersion',
intraNodeInterconnect: 'custom-mesh',
intraNodeBandwidthGBps: 3200,
powerDrawKW: 20.0,
baseCost: 640_000,
requiredResearch: 'custom-silicon',
baseCost: 700_000,
requiredResearch: ['custom-silicon'],
pipelineTimeTicks: { manufacturing: 140, receiving: 50, installation: 100, testing: 110 },
testFailureRate: 0.25,
productionFailureRate: 0.0008,
repairCostFraction: 0.20,
},
'custom-inference-x16': {
id: 'custom-inference-x16',
name: 'Inference ASIC x16',
era: 'agi',
gpuVendor: 'custom',
gpuModel: 'Custom Inference ASIC',
gpuCount: 16,
trainingFlops: 800,
inferenceFlops: 12_000,
vramPerGpuGB: 32,
totalVramGB: 512,
requiredCooling: 'air',
intraNodeInterconnect: 'custom-mesh',
intraNodeBandwidthGBps: 1600,
powerDrawKW: 5.0,
baseCost: 500_000,
requiredResearch: ['custom-silicon', 'inference-specialization'],
pipelineTimeTicks: { manufacturing: 130, receiving: 45, installation: 90, testing: 100 },
testFailureRate: 0.22,
productionFailureRate: 0.0007,
repairCostFraction: 0.18,
},
};
export const VRAM_REQUIREMENTS_BY_GENERATION: Record<number, number> = {
1: 48,
2: 192,
3: 640,
4: 1536,
5: 4096,
6: 16384,
};
// --- Pipeline & Infrastructure Constants ---
+10
View File
@@ -1,7 +1,12 @@
export interface ComputeState {
totalFlops: number;
totalTrainingFlops: number;
totalInferenceFlops: number;
totalVramGB: number;
trainingAllocation: number;
inferenceAllocation: number;
effectiveTrainingFlops: number;
effectiveInferenceFlops: number;
inferenceUtilization: number;
tokensPerSecondCapacity: number;
tokensPerSecondDemand: number;
@@ -9,8 +14,13 @@ export interface ComputeState {
export const INITIAL_COMPUTE: ComputeState = {
totalFlops: 0,
totalTrainingFlops: 0,
totalInferenceFlops: 0,
totalVramGB: 0,
trainingAllocation: 0.5,
inferenceAllocation: 0.5,
effectiveTrainingFlops: 0,
effectiveInferenceFlops: 0,
inferenceUtilization: 0,
tokensPerSecondCapacity: 0,
tokensPerSecondDemand: 0,
+1 -1
View File
@@ -58,4 +58,4 @@ export const INITIAL_SETTINGS: GameSettings = {
sfxVolume: 0.7,
};
export const SAVE_VERSION = 4;
export const SAVE_VERSION = 5;
+57 -5
View File
@@ -75,12 +75,17 @@ export interface DataCenter {
retrofitState: RetrofitState | null;
coolingLevel: number;
redundancyLevel: number;
coolingType: CoolingType;
networkFabric: NetworkFabric;
effectiveComputeRacks: number;
usedSlots: number;
usedPowerKW: number;
energyCostPerTick: number;
maintenanceCostPerTick: number;
currentUptime: number;
dcTrainingFlops: number;
dcInferenceFlops: number;
dcTotalVramGB: number;
}
// --- Network Topology (6-Tier Clos) ---
@@ -141,13 +146,46 @@ export interface ClusterNetworkSummary {
crossCampusBandwidth: number;
}
// --- Cooling, Interconnect & Vendor Types ---
export type CoolingType = 'air' | 'liquid' | 'immersion';
export type GpuVendor = 'nvidia' | 'amd' | 'custom';
export type IntraNodeInterconnect =
| 'pcie-gen4' | 'pcie-gen5'
| 'nvlink-3' | 'nvlink-4' | 'nvlink-5' | 'nvlink-domain'
| 'infinity-fabric' | 'custom-mesh';
export type NetworkFabric =
| 'ethernet-100g' | 'ethernet-400g'
| 'infiniband-ndr' | 'infiniband-xdr';
export interface CoolingTypeConfig {
name: string;
upgradeCost: Record<DCTier, number>;
upgradeTimeTicks: number;
pueMultiplier: number;
}
export interface NetworkFabricConfig {
name: string;
upgradeCost: Record<DCTier, number>;
upgradeTimeTicks: number;
trainingScalingBonus: number;
}
// --- Racks ---
export type RackSkuId =
// Startup
| 'consumer-x4' | 't4-x4' | 't4-x8'
| 'a100-x4' | 'a100-x8'
| 'h100-x4' | 'h100-x8'
| 'b200-x4' | 'b200-x8' | 'custom-x8';
// Scaleup
| 'a100-pcie-x4' | 'a100-sxm-x8' | 'mi250x-x8' | 'l4-x8'
// Big Tech
| 'h100-pcie-x4' | 'h100-sxm-x8' | 'h200-sxm-x8'
| 'mi300x-x8' | 'l40s-x8' | 'b100-x8'
// AGI
| 'b200-sxm-x8' | 'gb200-nvl72'
| 'mi325x-x8'
| 'custom-training-x8' | 'custom-inference-x16';
export type PipelineStage =
| 'ordered' | 'manufacturing' | 'receiving'
@@ -164,11 +202,19 @@ export interface RackSkuConfig {
id: RackSkuId;
name: string;
era: Era;
gpuVendor: GpuVendor;
gpuModel: string;
gpuCount: number;
flopsPerRack: number;
trainingFlops: number;
inferenceFlops: number;
vramPerGpuGB: number;
totalVramGB: number;
requiredCooling: CoolingType;
intraNodeInterconnect: IntraNodeInterconnect;
intraNodeBandwidthGBps: number;
powerDrawKW: number;
baseCost: number;
requiredResearch: string | null;
requiredResearch: string[];
pipelineTimeTicks: PipelineTimings;
testFailureRate: number;
productionFailureRate: number;
@@ -218,6 +264,9 @@ export interface InfrastructureState {
clusters: Cluster[];
switchRegistry: Record<string, NetworkSwitch>;
totalFlops: number;
totalTrainingFlops: number;
totalInferenceFlops: number;
totalVramGB: number;
totalUptime: number;
totalRackCount: number;
totalComputeRackCount: number;
@@ -229,6 +278,9 @@ export const INITIAL_INFRASTRUCTURE: InfrastructureState = {
clusters: [],
switchRegistry: {},
totalFlops: 0,
totalTrainingFlops: 0,
totalInferenceFlops: 0,
totalVramGB: 0,
totalUptime: 1,
totalRackCount: 0,
totalComputeRackCount: 0,