{
  "test_case_id": "A11Y-VOM-005",
  "title": "VoiceOver with Safari on macOS: Dynamic status and asynchronous updates",
  "category": "screen_reader_desktop",
  "procedure_version": "2026.08.27-rc.9",
  "rule_type": "journey",
  "wcag_criteria": [
    "4.1.3"
  ],
  "level": "AA",
  "risk": "medium",
  "risk_basis": "Checks dynamic status and asynchronous updates using a real, named VoiceOver with Safari on macOS environment without treating an accessibility-tree simulation as coverage. People most likely affected: blind people and others who use speech output, screen-reader navigation or a virtual cursor. The named screen-reader environment may hide structure, announce misleading output or prevent task completion. In the recorded macos-voiceover-safari environment, check browse and focus modes, structural navigation, live changes and recovery; misleading speech or cursor position can hide context even when controls remain visually available.",
  "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": "Desktop screen-reader journey",
  "tester_level": "Experienced screen-reader tester",
  "estimated_duration": "Typically 69–100 minutes for the stated single-target assumptions; use the component breakdown when estimating a real sample.",
  "execution_class": "real_device_manual",
  "automation_support": "supporting_evidence_only",
  "simulation_policy": "simulation_prohibited_for_coverage",
  "plain_summary": "Checks dynamic status and asynchronous updates using a real, named VoiceOver with Safari on macOS environment without treating an accessibility-tree simulation as coverage.",
  "objective": "Verify dynamic status and asynchronous updates using a real, named VoiceOver with Safari on macOS environment without treating an accessibility-tree simulation as coverage.",
  "test_subject": "A frozen critical task executed with the named desktop screen reader and browser.",
  "test_targets": [
    "The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment."
  ],
  "applicability": "Apply VoiceOver with Safari on macOS: Dynamic status and asynchronous updates when a frozen critical task executed with the named desktop screen reader and browser. The selected focus is Dynamic status and asynchronous updates.",
  "applicability_questions": [
    "Does the frozen scope contain a target relevant to Dynamic status and asynchronous updates?",
    "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 content, control or task relevant to Dynamic status and asynchronous updates."
  ],
  "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": [
    "A licensed or legitimately installed current screen reader is running on the named supported platform.",
    "The tester is proficient with the screen reader and its browser interaction modes.",
    "Exact OS, browser, screen-reader and synthesizer versions are recorded.",
    "The journey uses authorised synthetic or controlled client data."
  ],
  "required_environment_fields": [
    "operating_system",
    "operating_system_version",
    "browser",
    "browser_version",
    "viewport_css_pixels",
    "input_method",
    "assistive_technology",
    "assistive_technology_version"
  ],
  "steps": [
    {
      "step_id": "S1",
      "title": "Prepare the scope, target and environment",
      "phase": "prepare",
      "test_target": "The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment.",
      "required_state": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates: operating_system, operating_system_version, browser, browser_version, viewport_css_pixels, input_method, assistive_technology, assistive_technology_version.",
      "action": "Before executing VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, correct the setup gap, preserve the original blocked record and start a new execution observation before proceeding.",
      "novice_guidance": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates in macos-voiceover-safari. It does not establish behaviour for another target, state or environment and does not set a WCAG conformance decision.",
      "scenario_purpose": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, prepare the named scenario: Prepare the scope, target and environment. Target: The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment. 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": "The named screen-reader environment may hide structure, announce misleading output or prevent task completion. This scenario isolates that risk in the action named Prepare the scope, target and environment.",
      "decision_rules": {
        "passed": "Record passed for the VoiceOver with Safari on macOS: Dynamic status and asynchronous updates 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 content, control or task relevant to Dynamic status and asynchronous updates.",
        "blocked": "Record blocked, not passed, when An applicable target, required state, complete process or named real environment was not executed."
      }
    },
    {
      "step_id": "S2",
      "title": "Trigger loading, search results, save success, errors and progress without moving focus",
      "phase": "test",
      "action": "Trigger loading, search results, save success, errors and progress without moving focus; record speech in sequence.",
      "expected": "Important status changes are announced once, at the right time and without an unnecessary focus change.",
      "evidence_to_record": "Exact announcement or speech-history/caption extract with command, cursor/focus and state.",
      "test_target": "The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment.",
      "required_state": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, begin in the validation-error state immediately after submitting representative invalid input; preserve the exact content, account, platform and configuration used.",
      "tool_or_command": "In macos-voiceover-safari, With the screen reader running, use VoiceOver cursor navigation, Quick Nav, the rotor and web-item navigation; record the VoiceOver caption panel or exact spoken output.",
      "decision_effect": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, compare the recorded observation with this expected result: Important status changes are announced once, at the right time and without an unnecessary focus change. A material mismatch fails this target expectation; conflicting platform or responsibility evidence is cannot tell, not a pass.",
      "recovery_or_repeat": "Repeat the journey without visual assistance, capture exact announcements/focus behaviour and attach evidence that does not expose client secrets. Repeat with linear navigation and the relevant element list or quick-navigation command, then repeat material task states after content or focus changes. Preserve the first VoiceOver with Safari on macOS: Dynamic status and asynchronous updates observation when repeating.",
      "novice_guidance": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates: Calibrate the screen reader on a known-good page first. Keep the active cursor or mode in the record, because the same key can behave differently in browse and focus modes.",
      "scenario_purpose": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, execute the named scenario: Trigger loading, search results, save success, errors and progress without moving focus. Target: The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment. Compare the observation with this result: Important status changes are announced once, at the right time and without an unnecessary focus change.",
      "user_impact": "The named screen-reader environment may hide structure, announce misleading output or prevent task completion. This scenario isolates that risk in the action named Trigger loading, search results, save success, errors and progress without moving focus.",
      "failure_observation": "After the tester completes the VoiceOver with Safari on macOS: Dynamic status and asynchronous updates scenario named Trigger loading, search results, save success, errors and progress without moving focus, the recorded observation for the target is inconsistent with the required result: Important status changes are announced once, at the right time and without an unnecessary focus change.",
      "decision_rules": {
        "passed": "Record passed for the VoiceOver with Safari on macOS: Dynamic status and asynchronous updates scenario named Trigger loading, search results, save success, errors and progress without moving focus only when the evidence (Exact announcement or speech-history/caption extract with command, cursor/focus and state.) supports: Important status changes are announced once, at the right time and without an unnecessary focus change.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: After the tester completes the VoiceOver with Safari on macOS: Dynamic status and asynchronous updates scenario named Trigger loading, search results, save success, errors and progress without moving focus, the recorded observation for the target is inconsistent with the required result: Important status changes are announced once, at the right time and without an unnecessary focus change.",
        "not_applicable": "The frozen scope contains no content, control or task relevant to Dynamic status and asynchronous updates.",
        "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 Trigger loading, search results, save success, errors and progress without moving focus for VoiceOver with Safari on macOS: Dynamic status and asynchronous updates in macos-voiceover-safari. 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": "The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment.",
      "required_state": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates: 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, use the same recorded method, then change only the state, environment or recovery condition being compared.",
      "action": "Repeat the VoiceOver with Safari on macOS: Dynamic status and asynchronous updates 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates and after a material target, content, state, environment or configuration change. Preserve the original observation.",
      "novice_guidance": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates in macos-voiceover-safari. It does not establish behaviour for another target, state or environment and does not set a WCAG conformance decision.",
      "scenario_purpose": "For VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, execute the named scenario: Repeat material variations and recovery. Target: The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment. 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": "The named screen-reader environment may hide structure, announce misleading output or prevent task completion. This scenario isolates that risk in the action named Repeat material variations and recovery.",
      "decision_rules": {
        "passed": "Record passed for the VoiceOver with Safari on macOS: Dynamic status and asynchronous updates 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates 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 content, control or task relevant to Dynamic status and asynchronous updates.",
        "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": "Important status changes are announced once, at the right time and without an unnecessary focus change.",
      "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-VOM-005-EX-PASSED",
      "outcome": "passed",
      "scenario": "Representative calibration example, not client evidence. Procedure: VoiceOver with Safari on macOS: Dynamic status and asynchronous updates. Target: The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment. Action: Before executing VoiceOver with Safari on macOS: Dynamic status and asynchronous updates, 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-VOM-005-EX-FAILED",
      "outcome": "failed",
      "scenario": "Representative calibration example, not client evidence. Procedure: VoiceOver with Safari on macOS: Dynamic status and asynchronous updates. Target: The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment. 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-VOM-005-EX-INAPPLICABLE",
      "outcome": "inapplicable",
      "scenario": "Representative scope example, not client evidence. The frozen scope contains no content, control or task relevant to Dynamic status and asynchronous updates. The completed inventory is retained as the basis for the inapplicable outcome."
    },
    {
      "example_id": "A11Y-VOM-005-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-VOM-005-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": "Important status changes are announced once, at the right time and without an unnecessary focus change.",
  "fail_criteria": "Fail if any applicable sampled instance does not satisfy: Important status changes are announced once, at the right time and without an unnecessary focus change.",
  "evidence_requirements": [
    "Operating system, browser, screen reader, synthesiser, settings and clean-state declaration.",
    "Exact announcement or speech-history/caption extract with command, cursor/focus and state.",
    "Success, validation error, interruption, recovery and confirmation results plus every fallback.",
    "Product, browser, operating-system, screen-reader and configuration comparisons supporting attribution or cantTell."
  ],
  "official_source_ids": [
    "W3C-WCAG22",
    "W3C-ARIA-APG",
    "APPLE-VOICEOVER-MAC",
    "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": "4.1.3",
      "understanding_url": "https://www.w3.org/WAI/WCAG22/Understanding/status-messages.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": [
    "macos-voiceover-safari"
  ],
  "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": [
    "desktop",
    "real-at",
    "screen_reader_desktop",
    "vom"
  ],
  "status": "draft",
  "authoring_readiness": "content_complete",
  "short_title": "VoiceOver with Safari on macOS: Dynamic status and asynchronous updates",
  "catalogue_version": "2026.08.27-rc.9",
  "identity": {
    "stable_case_id": "A11Y-VOM-005",
    "procedure_title": "VoiceOver with Safari on macOS: Dynamic status and asynchronous updates",
    "short_user_centred_title": "VoiceOver with Safari on macOS: Dynamic status and asynchronous updates",
    "procedure_version": "2026.08.27-rc.9",
    "catalogue_version": "2026.08.27-rc.9",
    "status": "draft",
    "category": "screen_reader_desktop",
    "procedure_type": "journey",
    "execution_class": "real_device_manual",
    "intended_tester_expertise": "Experienced screen-reader tester",
    "effort_model": {
      "model": "component_effort_v2",
      "small_scope_minutes": {
        "minimum": 69,
        "maximum": 100
      },
      "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": 20,
        "includes": "Confirm scope and target, prepare safe data, establish the required state and record the tool or environment version."
      },
      "per_target_execution": {
        "typical": 25,
        "includes": "Perform the procedure once for one target in its selected states; this excludes remediation and retesting."
      },
      "evidence_capture": {
        "typical": 12,
        "includes": "Capture, name and cross-reference the minimum reproducible evidence while removing unnecessary personal or secret data."
      },
      "technical_review": {
        "typical": 12,
        "includes": "Check applicability, observations, outcome logic, evidence sufficiency and report wording before issue publication."
      },
      "typical_total_range": {
        "minimum": 69,
        "maximum": 100
      },
      "assumptions": "one short journey in one recorded browser and screen-reader pair; mode changes, errors and dynamic states increase execution time",
      "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-055"
    ],
    "replaces": [],
    "replaced_by": []
  },
  "purpose_and_user_impact": {
    "barrier_detected": "Checks dynamic status and asynchronous updates using a real, named VoiceOver with Safari on macOS environment without treating an accessibility-tree simulation as coverage.",
    "people_likely_affected": [
      "Blind people and others who use speech output, screen-reader navigation or a virtual cursor."
    ],
    "functionality_or_information_at_risk": "The named screen-reader environment may hide structure, announce misleading output or prevent task completion.",
    "result_scope": "platform_interoperability",
    "claim_boundary": "This procedure records how VoiceOver with Safari on macOS: Dynamic status and asynchronous updates behaves on macos-voiceover-safari. It can expose evidence relevant to WCAG 4.1.3 for the tested task and environment. Use the linked conformance procedures for WCAG 4.1.3 to assess the complete requirements across the declared conformance scope.",
    "why_it_matters": "The named screen-reader environment may hide structure, announce misleading output or prevent task completion. The procedure is necessary because checks dynamic status and asynchronous updates using a real, named VoiceOver with Safari on macOS environment without treating an accessibility-tree simulation as coverage and the result can otherwise conceal a material barrier for the affected people named here."
  },
  "requirement_mappings": [
    {
      "source_id": "W3C-WCAG22",
      "requirement_id": "4.1.3",
      "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 Desktop screen-reader journey observes VoiceOver with Safari on macOS: Dynamic status and asynchronous updates in the recorded macos-voiceover-safari environment. Use the linked WCAG 4.1.3 conformance procedure to evaluate all normative parts of WCAG 4.1.3 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": "platform",
      "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": "APPLE-VOICEOVER-MAC",
      "requirement_id": "APPLE-VOICEOVER-MAC",
      "requirement_level": "informative",
      "requirement_type": "platform",
      "coverage_type": "supporting",
      "canonical_source": "https://support.apple.com/guide/voiceover/web-commands-vo27972/mac",
      "source_status": "vendor_guidance",
      "source_version_or_publication_date": "Current VoiceOver User Guide for Mac; checked 5 August 2026",
      "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": "platform",
      "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": "A frozen critical task executed with the named desktop screen reader and browser.",
    "test_targets": [
      "The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment."
    ],
    "objective_questions": [
      "Does the frozen scope contain a target relevant to Dynamic status and asynchronous updates?",
      "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 content, control or task relevant to Dynamic status and asynchronous updates."
    ],
    "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": "Experienced screen-reader tester",
    "required_platforms": [
      "macos-voiceover-safari"
    ],
    "minimum_environment_fields": [
      "operating_system",
      "operating_system_version",
      "browser",
      "browser_version",
      "viewport_css_pixels",
      "input_method",
      "assistive_technology",
      "assistive_technology_version"
    ],
    "product_and_content_version_required": true,
    "viewport_and_orientation_required": true,
    "input_mode_required": true,
    "relevant_settings": [
      "Screen-reader mode",
      "Keyboard layout",
      "Synthesiser and speech rate",
      "Verbosity",
      "Browser extensions",
      "Speech-history or caption-output setting"
    ],
    "known_platform_limitations": [
      "Only a real execution in the exact recorded screen-reader/browser combination provides coverage. Simulation and accessibility-tree inspection do not.",
      "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": "Only a real execution in the exact recorded screen-reader/browser combination provides coverage. Simulation and accessibility-tree inspection do not."
  },
  "decision_logic": {
    "target_passed": "Important status changes are announced once, at the right time and without an unnecessary focus change.",
    "target_failed": "An applicable Dynamic status and asynchronous updates 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 content, control or task relevant to Dynamic status and asynchronous updates.",
    "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": "environment_record",
      "record": "Operating system, browser, screen reader, synthesiser, settings and clean-state declaration.",
      "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": "assistive_technology_output",
      "record": "Exact announcement or speech-history/caption extract with command, cursor/focus 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": "EV3",
      "method": "journey_record",
      "record": "Success, validation error, interruption, recovery and confirmation results plus every fallback.",
      "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": "EV4",
      "method": "responsibility_record",
      "record": "Product, browser, operating-system, screen-reader and configuration comparisons supporting attribution or cantTell.",
      "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-VOM-005-EX-PASS",
      "outcome": "passed",
      "scenario": "In macos-voiceover-safari, the selected Dynamic status and asynchronous updates target completes the recorded action and meets this expectation: Important status changes are announced once, at the right time and without an unnecessary focus change.",
      "explanation": "The example is a calibration scenario, not an execution or approval.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-VOM-005-EX-FAIL",
      "outcome": "failed",
      "scenario": "An applicable Dynamic status and asynchronous updates 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-VOM-005-EX-INAPPLICABLE",
      "outcome": "inapplicable",
      "scenario": "The frozen scope contains no content, control or task relevant to Dynamic status and asynchronous updates.",
      "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-VOM-005-EX-CANTTELL",
      "outcome": "cantTell",
      "scenario": "The Dynamic status and asynchronous updates 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-VOM-005-EX-UNTESTED",
      "outcome": "untested",
      "scenario": "The Dynamic status and asynchronous updates 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": [
      "Only a real execution in the exact recorded screen-reader/browser combination provides coverage. Simulation and accessibility-tree inspection do not.",
      "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-055"
  ],
  "platform_validation": {
    "required": true,
    "evidence_status": "not_executed",
    "real_device_or_at_claimed": false,
    "required_environment_ids": [
      "macos-voiceover-safari"
    ],
    "calibration_required": true,
    "evidence_refs": [],
    "limitations": "Only a real execution in the exact recorded screen-reader/browser combination provides coverage. Simulation and accessibility-tree inspection do not."
  },
  "effort_guidance": {
    "unit": "minutes",
    "setup": {
      "typical": 20,
      "includes": "Confirm scope and target, prepare safe data, establish the required state and record the tool or environment version."
    },
    "per_target_execution": {
      "typical": 25,
      "includes": "Perform the procedure once for one target in its selected states; this excludes remediation and retesting."
    },
    "evidence_capture": {
      "typical": 12,
      "includes": "Capture, name and cross-reference the minimum reproducible evidence while removing unnecessary personal or secret data."
    },
    "technical_review": {
      "typical": 12,
      "includes": "Check applicability, observations, outcome logic, evidence sufficiency and report wording before issue publication."
    },
    "typical_total_range": {
      "minimum": 69,
      "maximum": 100
    },
    "assumptions": "one short journey in one recorded browser and screen-reader pair; mode changes, errors and dynamic states increase execution time",
    "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-VOM-005-WORKED-001",
      "example_kind": "representative_synthetic_example",
      "context": "Representative synthetic example for VoiceOver with Safari on macOS: Dynamic status and asynchronous updates on a fictional, version-frozen product target; no client or participant execution occurred.",
      "inspected": "The tester follows S2 (Trigger loading, search results, save success, errors and progress without moving focus) using the target, required state, tool and repeat rule stated in this procedure.",
      "observed_output": "After the tester completes the VoiceOver with Safari on macOS: Dynamic status and asynchronous updates scenario named Trigger loading, search results, save success, errors and progress without moving focus, the recorded observation for the target is inconsistent with the required result: Important status changes are announced once, at the right time and without an unnecessary focus change.",
      "evidence_captured": [
        "example-evidence-001: target and state record for The selected task, content and controls relevant to Dynamic status and asynchronous updates in the exact recorded desktop environment.",
        "example-evidence-002: contemporaneous observation from the named method — Exact announcement or speech-history/caption extract with command, cursor/focus and state.",
        "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: Important status changes are announced once, at the right time and without an unnecessary focus change. The failed decision is limited to this synthetic target and state; unexecuted coverage is not inferred.",
      "decision": "failed",
      "completed_finding": {
        "finding_id": "A11Y-VOM-005-example-finding-001",
        "title": "VoiceOver with Safari on macOS: Dynamic status and asynchronous updates: expected result is not demonstrated",
        "severity": "medium",
        "user_impact": "The represented barrier may affect Blind people and others who use speech output, screen-reader navigation or a virtual cursor.",
        "evidence_refs": [
          "example-evidence-001",
          "example-evidence-002",
          "example-evidence-003"
        ]
      },
      "remediation_advice": "Change the represented target or process so it demonstrates this result: Important status changes are announced once, at the right time and without an unnecessary focus change. 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 VoiceOver with Safari on macOS: Dynamic status and asynchronous updates 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."
    }
  ]
}
