{
  "handle": "Warmup",
  "mechanism": "On activation, accept load at `initial_capacity` and raise the accepted-load cap to full over `ramp_duration`, following `curve`. This prevents a thundering herd against a cold system. What the ramp establishes is the cap, not readiness — a system whose cap has reached full may still be cold inside. Utilizes {{greet}}, {{throttle}}.",
  "gloss": "Gradual capacity increase to stabilize cold systems",
  "failure_modes": [
    "Premature Load: Traffic arrives before warmup completes.",
    "False Warmth: Timer completes but internal state (e.g. cache) is still cold."
  ],
  "invariants": [
    "Capacity Limit: Accepted_Load <= Current_Warmup_Cap(t)"
  ],
  "preconditions": [
    "{{system}} state is inactive or reset"
  ],
  "postconditions": [
    "Accepted-load cap has reached full capacity",
    "{{system}} is accepting load at full cap — readiness of internal state (caches, compiled paths) is a separate signal this pattern does not assert"
  ],
  "parameters": [
    {
      "name": "curve",
      "type": "Enum",
      "range": "{Linear, Exponential, Step}",
      "description": "Default: Linear"
    },
    {
      "name": "initial_capacity",
      "type": "Float",
      "range": "[0.0, 1.0]",
      "description": "Starting capacity as fraction of full (0 = cold start)"
    },
    {
      "name": "ramp_duration",
      "type": "Duration",
      "range": "[10s, 1h]",
      "description": "Time to reach full capacity from initial"
    }
  ],
  "_meta": {
    "tier": 1,
    "ring": 0,
    "supersedes": [
      "sema:Warmup#mh:SHA-256:28c434be6a4de607158375965b76e4cb67d742481b6b6fb840326a7610703ceb",
      "sema:Warmup#mh:SHA-256:7ad05d8c27bdabb565d72ce56d8a896af84e5c35d5bc56afb7bdecdac5b40551",
      "sema:Warmup#mh:SHA-256:32d4b559fc99f4dfa7a154487385194fe1c4f5cd3589a5910d2ee35eadc38fff",
      "sema:Warmup#mh:SHA-256:316ee053b8fda86e03974bb8baaf6c82b4de0b07ea7e55fa38d337309cfe25de"
    ],
    "path": [
      "Infrastructure",
      "Primitives"
    ]
  },
  "sema_id": "sema:Warmup#mh:SHA-256:ed16f499e655d6d252a2bae39a8cc87ec8497426107905501920ac47644be9ef",
  "sema_ref": "Warmup#ed16",
  "sema_stub": "ed16",
  "dependencies": {
    "references": {
      "greet": "sema:Greet#mh:SHA-256:bcb066aa62cec1c03e3fac07b1b199fa8b12ab059d4faaf49374bf4a400941bd",
      "system": "sema:System#mh:SHA-256:f8eb318a1113a10fead02fbf14ae433767ac1a69c9579cdb584cc622068e90b3",
      "throttle": "sema:Throttle#mh:SHA-256:dd626ad2479e5377339f44e77b61a0264591ed21a906556f020fccb98450fe55"
    }
  },
  "sema_layer": "Infrastructure",
  "sema_category": "Primitives",
  "used_by": {
    "references": {
      "ContextFirst": "sema:ContextFirst#mh:SHA-256:f157ec66ccb7e55eabe7179aeefb0dc4b36bc45e3bbea3073e50d97dab86138b"
    }
  }
}
