{
  "version": 1,
  "title": "Circuit breaker: which requests reach the quote API?",
  "format": "custom",
  "canvasSize": [
    1200,
    720
  ],
  "watermark": true,
  "objects": [
    {
      "type": "text",
      "text": "Circuit breaker: who reaches the quote API?",
      "x": 38,
      "y": 22,
      "fontSize": 39,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Fictional policy: 3 timeouts in 10s → open for 30s → 1 probe",
      "x": 40,
      "y": 84,
      "fontSize": 25,
      "color": "#59675e",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          40,
          137
        ],
        [
          361,
          139
        ],
        [
          746,
          137
        ],
        [
          1158,
          139
        ]
      ],
      "color": "#bac9c1",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "CLOSED",
      "x": 43,
      "y": 180,
      "fontSize": 29,
      "color": "#285caa",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "OPEN",
      "x": 565,
      "y": 180,
      "fontSize": 29,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "HALF-OPEN",
      "x": 898,
      "y": 180,
      "fontSize": 29,
      "color": "#287355",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          42,
          231
        ],
        [
          492,
          232
        ],
        [
          492,
          485
        ],
        [
          42,
          484
        ],
        [
          42,
          231
        ]
      ],
      "color": "#bac9c1",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "0s   quote call → timeout",
      "x": 60,
      "y": 258,
      "fontSize": 26,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "1s   quote call → timeout",
      "x": 60,
      "y": 320,
      "fontSize": 26,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "2s   quote call → timeout",
      "x": 60,
      "y": 382,
      "fontSize": 26,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Third failure opens breaker",
      "x": 60,
      "y": 446,
      "fontSize": 24,
      "color": "#59675e",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          493,
          360
        ],
        [
          551,
          360
        ],
        [
          542,
          353
        ]
      ],
      "color": "#285caa",
      "width": 3,
      "smooth": false
    },
    {
      "type": "pen",
      "points": [
        [
          554,
          231
        ],
        [
          855,
          232
        ],
        [
          855,
          485
        ],
        [
          554,
          484
        ],
        [
          554,
          231
        ]
      ],
      "color": "#a34438",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "3s   new request",
      "x": 574,
      "y": 266,
      "fontSize": 27,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Blocked locally",
      "x": 574,
      "y": 326,
      "fontSize": 28,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "0 API calls",
      "x": 574,
      "y": 391,
      "fontSize": 28,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          855,
          360
        ],
        [
          892,
          360
        ],
        [
          882,
          353
        ]
      ],
      "color": "#285caa",
      "width": 3,
      "smooth": false
    },
    {
      "type": "pen",
      "points": [
        [
          896,
          231
        ],
        [
          1158,
          232
        ],
        [
          1158,
          485
        ],
        [
          896,
          484
        ],
        [
          896,
          231
        ]
      ],
      "color": "#287355",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "32s   test call",
      "x": 912,
      "y": 266,
      "fontSize": 26,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Probe succeeds",
      "x": 912,
      "y": 326,
      "fontSize": 26,
      "color": "#287355",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Close breaker",
      "x": 912,
      "y": 391,
      "fontSize": 25,
      "color": "#287355",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "A breaker protects a dependency by pausing calls, then testing recovery.",
      "x": 40,
      "y": 543,
      "fontSize": 25,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Retry makes another attempt for one request; the breaker gates later requests.",
      "x": 40,
      "y": 594,
      "fontSize": 24,
      "color": "#59675e",
      "fontFamily": "sans"
    }
  ]
}
