{
  "concurrency": {
    "1": {
      "aggregate_end_to_end_tokens_per_second": {
        "maximum": 63.31,
        "median": 50.606,
        "minimum": 50.514,
        "p90": 63.31
      },
      "per_stream_decode_tokens_per_second": {
        "maximum": 66.592,
        "median": 52.715,
        "minimum": 52.503,
        "p90": 66.592
      },
      "per_stream_ttft_seconds": {
        "maximum": 0.221,
        "median": 0.213,
        "minimum": 0.21,
        "p90": 0.221
      },
      "rounds": [
        {
          "aggregate_end_to_end_tokens_per_second": 50.606,
          "completion_tokens": 256,
          "round": 1,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 4.837329,
              "decode_tokens_per_second": 52.715,
              "finish_reason": "length",
              "measured_sse_events": 119,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 181,
              "reasoning_characters": 1138,
              "reasoning_sha256": "7f0dd74140f83b0edcdc9408d85ca648b981324038144bfaf24709335ba8a03b",
              "response_tail_seconds": 7.2e-05,
              "stream_done_marker": true,
              "stream_sha256": "7f0dd74140f83b0edcdc9408d85ca648b981324038144bfaf24709335ba8a03b",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 5.05795,
              "ttft_seconds": 0.220621,
              "wall_seconds": 5.058022
            }
          ],
          "wall_seconds": 5.058686
        },
        {
          "aggregate_end_to_end_tokens_per_second": 50.514,
          "completion_tokens": 256,
          "round": 2,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 4.856867,
              "decode_tokens_per_second": 52.503,
              "finish_reason": "length",
              "measured_sse_events": 120,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 180,
              "reasoning_characters": 1129,
              "reasoning_sha256": "69b67f55e86e0bc66feba0d444e4cb975d73d359d719926cdd194c273da8cb10",
              "response_tail_seconds": 6.5e-05,
              "stream_done_marker": true,
              "stream_sha256": "69b67f55e86e0bc66feba0d444e4cb975d73d359d719926cdd194c273da8cb10",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 5.066717,
              "ttft_seconds": 0.20985,
              "wall_seconds": 5.066782
            }
          ],
          "wall_seconds": 5.067888
        },
        {
          "aggregate_end_to_end_tokens_per_second": 63.31,
          "completion_tokens": 256,
          "round": 3,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 3.829283,
              "decode_tokens_per_second": 66.592,
              "finish_reason": "length",
              "measured_sse_events": 91,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 181,
              "reasoning_characters": 1189,
              "reasoning_sha256": "66465ce6ddd0f1b5d373911e9327b71acb40bcc666b934d25878d87a6ecfea85",
              "response_tail_seconds": 6.8e-05,
              "stream_done_marker": true,
              "stream_sha256": "66465ce6ddd0f1b5d373911e9327b71acb40bcc666b934d25878d87a6ecfea85",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 4.042408,
              "ttft_seconds": 0.213124,
              "wall_seconds": 4.042475
            }
          ],
          "wall_seconds": 4.043603
        }
      ]
    },
    "2": {
      "aggregate_end_to_end_tokens_per_second": {
        "maximum": 85.803,
        "median": 80.895,
        "minimum": 79.415,
        "p90": 85.803
      },
      "per_stream_decode_tokens_per_second": {
        "maximum": 60.752,
        "median": 44.903,
        "minimum": 41.758,
        "p90": 55.926
      },
      "per_stream_ttft_seconds": {
        "maximum": 0.495,
        "median": 0.308,
        "minimum": 0.222,
        "p90": 0.494
      },
      "rounds": [
        {
          "aggregate_end_to_end_tokens_per_second": 85.803,
          "completion_tokens": 512,
          "round": 1,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 4.197417,
              "decode_tokens_per_second": 60.752,
              "finish_reason": "length",
              "measured_sse_events": 81,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 178,
              "reasoning_characters": 1140,
              "reasoning_sha256": "fbd0e8a3d30da82d6245973e6442bf15df3f09711ce62b053afb4a2535ddf22d",
              "response_tail_seconds": 0.000146,
              "stream_done_marker": true,
              "stream_sha256": "fbd0e8a3d30da82d6245973e6442bf15df3f09711ce62b053afb4a2535ddf22d",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 4.505782,
              "ttft_seconds": 0.308365,
              "wall_seconds": 4.505928
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 5.656754,
              "decode_tokens_per_second": 45.079,
              "finish_reason": "length",
              "measured_sse_events": 118,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 177,
              "reasoning_characters": 1148,
              "reasoning_sha256": "adca1e9c027e09eb378a793354a3327153268a7350d404aab414de9fde80b0ea",
              "response_tail_seconds": 0.000132,
              "stream_done_marker": true,
              "stream_sha256": "adca1e9c027e09eb378a793354a3327153268a7350d404aab414de9fde80b0ea",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 5.965254,
              "ttft_seconds": 0.3085,
              "wall_seconds": 5.965386
            }
          ],
          "wall_seconds": 5.967169
        },
        {
          "aggregate_end_to_end_tokens_per_second": 79.415,
          "completion_tokens": 512,
          "round": 2,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 5.951314,
              "decode_tokens_per_second": 42.848,
              "finish_reason": "length",
              "measured_sse_events": 123,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 182,
              "reasoning_characters": 1135,
              "reasoning_sha256": "bc9a078f698598df9d046d7613e721faf8ef44b80ffd2575112754a7e670378b",
              "response_tail_seconds": 0.000123,
              "stream_done_marker": true,
              "stream_sha256": "bc9a078f698598df9d046d7613e721faf8ef44b80ffd2575112754a7e670378b",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 6.445502,
              "ttft_seconds": 0.494188,
              "wall_seconds": 6.445626
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 5.701441,
              "decode_tokens_per_second": 44.726,
              "finish_reason": "length",
              "measured_sse_events": 113,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 180,
              "reasoning_characters": 1116,
              "reasoning_sha256": "5afc8c37a157e56148473415306b6e412114b74f8cec2a85af9e97b1832a3941",
              "response_tail_seconds": 0.000151,
              "stream_done_marker": true,
              "stream_sha256": "5afc8c37a157e56148473415306b6e412114b74f8cec2a85af9e97b1832a3941",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 5.923306,
              "ttft_seconds": 0.221865,
              "wall_seconds": 5.923457
            }
          ],
          "wall_seconds": 6.447134
        },
        {
          "aggregate_end_to_end_tokens_per_second": 80.895,
          "completion_tokens": 512,
          "round": 3,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 4.559623,
              "decode_tokens_per_second": 55.926,
              "finish_reason": "length",
              "measured_sse_events": 87,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 181,
              "reasoning_characters": 1097,
              "reasoning_sha256": "7029231bd6fd718ff7807e21daf2634ab2e18b420d639daf158eba336dc12521",
              "response_tail_seconds": 8.1e-05,
              "stream_done_marker": true,
              "stream_sha256": "7029231bd6fd718ff7807e21daf2634ab2e18b420d639daf158eba336dc12521",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 5.054337,
              "ttft_seconds": 0.494714,
              "wall_seconds": 5.054418
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 6.106596,
              "decode_tokens_per_second": 41.758,
              "finish_reason": "length",
              "measured_sse_events": 119,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 179,
              "reasoning_characters": 1142,
              "reasoning_sha256": "70672b3d3e5f9a35c623c1e1d84d06aae41e2f625c3e02ed68a52c3be1e7d117",
              "response_tail_seconds": 7.5e-05,
              "stream_done_marker": true,
              "stream_sha256": "70672b3d3e5f9a35c623c1e1d84d06aae41e2f625c3e02ed68a52c3be1e7d117",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 6.328108,
              "ttft_seconds": 0.221512,
              "wall_seconds": 6.328183
            }
          ],
          "wall_seconds": 6.329172
        }
      ]
    },
    "4": {
      "aggregate_end_to_end_tokens_per_second": {
        "maximum": 129.727,
        "median": 123.819,
        "minimum": 118.61,
        "p90": 129.727
      },
      "per_stream_decode_tokens_per_second": {
        "maximum": 42.421,
        "median": 35.568,
        "minimum": 32.073,
        "p90": 39.281
      },
      "per_stream_ttft_seconds": {
        "maximum": 0.681,
        "median": 0.623,
        "minimum": 0.224,
        "p90": 0.681
      },
      "rounds": [
        {
          "aggregate_end_to_end_tokens_per_second": 123.819,
          "completion_tokens": 1024,
          "round": 1,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.122144,
              "decode_tokens_per_second": 35.804,
              "finish_reason": "length",
              "measured_sse_events": 110,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 181,
              "reasoning_characters": 1138,
              "reasoning_sha256": "705bee47c30e649f68ff52d1c3a0d432b2ac71c0b415c385b6251c035cae3454",
              "response_tail_seconds": 6.2e-05,
              "stream_done_marker": true,
              "stream_sha256": "705bee47c30e649f68ff52d1c3a0d432b2ac71c0b415c385b6251c035cae3454",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 7.401425,
              "ttft_seconds": 0.279281,
              "wall_seconds": 7.401486
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.06763,
              "decode_tokens_per_second": 36.08,
              "finish_reason": "length",
              "measured_sse_events": 114,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 180,
              "reasoning_characters": 1168,
              "reasoning_sha256": "8792cd96c8094cd797081a911d49d5219c1a89daa453adc609f0e67b7b1aeb98",
              "response_tail_seconds": 9.5e-05,
              "stream_done_marker": true,
              "stream_sha256": "8792cd96c8094cd797081a911d49d5219c1a89daa453adc609f0e67b7b1aeb98",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 7.691182,
              "ttft_seconds": 0.623552,
              "wall_seconds": 7.691277
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.644527,
              "decode_tokens_per_second": 33.357,
              "finish_reason": "length",
              "measured_sse_events": 126,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 179,
              "reasoning_characters": 1230,
              "reasoning_sha256": "f1e79a997f4a007eb5a638398cf3e2a4d4fb27a2cc780fdf07f74ec694f48fa0",
              "response_tail_seconds": 0.000106,
              "stream_done_marker": true,
              "stream_sha256": "f1e79a997f4a007eb5a638398cf3e2a4d4fb27a2cc780fdf07f74ec694f48fa0",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 8.267787,
              "ttft_seconds": 0.62326,
              "wall_seconds": 8.267893
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.725336,
              "decode_tokens_per_second": 33.008,
              "finish_reason": "length",
              "measured_sse_events": 121,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 179,
              "reasoning_characters": 1133,
              "reasoning_sha256": "53e7d217dfe76dc95281971ad971e3849f3cb38f03e779583191d7ea10987ef5",
              "response_tail_seconds": 6.9e-05,
              "stream_done_marker": true,
              "stream_sha256": "53e7d217dfe76dc95281971ad971e3849f3cb38f03e779583191d7ea10987ef5",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 8.004971,
              "ttft_seconds": 0.279635,
              "wall_seconds": 8.00504
            }
          ],
          "wall_seconds": 8.270154
        },
        {
          "aggregate_end_to_end_tokens_per_second": 118.61,
          "completion_tokens": 1024,
          "round": 2,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 6.491751,
              "decode_tokens_per_second": 39.281,
              "finish_reason": "length",
              "measured_sse_events": 103,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 179,
              "reasoning_characters": 1110,
              "reasoning_sha256": "509e118901c6ad88ac417ec8a2464ea414499fddcd61c9b77dba66aa9b54c818",
              "response_tail_seconds": 8.9e-05,
              "stream_done_marker": true,
              "stream_sha256": "509e118901c6ad88ac417ec8a2464ea414499fddcd61c9b77dba66aa9b54c818",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 7.172467,
              "ttft_seconds": 0.680716,
              "wall_seconds": 7.172556
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.950524,
              "decode_tokens_per_second": 32.073,
              "finish_reason": "length",
              "measured_sse_events": 133,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 180,
              "reasoning_characters": 1146,
              "reasoning_sha256": "998386433473970f239080995b14fb154e34ebd918cca05f3ba52b046f8a3822",
              "response_tail_seconds": 0.000151,
              "stream_done_marker": true,
              "stream_sha256": "998386433473970f239080995b14fb154e34ebd918cca05f3ba52b046f8a3822",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 8.630408,
              "ttft_seconds": 0.679884,
              "wall_seconds": 8.630559
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.402748,
              "decode_tokens_per_second": 34.447,
              "finish_reason": "length",
              "measured_sse_events": 119,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 177,
              "reasoning_characters": 1145,
              "reasoning_sha256": "e11a46bdf1c0e6d7379522a3414879063176beffd848355c10932e6f8e6a1d3b",
              "response_tail_seconds": 0.000151,
              "stream_done_marker": true,
              "stream_sha256": "e11a46bdf1c0e6d7379522a3414879063176beffd848355c10932e6f8e6a1d3b",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 8.083347,
              "ttft_seconds": 0.680599,
              "wall_seconds": 8.083498
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.759748,
              "decode_tokens_per_second": 32.862,
              "finish_reason": "length",
              "measured_sse_events": 118,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 181,
              "reasoning_characters": 1110,
              "reasoning_sha256": "37b0b2b82964a10b9e6d889cd9cb833ca4b3d93d14685bcaad778ffa70c87a48",
              "response_tail_seconds": 8.3e-05,
              "stream_done_marker": true,
              "stream_sha256": "37b0b2b82964a10b9e6d889cd9cb833ca4b3d93d14685bcaad778ffa70c87a48",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 7.984053,
              "ttft_seconds": 0.224305,
              "wall_seconds": 7.984136
            }
          ],
          "wall_seconds": 8.633325
        },
        {
          "aggregate_end_to_end_tokens_per_second": 129.727,
          "completion_tokens": 1024,
          "round": 3,
          "streams": [
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 7.217386,
              "decode_tokens_per_second": 35.331,
              "finish_reason": "length",
              "measured_sse_events": 122,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 179,
              "reasoning_characters": 1099,
              "reasoning_sha256": "aeda365e6550d32ab4f9913dda8b82dd435d40853197543d45f04e9c6645f9bc",
              "response_tail_seconds": 0.000126,
              "stream_done_marker": true,
              "stream_sha256": "aeda365e6550d32ab4f9913dda8b82dd435d40853197543d45f04e9c6645f9bc",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 7.890716,
              "ttft_seconds": 0.67333,
              "wall_seconds": 7.890841
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 6.01113,
              "decode_tokens_per_second": 42.421,
              "finish_reason": "length",
              "measured_sse_events": 92,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 176,
              "reasoning_characters": 1146,
              "reasoning_sha256": "00a69420a155e29ece9d79115699d44cb9cd7390e602cd88307369e69d862849",
              "response_tail_seconds": 7.5e-05,
              "stream_done_marker": true,
              "stream_sha256": "00a69420a155e29ece9d79115699d44cb9cd7390e602cd88307369e69d862849",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 6.308448,
              "ttft_seconds": 0.297318,
              "wall_seconds": 6.308523
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 6.954127,
              "decode_tokens_per_second": 36.669,
              "finish_reason": "length",
              "measured_sse_events": 116,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 183,
              "reasoning_characters": 1117,
              "reasoning_sha256": "31bb433e2d3462fcb892c116e0715646cc5f2eca5764efe352f91239fcdd1fb5",
              "response_tail_seconds": 0.000143,
              "stream_done_marker": true,
              "stream_sha256": "31bb433e2d3462fcb892c116e0715646cc5f2eca5764efe352f91239fcdd1fb5",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 7.628152,
              "ttft_seconds": 0.674025,
              "wall_seconds": 7.628295
            },
            {
              "cached_prompt_tokens": 0,
              "completion_tokens": 256,
              "decode_seconds": 6.588819,
              "decode_tokens_per_second": 38.702,
              "finish_reason": "length",
              "measured_sse_events": 102,
              "output": "",
              "output_characters": 0,
              "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "prompt_tokens": 179,
              "reasoning_characters": 1171,
              "reasoning_sha256": "4df086df3a741422911430c34c07e00c5288465c5f2995b3509421abf73af067",
              "response_tail_seconds": 0.000101,
              "stream_done_marker": true,
              "stream_sha256": "4df086df3a741422911430c34c07e00c5288465c5f2995b3509421abf73af067",
              "time_to_first_visible_seconds": null,
              "time_to_last_output_seconds": 6.88619,
              "ttft_seconds": 0.297372,
              "wall_seconds": 6.886291
            }
          ],
          "wall_seconds": 7.893474
        }
      ]
    }
  },
  "decode": {
    "code": {
      "completion_gate": {
        "passed": 2,
        "total": 3
      },
      "decode_tokens_per_second": {
        "maximum": 97.256,
        "median": 70.235,
        "minimum": 62.648,
        "p90": 97.256
      },
      "pooled_decode_tokens_per_second": 78.788,
      "runs": [
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 9856,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 157.306405,
          "decode_tokens_per_second": 62.648,
          "finish_reason": "stop",
          "measured_sse_events": 3063,
          "output": "limiter.go\n```go\n// Package ratelimit provides a concurrency-safe token-bucket rate limiter.\npackage ratelimit\n\nimport (\n\t\"errors\"\n\t\"math\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Clock is an injectable time source.\ntype Clock interface {\n\tNow() time.Time\n}\n\n// RealClock implements Clock using time.Now.\ntype RealClock struct{}\n\n// Now returns the current time.\nfunc (RealClock) Now() time.Time { return time.Now() }\n\n// Limiter is a token-bucket rate limiter.\ntype Limiter struct {\n\tmu         sync.Mutex\n\tclock      Clock\n\tcapacity   float64\n\trefillRate float64\n\ttokens     float64\n\tlast       time.Time\n}\n\n// New creates a Limiter.\n//\n// capacity is the maximum number of tokens.\n// refillRate is the number of tokens added per second.\nfunc New(capacity, refillRate float64, clock Clock) (*Limiter, error) {\n\tif clock == nil {\n\t\treturn nil, errors.New(\"ratelimit: clock is nil\")\n\t}\n\tif math.IsNaN(capacity) || math.IsNaN(refillRate) {\n\t\treturn nil, errors.New(\"ratelimit: capacity and refillRate must not be NaN\")\n\t}\n\tif math.IsInf(capacity, 1) || math.IsInf(refillRate, 1) {\n\t\treturn nil, errors.New(\"ratelimit: capacity and refillRate must be finite\")\n\t}\n\tif capacity < 0 {\n\t\treturn nil, errors.New(\"ratelimit: capacity must be non-negative\")\n\t}\n\tif refillRate < 0 {\n\t\treturn nil, errors.New(\"ratelimit: refillRate must be non-negative\")\n\t}\n\n\treturn &Limiter{\n\t\tclock:      clock,\n\t\tcapacity:   capacity,\n\t\trefillRate: refillRate,\n\t\ttokens:     capacity,\n\t\tlast:       clock.Now(),\n\t}, nil\n}\n\n// AllowN reports whether n tokens are available and consumes them if so.\nfunc (l *Limiter) AllowN(n int) bool {\n\tif n <= 0 {\n\t\treturn true\n\t}\n\n\tl.mu.Lock()\n\tdefer l.mu.Unlock()\n\n\tnow := l.clock.Now()\n\tif now.After(l.last) {\n\t\telapsed := now.Sub(l.last).Seconds()\n\t\tl.tokens += elapsed * l.refillRate\n\t\tif l.tokens > l.capacity {\n\t\t\tl.tokens = l.capacity\n\t\t}\n\t\tif l.tokens < 0 {\n\t\t\tl.tokens = 0\n\t\t}\n\t\tl.last = now\n\t} else if now.Before(l.last) {\n\t\tl.last = now\n\t}\n\n\tif l.tokens >= float64(n) {\n\t\tl.tokens -= float64(n)\n\t\treturn true\n\t}\n\treturn false\n}\n```\n\nlimiter_test.go\n```go\npackage ratelimit\n\nimport (\n\t\"math\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n)\n\ntype fakeClock struct {\n\tnow time.Time\n}\n\nfunc (c *fakeClock) Now() time.Time { return c.now }\n\nfunc (c *fakeClock) Advance(d time.Duration) {\n\tc.now = c.now.Add(d)\n}\n\nfunc TestNew(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tcapacity   float64\n\t\trefillRate float64\n\t\tclock      Clock\n\t\twantErr    bool\n\t}{\n\t\t{\"valid\", 10, 1, &fakeClock{now: time.Unix(0, 0)}, false},\n\t\t{\"zero\", 0, 0, &fakeClock{now: time.Unix(0, 0)}, false},\n\t\t{\"nil clock\", 10, 1, nil, true},\n\t\t{\"negative capacity\", -1, 1, &fakeClock{now: time.Unix(0, 0)}, true},\n\t\t{\"negative rate\", 10, -1, &fakeClock{now: time.Unix(0, 0)}, true},\n\t\t{\"nan capacity\", math.NaN(), 1, &fakeClock{now: time.Unix(0, 0)}, true},\n\t\t{\"nan rate\", 10, math.NaN(), &fakeClock{now: time.Unix(0, 0)}, true},\n\t\t{\"inf capacity\", math.Inf(1), 1, &fakeClock{now: time.Unix(0, 0)}, true},\n\t\t{\"inf rate\", 10, math.Inf(1), &fakeClock{now: time.Unix(0, 0)}, true},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot, err := New(tt.capacity, tt.refillRate, tt.clock)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Fatalf(\"New() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif got == nil {\n\t\t\t\tt.Fatal(\"New() returned nil\")\n\t\t\t}\n\t\t\tif got.tokens != tt.capacity {\n\t\t\t\tt.Errorf(\"tokens = %v, want %v\", got.tokens, tt.capacity)\n\t\t\t}\n\t\t\tif !got.last.Equal(tt.clock.Now()) {\n\t\t\t\tt.Errorf(\"last = %v, want %v\", got.last, tt.clock.Now())\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestAllowN(t *testing.T) {\n\ttype step struct {\n\t\tadvance time.Duration\n\t\tn       int\n\t\twant    bool\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tcapacity   float64\n\t\trefillRate float64\n\t\tsteps      []step\n\t}{\n\t\t{\n\t\t\tname:       \"burst then empty\",\n\t\t\tcapacity:   10,\n\t\t\trefillRate: 1,\n\t\t\tsteps: []step{\n\t\t\t\t{0, 10, true},\n\t\t\t\t{0, 1, false},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"refill one per second\",\n\t\t\tcapacity:   10,\n\t\t\trefillRate: 1,\n\t\t\tsteps: []step{\n\t\t\t\t{0, 10, true},\n\t\t\t\t{time.Second, 1, true},\n\t\t\t\t{time.Second, 1, true},\n\t\t\t\t{time.Second, 10, false},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"partial refill\",\n\t\t\tcapacity:   10,\n\t\t\trefillRate: 1,\n\t\t\tsteps: []step{\n\t\t\t\t{0, 10, true},\n\t\t\t\t{500 * time.Millisecond, 1, false},\n\t\t\t\t{500 * time.Millisecond, 1, true},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"zero rate\",\n\t\t\tcapacity:   10,\n\t\t\trefillRate: 0,\n\t\t\tsteps: []step{\n\t\t\t\t{0, 10, true},\n\t\t\t\t{time.Hour, 1, false},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"zero capacity\",\n\t\t\tcapacity:   0,\n\t\t\trefillRate: 1,\n\t\t\tsteps: []step{\n\t\t\t\t{0, 1, false},\n\t\t\t\t{time.Second, 1, false},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"non-positive n\",\n\t\t\tcapacity:   1,\n\t\t\trefillRate: 1,\n\t\t\tsteps: []step{\n\t\t\t\t{0, 0, true},\n\t\t\t\t{0, -1, true},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"clock backward\",\n\t\t\tcapacity:   10,\n\t\t\trefillRate: 1,\n\t\t\tsteps: []step{\n\t\t\t\t{0, 10, true},\n\t\t\t\t{-time.Second, 1, false},\n\t\t\t\t{time.Second, 1, true},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tclock := &fakeClock{now: time.Unix(0, 0)}\n\t\t\tl, err := New(tt.capacity, tt.refillRate, clock)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"New() error = %v\", err)\n\t\t\t}\n\n\t\t\tfor i, s := range tt.steps {\n\t\t\t\tclock.Advance(s.advance)\n\t\t\t\tif got := l.AllowN(s.n); got != s.want {\n\t\t\t\t\tt.Errorf(\"step %d: AllowN(%d) = %v, want %v\", i, s.n, got, s.want)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestAllowNConcurrent(t *testing.T) {\n\tclock := &fakeClock{now: time.Unix(0, 0)}\n\tl, err := New(100, 0, clock)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar wg sync.WaitGroup\n\tvar mu sync.Mutex\n\tallowed := 0\n\n\tfor i := 0; i < 1000; i++ {\n\t\twg.Add(1)\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tif l.AllowN(1) {\n\t\t\t\tmu.Lock()\n\t\t\t\tallowed++\n\t\t\t\tmu.Unlock()\n\t\t\t}\n\t\t}()\n\t}\n\n\twg.Wait()\n\tif allowed != 100 {\n\t\tt.Errorf(\"allowed = %d, want 100\", allowed)\n\t}\n}\n```",
          "output_characters": 5842,
          "output_sha256": "b04fe31377f723698ad445e05e594b5f0cddd1b885344a9fdd81647116b539d1",
          "prompt_tokens": 179,
          "reasoning_characters": 25923,
          "reasoning_sha256": "0ccbefbbaeb21c0b67bcd7ebe315e90dec94faae8e2d20d2fb1554bd18615fae",
          "response_tail_seconds": 0.000964,
          "run": 1,
          "stream_done_marker": true,
          "stream_sha256": "ccd34a14efb687d776685cb81321425ee5cdc5d3d0345a06ce230a1d153b0bed",
          "time_to_first_visible_seconds": 138.478311,
          "time_to_last_output_seconds": 158.171092,
          "ttft_seconds": 0.864687,
          "wall_seconds": 158.172056
        },
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 30245,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 430.612697,
          "decode_tokens_per_second": 70.235,
          "finish_reason": "stop",
          "measured_sse_events": 8780,
          "output": "```go\n// bucket.go\npackage ratelimit\n\nimport (\n\t\"errors\"\n\t\"math\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Clock provides the current time.\ntype Clock interface {\n\tNow() time.Time\n}\n\n// ClockFunc adapts a function to Clock.\ntype ClockFunc func() time.Time\n\nfunc (f ClockFunc) Now() time.Time { return f() }\n\nvar (\n\tErrInvalidCapacity = errors.New(\"ratelimit: capacity must be positive\")\n\tErrInvalidRate     = errors.New(\"ratelimit: rate must be positive and finite\")\n\tErrNilClock        = errors.New(\"ratelimit: clock must not be nil\")\n)\n\n// Bucket is a concurrency-safe token bucket.\ntype Bucket struct {\n\tmu       sync.Mutex\n\tcapacity float64\n\trate     float64\n\ttokens   float64\n\tlast     time.Time\n\tclock    Clock\n}\n\n// New creates a token bucket with capacity tokens and rate tokens per second.\nfunc New(capacity int, rate float64, clock Clock) (*Bucket, error) {\n\tif capacity <= 0 {\n\t\treturn nil, ErrInvalidCapacity\n\t}\n\tif !(rate > 0) || math.IsInf(rate, 1) {\n\t\treturn nil, ErrInvalidRate\n\t}\n\tif clock == nil {\n\t\treturn nil, ErrNilClock\n\t}\n\treturn &Bucket{\n\t\tcapacity: float64(capacity),\n\t\trate:     rate,\n\t\ttokens:   float64(capacity),\n\t\tlast:     clock.Now(),\n\t\tclock:    clock,\n\t}, nil\n}\n\n// AllowN consumes n tokens if available. n <= 0 is always allowed.\nfunc (b *Bucket) AllowN(n int) bool {\n\tif n <= 0 {\n\t\treturn true\n\t}\n\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\tnow := b.clock.Now()\n\tif now.After(b.last) {\n\t\tif elapsed := now.Sub(b.last).Seconds(); elapsed > 0 {\n\t\t\tb.tokens += elapsed * b.rate\n\t\t\tif b.tokens > b.capacity {\n\t\t\t\tb.tokens = b.capacity\n\t\t\t}\n\t\t}\n\t}\n\tb.last = now\n\n\tif b.tokens >= float64(n) {\n\t\tb.tokens -= float64(n)\n\t\treturn true\n\t}\n\treturn false\n}\n```\n\n```go\n// bucket_test.go\npackage ratelimit\n\nimport (\n\t\"errors\"\n\t\"math\"\n\t\"testing\"\n\t\"time\"\n)\n\ntype fakeClock struct{ now time.Time }\n\nfunc (c *fakeClock) Now() time.Time { return c.now }\nfunc (c *fakeClock) Advance(d time.Duration) { c.now = c.now.Add(d) }\n\nvar _ Clock = (*fakeClock)(nil)\n\nfunc TestNew(t *testing.T) {\n\tclock := &fakeClock{now: time.Unix(0, 0)}\n\ttests := []struct {\n\t\tname     string\n\t\tcapacity int\n\t\trate     float64\n\t\tclock    Clock\n\t\twantErr  error\n\t}{\n\t\t{\"ok\", 1, 1, clock, nil},\n\t\t{\"zero capacity\", 0, 1, clock, ErrInvalidCapacity},\n\t\t{\"negative capacity\", -1, 1, clock, ErrInvalidCapacity},\n\t\t{\"zero rate\", 1, 0, clock, ErrInvalidRate},\n\t\t{\"negative rate\", 1, -1, clock, ErrInvalidRate},\n\t\t{\"nan rate\", 1, math.NaN(), clock, ErrInvalidRate},\n\t\t{\"inf rate\", 1, math.Inf(1), clock, ErrInvalidRate},\n\t\t{\"nil clock\", 1, 1, nil, ErrNilClock},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot, err := New(tt.capacity, tt.rate, tt.clock)\n\t\t\tif tt.wantErr != nil {\n\t\t\t\tif err == nil || !errors.Is(err, tt.wantErr) {\n\t\t\t\t\tt.Fatalf(\"New() error = %v, want %v\", err, tt.wantErr)\n\t\t\t\t}\n\t\t\t\tif got != nil {\n\t\t\t\t\tt.Fatalf(\"New() = %v, want nil\", got)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif err != nil || got == nil {\n\t\t\t\tt.Fatalf(\"New() = %v, %v\", got, err)\n\t\t\t}\n\t\t\tif got.tokens != float64(tt.capacity) {\n\t\t\t\tt.Errorf(\"tokens = %v, want %v\", got.tokens, float64(tt.capacity))\n\t\t\t}\n\t\t\tif !got.last.Equal(tt.clock.Now()) {\n\t\t\t\tt.Errorf(\"last = %v, want %v\", got.last, tt.clock.Now())\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestAllowN(t *testing.T) {\n\ttype step struct {\n\t\tadvance time.Duration\n\t\tn       int\n\t\twant    bool\n\t}\n\ttests := []struct {\n\t\tname     string\n\t\tcapacity int\n\t\trate     float64\n\t\tsteps    []step\n\t}{\n\t\t{\"burst then empty\", 3, 1, []step{{0, 1, true}, {0, 1, true}, {0, 1, true}, {0, 1, false}, {time.Second, 1, true}, {0, 1, false}}},\n\t\t{\"refill capped\", 2, 1, []step{{0, 2, true}, {0, 1, false}, {10 * time.Second, 2, true}, {0, 1, false}, {time.Second, 1, true}, {0, 1, false}}},\n\t\t{\"partial refill\", 10, 1, []step{{0, 10, true}, {0, 5, false}, {5 * time.Second, 5, true}, {5 * time.Second, 5, true}, {time.Second, 2, false}}},\n\t\t{\"zero and negative n\", 1, 1, []step{{0, 0, true}, {0, -1, true}, {0, 1, true}, {0, 1, false}, {time.Second, 0, true}}},\n\t\t{\"n greater than capacity\", 2, 1, []step{{0, 3, false}, {time.Second, 2, true}, {0, 1, false}}},\n\t\t{\"clock regression\", 2, 1, []step{{0, 2, true}, {time.Second, 1, true}, {-time.Second, 1, false}, {time.Second, 1, true}}},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tclock := &fakeClock{now: time.Unix(0, 0)}\n\t\t\tb, err := New(tt.capacity, tt.rate, clock)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"New() error = %v\", err)\n\t\t\t}\n\t\t\tfor i, s := range tt.steps {\n\t\t\t\tclock.Advance(s.advance)\n\t\t\t\tif got := b.AllowN(s.n); got != s.want {\n\t\t\t\t\tt.Fatalf(\"AllowN(%d) after step %d = %v, want %v\", s.n, i, got, s.want)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n```",
          "output_characters": 4591,
          "output_sha256": "03d0258ba7234e7456675816224e7b17edd6ee7ad699e00f676389d2593c175a",
          "prompt_tokens": 182,
          "reasoning_characters": 99759,
          "reasoning_sha256": "a0196d45ad85bc46595137e762612bc0bf3f6bcb54c9e1f627babd75834e0a05",
          "response_tail_seconds": 0.003197,
          "run": 2,
          "stream_done_marker": true,
          "stream_sha256": "d70c7fabb9cfd3cc32ed66c80b9ffebe330b7e9bec45a217e91db7168aa831b7",
          "time_to_first_visible_seconds": 424.61952,
          "time_to_last_output_seconds": 430.922694,
          "ttft_seconds": 0.309998,
          "wall_seconds": 430.925891
        },
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 32768,
          "completion_validation": {
            "error": "no visible answer",
            "valid": false
          },
          "decode_seconds": 336.916058,
          "decode_tokens_per_second": 97.256,
          "finish_reason": "length",
          "measured_sse_events": 6785,
          "output": "",
          "output_characters": 0,
          "output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
          "prompt_tokens": 182,
          "reasoning_characters": 124834,
          "reasoning_sha256": "fd601f4daeb97cb7ad57ec2e8e6a73a7875cbcc9dfcef5e434ea02736d6a2719",
          "response_tail_seconds": 0.001734,
          "run": 3,
          "stream_done_marker": true,
          "stream_sha256": "fd601f4daeb97cb7ad57ec2e8e6a73a7875cbcc9dfcef5e434ea02736d6a2719",
          "time_to_first_visible_seconds": null,
          "time_to_last_output_seconds": 337.192606,
          "ttft_seconds": 0.276548,
          "wall_seconds": 337.19434
        }
      ],
      "time_to_last_output_seconds": {
        "maximum": 430.923,
        "median": 337.193,
        "minimum": 158.171,
        "p90": 430.923
      },
      "ttft_seconds": {
        "maximum": 0.865,
        "median": 0.31,
        "minimum": 0.277,
        "p90": 0.865
      },
      "wall_seconds": {
        "maximum": 430.926,
        "median": 337.194,
        "minimum": 158.172,
        "p90": 430.926
      }
    },
    "prose": {
      "completion_gate": {
        "passed": 3,
        "total": 3
      },
      "decode_tokens_per_second": {
        "maximum": 97.713,
        "median": 94.682,
        "minimum": 69.497,
        "p90": 97.713
      },
      "pooled_decode_tokens_per_second": 92.895,
      "runs": [
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 10525,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 111.150894,
          "decode_tokens_per_second": 94.682,
          "finish_reason": "stop",
          "measured_sse_events": 2135,
          "output": "MEMORANDUM  \nTo: Engineering Team  \nFrom: Engineering Lead  \nSubject: Local AI hardware: buy more capacity or improve utilization  \n\nI have been thinking about whether we should purchase additional local AI hardware or focus first on getting more out of the machines we already own. The question is whether the next dollar spent on hardware buys more useful engineering progress than the effort required to operate it. My recommendation is to treat improved utilization as the primary path for the next quarter, and to defer any significant hardware purchase until we have evidence that our current fleet is genuinely saturated.\n\nOur current hardware is not as idle as it feels. When jobs queue, the instinct is to buy more GPUs, but queueing can also come from inefficient batching, poorly sized models, fragmented memory, unbalanced workloads, or experiments that hold resources while people iterate. If we can raise effective utilization by a modest amount, we may avoid a purchase that is tempting. The cost comparison is not just the sticker price of new cards or servers. It includes power, cooling, rack space, networking, replacement cycles, and the time spent patching drivers, monitoring failures, and reconfiguring clusters.\n\nLatency matters, and it is a stronger argument for local hardware. If our users or internal workflows are sensitive to response time, a local inference path can remove network hops and provider variability. But latency is not only a function of hardware ownership. It is also a function of queueing, model size, batching policy, and whether we are serving from the right place. A single overloaded local node can have worse tail latency than a slightly more distant but better-balanced system. If the problem is queueing, adding capacity may simply move the bottleneck elsewhere.\n\nReliability cuts both ways. More local hardware can provide redundancy and reduce dependence on external providers, but it also increases the number of components that can fail. A larger fleet means more drivers, firmware, disk failures, thermal events, and operational complexity. We should be honest about whether we have the capacity to run a larger local cluster without turning it into a second product. If we buy more hardware, we are not just buying compute; we are buying an obligation to keep it healthy.\n\nThe opportunity cost is the part I find most persuasive. Every hour spent evaluating vendors, negotiating purchases, installing racks, and tuning new machines is an hour not spent improving the models, the data pipeline, the developer experience, or the product. If we can get more value from what we own by improving batching, caching, model distillation, workload isolation, or autoscaling policies, that work compounds. It makes the team faster and less dependent on capital. A hardware purchase can create a false sense of security, leaving the underlying inefficiencies in place.\n\nReversibility should also weigh heavily. Improving utilization is relatively reversible. We can try a new scheduler, adjust batch sizes, or move a workload to a different node and roll back if it does not help. A hardware purchase is much harder to undo. Once we buy servers, we own them for years, and their value declines quickly. If demand shifts or models become more efficient, we may be stuck with capacity we do not need. That asymmetry argues for exhausting the reversible options first.\n\nThis is not a claim that we should never buy hardware. If we have sustained demand, predictable latency requirements, and evidence that utilization improvements cannot close the gap, then buying capacity may be the right decision. We do not know exactly how much headroom exists, and some experiments may be genuinely compute-bound. We should measure utilization, queue time, failure rates, and cost per useful inference over the next few weeks. If we see sustained saturation across multiple workloads, or if latency targets are being missed for reasons we cannot fix through scheduling, then we should revisit the purchase with a narrower scope.\n\nFor now, I recommend a utilization sprint: instrument the fleet, identify the sources of waste, and implement the cheapest improvements. We should set a clear threshold for escalation, so that the decision to buy is evidence-driven rather than anxiety-driven. The goal is not to avoid spending; it is to spend in a way that preserves optionality and keeps the team moving.",
          "output_characters": 4437,
          "output_sha256": "ff272737dfdd32cd5bbb3a00f5b2d02f3fcbdbe8ff3712e24b074e783469598c",
          "prompt_tokens": 175,
          "reasoning_characters": 34159,
          "reasoning_sha256": "9246750cef97faa0ce272ba0f0d56382e2fb340e5c46460ad71d07c241db21fd",
          "response_tail_seconds": 0.001063,
          "run": 1,
          "stream_done_marker": true,
          "stream_sha256": "9f1ef29c3accf37c74d8d5498704aec6bd293d5b0cd8cb7d9d9b0cf4cb74c655",
          "time_to_first_visible_seconds": 107.304526,
          "time_to_last_output_seconds": 111.633957,
          "ttft_seconds": 0.483063,
          "wall_seconds": 111.63502
        },
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 12632,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 129.26681,
          "decode_tokens_per_second": 97.713,
          "finish_reason": "stop",
          "measured_sse_events": 2440,
          "output": "To: Engineering Team  \nFrom: Platform Engineering  \nSubject: Local AI Hardware or Better Utilisation  \n\nOver the next quarter we need to decide whether to spend capital on additional local AI hardware or invest primarily in improving utilisation of the machines we already own. Our inference and training workloads are growing. Our current fleet is not uniformly saturated. Some nodes sit idle for hours, some run fragmented jobs that never fill the accelerator, and some services are pinned to oversized instances. The decision should be made with cost, latency, reliability, opportunity cost, and reversibility in mind.\n\nCost is the most visible factor. A new GPU cluster is expensive in power, cooling, networking, maintenance, and the engineering time required to operate it. If we buy hardware needed only for a few weeks of peak load, the effective cost per useful token is poor. Improving utilisation is cheaper in capital terms, but it is not free. It requires scheduler work, better batching, model placement, autoscaling, observability, and application changes. The right question is whether the marginal cost of a new machine is lower than the marginal cost of the engineering effort needed to extract the same capacity.\n\nLatency matters because some workloads cannot tolerate queueing. Interactive assistants, real-time translation, and retrieval-augmented services need predictable response times. If our current fleet is fragmented, adding hardware may reduce tail latency by giving jobs a place to run immediately. But if the problem is poor scheduling, cold starts, or inefficient batching, more hardware may not solve the latency issue. A larger pool can make latency worse if it increases placement complexity or spreads workloads across slower interconnects. We should measure p95 and p99 latency first.\n\nReliability is another reason to be cautious. New hardware introduces new failure domains, firmware, drivers, and operational complexity. Our current fleet is known. We know which nodes flake and which models degrade under memory pressure. A new cluster may improve capacity, but it may also create a second environment that is less understood and harder to debug. If reliability is a primary concern, incremental improvements to scheduling, health checks, and workload isolation may deliver more dependable service than a larger but less mature infrastructure.\n\nOpportunity cost is the strongest argument for improving utilisation first. Every engineer assigned to operate new hardware is not working on model efficiency, caching, quantisation, batching, or developer tooling. Those improvements compound. A better scheduler can reduce cost across every team, while a new cluster only helps where it is placed. If we can raise average utilisation from forty percent to sixty percent, we may defer the need for new hardware for many months. That gives us time to learn how demand actually behaves, rather than buying for a forecast that may be wrong.\n\nReversibility should guide the choice. Buying hardware is hard to reverse. Once we purchase accelerators, we are committed to operating them, and the assets may become underused if demand shifts toward cloud or smaller models. Improving utilisation is more reversible. If we invest in software and then find that we truly need more hardware, we can buy it later with better information. If we buy hardware first and then discover that the bottleneck was scheduling, we will have spent capital and still have the original problem. In uncertain conditions, the reversible path is usually preferable.\n\nMy recommendation is to improve utilisation of the existing fleet for the next two quarters before committing to new hardware. We should set a clear target, such as raising average accelerator utilisation and reducing queue time, and fund the engineering work needed to achieve it. We should also keep a small reserve of capacity for workloads that genuinely require low latency or cannot be moved. This is not a decision to ignore capacity constraints. It is a decision to treat capacity as a problem to be solved with evidence rather than capital.\n\nThere is uncertainty. If demand grows faster than expected, if a major customer requires guaranteed low latency, or if our current fleet is already near its practical ceiling, waiting may be the wrong choice. We should review the decision monthly. If the metrics show that we cannot improve enough without new hardware, we should buy. But until that evidence appears, the better engineering choice is to make what we own work harder.",
          "output_characters": 4559,
          "output_sha256": "3c525e731c8f855a4938b80b0b0aa243b0e1ad74456f4adf2191e4d2670723d4",
          "prompt_tokens": 172,
          "reasoning_characters": 37966,
          "reasoning_sha256": "d90fd6f3deda1150a7a45fd8e360daa4b7746807e9b19fc258d582c5eb602723",
          "response_tail_seconds": 0.109197,
          "run": 2,
          "stream_done_marker": true,
          "stream_sha256": "c7c979b6fcc843a65ffffe31e819e9b73c85a63455bb8ba8c7ea6611f0f168ef",
          "time_to_first_visible_seconds": 125.263616,
          "time_to_last_output_seconds": 129.517762,
          "ttft_seconds": 0.250951,
          "wall_seconds": 129.626958
        },
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 2441,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 35.109542,
          "decode_tokens_per_second": 69.497,
          "finish_reason": "stop",
          "measured_sse_events": 838,
          "output": "MEMORANDUM\n\nTo: Engineering Team  \nFrom: Platform Engineering  \nSubject: Local AI Hardware: Buy More or Improve Utilisation?\n\nThe question before us is not whether our current machines are \u201cenough\u201d in some abstract sense, but whether the next dollar spent on local AI hardware buys more useful engineering capacity than the same dollar spent on making our existing fleet work harder. We have enough evidence to say that utilisation is poor, but not enough to say that poor utilisation is entirely the result of bad scheduling, idle time, or inefficient model serving. Some of it may be the price of experimentation, and some may be the unavoidable cost of keeping services responsive when models are large and traffic is bursty. The decision therefore needs to be treated as a systems problem, not a shopping problem.\n\nCost is the most visible factor. A new GPU node is expensive not only at purchase, but through power, cooling, rack space, maintenance, and the engineering time required to integrate it into our environment. If we buy hardware now, we lock in a capital commitment that may be difficult to unwind, especially if model sizes, inference frameworks, or cloud pricing shift. Improving utilisation, by contrast, is mostly an operating expense: time spent on profiling, batching, autoscaling, cache tuning, and better workload placement. That time is not free, but it is more flexible. If the work does not pay off, we can stop and redirect it. If we buy hardware and the assumptions are wrong, the asset remains on the balance sheet and continues to consume attention.\n\nLatency matters just as much. Our users care less about the number of GPUs we own than about whether requests complete within an acceptable window. If current latency problems come from cold starts, queueing, or inefficient batching, adding more hardware may simply create more capacity without improving the tail. A larger pool can even make things worse if scheduling becomes more complex or if we spread workloads too thinly. On the other hand, if latency is already dominated by the physical limits of the models we are running, then better scheduling will have diminishing returns, and hardware may be the only way to meet the service-level objective. We need to know which kind of latency we are fighting before we decide what to buy.\n\nReliability is another reason to be cautious. More hardware means more failure domains, more drivers, more firmware, more monitoring, and more places where subtle configuration drift can appear. A small team cannot afford to spend its scarce reliability budget maintaining a larger heterogeneous fleet unless the new capacity is genuinely necessary. Improving utilisation can also improve reliability if it reduces the pressure to overcommit nodes, but it can introduce new risks if we push machines closer to their limits. The goal is not to run everything at ninety percent utilisation and then discover that a single noisy neighbour or memory leak takes down a whole class of inference jobs.\n\nOpportunity cost is the quiet issue. Every engineer-hours spent buying, benchmarking, and integrating new hardware is time not spent on model quality, developer tooling, incident reduction, or product features. If the team is small, the marginal value of another GPU may be lower than the marginal value of a better deployment pipeline, a smarter router, or a cache that avoids redundant calls. We should ask what we are not doing if we choose the hardware path. The answer may be acceptable, but it should be explicit.\n\nReversibility should guide the choice. A utilisation improvement is usually reversible: we can change schedulers, adjust autoscaling thresholds, or revert a batching strategy if it causes regressions. A hardware purchase is less reversible, particularly if it requires new infrastructure assumptions, vendor relationships, or long-term capacity commitments. Given our uncertainty about future demand and model economics, we should prefer the option that lets us learn without closing doors.\n\nMy recommendation is to improve utilisation first, but not indefinitely. We should run a focused two-week effort to measure where capacity is actually being lost: idle time, cold starts, queue depth, batch efficiency, and per-request cost. If, after those changes, we still miss latency targets or cannot absorb projected demand without unacceptable degradation, we should buy a limited amount of hardware, preferably the smallest increment that can be tested and reversed. This gives us the benefit of both paths: we avoid premature capital spending, and we do not let operational inefficiency become a permanent excuse for poor performance.\n\nThe uncertainty is real. We may be wrong about the demand curve, wrong about how much headroom the current fleet has, or wrong about how quickly model improvements will change the economics. The right response is not certainty, but a staged decision. Improve what we own, measure honestly, and buy only when the evidence shows that the bottleneck is physical rather than organisational.",
          "output_characters": 5064,
          "output_sha256": "df8d5179b33c8bda715ea3192003abdf8d04de30c02923d52817cbfed0554b5e",
          "prompt_tokens": 168,
          "reasoning_characters": 6940,
          "reasoning_sha256": "8bcc5dc87b929705b8532217c4d9959489f20e7eab89073fbd5a799c20e492ca",
          "response_tail_seconds": 0.000309,
          "run": 3,
          "stream_done_marker": true,
          "stream_sha256": "5ba5f8583765c33ec9c2f43f59a9d03e330b0c4246573721096e5152ebedf9a1",
          "time_to_first_visible_seconds": 31.678107,
          "time_to_last_output_seconds": 35.353529,
          "ttft_seconds": 0.243987,
          "wall_seconds": 35.353838
        }
      ],
      "time_to_last_output_seconds": {
        "maximum": 129.518,
        "median": 111.634,
        "minimum": 35.354,
        "p90": 129.518
      },
      "ttft_seconds": {
        "maximum": 0.483,
        "median": 0.251,
        "minimum": 0.244,
        "p90": 0.483
      },
      "wall_seconds": {
        "maximum": 129.627,
        "median": 111.635,
        "minimum": 35.354,
        "p90": 129.627
      }
    },
    "structured": {
      "completion_gate": {
        "passed": 3,
        "total": 3
      },
      "decode_tokens_per_second": {
        "maximum": 133.951,
        "median": 131.549,
        "minimum": 126.238,
        "p90": 133.951
      },
      "pooled_decode_tokens_per_second": 130.479,
      "runs": [
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 770,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 5.845741,
          "decode_tokens_per_second": 131.549,
          "finish_reason": "stop",
          "measured_sse_events": 85,
          "output": "[\n  {\"index\":1,\"square\":1},\n  {\"index\":2,\"square\":4},\n  {\"index\":3,\"square\":9},\n  {\"index\":4,\"square\":16},\n  {\"index\":5,\"square\":25},\n  {\"index\":6,\"square\":36},\n  {\"index\":7,\"square\":49},\n  {\"index\":8,\"square\":64},\n  {\"index\":9,\"square\":81},\n  {\"index\":10,\"square\":100},\n  {\"index\":11,\"square\":121},\n  {\"index\":12,\"square\":144},\n  {\"index\":13,\"square\":169},\n  {\"index\":14,\"square\":196},\n  {\"index\":15,\"square\":225},\n  {\"index\":16,\"square\":256},\n  {\"index\":17,\"square\":289},\n  {\"index\":18,\"square\":324},\n  {\"index\":19,\"square\":361},\n  {\"index\":20,\"square\":400},\n  {\"index\":21,\"square\":441},\n  {\"index\":22,\"square\":484},\n  {\"index\":23,\"square\":529},\n  {\"index\":24,\"square\":576},\n  {\"index\":25,\"square\":625},\n  {\"index\":26,\"square\":676},\n  {\"index\":27,\"square\":729},\n  {\"index\":28,\"square\":784},\n  {\"index\":29,\"square\":841},\n  {\"index\":30,\"square\":900},\n  {\"index\":31,\"square\":961},\n  {\"index\":32,\"square\":1024},\n  {\"index\":33,\"square\":1089},\n  {\"index\":34,\"square\":1156},\n  {\"index\":35,\"square\":1225},\n  {\"index\":36,\"square\":1296},\n  {\"index\":37,\"square\":1369},\n  {\"index\":38,\"square\":1444},\n  {\"index\":39,\"square\":1521},\n  {\"index\":40,\"square\":1600},\n  {\"index\":41,\"square\":1681},\n  {\"index\":42,\"square\":1764},\n  {\"index\":43,\"square\":1849},\n  {\"index\":44,\"square\":1936},\n  {\"index\":45,\"square\":2025},\n  {\"index\":46,\"square\":2116},\n  {\"index\":47,\"square\":2209},\n  {\"index\":48,\"square\":2304},\n  {\"index\":49,\"square\":2401},\n  {\"index\":50,\"square\":2500}\n]",
          "output_characters": 1450,
          "output_sha256": "ec1727e6c0adbdd1452bff29c15d3802874e5d068da31595184706d022187865",
          "prompt_tokens": 160,
          "reasoning_characters": 283,
          "reasoning_sha256": "659138491e0a737b053bdb0f0fb88466b7ae403746a6ce292c8b5bc7664219bc",
          "response_tail_seconds": 6.8e-05,
          "run": 1,
          "stream_done_marker": true,
          "stream_sha256": "4b67ee5eadb9864e9d6cd91bd65684591cb7afe2b158f36adcf18c69a66a1e6f",
          "time_to_first_visible_seconds": 1.501453,
          "time_to_last_output_seconds": 6.15721,
          "ttft_seconds": 0.311468,
          "wall_seconds": 6.157278
        },
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 759,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 5.658805,
          "decode_tokens_per_second": 133.951,
          "finish_reason": "stop",
          "measured_sse_events": 87,
          "output": "[\n  {\"index\":1,\"square\":1},\n  {\"index\":2,\"square\":4},\n  {\"index\":3,\"square\":9},\n  {\"index\":4,\"square\":16},\n  {\"index\":5,\"square\":25},\n  {\"index\":6,\"square\":36},\n  {\"index\":7,\"square\":49},\n  {\"index\":8,\"square\":64},\n  {\"index\":9,\"square\":81},\n  {\"index\":10,\"square\":100},\n  {\"index\":11,\"square\":121},\n  {\"index\":12,\"square\":144},\n  {\"index\":13,\"square\":169},\n  {\"index\":14,\"square\":196},\n  {\"index\":15,\"square\":225},\n  {\"index\":16,\"square\":256},\n  {\"index\":17,\"square\":289},\n  {\"index\":18,\"square\":324},\n  {\"index\":19,\"square\":361},\n  {\"index\":20,\"square\":400},\n  {\"index\":21,\"square\":441},\n  {\"index\":22,\"square\":484},\n  {\"index\":23,\"square\":529},\n  {\"index\":24,\"square\":576},\n  {\"index\":25,\"square\":625},\n  {\"index\":26,\"square\":676},\n  {\"index\":27,\"square\":729},\n  {\"index\":28,\"square\":784},\n  {\"index\":29,\"square\":841},\n  {\"index\":30,\"square\":900},\n  {\"index\":31,\"square\":961},\n  {\"index\":32,\"square\":1024},\n  {\"index\":33,\"square\":1089},\n  {\"index\":34,\"square\":1156},\n  {\"index\":35,\"square\":1225},\n  {\"index\":36,\"square\":1296},\n  {\"index\":37,\"square\":1369},\n  {\"index\":38,\"square\":1444},\n  {\"index\":39,\"square\":1521},\n  {\"index\":40,\"square\":1600},\n  {\"index\":41,\"square\":1681},\n  {\"index\":42,\"square\":1764},\n  {\"index\":43,\"square\":1849},\n  {\"index\":44,\"square\":1936},\n  {\"index\":45,\"square\":2025},\n  {\"index\":46,\"square\":2116},\n  {\"index\":47,\"square\":2209},\n  {\"index\":48,\"square\":2304},\n  {\"index\":49,\"square\":2401},\n  {\"index\":50,\"square\":2500}\n]",
          "output_characters": 1450,
          "output_sha256": "ec1727e6c0adbdd1452bff29c15d3802874e5d068da31595184706d022187865",
          "prompt_tokens": 159,
          "reasoning_characters": 223,
          "reasoning_sha256": "169b653b0b07e5f2448bf406b15db79799f800e40fa2ce7cf86edb023489f457",
          "response_tail_seconds": 0.000117,
          "run": 2,
          "stream_done_marker": true,
          "stream_sha256": "48809d5be14bdb5ccc55cd226e43c860de9f437518583c5a62fed6303c6499ad",
          "time_to_first_visible_seconds": 1.251344,
          "time_to_last_output_seconds": 5.870888,
          "ttft_seconds": 0.212083,
          "wall_seconds": 5.871005
        },
        {
          "cached_prompt_tokens": 0,
          "completion_tokens": 772,
          "completion_validation": {
            "valid": true
          },
          "decode_seconds": 6.107501,
          "decode_tokens_per_second": 126.238,
          "finish_reason": "stop",
          "measured_sse_events": 98,
          "output": "[\n  {\"index\":1,\"square\":1},\n  {\"index\":2,\"square\":4},\n  {\"index\":3,\"square\":9},\n  {\"index\":4,\"square\":16},\n  {\"index\":5,\"square\":25},\n  {\"index\":6,\"square\":36},\n  {\"index\":7,\"square\":49},\n  {\"index\":8,\"square\":64},\n  {\"index\":9,\"square\":81},\n  {\"index\":10,\"square\":100},\n  {\"index\":11,\"square\":121},\n  {\"index\":12,\"square\":144},\n  {\"index\":13,\"square\":169},\n  {\"index\":14,\"square\":196},\n  {\"index\":15,\"square\":225},\n  {\"index\":16,\"square\":256},\n  {\"index\":17,\"square\":289},\n  {\"index\":18,\"square\":324},\n  {\"index\":19,\"square\":361},\n  {\"index\":20,\"square\":400},\n  {\"index\":21,\"square\":441},\n  {\"index\":22,\"square\":484},\n  {\"index\":23,\"square\":529},\n  {\"index\":24,\"square\":576},\n  {\"index\":25,\"square\":625},\n  {\"index\":26,\"square\":676},\n  {\"index\":27,\"square\":729},\n  {\"index\":28,\"square\":784},\n  {\"index\":29,\"square\":841},\n  {\"index\":30,\"square\":900},\n  {\"index\":31,\"square\":961},\n  {\"index\":32,\"square\":1024},\n  {\"index\":33,\"square\":1089},\n  {\"index\":34,\"square\":1156},\n  {\"index\":35,\"square\":1225},\n  {\"index\":36,\"square\":1296},\n  {\"index\":37,\"square\":1369},\n  {\"index\":38,\"square\":1444},\n  {\"index\":39,\"square\":1521},\n  {\"index\":40,\"square\":1600},\n  {\"index\":41,\"square\":1681},\n  {\"index\":42,\"square\":1764},\n  {\"index\":43,\"square\":1849},\n  {\"index\":44,\"square\":1936},\n  {\"index\":45,\"square\":2025},\n  {\"index\":46,\"square\":2116},\n  {\"index\":47,\"square\":2209},\n  {\"index\":48,\"square\":2304},\n  {\"index\":49,\"square\":2401},\n  {\"index\":50,\"square\":2500}\n]",
          "output_characters": 1450,
          "output_sha256": "ec1727e6c0adbdd1452bff29c15d3802874e5d068da31595184706d022187865",
          "prompt_tokens": 162,
          "reasoning_characters": 281,
          "reasoning_sha256": "e3958f221ef494daa049b63afa91bfc24c260a9c99057d43717b39a113b2e25b",
          "response_tail_seconds": 0.000101,
          "run": 3,
          "stream_done_marker": true,
          "stream_sha256": "dbe2e28ef89bd85af32f8a32393067c05cf09b13197f5286c86dc333ff15f8a5",
          "time_to_first_visible_seconds": 1.598899,
          "time_to_last_output_seconds": 6.336321,
          "ttft_seconds": 0.22882,
          "wall_seconds": 6.336422
        }
      ],
      "time_to_last_output_seconds": {
        "maximum": 6.336,
        "median": 6.157,
        "minimum": 5.871,
        "p90": 6.336
      },
      "ttft_seconds": {
        "maximum": 0.311,
        "median": 0.229,
        "minimum": 0.212,
        "p90": 0.311
      },
      "wall_seconds": {
        "maximum": 6.336,
        "median": 6.157,
        "minimum": 5.871,
        "p90": 6.336
      }
    }
  },
  "prefill": {
    "32768": {
      "cold": {
        "effective_prefill_tokens_per_second": {
          "maximum": 2519.959,
          "median": 2515.352,
          "minimum": 2513.588,
          "p90": 2519.959
        },
        "runs": [
          {
            "cache_salt_sha256": "13a067f9e3dbd19252886af556131ba51a41c65a4a72f2b5a08805f07060b96c",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.085312,
            "decode_tokens_per_second": 82.052,
            "effective_prefill_tokens_per_second": 2513.588,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " behaviour, evidence, constraints, and the",
            "output_characters": 42,
            "output_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "prompt_tokens": 32768,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 32768,
            "response_tail_seconds": 0.000206,
            "run": 1,
            "stream_done_marker": true,
            "stream_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "time_to_first_visible_seconds": 13.036344,
            "time_to_last_output_seconds": 13.121656,
            "ttft_seconds": 13.036344,
            "wall_seconds": 13.121862
          },
          {
            "cache_salt_sha256": "f09633d0e66fb0d4ceb2afbf7a8e960962e8fc01be3ce7c5427fb6e09487e8c1",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.085654,
            "decode_tokens_per_second": 81.724,
            "effective_prefill_tokens_per_second": 2515.352,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " behaviour, evidence, constraints, and the",
            "output_characters": 42,
            "output_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "prompt_tokens": 32768,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 32768,
            "response_tail_seconds": 6.9e-05,
            "run": 2,
            "stream_done_marker": true,
            "stream_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "time_to_first_visible_seconds": 13.027201,
            "time_to_last_output_seconds": 13.112855,
            "ttft_seconds": 13.027201,
            "wall_seconds": 13.112924
          },
          {
            "cache_salt_sha256": "a9f6820647d3744423ca15c0aeed37ecbb79b6ab8d8c3aefe6d6fb19839c6962",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.083468,
            "decode_tokens_per_second": 83.864,
            "effective_prefill_tokens_per_second": 2519.959,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " behaviour, evidence, constraints, and the",
            "output_characters": 42,
            "output_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "prompt_tokens": 32768,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 32768,
            "response_tail_seconds": 8e-05,
            "run": 3,
            "stream_done_marker": true,
            "stream_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "time_to_first_visible_seconds": 13.003387,
            "time_to_last_output_seconds": 13.086856,
            "ttft_seconds": 13.003387,
            "wall_seconds": 13.086936
          }
        ],
        "ttft_seconds": {
          "maximum": 13.036,
          "median": 13.027,
          "minimum": 13.003,
          "p90": 13.036
        }
      },
      "warm_replay": {
        "effective_prefill_tokens_per_second": {
          "maximum": 2524.521,
          "median": 2520.157,
          "minimum": 2519.078,
          "p90": 2524.521
        },
        "runs": [
          {
            "cache_salt_sha256": "13a067f9e3dbd19252886af556131ba51a41c65a4a72f2b5a08805f07060b96c",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.084984,
            "decode_tokens_per_second": 82.369,
            "effective_prefill_tokens_per_second": 2520.157,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " behaviour, evidence, constraints, and the",
            "output_characters": 42,
            "output_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "prompt_tokens": 32768,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 32768,
            "response_tail_seconds": 7.4e-05,
            "run": 1,
            "stream_done_marker": true,
            "stream_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "time_to_first_visible_seconds": 13.002363,
            "time_to_last_output_seconds": 13.087346,
            "ttft_seconds": 13.002363,
            "wall_seconds": 13.08742
          },
          {
            "cache_salt_sha256": "f09633d0e66fb0d4ceb2afbf7a8e960962e8fc01be3ce7c5427fb6e09487e8c1",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.084014,
            "decode_tokens_per_second": 83.32,
            "effective_prefill_tokens_per_second": 2524.521,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " behaviour, evidence, constraints, and the",
            "output_characters": 42,
            "output_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "prompt_tokens": 32768,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 32768,
            "response_tail_seconds": 8.3e-05,
            "run": 2,
            "stream_done_marker": true,
            "stream_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "time_to_first_visible_seconds": 12.979889,
            "time_to_last_output_seconds": 13.063903,
            "ttft_seconds": 12.979889,
            "wall_seconds": 13.063986
          },
          {
            "cache_salt_sha256": "a9f6820647d3744423ca15c0aeed37ecbb79b6ab8d8c3aefe6d6fb19839c6962",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.083029,
            "decode_tokens_per_second": 84.308,
            "effective_prefill_tokens_per_second": 2519.078,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " behaviour, evidence, constraints, and the",
            "output_characters": 42,
            "output_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "prompt_tokens": 32768,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 32768,
            "response_tail_seconds": 8.4e-05,
            "run": 3,
            "stream_done_marker": true,
            "stream_sha256": "128002ef37a31be1bbdb67225d75ef3c0c801e9fa83861d8e04741bdff280850",
            "time_to_first_visible_seconds": 13.007934,
            "time_to_last_output_seconds": 13.090963,
            "ttft_seconds": 13.007934,
            "wall_seconds": 13.091047
          }
        ],
        "ttft_seconds": {
          "maximum": 13.008,
          "median": 13.002,
          "minimum": 12.98,
          "p90": 13.008
        }
      }
    },
    "65536": {
      "cold": {
        "effective_prefill_tokens_per_second": {
          "maximum": 2432.32,
          "median": 2429.792,
          "minimum": 2427.454,
          "p90": 2432.32
        },
        "runs": [
          {
            "cache_salt_sha256": "89c80baeacd98fff2c05e792c8be43b02c31921d5b7bb0539028e4b0c33d9bdb",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.102739,
            "decode_tokens_per_second": 68.134,
            "effective_prefill_tokens_per_second": 2429.792,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " Each observation records behaviour, evidence, constraints",
            "output_characters": 58,
            "output_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "prompt_tokens": 65536,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 65536,
            "response_tail_seconds": 6.9e-05,
            "run": 1,
            "stream_done_marker": true,
            "stream_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "time_to_first_visible_seconds": 26.971859,
            "time_to_last_output_seconds": 27.074599,
            "ttft_seconds": 26.971859,
            "wall_seconds": 27.074668
          },
          {
            "cache_salt_sha256": "0d6f6edac20efc0919bd47731ba492545348ca245e007127126f3bc24cfce9fc",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.101129,
            "decode_tokens_per_second": 69.219,
            "effective_prefill_tokens_per_second": 2432.32,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " observation records behaviour, evidence, constraints,",
            "output_characters": 54,
            "output_sha256": "64de6b20e549222d7456ec41b7e90d976a3186746092d94e04bb350c64dbcfd2",
            "prompt_tokens": 65536,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 65536,
            "response_tail_seconds": 7.5e-05,
            "run": 2,
            "stream_done_marker": true,
            "stream_sha256": "64de6b20e549222d7456ec41b7e90d976a3186746092d94e04bb350c64dbcfd2",
            "time_to_first_visible_seconds": 26.943827,
            "time_to_last_output_seconds": 27.044955,
            "ttft_seconds": 26.943827,
            "wall_seconds": 27.04503
          },
          {
            "cache_salt_sha256": "1674e35389221888332a544323339ee2bc21c8bfb7994f347eaab222c1e8c64a",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.10279,
            "decode_tokens_per_second": 68.1,
            "effective_prefill_tokens_per_second": 2427.454,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " Each observation records behaviour, evidence, constraints",
            "output_characters": 58,
            "output_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "prompt_tokens": 65536,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 65536,
            "response_tail_seconds": 0.000183,
            "run": 3,
            "stream_done_marker": true,
            "stream_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "time_to_first_visible_seconds": 26.997835,
            "time_to_last_output_seconds": 27.100625,
            "ttft_seconds": 26.997835,
            "wall_seconds": 27.100808
          }
        ],
        "ttft_seconds": {
          "maximum": 26.998,
          "median": 26.972,
          "minimum": 26.944,
          "p90": 26.998
        }
      },
      "warm_replay": {
        "effective_prefill_tokens_per_second": {
          "maximum": 2432.519,
          "median": 2431.705,
          "minimum": 2427.464,
          "p90": 2432.519
        },
        "runs": [
          {
            "cache_salt_sha256": "89c80baeacd98fff2c05e792c8be43b02c31921d5b7bb0539028e4b0c33d9bdb",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.101253,
            "decode_tokens_per_second": 69.134,
            "effective_prefill_tokens_per_second": 2427.464,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " Each observation records behaviour, evidence, constraints",
            "output_characters": 58,
            "output_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "prompt_tokens": 65536,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 65536,
            "response_tail_seconds": 9.6e-05,
            "run": 1,
            "stream_done_marker": true,
            "stream_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "time_to_first_visible_seconds": 26.997722,
            "time_to_last_output_seconds": 27.098975,
            "ttft_seconds": 26.997722,
            "wall_seconds": 27.099071
          },
          {
            "cache_salt_sha256": "0d6f6edac20efc0919bd47731ba492545348ca245e007127126f3bc24cfce9fc",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.101522,
            "decode_tokens_per_second": 68.95,
            "effective_prefill_tokens_per_second": 2432.519,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " observation records behaviour, evidence, constraints,",
            "output_characters": 54,
            "output_sha256": "64de6b20e549222d7456ec41b7e90d976a3186746092d94e04bb350c64dbcfd2",
            "prompt_tokens": 65536,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 65536,
            "response_tail_seconds": 8.3e-05,
            "run": 2,
            "stream_done_marker": true,
            "stream_sha256": "64de6b20e549222d7456ec41b7e90d976a3186746092d94e04bb350c64dbcfd2",
            "time_to_first_visible_seconds": 26.94162,
            "time_to_last_output_seconds": 27.043142,
            "ttft_seconds": 26.94162,
            "wall_seconds": 27.043225
          },
          {
            "cache_salt_sha256": "1674e35389221888332a544323339ee2bc21c8bfb7994f347eaab222c1e8c64a",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.101016,
            "decode_tokens_per_second": 69.296,
            "effective_prefill_tokens_per_second": 2431.705,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " Each observation records behaviour, evidence, constraints",
            "output_characters": 58,
            "output_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "prompt_tokens": 65536,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 65536,
            "response_tail_seconds": 7.9e-05,
            "run": 3,
            "stream_done_marker": true,
            "stream_sha256": "3f91e56380da40aa484278ca6ad46278f1415f32fb168c9a22b4e5fb220e39c0",
            "time_to_first_visible_seconds": 26.950641,
            "time_to_last_output_seconds": 27.051657,
            "ttft_seconds": 26.950641,
            "wall_seconds": 27.051736
          }
        ],
        "ttft_seconds": {
          "maximum": 26.998,
          "median": 26.951,
          "minimum": 26.942,
          "p90": 26.998
        }
      }
    },
    "8192": {
      "cold": {
        "effective_prefill_tokens_per_second": {
          "maximum": 2558.634,
          "median": 2545.8,
          "minimum": 2439.26,
          "p90": 2558.634
        },
        "runs": [
          {
            "cache_salt_sha256": "04056393288de44a56ca6735a85da7bb3c153cbcca5300c709e13cc095eea4cc",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.071856,
            "decode_tokens_per_second": 97.417,
            "effective_prefill_tokens_per_second": 2439.26,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " tests, documentation, and release notes.",
            "output_characters": 41,
            "output_sha256": "052dc6176cb0a2e719a14647a717dfa4d0121a0bb7402d3dff7dd2217852cd4d",
            "prompt_tokens": 8192,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 8192,
            "response_tail_seconds": 0.000156,
            "run": 1,
            "stream_done_marker": true,
            "stream_sha256": "052dc6176cb0a2e719a14647a717dfa4d0121a0bb7402d3dff7dd2217852cd4d",
            "time_to_first_visible_seconds": 3.358395,
            "time_to_last_output_seconds": 3.430251,
            "ttft_seconds": 3.358395,
            "wall_seconds": 3.430407
          },
          {
            "cache_salt_sha256": "6f902eaaf1f10d1fabda195babd678c861f37b350c7db3edee64b3ad20ec8ef3",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.073652,
            "decode_tokens_per_second": 95.042,
            "effective_prefill_tokens_per_second": 2545.8,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " documentation, and release notes. Each observation",
            "output_characters": 51,
            "output_sha256": "419fa9657b26154a535dc76436742d22a60ff64a8009c0fe929b11a35b6c39f5",
            "prompt_tokens": 8192,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 8192,
            "response_tail_seconds": 0.000156,
            "run": 2,
            "stream_done_marker": true,
            "stream_sha256": "419fa9657b26154a535dc76436742d22a60ff64a8009c0fe929b11a35b6c39f5",
            "time_to_first_visible_seconds": 3.217849,
            "time_to_last_output_seconds": 3.291501,
            "ttft_seconds": 3.217849,
            "wall_seconds": 3.291657
          },
          {
            "cache_salt_sha256": "384ae67bdce5c2daeee3997cec68bd24ad248a607df2a929b828126a7b5efdfe",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.072273,
            "decode_tokens_per_second": 96.855,
            "effective_prefill_tokens_per_second": 2558.634,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": ", tests, documentation, and release notes",
            "output_characters": 41,
            "output_sha256": "41067174b9993d03b64fee1322cfb0c1ae84ccd92e980017d0765315051c4900",
            "prompt_tokens": 8192,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 8192,
            "response_tail_seconds": 0.00011,
            "run": 3,
            "stream_done_marker": true,
            "stream_sha256": "41067174b9993d03b64fee1322cfb0c1ae84ccd92e980017d0765315051c4900",
            "time_to_first_visible_seconds": 3.201708,
            "time_to_last_output_seconds": 3.273982,
            "ttft_seconds": 3.201708,
            "wall_seconds": 3.274092
          }
        ],
        "ttft_seconds": {
          "maximum": 3.358,
          "median": 3.218,
          "minimum": 3.202,
          "p90": 3.358
        }
      },
      "warm_replay": {
        "effective_prefill_tokens_per_second": {
          "maximum": 2607.216,
          "median": 2600.07,
          "minimum": 2599.551,
          "p90": 2607.216
        },
        "runs": [
          {
            "cache_salt_sha256": "04056393288de44a56ca6735a85da7bb3c153cbcca5300c709e13cc095eea4cc",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.07167,
            "decode_tokens_per_second": 97.67,
            "effective_prefill_tokens_per_second": 2600.07,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " tests, documentation, and release notes.",
            "output_characters": 41,
            "output_sha256": "052dc6176cb0a2e719a14647a717dfa4d0121a0bb7402d3dff7dd2217852cd4d",
            "prompt_tokens": 8192,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 8192,
            "response_tail_seconds": 0.000141,
            "run": 1,
            "stream_done_marker": true,
            "stream_sha256": "052dc6176cb0a2e719a14647a717dfa4d0121a0bb7402d3dff7dd2217852cd4d",
            "time_to_first_visible_seconds": 3.150684,
            "time_to_last_output_seconds": 3.222354,
            "ttft_seconds": 3.150684,
            "wall_seconds": 3.222494
          },
          {
            "cache_salt_sha256": "6f902eaaf1f10d1fabda195babd678c861f37b350c7db3edee64b3ad20ec8ef3",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.073835,
            "decode_tokens_per_second": 94.805,
            "effective_prefill_tokens_per_second": 2599.551,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": " documentation, and release notes. Each observation",
            "output_characters": 51,
            "output_sha256": "419fa9657b26154a535dc76436742d22a60ff64a8009c0fe929b11a35b6c39f5",
            "prompt_tokens": 8192,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 8192,
            "response_tail_seconds": 0.000156,
            "run": 2,
            "stream_done_marker": true,
            "stream_sha256": "419fa9657b26154a535dc76436742d22a60ff64a8009c0fe929b11a35b6c39f5",
            "time_to_first_visible_seconds": 3.151313,
            "time_to_last_output_seconds": 3.225149,
            "ttft_seconds": 3.151313,
            "wall_seconds": 3.225305
          },
          {
            "cache_salt_sha256": "384ae67bdce5c2daeee3997cec68bd24ad248a607df2a929b828126a7b5efdfe",
            "cached_prompt_tokens": 0,
            "completion_tokens": 8,
            "decode_seconds": 0.072489,
            "decode_tokens_per_second": 96.566,
            "effective_prefill_tokens_per_second": 2607.216,
            "finish_reason": "length",
            "measured_sse_events": 2,
            "output": ", tests, documentation, and release notes",
            "output_characters": 41,
            "output_sha256": "41067174b9993d03b64fee1322cfb0c1ae84ccd92e980017d0765315051c4900",
            "prompt_tokens": 8192,
            "reasoning_characters": 0,
            "reasoning_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "requested_prompt_tokens": 8192,
            "response_tail_seconds": 9.8e-05,
            "run": 3,
            "stream_done_marker": true,
            "stream_sha256": "41067174b9993d03b64fee1322cfb0c1ae84ccd92e980017d0765315051c4900",
            "time_to_first_visible_seconds": 3.142049,
            "time_to_last_output_seconds": 3.214539,
            "ttft_seconds": 3.142049,
            "wall_seconds": 3.214637
          }
        ],
        "ttft_seconds": {
          "maximum": 3.151,
          "median": 3.151,
          "minimum": 3.142,
          "p90": 3.151
        }
      }
    }
  },
  "protocol": {
    "prompts_sha256": "0c3ac4015813af6a1b967659bd2289990fde895a5e43ae065b894d1e1f909ecb",
    "prompts_version": "1.0.0",
    "repository_dirty": false,
    "repository_revision": "770c3106729d5b73543afa2d9b498cebda6456f3",
    "repository_source": "git-worktree",
    "repository_source_sha256": "f5503bd3fe66d96d42992fedb6cf0b47f1e7ba560359d455a6e8fc1c471261d7",
    "version": "1.3.0"
  },
  "run": {
    "appliance": {
      "competing_traffic": "none",
      "context_limit": 262144,
      "drafter": "checkpoint MTP head (Mia recipe DRAFTS=1 default)",
      "hardware": "1x NVIDIA DGX Spark (GB10, 128 GB unified memory)",
      "kv_cache_dtype": "fp8 (Mia recipe default)",
      "model": "AxonZeta/Qwen3.8-Flash-Next-AZ-Focus-INT4",
      "model_revision": "5d2f89941ae201fa3458515a6ab06dd51c25e60b",
      "negotiated_link_speed": "not applicable",
      "quantisation": "INT4 AutoRound (GPTQ int4 routed experts), FP8 n-gram table",
      "scheduler": "Mia recipe defaults (--parallel 8, shared KV pool) with VISION=0 and MAX_TOKENS=131072 in .env",
      "serving_engine": "TensorFold Zig engine (tensorfold-native) db281878 + Mia Qwen3.8-Flash-Next single-Spark kit (commit 364f21a)",
      "serving_image": "ghcr.io/miaai-lab/qwen3.8-flash-next-single-dgx-spark-tensorfold:zig-db28187-4144696f21e3 (image id sha256:12f9c5e0ce63f94aa7111736cedfcf4336195473ce0f917b2ad412880414005e)",
      "topology": "single Spark, TP1"
    },
    "comparison_id": "q38-int4-1spark-xhigh",
    "finished_at": "2026-10-14T17:08:18.258810+00:00",
    "label": "q38-int4-ours-xhigh",
    "model": "Qwen3.8-Flash-Next",
    "platform": "Linux-6.17.0-1026-nvidia-aarch64-with-glibc2.39",
    "python": "3.12.3",
    "rigmark_release_check": {
      "ahead_by": 5,
      "behind_by": 0,
      "dirty": false,
      "prerelease": true,
      "release_url": "https://github.com/alexellis/rigmark/releases/tag/v0.0.4",
      "revision": "770c3106729d5b73543afa2d9b498cebda6456f3",
      "status": "ahead",
      "tag": "v0.0.4"
    },
    "started_at": "2026-10-14T16:42:38.578045+00:00"
  },
  "schema": 1,
  "settings": {
    "concurrency": [
      1,
      2,
      4
    ],
    "concurrency_runs": 3,
    "concurrency_tokens": 256,
    "concurrency_workload": "code",
    "decode_tokens": 32768,
    "extra_body": {
      "chat_template_kwargs": {
        "reasoning_effort": "xhigh"
      }
    },
    "prefill_cache_isolation": "random-salt-per-pair",
    "prefill_depths": [
      8192,
      32768,
      65536
    ],
    "prefill_runs": 3,
    "runs": 3,
    "seed": 20260905,
    "temperature": 0.0,
    "top_p": 1.0
  }
}
