Raw schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"description": "Human-readable name for the simulation"
},
"appWeight": {
"type": "string",
"enum": [
"lean",
"typical",
"heavy"
],
"description": "Immutable root-level workload weight; defaults to typical with appWeightDefaulted=true. Lean is measured only for the eligible owned graph; heavy is an unsupported assumption. predictionEvidence reports per-quantity provenance and assumption ranges, not confidence intervals."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Optional description of the simulation's purpose"
},
"scenarioId": {
"type": "string",
"minLength": 1,
"description": "Live scenario identifier from scenario.list; mutually exclusive with resources and connections"
},
"resources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for this resource within the simulation"
},
"type": {
"type": "string",
"enum": [
"compute",
"database",
"storage",
"network",
"cache",
"queue",
"kubernetes"
],
"description": "Resource category"
},
"name": {
"type": "string",
"description": "Display name for the resource"
},
"minAcu": {
"description": "Not accepted at resource level; use characteristics.minAcu for the exact AWS Aurora Serverless v2 db.serverless shape."
},
"maxAcu": {
"description": "Not accepted at resource level; use characteristics.maxAcu for the exact AWS Aurora Serverless v2 db.serverless shape."
},
"provider": {
"type": "string",
"enum": [
"aws",
"gcp",
"azure",
"oci",
"digitalocean"
],
"default": "aws",
"description": "Cloud provider hosting this resource"
},
"location": {
"type": "object",
"properties": {
"regionKey": {
"type": "string"
},
"zoneKey": {
"type": "string"
},
"localityType": {
"type": "string",
"enum": [
"az",
"zone",
"availability_domain",
"fault_domain"
]
},
"providerLabel": {
"type": "string"
},
"faultDomainKey": {
"type": "string"
}
},
"required": [
"regionKey"
],
"additionalProperties": false,
"description": "Resource region; set location.regionKey:'us-east-2' on each owned typical node (normalized to use2)."
},
"recoveryPolicy": {
"type": "object",
"properties": {
"criticalCpuThreshold": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"criticalSteps": {
"type": "integer",
"minimum": 1
},
"warningCpuThreshold": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"warningSteps": {
"type": "integer",
"minimum": 1
},
"failureParkSteps": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"description": "Optional recovery thresholds and cooldown lengths for this resource"
},
"characteristics": {
"type": "object",
"properties": {
"size": {
"type": "string",
"description": "Instance or SKU size (e.g. 't3.medium', 'db.r5.large')"
},
"workload": {
"type": "string",
"enum": [
"crud",
"crud-typical"
],
"description": "Explicit 'crud-typical' on each owned typical app; 'crud' selects lean identity on the exact lean graph."
},
"appRuntime": {
"type": "string",
"description": "Owned typical app runtime: node."
},
"appWorkerCount": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Owned typical: 2 workers on each app."
},
"appDbPoolSize": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Owned typical: pool size 250 on each app."
},
"workloadDatabaseEngine": {
"type": "string",
"enum": [
"mysql"
],
"description": "MySQL workload identity on the db.r5.large database."
},
"workloadDatabaseVersion": {
"type": "string",
"description": "Owned typical MySQL workload version: 8.0."
},
"loadBalancerScheme": {
"type": "string",
"enum": [
"internal",
"internet-facing"
],
"description": "Owned typical ALB scheme: internal."
},
"ocpus": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 126,
"description": "OCI flexible compute shape capacity. Family-specific limits are validated against the provider shape; VM.Standard.E4.Flex accepts 1β64 OCPUs and 1 OCPU = 2 vCPUs. Not a performance or price claim."
},
"capacityRps": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Compute only: literal per-node RPS ceiling at which CPU reaches ~95%. Kubernetes rejects capacityRps; use maxThroughput for its total cluster ceiling."
},
"maxThroughput": {
"type": "number",
"description": "Kubernetes: total cluster RPS ceiling; compute: legacy internal throughput scaling parameter (prefer capacityRps for compute)."
},
"maxConnections": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000000,
"description": "Fixed concurrent DB connection budget; Aurora Serverless defaults from maximum configured ACU."
},
"multiAz": {
"type": "boolean",
"description": "AWS Aurora Serverless v2: true with instanceCount:2 creates a billable reader in a second AZ."
},
"instanceCount": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "AWS Aurora Serverless v2: 1 with multiAz:false or 2 with multiAz:true."
},
"minCapacity": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Aurora Serverless minimum ACU (flat form; nested config wins)."
},
"maxCapacity": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Aurora Serverless maximum ACU (flat form; nested config wins)."
},
"minAcu": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Flat minimum ACU alias only for AWS Aurora Serverless v2 size db.serverless; conflicts with minCapacity are rejected."
},
"maxAcu": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Flat maximum ACU alias only for AWS Aurora Serverless v2 size db.serverless; conflicts with maxCapacity are rejected."
},
"config": {
"type": "object",
"properties": {
"minCapacity": {
"type": "number",
"exclusiveMinimum": 0
},
"maxCapacity": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": true,
"description": "Aurora Serverless ACU bounds. Nested config uses minCapacity/maxCapacity; flat characteristics.minAcu/maxAcu aliases are accepted only on the exact AWS Aurora Serverless v2 db.serverless shape."
},
"autoscaling": {
"type": "boolean",
"description": "Mark this compute resource as the autoscaling primary target"
},
"billingState": {
"type": "string",
"enum": [
"active",
"idle",
"stopped",
"detached",
"deleted"
],
"description": "Billing state: 'stopped' bills storage only, 'idle'/'detached' bill flat idle rates, 'deleted' bills nothing. Default 'active'."
},
"serviceFamily": {
"type": "string",
"description": "Idle-billed service family (e.g. 'nat-gateway', 'vpc-endpoint', 'eip-detached', 'ebs-snapshot') β determines the flat idle rate"
},
"capacityGB": {
"type": "number",
"description": "Storage capacity in GB β drives per-GB snapshot/backup idle cost and stopped-instance storage cost"
},
"scaleOutCpuThreshold": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Compute or Kubernetes only β overrides the simulation-wide CPU HPA scale-out target (see the top-level autoscalingTargetCpu) for THIS resource's scale decisions only; every other resource keeps the simulation-wide default."
},
"scaleInCpuThreshold": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Compute or Kubernetes only β overrides the simulation-wide CPU HPA scale-in target for THIS resource's scale decisions only; every other resource keeps the simulation-wide default."
}
},
"additionalProperties": true,
"description": "Capacity and sizing characteristics for the resource (extra keys such as costMultiplier pass through unchanged)"
}
},
"required": [
"id",
"type",
"name"
],
"additionalProperties": false
},
"description": "List of cloud resources composing this simulation. For a built-in scenario, pass the hydrated resources from scenario.get; scenario.list cards are graph-free. (max 10 in demo mode; mutually exclusive with scenarioId)"
},
"connections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sourceId": {
"type": "string",
"description": "ID of the source (upstream) resource"
},
"targetId": {
"type": "string",
"description": "ID of the target (downstream) resource"
},
"label": {
"type": "string",
"description": "Optional label describing the connection type"
}
},
"required": [
"sourceId",
"targetId"
],
"additionalProperties": false
},
"description": "Directed connections between resources. For a built-in scenario, pass the hydrated connections from scenario.get; scenario.list cards are graph-free. Directed edges should describe traffic flow between resources; omit when using scenarioId."
},
"traffic": {
"type": "number",
"default": 0,
"description": "Initial traffic in requests per second (RPS)"
},
"seed": {
"type": "integer",
"minimum": 0,
"description": "Deterministic RNG seed for reproducible replays"
},
"maxInstances": {
"type": "integer",
"minimum": 1,
"description": "Hard ceiling on the autoscaled compute fleet size, stored as autoscalingConfig.maxInstances. If omitted, the provider default applies (AWS 50, GCP 15, Azure/OCI/DigitalOcean 10) β which may be much larger than your intended fleet size."
},
"minInstances": {
"type": "integer",
"minimum": 1,
"description": "Floor on the autoscaled compute fleet size, stored as autoscalingConfig.minInstances."
},
"autoscalingTargetCpu": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Canonical CPU HPA scale-out target percent. CWM synthesizes unrelated autoscaling defaults."
},
"scaleOutCpuThreshold": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Equivalent alias for autoscalingTargetCpu; if both are sent they must match."
},
"scaleOutCpuPercent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Grok-compatible alias for the CPU HPA scale-out target; if multiple target names are sent they must match."
},
"autoscaleTargetCpuPercent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Grok-compatible alias for the CPU HPA scale-out target; if multiple target names are sent they must match."
},
"ecsCpuTargetTracking": {
"type": "boolean",
"description": "Opt into CPU-only ECS Fargate target tracking."
},
"scaleOutCooldownSeconds": {
"type": "integer",
"minimum": 0,
"maximum": 86400,
"description": "ECS CPU target-tracking scale-out cooldown in simulated seconds."
},
"scaleInCooldownSeconds": {
"type": "integer",
"minimum": 0,
"maximum": 86400,
"description": "ECS CPU target-tracking scale-in cooldown in simulated seconds."
},
"simulationSecondsPerStep": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 60,
"description": "Simulated seconds per step for ECS cooldowns (default 1)."
},
"resilienceConfig": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Master switch for retry/cascade modeling"
},
"version": {
"type": "number",
"const": 1,
"description": "Resilience model version"
},
"dependencies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Unique dependency edge ID"
},
"sourceId": {
"type": "string",
"minLength": 1,
"description": "Upstream resource ID"
},
"targetId": {
"type": "string",
"minLength": 1,
"description": "Downstream resource ID"
},
"requestRatio": {
"type": "number",
"minimum": 0,
"maximum": 20,
"description": "Requests to target per original request"
},
"authRequestsPerAttempt": {
"type": "number",
"minimum": 0,
"maximum": 10,
"description": "Auth/token requests generated per dependency attempt"
},
"authDependencyId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Dependency receiving generated auth/token traffic"
},
"retryPolicy": {
"type": "object",
"properties": {
"maxRetries": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"backoffMs": {
"type": "integer",
"minimum": 0,
"maximum": 60000
},
"backoffMultiplier": {
"type": "number",
"minimum": 1,
"maximum": 10
},
"jitterRatio": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"timeoutMs": {
"type": "integer",
"minimum": 1,
"maximum": 120000
},
"retryBudgetRatio": {
"type": "number",
"minimum": 0,
"maximum": 10
},
"retryBudgetRps": {
"type": "number",
"minimum": 0,
"maximum": 500000
},
"retryActorId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Actor producing retries, such as a gateway or client"
}
},
"additionalProperties": false
},
"protection": {
"type": "object",
"properties": {
"circuitBreaker": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"failureRateThreshold": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"minimumRequests": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"openSteps": {
"type": "integer",
"minimum": 1,
"maximum": 120
},
"halfOpenMaxRequests": {
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
"additionalProperties": false
},
"rateLimitRps": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500000
},
"loadShedding": {
"type": "boolean"
}
},
"additionalProperties": false
},
"capacity": {
"type": "object",
"properties": {
"maxRps": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500000
},
"maxConcurrent": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000000
},
"meanServiceTimeMs": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 120000
}
},
"additionalProperties": false
}
},
"required": [
"id",
"sourceId",
"targetId"
],
"additionalProperties": false
},
"maxItems": 64,
"description": "Dependency edges with retry and protection policies"
},
"scheduledFaults": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"type": {
"type": "string",
"enum": [
"capacity_limit",
"concurrency_limit",
"latency",
"error_rate",
"traffic_surge"
],
"description": "Fault type; traffic_surge increases root client demand"
},
"targetResourceId": {
"type": "string"
},
"dependencyId": {
"type": "string"
},
"startStep": {
"type": "integer",
"minimum": 0
},
"endStep": {
"type": "integer",
"minimum": 1
},
"capacityPercent": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"maxConcurrent": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000000
},
"addedLatencyMs": {
"type": "number",
"minimum": 0,
"maximum": 120000
},
"errorRate": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"trafficMultiplier": {
"type": "number",
"exclusiveMinimum": 1,
"maximum": 20,
"description": "traffic_surge demand multiplier"
}
},
"required": [
"id",
"type",
"startStep"
],
"additionalProperties": false
},
"maxItems": 32,
"description": "Scheduled capacity, error, latency, concurrency, or traffic-surge faults"
},
"scalingPolicies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"dependencyId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"constrainedMetric": {
"type": "string",
"enum": [
"rps",
"concurrency"
]
},
"observationMetric": {
"type": "string",
"enum": [
"source_cpu",
"capacity_utilization"
]
},
"observedResourceId": {
"type": "string",
"minLength": 1
},
"scaleOutThresholdPercent": {
"type": "number",
"minimum": 1,
"maximum": 100
},
"scaleOutCapacityMultiplier": {
"type": "number",
"minimum": 1,
"maximum": 20
}
},
"required": [
"id",
"dependencyId",
"constrainedMetric",
"observationMetric",
"scaleOutThresholdPercent"
],
"additionalProperties": false
},
"maxItems": 32,
"description": "Capacity-observation policies, including intentional autoscaling blind spots"
},
"maxCascadeDepth": {
"type": "integer",
"minimum": 1,
"maximum": 8
},
"maxGeneratedRps": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500000
},
"maxStepWork": {
"type": "integer",
"minimum": 1,
"maximum": 2048
},
"retryGeneratedTrafficAffectsCost": {
"type": "boolean"
}
},
"additionalProperties": false,
"description": "Optional retry/cascade resilience model returned by scenario.get"
},
"responseMode": {
"type": "string",
"enum": [
"compact",
"full"
],
"default": "compact",
"description": "Response detail level. 'compact' (default) returns id, name, status, traffic, and a per-resource summary (id, name, status, cpuPercent) β keeps the response small for agent loops. 'full' returns the complete simulation object including all resource characteristics and connections."
}
},
"required": [
"name"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}