Skip to main content

Accessibility Conformance Report

This is an Accessibility Conformance Report (ACR) in the shape of VPAT® 2.4, the format most procurement processes ask for. It records, one success criterion at a time, how the System9 console measures against the standards below.

Read Accessible operation first for how the product is built. This page is the procurement artifact: the claims, their evidence, and their limits.

Read this before reading the tables

This is a vendor self-assessment. It is not an independent audit, and no third party has attested to it.

It is based primarily on automated testing, plus code inspection of the shared interface primitives. A full manual screen-reader cycle across the console has not been performed, and several criteria below are marked Partially Supports specifically because automated tooling cannot decide them.

An ACR that marked everything "Supports" would be easy to write and worth nothing. Where the evidence does not reach, this one says so.

Product and report information​

FieldValue
ProductSystem9 platform console (web application)
Report date27 September 2026
Report version1.0 (first issue)
Evaluation basisVendor self-assessment
Contactaccessibility@system9.ai

Scope note: this report covers the platform console. Deployment-gated mission consoles and the Edge Agent's own surfaces are not in scope for this issue.

Standards this report addresses​

StandardIncluded
WCAG 2.1, Level A and AAYes
WCAG 2.2, Level A and AAYes (the nine added criteria)
Revised Section 508 (36 CFR Part 1194)Yes, by reference to WCAG
EN 301 549 v3.2.1Yes, by reference to WCAG (Clauses 9 and 11)

Evaluation methods used​

MethodWhat it coversWhat it cannot tell us
eslint-plugin-jsx-a11yStatic patterns in sourceNothing about rendered output
axe-core in component tests (~1,570 files)Rendered component DOMWhole-page composition, real AT behaviour
Playwright + axe-core route sweep (29 routes)Assembled pages in a browserAnything axe cannot detect automatically
pa11y-ci (axe + HTML CodeSniffer)Two engines over public pagesAuthenticated surfaces
Lighthouse CIPage-level scoringSame automated limits
Contrast matrix computationTheme colour pairs against AA ratiosContrast of content the theme does not control
Code inspection of shared primitivesStructural behaviour inherited by every screenWhether every screen uses them correctly

Automated testing detects a minority of accessibility defects. Industry estimates put it at roughly a third. That is the single most important limit on this report, and it is why so many rows below read Partially Supports.

Conformance terms​

TermMeaning
SupportsThe functionality meets the criterion without known defects
Partially SupportsSome functionality does not meet the criterion, or verification is incomplete
Does Not SupportThe majority of functionality does not meet the criterion
Not ApplicableThe criterion is not relevant to this product

WCAG 2.1 Level A​

CriterionConformanceRemarks
1.1.1 Non-text ContentPartially SupportsDecorative graphics are hidden from assistive technology and alt presence is linted. Meaningfulness of every alternative is not machine-checkable and has not been manually reviewed console-wide.
1.2.1 Audio-only and Video-onlyNot ApplicableThe console presents no pre-recorded audio-only or video-only content.
1.2.2 Captions (Pre-recorded)Not ApplicableNo pre-recorded multimedia.
1.2.3 Audio Description or Media AlternativeNot ApplicableNo pre-recorded multimedia.
1.3.1 Info and RelationshipsPartially SupportsLandmark regions, programmatically associated form labels, and table caption plus header scope, the last enforced by a gate whose exception list is now empty. 19 components predate the accessibility-test requirement and are unverified.
1.3.2 Meaningful SequencePartially SupportsDOM order follows visual order in the shared layout primitives. Not verified screen by screen.
1.3.3 Sensory CharacteristicsPartially SupportsInstructions are written not to depend on shape or position alone. No systematic review.
1.4.1 Use of ColorPartially SupportsStatus is carried by text and icon as well as colour in the shared primitives. Not verified for every custom visualization.
1.4.2 Audio ControlNot ApplicableNo auto-playing audio.
2.1.1 KeyboardPartially SupportsInteractive primitives are keyboard-operable and the console is designed for keyboard-only use. Without a manual pass, full keyboard operability of every flow is unverified.
2.1.2 No Keyboard TrapPartially SupportsDialog primitives manage focus. A mobile-drawer focus trap is outstanding.
2.1.4 Character Key ShortcutsSupportsThe console defines no single-character shortcuts without a modifier.
2.2.1 Timing AdjustablePartially SupportsSession expiry warns before it acts and can be extended. Other timed behaviour is not catalogued.
2.2.2 Pause, Stop, HidePartially SupportsThe operating-system reduced-motion preference is honoured. Live-updating regions are not universally pausable.
2.3.1 Three Flashes or BelowSupportsNothing in the console flashes.
2.4.1 Bypass BlocksSupportsA skip-to-content link is the first focusable element, and the main content region is a labelled landmark.
2.4.2 Page TitledSupportsEach route sets a descriptive document title.
2.4.3 Focus OrderPartially SupportsFocus order follows DOM order; dialogs move focus deliberately. Not verified per screen.
2.4.4 Link Purpose (In Context)Partially SupportsLink text is authored to be meaningful in context. Not systematically reviewed.
2.5.1 Pointer GesturesSupportsNo multi-point or path-based gesture is required.
2.5.2 Pointer CancellationSupportsActivation occurs on the up-event through the shared primitives.
2.5.3 Label in NamePartially SupportsAccessible names are derived from visible labels in the primitives. Not audited for every control.
2.5.4 Motion ActuationNot ApplicableNo device-motion-actuated functionality.
3.1.1 Language of PageSupportsThe document declares its language.
3.2.1 On FocusPartially SupportsFocus does not trigger navigation in the shared primitives. Not audited console-wide.
3.2.2 On InputPartially SupportsChanging a control does not auto-submit in the shared form primitives.
3.3.1 Error IdentificationPartially SupportsInvalid fields are marked programmatically and described to assistive technology. Coverage across every form is unverified.
3.3.2 Labels or InstructionsPartially SupportsForm primitives require a programmatic label; a gate requires feature code to compose from them.
4.1.2 Name, Role, ValuePartially SupportsRoles and states come from the shared primitives and are checked by axe at the component level. Correct behaviour with real assistive technology is not yet verified.

WCAG 2.2 removed 4.1.1 Parsing. It is omitted here.

WCAG 2.1 Level AA​

CriterionConformanceRemarks
1.2.4 Captions (Live)Not ApplicableNo live multimedia.
1.2.5 Audio DescriptionNot ApplicableNo pre-recorded multimedia.
1.3.4 OrientationSupportsLayout is responsive and locks no orientation.
1.3.5 Identify Input PurposePartially SupportsAutocomplete hints are present on common identity and contact fields, not on every applicable input.
1.4.3 Contrast (Minimum)Partially SupportsThe theme is computed against AA ratios. Known failures remain: de-emphasized tokens (timestamps, version pills, separators) and muted helper text on the dark theme fall below AA, and an automated page audit reports contrast errors on the pre-hydration splash. See known issues.
1.4.4 Resize TextPartially SupportsThe interface is usable at 200% zoom. Not verified on every dense screen.
1.4.5 Images of TextSupportsText is rendered as text, not as images.
1.4.10 ReflowPartially SupportsLayouts reflow to narrow viewports. Wide data tables scroll on one axis, which the criterion permits.
1.4.11 Non-text ContrastPartially SupportsInteractive boundaries and focus indicators are computed against the 3:1 ratio; the same de-emphasized tokens noted above affect some non-text elements.
1.4.12 Text SpacingPartially SupportsLayouts use relative units and tolerate user text-spacing overrides. Not verified on every screen.
1.4.13 Content on Hover or FocusPartially SupportsPopover primitives are dismissible and hoverable. Not audited for every instance.
2.4.5 Multiple WaysSupportsNavigation, search, and direct links each reach console destinations.
2.4.6 Headings and LabelsPartially SupportsHeading structure is authored per page; no systematic review has been done.
2.4.7 Focus VisiblePartially SupportsA visible focus indicator is inherited from the shared primitives. Not verified against every custom control.
3.1.2 Language of PartsNot ApplicableThe console is presented in a single language.
3.2.3 Consistent NavigationSupportsNavigation appears in a consistent order across the console.
3.2.4 Consistent IdentificationSupportsComponents with the same function are built from the same primitive and identified consistently.
3.3.3 Error SuggestionPartially SupportsValidation messages describe the correction where it is known. Coverage varies by form.
3.3.4 Error Prevention (Legal, Financial, Data)Partially SupportsDestructive and consequential actions require confirmation, and many pass a governance gate. Not catalogued criterion by criterion.
4.1.3 Status MessagesSupportsLive regions announce status, route changes, and asynchronous results without moving focus.

WCAG 2.2 additions​

CriterionConformanceRemarks
2.4.11 Focus Not Obscured (Minimum) (AA)Partially SupportsSticky headers and dialogs are the risk, and have not been systematically evaluated against this criterion.
2.5.7 Dragging Movements (AA)Partially SupportsMost interactions require no dragging. Where a drag exists, a single-pointer alternative has not been confirmed everywhere.
2.5.8 Target Size (Minimum) (AA)Partially SupportsShared primitives target 44×44 CSS pixels, exceeding the 24×24 minimum. Dense table-row controls are not all verified.
3.2.6 Consistent Help (A)Partially SupportsHelp and support entry points are consistently placed in the shell; not audited against the criterion.
3.3.7 Redundant Entry (A)Partially SupportsMulti-step flows carry prior input forward in most cases.
3.3.8 Accessible Authentication (Minimum) (AA)Partially SupportsAuthentication requires no cognitive-function test, and supports password managers and hardware authenticators. The multi-factor and smartcard flows have not been specifically audited against this criterion, which is the one most likely to matter in a procurement review.

Section 508 and EN 301 549​

StandardPosition
Section 508, E207.2 (Software)Addressed by the WCAG tables above. Level A and AA criteria are reported individually
Section 508, E202.5 (Authentication)See 3.3.8. Authentication is usable with assistive technology in principle; a dedicated audit of the MFA and smartcard flows is outstanding
Section 508, Chapter 7 / E205 (Documentation)The documentation site holds itself to an explicit contract: every figure ships an equivalent table, and colour is never the only carrier of meaning
Section 508, Chapter 6 (Hardware)Not applicable
EN 301 549 Clauses 9 and 11Addressed by the WCAG tables above
EN 301 549 Clause 10 (Non-web documents)Not assessed
EN 301 549 Clauses 6, 13 (Voice, relay)Not applicable

Known issues​

These are the defects we know about. They are listed because an ACR without an exceptions list is not credible.

IssueCriteriaStatus
De-emphasized text tokens (timestamps, version pills, separators) below AA contrast1.4.3Open. Restricted to non-essential, non-interactive decoration
Muted helper text on the dark theme below AA1.4.3Open. Used only for de-emphasized supporting copy
Contrast errors reported on the pre-hydration splash by an automated page audit1.4.3Open, and deliberately not tuned away. Likely a sampling artifact before the application hydrates, but it is a real reading and is being treated as one
A small number of components fail automated checks on the main branch4.1.2, variousOpen. Named internally; the reason the accessibility test job does not yet block merges
19 components predate the accessibility-test requirementvariousOpen and shrinking. Down from 186
Mobile-drawer focus trap2.1.2Open
No full manual screen-reader cyclemanyOutstanding. The largest single limit on this report

How this report is maintained​

The engineering behind it is described in Accessible operation: a dedicated accessibility CI workflow, roughly 1,570 axe-based component tests, a two-engine page audit, and four ratchets whose exception lists may only shrink.

This report is re-issued when a material claim changes. If you find something in it that is wrong, that is a defect and we want to hear about it: accessibility@system9.ai.

VPAT® is a registered trademark of the Information Technology Industry Council (ITI). This report follows the VPAT 2.4 structure; it is not an ITI-issued or ITI-endorsed document.