{
  "schemaVersion": 1,
  "date": "2026-10-14",
  "component": "ProjectTimeline",
  "webVersion": "0.8.1",
  "starterVersion": "0.8.1",
  "status": "complete",
  "result": "Supported within the reviewed WCAG 2.2 A/AA component scope.",
  "scope": "Compiled web SDK and Enterprise OutSystems component output; no full-page or application conformance claim. Community excluded.",
  "reviewedConfiguration": "English, built-in Light/Dark palettes, pinned TodayDate, default/compact/interactive/read-only/loading/empty/error states; representative Safari 26.3 with macOS VoiceOver.",
  "criteriaUrl": "/downloads/project-timeline-criteria-2026-10-14.json",
  "criterionCount": 55,
  "automated": {
    "independentCompiledFormats": [
      "web ESM SDK",
      "native standalone IIFE"
    ],
    "scans": 32,
    "checks": 76,
    "violations": 0,
    "incompleteRules": 0,
    "widths": [
      320,
      390,
      812,
      1440
    ],
    "minimumTextContrast": 14.74608389479954,
    "focusContrast": {
      "Light": 6.28,
      "Dark": 6.94
    },
    "regressionScenarios": 8,
    "dateUnitBaselineScenarios": 4,
    "baselineUrl": "/downloads/project-timeline-verification-0.8.0.json"
  },
  "assistiveTechnology": {
    "date": "2026-10-14",
    "at": "macOS VoiceOver with Safari 26.3",
    "status": "complete",
    "observations": [
      {
        "case": "web-task-details",
        "surface": "web SDK fixture",
        "expected": "Task label, dates, progress, description and button role",
        "observed": "Discover the opportunity Oct 5, 2026 - Oct 9, 2026 \u2022 100% complete Customer interviews and a focused brief, button, has keyboard focus",
        "result": "passed",
        "timestamp": "2026-10-14T15:41:42.504340+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.0 unchanged task semantics baseline"
      },
      {
        "case": "web-activation-0-activate",
        "surface": "web SDK fixture",
        "expected": "Task activation callback",
        "observed": "ItemClick: research",
        "result": "passed",
        "timestamp": "2026-10-14T15:42:12.472776+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.0 unchanged task semantics baseline"
      },
      {
        "case": "web-activation-1-tab",
        "surface": "web SDK fixture",
        "expected": "Sequential keyboard focus",
        "observed": "Design the experience Oct 8, 2026 - Oct 16, 2026 \u2022 65% complete, button",
        "result": "passed",
        "timestamp": "2026-10-14T15:42:16.561261+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.0 unchanged task semantics baseline"
      },
      {
        "case": "web-activation-2-read-focus",
        "surface": "web SDK fixture",
        "expected": "Keyboard focus exposed",
        "observed": "Design the experience Oct 8, 2026 - Oct 16, 2026 \u2022 65% complete, button, has keyboard focus",
        "result": "passed",
        "timestamp": "2026-10-14T15:42:20.901584+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.0 unchanged task semantics baseline"
      },
      {
        "case": "web-milestone",
        "surface": "web SDK fixture",
        "expected": "Milestone type and date",
        "observed": "Launch Milestone \u2022 Oct 26, 2026, button",
        "result": "passed",
        "timestamp": "2026-10-14T15:42:25.751402+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.0 unchanged task semantics baseline"
      },
      {
        "case": "final-web-recovery-v2",
        "surface": "web SDK fixture",
        "expected": "Recovery result announcement",
        "observed": "5 timeline items loaded.",
        "result": "passed",
        "timestamp": "2026-10-14T15:51:19.284050+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "final-web-empty-direct-v2",
        "surface": "web SDK fixture",
        "expected": "Direct empty results announced",
        "observed": "No tasks to display.",
        "result": "passed",
        "timestamp": "2026-10-14T15:51:26.805843+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "final-web-error-v2",
        "surface": "web SDK fixture",
        "expected": "Component-only error announced",
        "observed": "Discover the opportunity start must be a valid YYYY-MM- DD calendar date.",
        "result": "passed",
        "timestamp": "2026-10-14T15:51:35.226897+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "final-web-loading",
        "surface": "web SDK fixture",
        "expected": "Loading announced",
        "observed": "Loading timeline...",
        "result": "passed",
        "timestamp": "2026-10-14T15:52:02.936425+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-disabled",
        "surface": "web SDK fixture",
        "expected": "Disabled task exposed",
        "observed": "Design the experience (unavailable) Oct 8, 2026 - Oct 16 2026 \u2022 65% complete, dimmed, button",
        "result": "passed",
        "timestamp": "2026-10-14T15:53:29.407492+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-disabled-traversal-0-next",
        "surface": "web SDK fixture",
        "expected": "List position and enabled task",
        "observed": "Build and connect Oct 12, 2026 - Oct 23, 2026 \u2022 25% complete, button, 3 of 5",
        "result": "passed",
        "timestamp": "2026-10-14T15:53:36.068765+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-disabled-traversal-1-next",
        "surface": "web SDK fixture",
        "expected": "Ordered task traversal",
        "observed": "Accessibility review Oct 19, 2026 - Oct 23, 2026 \u2022 0% complete, button, 4 of 5",
        "result": "passed",
        "timestamp": "2026-10-14T15:53:40.157377+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-disabled-traversal-2-next",
        "surface": "web SDK fixture",
        "expected": "Milestone list position",
        "observed": "Launch Milestone \u2022 Oct 26, 2026, button, 5 of 5",
        "result": "passed",
        "timestamp": "2026-10-14T15:53:44.263678+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-readonly-region",
        "surface": "web SDK fixture",
        "expected": "Named read-only region",
        "observed": "Project timeline, region",
        "result": "passed",
        "timestamp": "2026-10-14T15:54:06.267452+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-readonly-list-0-next",
        "surface": "web SDK fixture",
        "expected": "Visible range in reading order",
        "observed": "Oct 1, 2026 - Oct 31, 2026",
        "result": "passed",
        "timestamp": "2026-10-14T15:54:11.769780+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-readonly-list-1-next",
        "surface": "web SDK fixture",
        "expected": "Today date in reading order",
        "observed": "Today \u2022 Oct 14, 2026",
        "result": "passed",
        "timestamp": "2026-10-14T15:54:15.331060+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-readonly-list-2-next",
        "surface": "web SDK fixture",
        "expected": "List semantics",
        "observed": "list 5 items",
        "result": "passed",
        "timestamp": "2026-10-14T15:54:19.397098+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "web-readonly-list-3-next",
        "surface": "web SDK fixture",
        "expected": "Read-only item, no button",
        "observed": "Discover the opportunity, 1 of 5",
        "result": "passed",
        "timestamp": "2026-10-14T15:54:23.406904+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-activation-1-tab",
        "surface": "published Enterprise OutSystems",
        "expected": "Native list/button semantics",
        "observed": "Build and connect Oct 12, 2026 - Oct 23, 2026 \u2022 25% complete, button, list 5 items",
        "result": "passed",
        "timestamp": "2026-10-14T15:59:37.783830+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-activation-2-read-focus",
        "surface": "published Enterprise OutSystems",
        "expected": "Native keyboard focus",
        "observed": "Build and connect Oct 12, 2026 - Oct 23, 2026 \u2022 25% complete, button, has keyboard focus",
        "result": "passed",
        "timestamp": "2026-10-14T15:59:41.503775+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-loading",
        "surface": "published Enterprise OutSystems",
        "expected": "Live native loading announcement",
        "observed": "Loading timeline...",
        "result": "passed",
        "timestamp": "2026-10-14T15:59:45.464086+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-loaded",
        "surface": "published Enterprise OutSystems",
        "expected": "Live native completed loading",
        "observed": "5 timeline items loaded.",
        "result": "passed",
        "timestamp": "2026-10-14T16:00:40.438102+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-full-label",
        "surface": "published Enterprise OutSystems",
        "expected": "Live native full task description",
        "observed": "Discover the opportunity Oct 5, 2026 - Oct 9, 2026 \u2022 100% complete Customer interviews and a focused brief,",
        "result": "passed",
        "timestamp": "2026-10-14T16:00:47.659485+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-recovery",
        "surface": "published Enterprise OutSystems",
        "expected": "Live native recovery",
        "observed": "5 timeline items loaded.",
        "result": "passed",
        "timestamp": "2026-10-14T16:01:26.760064+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-milestone",
        "surface": "published Enterprise OutSystems",
        "expected": "Live native milestone date and button",
        "observed": "Launch Milestone \u2022 Oct 26, 2026, button, has keyboard focus",
        "result": "passed",
        "timestamp": "2026-10-14T16:01:43.517514+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-validation-during-input",
        "surface": "published Enterprise OutSystems",
        "expected": "Native validation announced on input without focus movement",
        "observed": "RangeStart must be a valid YYYY-MM-DD calendar date.",
        "result": "passed",
        "timestamp": "2026-10-14T16:06:09.068470+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-final-clean-recovery",
        "surface": "published Enterprise OutSystems",
        "expected": "Native recovery after pasted invalid data",
        "observed": "5 timeline items loaded.",
        "result": "passed",
        "timestamp": "2026-10-14T16:07:10.413948+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      },
      {
        "case": "native-readonly-switch",
        "surface": "published Enterprise OutSystems",
        "expected": "Live native read-only control state",
        "observed": "unchecked, Isinteractive, checkbox",
        "result": "passed",
        "timestamp": "2026-10-14T16:07:25.153359+00:00",
        "source": "Actual VoiceOver caption-window pixels, manually reviewed; OCR whitespace normalized",
        "version": "0.8.1 repaired runtime"
      }
    ],
    "count": 28,
    "method": "Actual VoiceOver commands and keyboard use; caption pixels saved and reviewed. AX inspection alone was not counted as spoken evidence. Component event-log speech was disabled for isolated web status tests. Native validation capture starts before paste because the native inspector validates on input.",
    "settings": "Play Tone was the initial status preference; native on-input validation also checked with Speak Text. The original Play Tone preference was restored after review; VoiceOver remains on as initially found.",
    "excluded": "Initial wrong-position captures, interrupted/overlapping runs and captures without component speech were excluded. Failed 0.8.0 first-loading/empty/error observations are retained locally as pre-fix evidence."
  },
  "native": {
    "module": "BluKavantUi_Data",
    "block": "ProjectComponents.ProjectTimeline",
    "demo": "https://personal-6kr71auc.outsystemscloud.com/BluGrid_Sample/ProjectTimelineDemo",
    "publication": "Runtime and owning Block stylesheet repaired, published, and consumer refreshed/published.",
    "assets": [
      {
        "kind": "runtime",
        "sha256": "d3b97a9a6cf451e6e043b2796fba7c9456679c9d492ed84bfb2b4cb9ebe05292",
        "matchesCanonical": true,
        "normalization": "UTF-8 BOM and CRLF only"
      },
      {
        "kind": "stylesheet",
        "sha256": "037b5de9d21ad1e88e38df2a4cb9b46c17f657139e4f28d6b55e1215060c0575",
        "matchesCanonical": true,
        "normalization": "UTF-8 BOM and CRLF only"
      }
    ],
    "scopeNote": "Automatic scans use the independently compiled native fixture. The live native output is separately verified through served-source comparison, DOM/visual checks and actual Safari/VoiceOver."
  },
  "repairs": [
    "Persistent, exposed atomic live region before updates.",
    "Deferred first loading and error announcements; direct empty-result and recovery announcements.",
    "Pending announcement timer is cancelled on disposal."
  ],
  "remaining": [],
  "consumerResponsibilities": [
    "Provide meaningful task labels and descriptions; check custom colors/styles and surrounding focus clearance.",
    "The reviewed TodayDate is pinned. If omitted, offer a user-operated ShowToday toggle or date pin for the automatic local-day update.",
    "Set document/passage language. Locale formats dates but does not translate English status phrases.",
    "Connected editing, saving, navigation, authorization and page-level requirements belong to the consuming application."
  ],
  "limitations": [
    "Representative Safari/VoiceOver review; not every browser/assistive-technology combination.",
    "No full documentation-page or complete application conformance claim.",
    "Community is excluded."
  ]
}
