{
  "name": "Color Pick Scale Generation Protocol",
  "version": "scale-generation-protocol-1.0.0",
  "benchmarkVersion": "1.0.0",
  "published": "2026-07-22",
  "scope": "Deterministic comparison of four interpolation spaces for an 11-step 50–950 design-token scale anchored at shade 500.",
  "shadeLabels": [
    50,
    100,
    200,
    300,
    400,
    500,
    600,
    700,
    800,
    900,
    950
  ],
  "anchor": {
    "shade": 500,
    "treatment": "The normalized six-digit sRGB seed is preserved exactly."
  },
  "weights": {
    "50": {
      "target": "white",
      "amount": 0.94
    },
    "100": {
      "target": "white",
      "amount": 0.86
    },
    "200": {
      "target": "white",
      "amount": 0.7
    },
    "300": {
      "target": "white",
      "amount": 0.5
    },
    "400": {
      "target": "white",
      "amount": 0.25
    },
    "500": {
      "target": "seed",
      "amount": 0
    },
    "600": {
      "target": "black",
      "amount": 0.12
    },
    "700": {
      "target": "black",
      "amount": 0.26
    },
    "800": {
      "target": "black",
      "amount": 0.43
    },
    "900": {
      "target": "black",
      "amount": 0.6
    },
    "950": {
      "target": "black",
      "amount": 0.75
    }
  },
  "methods": {
    "hsl": "Interpolate HSL saturation and lightness toward achromatic white or black while retaining the seed hue.",
    "srgb": "Interpolate gamma-encoded sRGB channels toward white or black.",
    "linear-srgb": "Decode sRGB channels to linear light, interpolate, then encode to sRGB.",
    "oklch": "Interpolate OKLCH lightness and chroma toward achromatic white or black while retaining seed hue; reduce chroma at fixed lightness and hue when mapping to sRGB."
  },
  "output": {
    "gamut": "sRGB",
    "rounding": "Round only the final output to 8-bit uppercase six-digit HEX; calculate measurements from those emitted values."
  },
  "metrics": {
    "adjacentUniformity": "Delta E OK between each adjacent emitted shade; report mean, population standard deviation, and coefficient of variation.",
    "lightness": "Count any increase greater than 0.0005 OKLCH L while moving from shade 50 to 950.",
    "hueDrift": "Circular OKLCH hue difference from the seed for shades with measured chroma at least 0.02.",
    "contrast": "Unrounded WCAG 2.x relative-luminance contrast ratio against #FFFFFF and #000000; 3:1 and 4.5:1 are treated as thresholds.",
    "gamut": "Count OKLCH outputs that required chroma reduction to enter sRGB."
  },
  "boundaries": [
    "The scale labels follow the common 50–950 design-token convention; this protocol does not reproduce Tailwind CSS palette-generation internals.",
    "A more even Delta E OK progression is not automatically more usable, accessible, or visually preferable.",
    "Contrast counts are pair evidence, not a complete accessibility audit or certification."
  ]
}
