{
  "test_case_id": "A11Y-KBD-007",
  "title": "Focus not obscured",
  "category": "keyboard_only",
  "procedure_version": "2026.08.27-rc.9",
  "rule_type": "journey",
  "wcag_criteria": [
    "2.4.11"
  ],
  "level": "AA",
  "risk": "medium",
  "risk_basis": "Checks focus not obscured across the authorised representative sample. People most likely affected: people who use a keyboard, switch device, keyboard emulator or other sequential input. A target may be unreachable, unusable, hidden or impossible to leave without pointer input. In the recorded web-desktop-cross-browser environment, prioritise modal layers, composite widgets, validation and recovery paths, where unreachable controls, an illogical focus sequence or a keyboard trap can stop task completion.",
  "review_status": "draft",
  "reviewed_at": "",
  "review_note": "Template content is subject to a hash-bound internal consistency review. Formal assessment claims require competent execution, current evidence and the applicable legal, participant and organisational authority.",
  "method_label": "Keyboard journey",
  "tester_level": "General QA tester",
  "estimated_duration": "Typically 40–58 minutes for the stated single-target assumptions; use the component breakdown when estimating a real sample.",
  "execution_class": "manual_with_automation_support",
  "automation_support": "supporting_evidence_only",
  "simulation_policy": "simulation_may_support_but_not_replace_manual_execution",
  "plain_summary": "Checks focus not obscured across the authorised representative sample.",
  "objective": "Verify focus not obscured across the authorised representative sample.",
  "test_subject": "The frozen web-content scope operated with a keyboard interface and no pointer assistance.",
  "test_targets": [
    "Each selected function, component and complete-process state relevant to Focus not obscured."
  ],
  "applicability": "Apply Focus not obscured when the frozen web-content scope operated with a keyboard interface and no pointer assistance. The selected focus is Focus not obscured.",
  "applicability_questions": [
    "Does the frozen scope contain a target relevant to Focus not obscured?",
    "Are the required real environments, versions and settings identified separately from diagnostic simulations?",
    "Which default, revealed, error, interruption, recovery and confirmation states can change the result?",
    "Does a scope exclusion need to be reported separately from target applicability?"
  ],
  "inapplicability_conditions": [
    "The frozen scope contains no function, component or state relevant to Focus not obscured."
  ],
  "assumptions": [
    "The selected scope identifies the product version, technologies, states and important user journeys being evaluated.",
    "The tester knows how to use this method and any required assistive technology.",
    "Known browser or assistive-technology limitations are recorded instead of being assigned to the product without evidence."
  ],
  "accessibility_support_assumptions": [
    "The result covers only the browsers, platforms, readers and assistive technologies that were actually tested.",
    "Do not apply a result from one technology combination to an untested combination or to every user."
  ],
  "prerequisites": [
    "The product area and test targets are agreed before testing starts.",
    "The operating system, browser, viewport and input method are recorded.",
    "Test data is safe to use and does not expose unnecessary personal information."
  ],
  "required_environment_fields": [
    "operating_system",
    "operating_system_version",
    "browser",
    "browser_version",
    "viewport_css_pixels",
    "input_method"
  ],
  "steps": [
    {
      "step_id": "S1",
      "title": "Prepare the scope, target and environment",
      "phase": "prepare",
      "test_target": "Each selected function, component and complete-process state relevant to Focus not obscured.",
      "required_state": "For Focus not obscured, the product version and scope are frozen; every selected target and material starting state is uniquely identified.",
      "tool_or_command": "Use the scope record and worksheet environment fields for Focus not obscured: operating_system, operating_system_version, browser, browser_version, viewport_css_pixels, input_method.",
      "action": "Before executing Focus not obscured, freeze the product version and scope. Inventory each applicable target, select the required starting states, prepare safe test data and record every required environment value. Complete any named known-good calibration before attributing an observation to the product.",
      "expected": "The selected targets, states, test data, environment and any scope limitations are complete enough for another qualified tester to reproduce the setup.",
      "failure_observation": "During Focus not obscured, the target, starting state, environment or scope record remains ambiguous for the scenario named Prepare the scope, target and environment. The preparation result cannot be demonstrated: The selected targets, states, test data, environment and any scope limitations are complete enough for another qualified tester to reproduce the setup.",
      "evidence_to_record": "Scope/version reference; target inventory; starting states; safe-data reference; every required environment value; calibration result or reason it is not required.",
      "decision_effect": "For Focus not obscured, an incomplete setup blocks the affected execution or leaves the omitted target untested; it never creates a pass or product failure.",
      "recovery_or_repeat": "For Focus not obscured, correct the setup gap, preserve the original blocked record and start a new execution observation before proceeding.",
      "novice_guidance": "For Focus not obscured, do not begin from an undocumented browser tab, document copy, device state, participant plan or evidence set. Record the exact item you will test first.",
      "limitations_and_claim_boundary": "This scenario records the action named Prepare the scope, target and environment for Focus not obscured in web-desktop-cross-browser. It does not establish behaviour for another target, state or environment and does not set a WCAG conformance decision.",
      "scenario_purpose": "For Focus not obscured, prepare the named scenario: Prepare the scope, target and environment. Target: Each selected function, component and complete-process state relevant to Focus not obscured. The preparation must establish this result: The selected targets, states, test data, environment and any scope limitations are complete enough for another qualified tester to reproduce the setup.",
      "user_impact": "A target may be unreachable, unusable, hidden or impossible to leave without pointer input. This scenario isolates that risk in the action named Prepare the scope, target and environment.",
      "decision_rules": {
        "passed": "Record passed for the Focus not obscured scenario named Prepare the scope, target and environment only when the evidence (Scope/version reference; target inventory; starting states; safe-data reference; every required environment value; calibration result or reason it is not required.) supports: The selected targets, states, test data, environment and any scope limitations are complete enough for another qualified tester to reproduce the setup.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: During Focus not obscured, the target, starting state, environment or scope record remains ambiguous for the scenario named Prepare the scope, target and environment. The preparation result cannot be demonstrated: The selected targets, states, test data, environment and any scope limitations are complete enough for another qualified tester to reproduce the setup.",
        "not_applicable": "The frozen scope contains no function, component or state relevant to Focus not obscured.",
        "blocked": "Record blocked, not passed, when An applicable target, required state, complete process or named real environment was not executed."
      }
    },
    {
      "step_id": "S2",
      "title": "Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present",
      "phase": "test",
      "action": "Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present.",
      "expected": "Author-created content never entirely hides the focused element.",
      "evidence_to_record": "Exact keys, focus sequence, target identity and state. Save the focus sequence, keystrokes, outcome and evidence; record any pointer intervention as a failure or blocked execution.",
      "test_target": "Each selected function, component and complete-process state relevant to Focus not obscured.",
      "required_state": "For Focus not obscured, begin in keyboard focus on the last confirmed target before the action, with no pointer assistance; preserve the exact content, account, platform and configuration used.",
      "tool_or_command": "In web-desktop-cross-browser, Use a physical keyboard with the pointer parked outside the content. Use Tab and Shift+Tab for sequential navigation, the documented arrow keys within composite widgets, Enter or Space for activation, and Escape only where the component defines a close or cancel action.",
      "decision_effect": "For Focus not obscured, compare the recorded observation with this expected result: Author-created content never entirely hides the focused element. A material mismatch fails this target expectation; conflicting platform or responsibility evidence is cannot tell, not a pass.",
      "recovery_or_repeat": "Repeat forward and backward in every applicable responsive, validation, modal and authenticated state. Repeat with the reverse focus direction and in every revealed, validation-error and recovery state that contains the target. Preserve the first Focus not obscured observation when repeating.",
      "novice_guidance": "For Focus not obscured: Keep both hands off the mouse and track the visible focus indicator after every key. If focus disappears, jumps unexpectedly or requires a pointer, stop at that action and record the last reachable target.",
      "scenario_purpose": "For Focus not obscured, execute the named scenario: Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present. Target: Each selected function, component and complete-process state relevant to Focus not obscured. Compare the observation with this result: Author-created content never entirely hides the focused element.",
      "user_impact": "A target may be unreachable, unusable, hidden or impossible to leave without pointer input. This scenario isolates that risk in the action named Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present.",
      "failure_observation": "After the tester completes the Focus not obscured scenario named Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present, the recorded observation for the target is inconsistent with the required result: Author-created content never entirely hides the focused element.",
      "decision_rules": {
        "passed": "Record passed for the Focus not obscured scenario named Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present only when the evidence (Exact keys, focus sequence, target identity and state. Save the focus sequence, keystrokes, outcome and evidence; record any pointer intervention as a failure or blocked execution.) supports: Author-created content never entirely hides the focused element.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: After the tester completes the Focus not obscured scenario named Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present, the recorded observation for the target is inconsistent with the required result: Author-created content never entirely hides the focused element.",
        "not_applicable": "The frozen scope contains no function, component or state relevant to Focus not obscured.",
        "blocked": "Record blocked, not passed, when An applicable target, required state, complete process or named real environment was not executed."
      },
      "limitations_and_claim_boundary": "This scenario records the action named Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present for Focus not obscured in web-desktop-cross-browser. It does not establish behaviour for another target, state or environment and does not set a WCAG conformance decision."
    },
    {
      "step_id": "S3",
      "title": "Repeat material variations and recovery",
      "phase": "test",
      "test_target": "Each selected function, component and complete-process state relevant to Focus not obscured.",
      "required_state": "For Focus not obscured: Default, revealed, loading, empty, validation error, interruption, recovery and confirmation where meaningful. Every required environment, viewport, orientation, language and authenticated state recorded in the frozen scope.",
      "tool_or_command": "For Focus not obscured, use the same recorded method, then change only the state, environment or recovery condition being compared.",
      "action": "Repeat the Focus not obscured action for each inventoried variation that can change the outcome. Include relevant default, revealed, error, interruption, recovery and confirmation states and complete the selected process from start to finish where this test can affect task completion.",
      "expected": "Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
      "failure_observation": "After the tester completes the Focus not obscured scenario named Repeat material variations and recovery, the recorded observation for the target is inconsistent with the required result: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
      "evidence_to_record": "Variation identifier; changed state or environment; start and end points; actual observation; recovery result; intervention; evidence reference and target outcome.",
      "decision_effect": "For Focus not obscured, a reproduced mismatch fails the affected target; an omitted required variation remains untested; conflicting evidence remains cannot tell.",
      "recovery_or_repeat": "Repeat this action for every required variation of Focus not obscured and after a material target, content, state, environment or configuration change. Preserve the original observation.",
      "novice_guidance": "For Focus not obscured, change one material condition at a time where practical. Do not assume that a passing default state covers errors, overlays, orientation changes, interruptions or recovery.",
      "limitations_and_claim_boundary": "This scenario records the action named Repeat material variations and recovery for Focus not obscured in web-desktop-cross-browser. It does not establish behaviour for another target, state or environment and does not set a WCAG conformance decision.",
      "scenario_purpose": "For Focus not obscured, execute the named scenario: Repeat material variations and recovery. Target: Each selected function, component and complete-process state relevant to Focus not obscured. Compare the observation with this result: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
      "user_impact": "A target may be unreachable, unusable, hidden or impossible to leave without pointer input. This scenario isolates that risk in the action named Repeat material variations and recovery.",
      "decision_rules": {
        "passed": "Record passed for the Focus not obscured scenario named Repeat material variations and recovery only when the evidence (Variation identifier; changed state or environment; start and end points; actual observation; recovery result; intervention; evidence reference and target outcome.) supports: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: After the tester completes the Focus not obscured scenario named Repeat material variations and recovery, the recorded observation for the target is inconsistent with the required result: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
        "not_applicable": "The frozen scope contains no function, component or state relevant to Focus not obscured.",
        "blocked": "Record blocked, not passed, when An applicable target, required state, complete process or named real environment was not executed."
      }
    }
  ],
  "expectations": [
    {
      "expectation_id": "E1",
      "statement": "Author-created content never entirely hides the focused element.",
      "outcome_if_unmet": "failed"
    }
  ],
  "exceptions": [
    "Use only an exception stated in the relevant standard, or an agreed out-of-scope decision. Record the reason and evidence.",
    "A tool limitation, lack of time or unavailable assistive technology is a limitation or incomplete result, not a pass."
  ],
  "outcome_definitions": {
    "passed": "The applicable test target meets every expectation in this rule or procedure.",
    "failed": "The applicable test target does not meet at least one expectation in this rule or procedure.",
    "inapplicable": "The test subject contains no target that matches this rule or procedure's applicability.",
    "cantTell": "The tester cannot fully determine applicability or whether every expectation is met.",
    "untested": "The test subject or target was not evaluated using this rule or procedure."
  },
  "examples": [
    {
      "example_id": "A11Y-KBD-007-EX-PASSED",
      "outcome": "passed",
      "scenario": "Representative calibration example, not client evidence. Procedure: Focus not obscured. Target: Each selected function, component and complete-process state relevant to Focus not obscured. Action: Before executing Focus not obscured, freeze the product version and scope. Inventory each applicable target, select the required starting states, prepare safe test data and record every required environment value. Complete any named known-good calibration before attributing an observation to the product. Evidence: Scope/version reference; target inventory; starting states; safe-data reference; every required environment value; calibration result or reason it is not required. Observed result: The selected targets, states, test data, environment and any scope limitations are complete enough for another qualified tester to reproduce the setup."
    },
    {
      "example_id": "A11Y-KBD-007-EX-FAILED",
      "outcome": "failed",
      "scenario": "Representative calibration example, not client evidence. Procedure: Focus not obscured. Target: Each selected function, component and complete-process state relevant to Focus not obscured. The tester completes the recorded action, but the captured evidence does not demonstrate: The selected targets, states, test data, environment and any scope limitations are complete enough for another qualified tester to reproduce the setup. The failed target and state remain separate from unexecuted targets."
    },
    {
      "example_id": "A11Y-KBD-007-EX-INAPPLICABLE",
      "outcome": "inapplicable",
      "scenario": "Representative scope example, not client evidence. The frozen scope contains no function, component or state relevant to Focus not obscured. The completed inventory is retained as the basis for the inapplicable outcome."
    },
    {
      "example_id": "A11Y-KBD-007-EX-CANTTELL",
      "outcome": "cantTell",
      "scenario": "Representative unresolved example, not client evidence. The target is applicable, but conflicting evidence or unresolved responsibility prevents a defensible expectation decision after recorded comparison. The record identifies the conflicting evidence and the expertise or comparison needed to resolve it."
    },
    {
      "example_id": "A11Y-KBD-007-EX-UNTESTED",
      "outcome": "untested",
      "scenario": "Representative execution-gap example, not client evidence. An applicable target, required state, complete process or named real environment was not executed. The missing action, state or environment remains open and is not converted to a pass."
    }
  ],
  "sampling_rule": "Run each selected critical journey from start to finish, including its main error and recovery paths. Record which journeys and states were included.",
  "complete_process_requirement": "If this check is part of a user journey, test the selected journey from start to finish, including relevant errors and recovery. Record any path that was not tested.",
  "pass_criteria": "Author-created content never entirely hides the focused element.",
  "fail_criteria": "Fail if any applicable sampled instance does not satisfy: Author-created content never entirely hides the focused element.",
  "evidence_requirements": [
    "Exact keys, focus sequence, target identity and state.",
    "Visible-focus or target-state evidence at each material step.",
    "Pointer intervention, trap, interruption and recovery outcome."
  ],
  "official_source_ids": [
    "W3C-WCAG22",
    "W3C-ARIA-APG",
    "MICROSOFT-EDGE-A11Y",
    "W3C-WCAG22-TECHNIQUES"
  ],
  "act_rule_mapping": {
    "format_alignment": "This is a project-authored manual procedure, not a W3C Approved ACT Rule.",
    "approved_rule_ids": [],
    "approved_rules": [],
    "mapping_status": "No supporting ACT rule selected",
    "registry_reviewed_at": "2026-08-27",
    "registry_source_id": "W3C-ACT-RULES",
    "mapping_rationale": "An ACT result can support only the part of this procedure covered by that rule. It does not replace the remaining manual or assistive-technology checks."
  },
  "technique_traceability": [
    {
      "wcag_criterion": "2.4.11",
      "understanding_url": "https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html",
      "techniques_registry_source_id": "W3C-WCAG22-TECHNIQUES",
      "technique_ids_applied": [],
      "failure_ids_applied": [],
      "selection_status": "Select relevant techniques during the test",
      "selection_note": "Techniques are examples, not extra requirements. Record any technique or common failure used, but decide the result against the success criterion."
    }
  ],
  "platform_ids": [
    "web-desktop-cross-browser"
  ],
  "review_requirement": "A qualified accessibility reviewer must confirm the scope, evidence and result before it is reported as final.",
  "known_issues": [
    "Check relevant browser, tool or assistive-technology release notes before assigning unexpected behaviour to the product.",
    "If responsibility is unclear, record the reproducible behaviour and use cannot tell until it is resolved."
  ],
  "change_log": [
    {
      "version": "2026.08.27-rc.9",
      "change": "Reworked for plain language, case-focused steps, scoped evidence and transparent draft review status."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Case-specific specialist content, evidence and platform boundaries completed for hash-bound agent verification."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Removed administrative filler steps, added contextual risk and result boundaries, and prepared the concise worksheet flow for internal consistency review."
    }
  ],
  "tags": [
    "critical-journey",
    "keyboard",
    "keyboard_only"
  ],
  "status": "draft",
  "authoring_readiness": "content_complete",
  "short_title": "Focus not obscured",
  "catalogue_version": "2026.08.27-rc.9",
  "identity": {
    "stable_case_id": "A11Y-KBD-007",
    "procedure_title": "Focus not obscured",
    "short_user_centred_title": "Focus not obscured",
    "procedure_version": "2026.08.27-rc.9",
    "catalogue_version": "2026.08.27-rc.9",
    "status": "draft",
    "category": "keyboard_only",
    "procedure_type": "journey",
    "execution_class": "manual_with_automation_support",
    "intended_tester_expertise": "General QA tester",
    "effort_model": {
      "model": "component_effort_v2",
      "small_scope_minutes": {
        "minimum": 40,
        "maximum": 58
      },
      "warning": "Add a new per-target execution and evidence allowance for each additional target class or state that could produce a different result. Add setup time for each distinct environment.",
      "calculation_guidance": "Add the recorded setup, per-target execution, evidence and technical-review components; then apply the stated variation rule.",
      "unit": "minutes",
      "setup": {
        "typical": 12,
        "includes": "Confirm scope and target, prepare safe data, establish the required state and record the tool or environment version."
      },
      "per_target_execution": {
        "typical": 12,
        "includes": "Perform the procedure once for one target in its selected states; this excludes remediation and retesting."
      },
      "evidence_capture": {
        "typical": 8,
        "includes": "Capture, name and cross-reference the minimum reproducible evidence while removing unnecessary personal or secret data."
      },
      "technical_review": {
        "typical": 8,
        "includes": "Check applicability, observations, outcome logic, evidence sufficiency and report wording before issue publication."
      },
      "typical_total_range": {
        "minimum": 40,
        "maximum": 58
      },
      "assumptions": "one short journey with up to ten focusable controls; complex widgets and dialogs add separate scenario runs",
      "variation": "Add a new per-target execution and evidence allowance for each additional target class or state that could produce a different result. Add setup time for each distinct environment.",
      "excludes": "Client coordination, inaccessible-environment recovery, recruitment, legal review, remediation implementation and waiting time unless the procedure states otherwise."
    },
    "related_procedures": [
      "A11Y-WCAG-034"
    ],
    "replaces": [],
    "replaced_by": []
  },
  "purpose_and_user_impact": {
    "barrier_detected": "Checks focus not obscured across the authorised representative sample.",
    "people_likely_affected": [
      "People who use a keyboard, switch device, keyboard emulator or other sequential input."
    ],
    "functionality_or_information_at_risk": "A target may be unreachable, unusable, hidden or impossible to leave without pointer input.",
    "result_scope": "platform_interoperability",
    "claim_boundary": "This procedure records how Focus not obscured behaves on web-desktop-cross-browser. It can expose evidence relevant to WCAG 2.4.11 for the tested task and environment. Use the linked conformance procedures for WCAG 2.4.11 to assess the complete requirements across the declared conformance scope.",
    "why_it_matters": "A target may be unreachable, unusable, hidden or impossible to leave without pointer input. The procedure is necessary because checks focus not obscured across the authorised representative sample and the result can otherwise conceal a material barrier for the affected people named here."
  },
  "requirement_mappings": [
    {
      "source_id": "W3C-WCAG22",
      "requirement_id": "2.4.11",
      "requirement_level": "AA",
      "requirement_type": "secondary",
      "coverage_type": "partial",
      "canonical_source": "https://www.w3.org/TR/WCAG22/",
      "source_status": "W3C Recommendation",
      "source_version_or_publication_date": "WCAG 2.2; 12 December 2024 Recommendation",
      "date_verified": "2026-08-27",
      "reviewer_notes": "The mapping describes the intended scope of this draft procedure. Independent standards review remains required.",
      "limitations": "This Keyboard journey observes Focus not obscured in the recorded web-desktop-cross-browser environment. Use the linked WCAG 2.4.11 conformance procedure to evaluate all normative parts of WCAG 2.4.11 across the declared scope.",
      "dependent_fields": [
        "applicability_model",
        "normative_exceptions",
        "steps",
        "decision_logic"
      ]
    },
    {
      "source_id": "W3C-ARIA-APG",
      "requirement_id": "W3C-ARIA-APG",
      "requirement_level": "informative",
      "requirement_type": "advisory",
      "coverage_type": "supporting",
      "canonical_source": "https://www.w3.org/WAI/ARIA/apg/",
      "source_status": "living_guidance",
      "source_version_or_publication_date": "Current ARIA Authoring Practices Guide",
      "date_verified": "2026-08-27",
      "reviewer_notes": "Supporting source. Procedure-level content review remains recorded separately.",
      "limitations": "This source does not override WCAG or create an additional WCAG conformance requirement.",
      "dependent_fields": [
        "prerequisites",
        "environment",
        "steps"
      ]
    },
    {
      "source_id": "MICROSOFT-EDGE-A11Y",
      "requirement_id": "MICROSOFT-EDGE-A11Y",
      "requirement_level": "informative",
      "requirement_type": "advisory",
      "coverage_type": "supporting",
      "canonical_source": "https://learn.microsoft.com/en-us/microsoft-edge/devtools/accessibility/reference",
      "source_status": "vendor_guidance",
      "source_version_or_publication_date": "Current first-party publication; exact version pending source review",
      "date_verified": "2026-08-27",
      "reviewer_notes": "Supporting source. Procedure-level content review remains recorded separately.",
      "limitations": "This source does not override WCAG or create an additional WCAG conformance requirement.",
      "dependent_fields": [
        "prerequisites",
        "environment",
        "steps"
      ]
    },
    {
      "source_id": "W3C-WCAG22-TECHNIQUES",
      "requirement_id": "W3C-WCAG22-TECHNIQUES",
      "requirement_level": "informative",
      "requirement_type": "advisory",
      "coverage_type": "supporting",
      "canonical_source": "https://www.w3.org/WAI/WCAG22/Techniques/",
      "source_status": "living_guidance",
      "source_version_or_publication_date": "Techniques for WCAG 2.2",
      "date_verified": "2026-08-27",
      "reviewer_notes": "Supporting source. Procedure-level content review remains recorded separately.",
      "limitations": "This source does not override WCAG or create an additional WCAG conformance requirement.",
      "dependent_fields": [
        "prerequisites",
        "environment",
        "steps"
      ]
    }
  ],
  "applicability_model": {
    "test_subject": "The frozen web-content scope operated with a keyboard interface and no pointer assistance.",
    "test_targets": [
      "Each selected function, component and complete-process state relevant to Focus not obscured."
    ],
    "objective_questions": [
      "Does the frozen scope contain a target relevant to Focus not obscured?",
      "Are the required real environments, versions and settings identified separately from diagnostic simulations?",
      "Which default, revealed, error, interruption, recovery and confirmation states can change the result?",
      "Does a scope exclusion need to be reported separately from target applicability?"
    ],
    "subjective_judgements": [
      "Record any judgement about meaning, equivalence, task success, platform responsibility or exception use with evidence for independent review."
    ],
    "inapplicability_conditions": [
      "The frozen scope contains no function, component or state relevant to Focus not obscured."
    ],
    "scope_exclusions": [
      "An agreed exclusion is a reporting limitation, not an inapplicable target and not a pass."
    ],
    "required_states_and_variations": [
      "Default, revealed, loading, empty, validation error, interruption, recovery and confirmation where meaningful.",
      "Every required environment, viewport, orientation, language and authenticated state recorded in the frozen scope."
    ],
    "complete_process_dependencies": "Run each selected critical process from its defined start through success, at least one representative error, interruption and recovery, and confirmation where the focus can affect task completion.",
    "conforming_alternate_version_considerations": "A conforming alternate version can affect a WCAG report only when all WCAG conformance conditions are verified separately. It does not erase a platform or usability observation."
  },
  "normative_exceptions": [],
  "normative_exceptions_absent_reason": "This platform, journey, usability or quality procedure creates no additional normative exception. Apply exceptions only in the linked atomic or criterion-level conformance procedure and preserve that separate decision.",
  "environment": {
    "required_tester_expertise": "General QA tester",
    "required_platforms": [
      "web-desktop-cross-browser"
    ],
    "minimum_environment_fields": [
      "operating_system",
      "operating_system_version",
      "browser",
      "browser_version",
      "viewport_css_pixels",
      "input_method"
    ],
    "product_and_content_version_required": true,
    "viewport_and_orientation_required": true,
    "input_mode_required": true,
    "relevant_settings": [
      "Keyboard layout",
      "Browser caret-browsing setting",
      "Operating-system sticky/filter key settings",
      "Input method"
    ],
    "known_platform_limitations": [
      "This keyboard journey does not establish compatibility with every switch device or speech-input system.",
      "Check relevant browser, tool or assistive-technology release notes before assigning unexpected behaviour to the product.",
      "If responsibility is unclear, record the reproducible behaviour and use cannot tell until it is resolved."
    ],
    "clean_state_requirements": [
      "Complete a known-good calibration in the same environment before product testing.",
      "Start from a recorded clean or known state and preserve any prior preferences, extensions, cache or profile settings that can affect output."
    ],
    "test_data_and_privacy_constraints": [
      "Use authorised synthetic or controlled data.",
      "Do not record credentials, secrets or unnecessary personal data."
    ],
    "coverage_boundary": "This keyboard journey does not establish compatibility with every switch device or speech-input system."
  },
  "decision_logic": {
    "target_passed": "Author-created content never entirely hides the focused element.",
    "target_failed": "An applicable Focus not obscured target has a reproducible material barrier against one or more stated expectations; identify the exact expectation, state and evidence.",
    "target_inapplicable": "The frozen scope contains no function, component or state relevant to Focus not obscured.",
    "target_cant_tell": "The target is applicable, but conflicting evidence or unresolved responsibility prevents a defensible expectation decision after recorded comparison.",
    "target_untested": "An applicable target, required state, complete process or named real environment was not executed.",
    "aggregation": "Preserve every target/environment outcome. Any failed target prevents an overall passed procedure result. cantTell and untested remain unresolved; inapplicable is valid only when the completed inventory contains no applicable target.",
    "wcag_requirement_decision": "This specialist, platform, document, usability or quality result does not set a WCAG success criterion to satisfied or not_satisfied automatically. Use linked atomic and criterion-level procedures for that separate decision.",
    "conforming_alternate_version_effect": "Record alternate-version evidence separately. It does not erase a barrier in this tested version or environment.",
    "passed_automation_follow_up": "A checker, accessibility-tree inspection, emulator or simulated assistive technology is diagnostic evidence only. Complete every required manual, real-platform, contextual and exception check.",
    "platform_responsibility": "Compare the product with a known-good control and an authorised alternate environment. Record product defect, external limitation or unresolved responsibility only when evidence supports it; otherwise use cantTell.",
    "claim_readiness": "Schema validation or a passed target never creates a conformance or release claim. Required executions, a distinct competent review, limitations and any applicable legal, participant or organisational authority remain separate gates."
  },
  "evidence_specification": [
    {
      "evidence_id": "EV1",
      "method": "interaction_sequence",
      "record": "Exact keys, focus sequence, target identity and state.",
      "review_purpose": "Allow an independent reviewer to reproduce the target, environment, action, actual behaviour and decision.",
      "privacy_and_security": "Reference or redact sensitive material. Do not store credentials, secrets, unnecessary personal data or unconsented participant data.",
      "required_for_formal_result": true
    },
    {
      "evidence_id": "EV2",
      "method": "visual_record",
      "record": "Visible-focus or target-state evidence at each material step.",
      "review_purpose": "Allow an independent reviewer to reproduce the target, environment, action, actual behaviour and decision.",
      "privacy_and_security": "Reference or redact sensitive material. Do not store credentials, secrets, unnecessary personal data or unconsented participant data.",
      "required_for_formal_result": true
    },
    {
      "evidence_id": "EV3",
      "method": "recovery_record",
      "record": "Pointer intervention, trap, interruption and recovery outcome.",
      "review_purpose": "Allow an independent reviewer to reproduce the target, environment, action, actual behaviour and decision.",
      "privacy_and_security": "Reference or redact sensitive material. Do not store credentials, secrets, unnecessary personal data or unconsented participant data.",
      "required_for_formal_result": true
    }
  ],
  "calibration_examples": [
    {
      "example_id": "A11Y-KBD-007-EX-PASS",
      "outcome": "passed",
      "scenario": "In web-desktop-cross-browser, the selected Focus not obscured target completes the recorded action and meets this expectation: Author-created content never entirely hides the focused element.",
      "explanation": "The example is a calibration scenario, not an execution or approval.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-KBD-007-EX-FAIL",
      "outcome": "failed",
      "scenario": "An applicable Focus not obscured target produces a reproducible barrier during the named action, with the exact state and affected user task recorded.",
      "explanation": "A failed target remains failed even if another environment or target passes.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-KBD-007-EX-INAPPLICABLE",
      "outcome": "inapplicable",
      "scenario": "The frozen scope contains no function, component or state relevant to Focus not obscured.",
      "explanation": "Inapplicable requires a completed inventory showing that no target matches applicability; a missing environment is not inapplicable.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-KBD-007-EX-CANTTELL",
      "outcome": "cantTell",
      "scenario": "The Focus not obscured target is applicable, but conflicting product/platform evidence or missing authoritative information prevents a defensible responsibility or expectation decision.",
      "explanation": "Record the conflict, comparisons attempted and person or evidence needed to resolve it.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-KBD-007-EX-UNTESTED",
      "outcome": "untested",
      "scenario": "The Focus not obscured target is applicable, but a required state, complete process or real environment was not executed.",
      "explanation": "Untested remains incomplete and cannot be converted to passed or inapplicable.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    }
  ],
  "review_record": {
    "author": "",
    "method_reviewer": "",
    "independent_standards_reviewer": "",
    "accessibility_ui_reviewer": "",
    "author_date": "",
    "method_review_date": "",
    "standards_review_date": "",
    "ui_review_date": "",
    "source_versions_reviewed": [],
    "exceptions_reviewed": false,
    "known_limitations": [
      "This keyboard journey does not establish compatibility with every switch device or speech-input system.",
      "Real execution evidence and any customer-required legal, participant or organisational authority remain separate."
    ],
    "open_issues": [
      "Execute all required real environments and calibration cases.",
      "Complete a distinct competent review and retain any unresolved material finding as blocked or cantTell."
    ],
    "decision": "pending",
    "next_review_date": "",
    "status_transition_reason": "",
    "release_gate_id": "",
    "release_gate_completed_at": "",
    "approval_authority": "",
    "approval_date": ""
  },
  "privacy_and_security": {
    "browser_storage": "Worksheet data is stored only in this browser's local storage until the user exports or clears it.",
    "network_transmission": "The static library does not upload worksheet data.",
    "data_minimisation": "Record only evidence necessary to reproduce and review the decision.",
    "redaction": "Remove credentials, secrets and unnecessary personal or participant data before export or sharing.",
    "retention_and_deletion": "Apply the engagement retention schedule and clear local browser data when it is no longer required."
  },
  "version_history": [
    {
      "version": "2026.08.27-rc.9",
      "change": "Reworked for plain language, case-focused steps, scoped evidence and transparent draft review status."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Migrated to professional catalogue schema v3 with separated outcomes, structured authority, applicability, evidence, decision and review records."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Specialist procedure mapped to its task family and current first-party platform guidance and checked for internal consistency; competent review and real execution remain separate."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Added explicit preparation and variation/recovery steps plus a bounded representative worked example for paid-template use."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Procedure guidance and presentation simplified without changing draft governance status."
    }
  ],
  "migration": {
    "from_schema": "accessibility-test-catalog.v2",
    "from_procedure_version": "2026.08.04.1",
    "migrated_at": "2026-08-27",
    "content_review_state": "commercial_completeness_upgrade_agent_verified",
    "stable_identifier_preserved": true,
    "legacy_url_preserved": true,
    "delivery_model": "professional_delivery_v2",
    "agent_content_validation": {
      "status": "complete",
      "method": "case_specific_semantic_and_operational_checks_v1",
      "checked_fields": [
        "target",
        "state",
        "tool",
        "action",
        "expected_observation",
        "failure_observation",
        "evidence",
        "outcome_rules",
        "claim_boundary",
        "compact_examples"
      ],
      "human_approval_effect": "none"
    }
  },
  "test_type": "platform_interoperability",
  "related_procedures": [
    "A11Y-WCAG-034"
  ],
  "platform_validation": {
    "required": false,
    "evidence_status": "not_executed",
    "real_device_or_at_claimed": false,
    "required_environment_ids": [
      "web-desktop-cross-browser"
    ],
    "calibration_required": true,
    "evidence_refs": [],
    "limitations": "This keyboard journey does not establish compatibility with every switch device or speech-input system."
  },
  "effort_guidance": {
    "unit": "minutes",
    "setup": {
      "typical": 12,
      "includes": "Confirm scope and target, prepare safe data, establish the required state and record the tool or environment version."
    },
    "per_target_execution": {
      "typical": 12,
      "includes": "Perform the procedure once for one target in its selected states; this excludes remediation and retesting."
    },
    "evidence_capture": {
      "typical": 8,
      "includes": "Capture, name and cross-reference the minimum reproducible evidence while removing unnecessary personal or secret data."
    },
    "technical_review": {
      "typical": 8,
      "includes": "Check applicability, observations, outcome logic, evidence sufficiency and report wording before issue publication."
    },
    "typical_total_range": {
      "minimum": 40,
      "maximum": 58
    },
    "assumptions": "one short journey with up to ten focusable controls; complex widgets and dialogs add separate scenario runs",
    "variation": "Add a new per-target execution and evidence allowance for each additional target class or state that could produce a different result. Add setup time for each distinct environment.",
    "excludes": "Client coordination, inaccessible-environment recovery, recruitment, legal review, remediation implementation and waiting time unless the procedure states otherwise."
  },
  "worked_examples": [
    {
      "example_id": "A11Y-KBD-007-WORKED-001",
      "example_kind": "representative_synthetic_example",
      "context": "Representative synthetic example for Focus not obscured on a fictional, version-frozen product target; no client or participant execution occurred.",
      "inspected": "The tester follows S2 (Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present) using the target, required state, tool and repeat rule stated in this procedure.",
      "observed_output": "After the tester completes the Focus not obscured scenario named Traverse content while sticky headers, cookie banners, drawers and virtual keyboards are present, the recorded observation for the target is inconsistent with the required result: Author-created content never entirely hides the focused element.",
      "evidence_captured": [
        "example-evidence-001: target and state record for Each selected function, component and complete-process state relevant to Focus not obscured.",
        "example-evidence-002: contemporaneous observation from the named method — Exact keys, focus sequence, target identity and state. Save the focus sequence, keystrokes, outcome and evidence; record any pointer intervention as a failure or blocked execution.",
        "example-evidence-003: comparison note linking the actual observation to the expected result and claim boundary"
      ],
      "tester_reasoning": "The recorded observation does not demonstrate the expected result: Author-created content never entirely hides the focused element. The failed decision is limited to this synthetic target and state; unexecuted coverage is not inferred.",
      "decision": "failed",
      "completed_finding": {
        "finding_id": "A11Y-KBD-007-example-finding-001",
        "title": "Focus not obscured: expected result is not demonstrated",
        "severity": "medium",
        "user_impact": "The represented barrier may affect People who use a keyboard, switch device, keyboard emulator or other sequential input.",
        "evidence_refs": [
          "example-evidence-001",
          "example-evidence-002",
          "example-evidence-003"
        ]
      },
      "remediation_advice": "Change the represented target or process so it demonstrates this result: Author-created content never entirely hides the focused element. Then rerun the affected step and every dependent variation.",
      "reviewer_feedback": "The reviewer confirms applicability, environment, actual-versus-expected comparison, evidence references and bounded wording; unsupported product-wide or conformance language is removed.",
      "final_client_report_wording": "Synthetic training finding: the sampled Focus not obscured target does not meet the procedure expectation in the recorded state. User impact and broader scope require evidence from the buyer's real execution.",
      "retest_outcome": "Synthetic retest example: after the represented change, repeat the failed step plus material error and recovery states. Close the finding only when new evidence demonstrates the expected result; otherwise retain the non-pass outcome.",
      "claim_boundary": "This is a representative, synthetic worked example for training and calibration. It is not evidence from a client product, participant or real assistive-technology execution."
    }
  ]
}
