Bow Tie Kreative WCAG Grammar

Example rules

LAKA-WCAG-DRAG-ALTERNATIVE

wcag_requirement change level: Major Change execution: NOT_TESTED

Object

reorderable list — A concrete authorized component instance; bind before execution.

States: populated moving reordered

Applicability — IF

  • function.uses_dragging

Requirement — THEN REQUIRE

  • OR
    • pointer.same_function_without_dragging
    • drag.essential_exception_verified
    • drag.unmodified_browser_exception_verified

WCAG references

Implementation

Choose a simple-pointer move control and separately check keyboard operation.

LAKA instantiation

Object
reorderable list in the declared test scope.
Conditions
Use the listed states with a recorded role, fixture and environment.
Actions
Execute the named task and its relevant recovery transitions.
Tools
Use repository test adapters and qualified manual review where needed.
Resources
Synthetic fixtures, a test environment, accountable owner and evidence store.
Outcomes
The function has a valid non-drag single-pointer route or a proven criterion exception.
Feedback
Preserve observations and create a linked regression check after repair.
Constraints
Do not weaken security, erase information or reduce task functionality.
Value
Support independent operation of this task without the recorded barrier.
Failure mode
An assertion fails, remains unknown or regresses in a relevant state.

Measurement lenses: Scope Detectability Propagation Reversibility

Full record

examples/laka-wcag-drag-alternative.json
{
  "id": "LAKA-WCAG-DRAG-ALTERNATIVE",
  "version": "1.0.0",
  "authority": "wcag_requirement",
  "source_refs": [
    "SC-2.5.7"
  ],
  "wcag_refs": [
    {
      "criterion_id": "2.5.7",
      "level": "AA"
    }
  ],
  "covers_full_criteria": false,
  "object": {
    "type": "reorderable list",
    "scope": "A concrete authorized component instance; bind before execution.",
    "states": [
      "populated",
      "moving",
      "reordered"
    ]
  },
  "applicability": {
    "predicate": "function.uses_dragging"
  },
  "require": {
    "any": [
      {
        "predicate": "pointer.same_function_without_dragging"
      },
      {
        "predicate": "drag.essential_exception_verified"
      },
      {
        "predicate": "drag.unmodified_browser_exception_verified"
      }
    ]
  },
  "exceptions": [
    {
      "clause": "2.5.7 essential dragging or unmodified user-agent behavior",
      "instance_scope": "Only the specific function for which evidence is recorded.",
      "proof_required": true,
      "review_required": true
    }
  ],
  "implementation": "Choose a simple-pointer move control and separately check keyboard operation.",
  "laka": {
    "change_level": "Major Change",
    "internal_variables": {
      "Object": "reorderable list in the declared test scope.",
      "Conditions": "Use the listed states with a recorded role, fixture and environment.",
      "Actions": "Execute the named task and its relevant recovery transitions.",
      "Tools": "Use repository test adapters and qualified manual review where needed.",
      "Resources": "Synthetic fixtures, a test environment, accountable owner and evidence store.",
      "Outcomes": "The function has a valid non-drag single-pointer route or a proven criterion exception.",
      "Feedback": "Preserve observations and create a linked regression check after repair.",
      "Constraints": "Do not weaken security, erase information or reduce task functionality.",
      "Value": "Support independent operation of this task without the recorded barrier.",
      "Failure mode": "An assertion fails, remains unknown or regresses in a relevant state."
    },
    "meta_variables": [
      "Scope",
      "Detectability",
      "Propagation",
      "Reversibility"
    ]
  },
  "tests": [
    {
      "method": "mixed",
      "steps": [
        "Reach the reorder function.",
        "Complete the same move using simple pointer activation, not dragging.",
        "Inspect the outcome and any claimed exception."
      ],
      "expected": "The function has a valid non-drag single-pointer route or a proven criterion exception.",
      "evidence_required": [
        "build and test fixture",
        "rendered interaction observations",
        "reviewed manual evidence where required"
      ]
    }
  ],
  "metrics": [
    {
      "measure": "supported required assertions",
      "unit": "count",
      "decision": "No false or unresolved required assertions.",
      "denominator": "All applicable planned assertions for this bound instance."
    }
  ],
  "guardrails": [
    "A keyboard-only alternative cannot substitute for the pointer assertion.",
    "Retain the item and its correct position."
  ],
  "owner": "Assigned accessibility implementation owner",
  "execution_status": "NOT_TESTED"
}

This rule as JSON →