[
  {
    "id": "codrops-491efbb3428f-article-0",
    "source": "motion/rendering-and-performance.md",
    "anchor": "a-diagnostic-sequence",
    "sourceSha256": "1523fdeaa290fa064c4db17d36040de3f35ad39bb18a37517ceb5995f97d1dfd",
    "title": "06 / Parametric GPU tubes · buildParameterGrid",
    "principle": "The upload counter distinguishes grid construction from animated uniform updates; this is a mechanism probe, not a frame-rate claim.",
    "application": "A native WebGL vertex shader derives curve positions, finite-difference tangents, a cross-section frame and normals from immutable progress/angle attributes. The animated reveal changes radius rather than transparency. A stable reference-axis fallback prevents zero-length cross products for this bounded curve family; it does not promise a globally continuous frame for arbitrary curves. This binding describes the authored study and does not verify the original project.",
    "code": [
      {
        "file": "vendor/codrops-article-studies/records/codrops-491efbb3428f/script.js",
        "symbol": "buildParameterGrid",
        "explanation": "The named local function implements this mechanism in the downloadable standalone page; its source hash is listed in codeFiles."
      }
    ],
    "checks": [
      {
        "id": "codrops-491efbb3428f-buildParameterGrid",
        "action": "Play motion, change radius and reveal, then change radial sides.",
        "expected": "The grid upload count stays fixed for motion/radius/reveal and increments only when radial topology changes."
      }
    ],
    "runtime_verified": false
  },
  {
    "id": "codrops-491efbb3428f-article-1",
    "source": "design-engineering/component-contract.md",
    "anchor": "contract-template",
    "sourceSha256": "79e496160e28ab26397d2c5b68075fd14c732d13002ff6c6e41c031d86cac039",
    "title": "06 / Parametric GPU tubes · renderStrands",
    "principle": "The brush has native X/Y controls in addition to pointer motion; display inputs stay independent of the decorative shader.",
    "application": "A native WebGL vertex shader derives curve positions, finite-difference tangents, a cross-section frame and normals from immutable progress/angle attributes. The animated reveal changes radius rather than transparency. A stable reference-axis fallback prevents zero-length cross products for this bounded curve family; it does not promise a globally continuous frame for arbitrary curves. This binding describes the authored study and does not verify the original project.",
    "code": [
      {
        "file": "vendor/codrops-article-studies/records/codrops-491efbb3428f/script.js",
        "symbol": "renderStrands",
        "explanation": "The named local function implements this mechanism in the downloadable standalone page; its source hash is listed in codeFiles."
      }
    ],
    "checks": [
      {
        "id": "codrops-491efbb3428f-renderStrands",
        "action": "Enable Static view and move Brush horizontal/vertical using the keyboard.",
        "expected": "The shader renders the requested stationary bend with playback disabled and all values readable."
      }
    ],
    "runtime_verified": false
  },
  {
    "id": "codrops-491efbb3428f-article-2",
    "source": "motion/accessible-motion.md",
    "anchor": "preference-changes-during-work",
    "sourceSha256": "db0ad692d5bb3103a3cbe13ec08dbe5cf12552aed7ecf2c93b1d7cc0b8a34b8b",
    "title": "06 / Parametric GPU tubes · applyMotionPreference",
    "principle": "One effective preference owns CSS and script playback. The initial view is stationary, and manual controls retain the study values.",
    "application": "A native WebGL vertex shader derives curve positions, finite-difference tangents, a cross-section frame and normals from immutable progress/angle attributes. The animated reveal changes radius rather than transparency. A stable reference-axis fallback prevents zero-length cross products for this bounded curve family; it does not promise a globally continuous frame for arbitrary curves. This binding describes the authored study and does not verify the original project.",
    "code": [
      {
        "file": "vendor/codrops-article-studies/records/codrops-491efbb3428f/script.js",
        "symbol": "applyMotionPreference",
        "explanation": "The named local function implements this mechanism in the downloadable standalone page; its source hash is listed in codeFiles."
      }
    ],
    "checks": [
      {
        "id": "codrops-491efbb3428f-applyMotionPreference",
        "action": "Enable Static view during playback, then adjust the visible native controls.",
        "expected": "Playback stops, its button is disabled while the preference applies, and the current values remain inspectable without continuous motion."
      }
    ],
    "runtime_verified": false
  }
]
