{
  "schemaVersion": 1,
  "type": "principle",
  "id": "doherty-threshold",
  "evaluation": {
    "reviewedOn": "2026-10-19",
    "status": "limited",
    "modes": [
      "application-fixture"
    ],
    "summary": "The simulated operation exposed pending, failure and success states in order and disabled duplicate activation while pending. Its fixed delay is not a performance benchmark.",
    "reportUrl": "/design-evaluations/principle-doherty-threshold.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": "Pending is not success",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "Pending state appeared and duplicate activation was disabled before the simulated operation completed."
      },
      {
        "name": "Honest failure",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "Failure was stated in text and did not erase the input or claim a successful save."
      },
      {
        "name": "Honest completion",
        "mode": "application-fixture",
        "method": "Exercise the original local application fixture and inspect the resulting controls or DOM state.",
        "result": "pass",
        "observation": "Completion offered review/edit wording after the simulated success state."
      }
    ],
    "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": "Fast feedback must not invent success",
          "detail": "The fixture announced success only after its simulated outcome. Production systems need truthful server outcomes, idempotency and uncertainty handling."
        }
      ],
      "limits": [
        "The example has no real authorization or persistence layer; its UI behavior cannot establish the security of a deployed workflow."
      ]
    },
    "practicalCaveats": [
      "Measure real interaction latency and task completion separately; a spinner does not prove acceptable performance."
    ],
    "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": "Doherty and Thadhani: The Economic Value of Rapid Response Time (1982)",
        "url": "https://jlelliotton.blogspot.com/p/the-economic-value-of-rapid-response.html",
        "scope": "Third-party transcription of the original report; scan fidelity not independently established."
      },
      {
        "label": "web.dev: Interaction to Next Paint",
        "url": "https://web.dev/articles/inp",
        "scope": "Metric definition and current field-performance thresholds."
      },
      {
        "label": "W3C: Status Messages",
        "url": "https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html",
        "scope": "Programmatic status communication."
      }
    ]
  }
}
