{
  "schemaVersion": 1,
  "type": "principle",
  "id": "fitts-law",
  "evaluation": {
    "reviewedOn": "2026-10-19",
    "status": "limited",
    "modes": [
      "application-fixture"
    ],
    "summary": "The example kept a comfortably sized Delete target, keyboard confirmation, cancellation and recovery. Target geometry alone did not provide the safety boundary.",
    "reportUrl": "/design-evaluations/principle-fitts-law.json",
    "identity": {
      "target": "Original IonBin synthetic interface example; no external product or human-participant study.",
      "version": "2026-10-19 local fixture",
      "integrity": "SHA-256 f85d1056afd667225a1e0364edfb8f25b4693ffa7b2b8c7d7af5b92338b85ee4 identifies the exact HTML fixture only."
    },
    "environment": [
      "155.0.8059.82 Chromium; fresh context with all network requests blocked.",
      "Synthetic inputs, memory-only state, reduced-motion preference, 1280px and 320px viewports."
    ],
    "tests": [
      {
        "name": "Target size",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "Delete button measured 99.5625 by 44 CSS pixels at 1280px viewport."
      },
      {
        "name": "Confirm focus",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "Keyboard activation opened confirmation with focus on Keep draft."
      },
      {
        "name": "Cancel is nondestructive",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "Cancel retained the synthetic draft and returned focus to Delete."
      },
      {
        "name": "Recovery",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "Confirmed deletion changed only memory state; Restore brought it back."
      },
      {
        "name": "Small screen",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "At 320px the fixture had no horizontal document overflow and retained the 44px minimum example target."
      }
    ],
    "security": {
      "scope": "Review of the local example’s stated interaction boundaries; no backend, authentication, production permissions or external service was exercised.",
      "findings": [
        {
          "level": "caution",
          "basis": "advice",
          "title": "Confirmation is only a UI boundary",
          "detail": "The synthetic confirmation protected tab-memory state. A real service still needs server authorization, duplicate-action handling and a recovery policy."
        }
      ],
      "limits": [
        "The example has no real authorization or persistence layer; its UI behavior cannot establish the security of a deployed workflow."
      ]
    },
    "practicalCaveats": [
      "Measure the clickable area at relevant zoom and device sizes, then separately check consequence and reversal."
    ],
    "limits": [
      "This checks an authored application example, not the truth, effect size or generality of the named principle.",
      "No users, assistive-technology participants, physical devices or production task outcomes were evaluated."
    ],
    "sources": [
      {
        "label": "Fitts, The Information Capacity of the Human Motor System (1954)",
        "url": "https://www2.psychology.uiowa.edu/faculty/mordkoff/infoproc/pdfs/Fitts%201954.pdf",
        "scope": "Original paper, university-hosted copy."
      },
      {
        "label": "W3C: Target Size Minimum",
        "url": "https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html",
        "scope": "WCAG 2.2 AA size, spacing and exceptions."
      },
      {
        "label": "W3C: Target Size Enhanced",
        "url": "https://www.w3.org/WAI/WCAG22/Understanding/target-size-enhanced.html",
        "scope": "Separate AAA criterion."
      },
      {
        "label": "W3C: Error Prevention for Legal, Financial and Data Actions",
        "url": "https://www.w3.org/WAI/WCAG22/Understanding/error-prevention-legal-financial-data.html",
        "scope": "Reversal, checking or confirmation for the criterion's specified consequential submissions."
      }
    ]
  }
}
