LAWSOFUX · motion lab
Concept · cognitive-bias

Cognitive Bias

Center-out radial pulse palette · cobalt / cream takeaways · 3

Definition

Judgment routinely departs from rational expected-value reasoning because the brain runs heuristics to conserve effort. These shortcuts produce predictable distortions — confirmation bias, anchoring, availability — that shape what users notice, believe, and remember about a product. Bias is not failure; bias is the default cognitive operating mode.

Why it matters for ShurIQ reports

Reports are read through bias filters: an executive who already favors Player A will interpret a tied score as a win for A. The brief must therefore expose the methodology, surface counter-evidence, and force comparison rather than allow confirmation. Evidence trails and SBPI rubric breakdowns exist exactly to slow the bias machinery before a stack rank gets weaponized internally.

Takeaways

Visual motion language

Apply a brief shake-warn pulse on contradictory evidence as it loads, then resolve to a steady state with a soft accent color. The micro-disruption interrupts pattern-matching just long enough to register the counter-signal.

Cavalry recreation seed. Three concentric ellipses (640×420, 480×280, 320×180), all darker cobalt with 0.5 opacity, centered. Pupil = 90px circle cream. Animate sequence: outer ellipse fades in over 800ms; middle ellipse 600ms after with 600ms; inner ellipse 1200ms in with 500ms; pupil scales 0→1 with elastic-light at 1.6s. After 4s static, slow sine-pulse the pupil 1→1.08→1 over 2.4s. Loop.

Origins

Amos Tversky and Daniel Kahneman, 1972 — formalized cognitive bias through heuristics-and-biases research.

Cavalry scene

The script below builds this concept's motion in Cavalry through the Stallion bridge. Pipe to cavalry_run_script via MCP, or paste into Cavalry's JavaScript Editor.

// Laws of UX · cognitive-bias · Cavalry scene
// Motion family: center-out radial pulse
// Palette: cobalt + cream
// To run: pipe to cavalry_run_script tool, or paste into Cavalry's JavaScript Editor
// Built 2026-04-30 by ShurAI

(function () {
  var PREFIX = "claude_lawofux_cognitive-bias_";

  var existing = api.getAllSceneLayers();
  for (var i = 0; i < existing.length; i++) {
    try {
      var nm = api.getNiceName(existing[i]);
      if (nm && nm.indexOf("claude_lawofux_") === 0) api.deleteLayer(existing[i]);
    } catch (e) {}
  }

  var BG    = "#1E5C8C";
  var DARK  = "#163E5C";
  var CREAM = "#D6CDB0";

  var bg = api.primitive("rectangle", PREFIX + "bg");
  api.set(bg, { "generator.dimensions": [1080, 1080] });
  api.setFill(bg, true);
  api.set(bg, { "material.materialColor": BG });

  // Three concentric flattened ellipses (eye)
  var rings = [
    { name: "outer", w: 320, h: 210 },
    { name: "mid",   w: 240, h: 140 },
    { name: "inner", w: 160, h:  90 }
  ];

  for (var i = 0; i < rings.length; i++) {
    var r = rings[i];
    var e = api.primitive("ellipse", PREFIX + "ring_" + r.name);
    api.set(e, {
      "generator.radius": [r.w, r.h],
      "position.x": 0, "position.y": 0,
      "opacity": 0
    });
    api.setFill(e, true);
    api.set(e, { "material.materialColor": DARK });

    var inF = i * 14;
    var fullF = inF + 18;
    api.keyframe(e, inF,   { "opacity": 0  });
    api.keyframe(e, fullF, { "opacity": 50 });
  }

  // Pupil
  var pupil = api.primitive("ellipse", PREFIX + "pupil");
  api.set(pupil, {
    "generator.radius": [45, 45],
    "position.x": 0, "position.y": 0,
    "opacity": 0,
    "scale.x": 0.3, "scale.y": 0.3
  });
  api.setFill(pupil, true);
  api.set(pupil, { "material.materialColor": CREAM });

  api.keyframe(pupil, 38, { "opacity": 0,   "scale.x": 0.3, "scale.y": 0.3 });
  api.keyframe(pupil, 56, { "opacity": 100, "scale.x": 1.0, "scale.y": 1.0 });
  api.magicEasing(pupil, "scale.x", 56, "EaseOut", "");
  api.magicEasing(pupil, "scale.y", 56, "EaseOut", "");

  // Sustained slow pulse
  api.keyframe(pupil, 90,  { "scale.x": 1.0,  "scale.y": 1.0  });
  api.keyframe(pupil, 120, { "scale.x": 1.08, "scale.y": 1.08 });
  api.keyframe(pupil, 150, { "scale.x": 1.0,  "scale.y": 1.0  });

  var layerCount = api.getAllSceneLayers().length;
  console.log("scene built: cognitive-bias (" + layerCount + " layers)");
})();