Conformance status
Atlas is partially conformant with WCAG 2.2 Level AA.
"Partially conformant" means that some parts of Atlas do not fully meet the standard. We are publishing this rather than a conformance claim we cannot support, because a statement that overstates its position is worse than no statement at all — it sends people into barriers we already know about.
Updates since publication
7 September 2026 — Atlas v3.0.174 to v3.0.182.
Nine implementation updates from the portal team, prepared on 6 and 7 September and confirmed deployed — Atlas was at v3.0.182 when this note was written. Each is annotated in place below; this note is the summary. Most of the batch is touch-target and enlarged-text work on touch devices, and throughout it larger mouse-and-keyboard layouts deliberately keep their compact presentation.
Touch targets. The portal's existing 44-pixel touch-target floor now reaches the calendar actions, tab choices, role controls, billing actions and request-wizard controls (v3.0.174); the home page's time-range and UTC/Local choices, layout-customisation actions, dashboard status links and shared record pickers, the customer payment, list-navigation and signup actions, and the administrative home shortcuts and their editor (v3.0.175); the shared list-page view choices, reload and automatic-refresh controls, advanced search, counting actions and page navigation (v3.0.176); record links in the shared Orders and draft-order table and in administrative billing reports (v3.0.177); request record links and selection controls (v3.0.178); the Account menu's rows and the shared dialogs' buttons (v3.0.179); the Attention page's section and Refresh pills (v3.0.180); the reviewed Settings, Profile and Attention controls, including LOA links, disclosures and row actions (v3.0.181); and the reviewed 10DLC studio actions and option labels (v3.0.182). Checkboxes keep their native marks and gain larger associated labels rather than larger marks, and nearby touch areas were checked for overlap.
Keyboard and focus. The Account menu takes keyboard focus and supports arrow keys, Home/End, Enter/Space, Escape with return to its opener and Tab exit (v3.0.179); the Columns picker takes focus when opened, closes on Escape with return to its opener, and closes when keyboard navigation leaves it (v3.0.176); the Attention section picker supports keyboard reordering and exit, and the terms dialogs, runtime-error recovery, manually opened installation guidance and the design-example dropdown gain the same entry-and-return behaviour — declining terms on a direct visit returns to Home, installation guidance stays nonmodal, and automatic suggestions do not take focus (v3.0.180). Focus is returned or kept somewhere useful after an action removes what had it: saved searches open with focus in the naming field and return it on save, cancel or delete (v3.0.177); the reviewed request-selection flow restores focus after an item is removed, including after paging (v3.0.178, v3.0.179); adding an email-list address focuses the new input and a confirmed removal focuses a remaining input or Add (v3.0.179); removing an upload by keyboard returns to another removal action or the upload field (v3.0.182); and switching between date and time preserves focus (v3.0.174). Where the reviewed validation flow returns focus to a field covered by a floating error message, the page reveals the field without dismissing the message (v3.0.179), and a notification leaves room for a focused field above the bottom navigation, with long messages scrollable by keyboard (v3.0.182).
Names and states. Tab disclosures and billing categories expose whether they are expanded, role presets expose their selection, and the draft-name action and CSV upload include their visible wording in their names (v3.0.174); the home page's controls were checked for exposed selected and expanded states, and the administrative home shortcuts expose selection (v3.0.175); the customer Orders All/Mine scope, selected saved-search presets and the campaign JSON disclosure expose their state (v3.0.176, v3.0.177, v3.0.182); each request checkbox has a record-specific name with an associated label, and shared Edit actions use one Edit icon with an accessible name (v3.0.178); Account menu items expose their role and the phone opener its open state (v3.0.179); the saved-search name has a persistent label with explicit required guidance (v3.0.177); the reviewed Profile validation flow associates the server's field guidance with its input (v3.0.180); and opt-in method cards show native checkbox marks, so selection has a visible cue beyond colour (v3.0.182).
Enlarged text and small screens. On touch devices and in narrow spaces, selecting a date now uses the browser or device's native date picker, whose appearance and accessibility belong to the browser or device; wider desktop layouts keep the calendar grid (v3.0.174). With text enlarged, template naming controls, home control groups and API activity summaries, list toolbars, phone-number search and pagination, saved-search names and actions, navigation and search headers, home work-status pills and action cards, detail rails, the SMS/MMS and 10DLC studio columns, administrative diagnostic rows, masked code controls, the RCS editor, the Account menu, the Attention picker, jurisdiction choices and shared notification messages now wrap, stack or reflow within the space available, and the layout-customisation panel and both Columns implementations fit above the mobile navigation and footer (v3.0.174 to v3.0.182). No page-level horizontal scroller or hidden table column was added anywhere in the batch; genuinely wide tables keep their existing scroll region. Selected saved-search presets use explicit black-and-white styling in the monochrome modes, including Lite, so their state does not depend on a colour filter, and the Columns popup's controls and the shared dialogs' action bars use the forced monochrome palette as well — a navy gradient found in screenshot review was removed (v3.0.176, v3.0.177, v3.0.179).
One regression, disclosed. The responsive-layout change in v3.0.178 let a detail-page confirmation sit behind the mobile navigation. v3.0.179 corrects it — shared dialogs now render above page containers while keeping the portal's theme styling, long confirmation text wraps with its divider inside the dialog, and dialog buttons keep their touch areas independently of the form that opened them — and the administrative SMS report dialog keeps its intended tablet and desktop height after that change (v3.0.180). Two further limits from the batch: Ask Atlas conversations now contain vertical overscroll, but the physical-device scrolling behaviour that prompted the change was not reproduced beforehand, so device confirmation remains outstanding; and the application icon's badge may count system notifications rather than current work items — the Attention page is the current-work count (v3.0.180).
Verification, and what this does not claim. Scoped browser checks on both portals at phone and tablet widths, with root text enlarged to 200%, in standard light and dark, high contrast, colour-safe, both monochrome modes and Lite, plus compact-layout checks at desktop widths; populated administrative billing was sampled with an explicitly authorised test role (v3.0.176), and the alignment review sampled routes across both portals at mobile, tablet, desktop and enlarged text (v3.0.178). A route sample does not prove every record, permission, dialog or error state; tests use fictitious records; and root text enlargement is not browser zoom. These are implementation progress, not a new assessment: no new VoiceOver or NVDA listening result, speech-input result, conformance score or contrast certification is claimed; remaining route coverage, the remaining touch-target observations (small table links among them), chart data alternatives, actual browser zoom, other browsers and physical devices remain open; and the assessment baseline — version 2.5.345, including the 29-of-55 count below — is unchanged until a full re-assessment. None of it needed new backend capability.
6 September 2026 — Atlas v3.0.167, v3.0.168 and v3.0.172.
Three implementation updates from the portal team, each annotated in place below. Email lists now keep a visible label above each address, and each field with its add/remove actions carries the list's purpose, so billing, provisioning and other contact lists can be told apart; validation errors attach to the affected address (v3.0.167). Required fields in the shared request forms now say "(required)" beside the label; feature-setting thresholds and repeated override controls have contextual names; shared number and date inputs use their visible labels; shared table scroll regions can be reached by keyboard even when their overflow is too small to display a slider; a date picker opened inside another dialog gets its own keyboard handling, and Escape returns focus to the date field without closing the parent; and a focused control inside a dialog is revealed above its sticky action bar (v3.0.168). Decimal and secret fields take their names from their visible labels, showing or hiding a secret keeps focus on the same control, the raw-data view toggle exposes its purpose and state, and the permissions Help dialog — the pointer item this statement disclosed — keeps its Dismiss button reachable on phone and tablet layouts, including with text enlarged to 200%, with regression coverage added (v3.0.172). The SMS and MMS studios preserve a 44-pixel touch-target floor on touch devices (v3.0.167). Verification: browser exposure, geometry and component regressions on both portals at phone and tablet sizes, in light, dark, colour-safe and monochrome modes and with enlarged text. These are scoped improvements: no new VoiceOver or NVDA listening result is claimed, they do not establish a new conformance score, and the assessment baseline — version 2.5.345, including the 29-of-55 count below — is unchanged until a full re-assessment. Atlas moved to its 3.0 line between the August and September updates; the version assessed has not changed.
5 September 2026 — Atlas v3.0.163.
The largest item in this statement — the roughly 331 dropdowns and toggles that did not announce what they control — has its shared-component fix. The portal team reproduced the defect on the account access form, where twenty different switches all exposed the same name, "Toggle setting": their visible labels were present, but a generic component name overrode them. Shared switches and dropdowns now take their accessible name from the actual visible field label, including older callers that omitted an input id, labels that change, and controls that appear after loading; grouped campaign flags, standalone channel and authorization switches, and selectors inside tables receive their own names rather than the group heading, and form submission names are no longer used as dropdown labels. Regression coverage mounts the real account access form and checks the names of all twenty switches, their state changes and disabled controls; browser verification checks the names the rendered portals expose. What this does not claim: that every form control on every route has been re-assessed. Composite email fields (addressed the following day), other custom control types, and the statistics-tile screen-reader issue remained in the outstanding register at this update, and no new screen-reader listening result is claimed. The historical 331 figure, the July counts and the appendix are unchanged: this is an implementation improvement pending full re-assessment and VoiceOver/NVDA confirmation.
5 August 2026, evening — Atlas v2.5.492 to v2.5.501, and the first screen-reader listening.
Six further notes from the same day. The contrast corrections shipped as one token sweep (v2.5.492): form-field borders now measure at least 3.5:1 in the light theme and 3.7:1 in the dark, the five light-theme text colours and the selected sidebar item clear 4.5:1, and banner icons measure 4.06:1 and 4.10:1 — every figure computed against the element's real composited surface at its worst gradient stop, with the assessment's own arithmetic first calibrated by reproducing its published figures to the digit. Destructive actions now confirm (v2.5.493): five of the seven this statement named open the shared confirmation dialog, the other two are Google Verified SMS and Verified Calls registrations that Google has discontinued and whose pages are queued for removal, and the census this statement predicted found two more unconfirmed deletes, which now confirm as well. And on this day the screen-reader testing this statement says was never performed began: a structured VoiceOver pass against the current build, including two recorded walks of the customer home page. It found that dialogs did not read their title or body on entry (fixed in v2.5.498), that ordinary text across many pages was announced as "clickable" (v2.5.499), that dashboard statistics read as ten fragments rather than five facts (v2.5.500), that the home page's layout customizer — the one dialog not built on the shared component — did not respond to Escape (v2.5.501), and that the statistics fix behaves worse under the listener's own Safari/VoiceOver build, which reads text marked hidden from assistive technology; that regression is held open, with a comparison exhibit for the listener to walk, rather than guessed at a third time. One correction belongs here: the 5 August note below says every dialog now closes on Escape. That was true of every dialog built on the shared component and untrue of the customizer, which the sweep never covered; the claim is corrected in place. Verification for this batch: the contrast and confirmation changes are verifiable without assistive technology and were; the listening findings are fixed in markup and measured in the built application, and the closing evidence for each is the same ear that found it — a second recorded walk confirmed fixes and caught the customizer, and the rest await the listener's confirmation. The assessment baseline is unchanged.
5 August 2026, later the same day — v2.5.491.
Two more shared-component fixes, shipped a few hours after the batch below. Error messages are now linked to the fields that caused them — the shared field component marks its control invalid and ties it to the error text while errors are present, reaching roughly 2,976 fields in one change — and the 23 error displays named in the status-messages item's carve-out now announce. Both fixes exist for screen readers, and the same caveat travels with them: attributes verified in markup and unit tests, not yet listened to; screen reader testing has still not been performed. The assessment baseline is unchanged.
5 August 2026 — fixes shipped between Atlas v2.5.470 and v2.5.489.
The 3 August update ended by naming the next targets: the app-wide items that need shared-component work. This update reports six of those shipped across two releases, plus a pointer fix — data tables associate their column headers and status messages announce (v2.5.488), the home pages begin with a main heading (v2.5.488), and dialogs announce their names, close predictably on Escape, give the ten progress dialogs a keyboard way out, and cancel backdrop presses on release (v2.5.489). Each is annotated in place with the caveats that qualify it, including one deliberate exception and the items each fix leaves open. New interface work shipped since the assessment is being held to the same bar — the delivery-health banner's attention dot is gated behind both reduced-motion preferences (v2.5.486), and the reset rail ships with labelled controls and visible focus — noted so the re-audit knows the assessed-at version undercounts the surface area, in both directions. The verification caveat matters more than usual for this batch, because several of these fixes exist for screen readers: they rest on source review, unit tests, and instrumented browser checks in Chromium — we have verified the attributes are present and correct, but we have not yet listened to them, and screen reader testing has still not been performed. The assessment baseline — version 2.5.345, including the 29-of-55 count below — is unchanged until a full re-audit moves it. The largest remaining items are the ones that need per-surface work: the ~331 unnamed dropdowns and toggles, form errors not linked to their fields, the contrast items, unreachable keyboard elements, the base font-size lock, and touch-target sizes.
3 August 2026 — fixes shipped between Atlas v2.5.408 and v2.5.469.
Four more of the barriers named in this statement now have shipped fixes, each
annotated in place with the caveats that qualify it. In brief: the sign-in page's logo
link now has a text alternative (v2.5.467), an application-wide
:focus-visible outline now acts as a floor for keyboard focus indication
everywhere (v2.5.467), the high-contrast mode's own focus outline — the piece the
1 August update explicitly called still open — now clears the 3:1 requirement on both
of the mode's surfaces (v2.5.469), and the four icon-only status indicators now carry
per-state text labels announced to assistive technology (v2.5.469). As before, these
fixes rest on source review, unit tests, and instrumented browser checks in Chromium,
with contrast figures computed from the shipped token values against the surfaces the
elements actually sit on; none of this has been through a full re-assessment pass, and
screen reader testing has still not been performed. The assessment baseline — version
2.5.345, including the 29-of-55 count below — is unchanged until a full re-audit moves
it.
1 August 2026 — fixes shipped between Atlas v2.5.346 and v2.5.407.
This statement reflects the assessment of version 2.5.345 and keeps that baseline — including the 29-of-55 count below — until a full re-assessment moves it. Since publication, the portal team has shipped fixes for three of the barriers named in this statement and made one deliberate retention decision; each is annotated in place, with the caveats that qualify it. In brief: the focus ring was rebuilt (v2.5.393), sessions now warn before expiring and return you to your page (v2.5.406), single-key shortcuts can now be turned off (v2.5.407), and browser autofill outside sign-in is retained deliberately, with the reasoning stated in that section. These fixes rest on source review, unit tests, and instrumented browser checks in Chromium; they have not yet been through a full re-assessment pass, and screen reader testing has still not been performed.
The Web Content Accessibility Guidelines (WCAG) define requirements for making digital content more accessible to people with disabilities. Atlas was assessed against WCAG 2.2 at Levels A and AA, which is 55 individual success criteria. Of those:
| Result | Criteria | What this means |
|---|---|---|
| Supports | 23 | The requirement is met. |
| Partially supports | 19 | The requirement is not met. Atlas satisfies it on some screens but not others. This is a failing result, recorded separately from the one below only to show that the problem is localised rather than general. |
| Does not support | 7 | The requirement is not met, and the failure is the general condition across the product rather than confined to places we can list. Isolated compliant instances exist for some of these — Atlas does identify the purpose of its sign-in fields, for example — but they do not change the result. |
| Not applicable | 6 | The requirement does not apply — for example, criteria about video captions, where Atlas publishes no audio or video of its own. See the note below on customer message content. |
| Total | 55 | Every criterion was evaluated. None was left unassessed. |
Read that table carefully, because the four-way split can flatter a result that does not deserve it. WCAG treats a success criterion as met or not met, with nothing in between. Counted the way the standard itself counts, 29 of the 55 criteria are met and 26 are not (23 supports + 6 not applicable) — the 19 "partially supports" rows fall on the failing side. By level, Atlas meets 17 of the 31 Level A criteria and 12 of the 24 Level AA criteria.
We state it this way deliberately. A reader who added 23 and 19 and concluded that Atlas meets three-quarters of the standard would be wrong, and we would rather say so than let the arithmetic do the flattering. It is also worth saying that Level A is the more serious of the two shortfalls: those are the criteria whose failure tends to stop someone completing a task rather than make it harder.
One note on the six "not applicable" results, five of which concern audio and video. (The sixth is the criterion about controls operated by moving or shaking the device, which Atlas does not use.) Tychron authors no audio or video in Atlas. Atlas does display multimedia messages sent by and to our customers, and that content may contain audio or video we did not create and cannot caption. Those criteria are recorded as not applicable to Atlas as a product; they are not a claim that customer message content is accessible.
Scope of this statement
Known limitations
The following barriers are known to us. Each entry describes what a user encounters, who it affects, and where things stand. This list is deliberately specific — a vague statement is not useful to someone deciding whether they can do their job in our software. They are grouped by the way people work, because most readers care about the subset that applies to them rather than the whole catalogue.
If you use a screen reader
If you navigate by keyboard
If you use speech input
If you fill in forms
If you rely on autofill to reduce typing
If you have low vision, or change how text is displayed
If you use a pointer, touch, or a switch device
What works well
Stated because an honest statement reports both directions, and because these are the things worth relying on. Where a claim rests on the pages we rendered rather than on the whole application, it says so.
- Every page we tested reflows to a 320-pixel-wide window with no horizontal scrolling and no loss of content. Measured, not estimated: zero pixels of horizontal overflow on all fifteen. At 200% zoom the same result holds on the six customer-portal pages we tested at that setting.
- The dark theme's text colours meet the contrast requirement. We say this on the strength of a separate extraction of all 196 of the dark theme's design tokens — 140 of them colours — composited over the surfaces they actually sit on, not on the automated scanner, which returned no dark-theme failures but also returned 755 dark-theme results it could not decide. Its form-field borders and focus ring do not meet the requirement — see the limitations above.
- Every page has a "skip to main content" link, and every page has a browser tab title. Both are set application-wide — the skip link in all three page layouts, the titles by a single router rule covering all 401 routes — so this covers every page, not only the fifteen we rendered. The titles are specific and descriptive everywhere except the home page of each portal, which is titled simply "Atlas".
- Password managers work throughout sign-in, and no field in Atlas blocks pasting.
- Navigation is consistent, and there are two independent ways to find a page: the sidebar and the Quick Find search. The sidebar is rendered from a single component used in a single place, so its order cannot vary between the routes that have it.
- Dialogs move keyboard focus into themselves when they open and return it to the control you opened them from when they close. The mobile navigation drawer correctly removes its contents from the keyboard order while it is closed. Where dialogs fall short is Escape and the ten progress dialogs described above.
- Reading order matches visual order. We compared the two directly on six pages, including the one whose layout uses the CSS mechanism most capable of causing a divergence, and found none.
- Nothing in Atlas flashes, auto-plays audio, or requires a dragging motion, a multi-finger gesture, or device movement to operate. Where dragging is offered — reordering the home dashboard — there are Move up and Move down buttons that do the same job. They are, however, hard to discover: the panel's instructions do not mention them, and the drag handle beside them is hidden from screen readers. The alternative exists and works; finding it takes more than it should. Update, 5 August 2026, evening: the handle's glyph — a braille pattern character that screen readers announced as "dots one two three four five six" — is now drawn as shapes rather than typed as text (v2.5.501), and the customizer panel itself now follows the dialog keyboard contract; see the Escape entry above.
- Atlas does not ask you to re-enter information you have already given it within a process. We checked the multi-step forms specifically for this, including one where two steps ask similar-looking questions for genuinely different purposes.
- Signing in does not require you to solve a puzzle, transcribe a code from an image, or remember something unaided. Password managers work, and nothing blocks pasting.
Report a barrier
If you encounter a barrier in Atlas, we want to hear about it. Please tell us the page you were on, what you were trying to do, and the assistive technology, browser, and operating system you were using, if you know them. That detail lets us reproduce the problem rather than guess at it.
Contact us about accessibility
- Email [email protected]
- Telephone (844) 892-4766
- Or use the contact form at tychron.com/sales
These are the same routes given in Tychron's general accessibility statement, which covers our public website and our products together. This document is the detailed, criterion-by-criterion assessment for Atlas specifically.
One caution about the third route, which we would rather state than have you discover: the contact form is protected by reCAPTCHA. A verification challenge of that kind can itself be a barrier, particularly for people who cannot complete a visual or audio puzzle, and it is the reason we list email and telephone first. If the form stops you, either of the other two routes reaches us without one.
We will acknowledge what you send us and tell you what we intend to do about it. If a fix is going to take time, we would rather say so than leave a report unanswered.
How we assessed Atlas
This statement is based on a self-evaluation carried out in several passes, each able to correct the one before it.
First, a full review of the application source against all 55 criteria, with every finding recorded against a specific file and line. Second, an automated scan using axe-core 4.12.1 driven by Playwright, covering fifteen routes across both portals, each tested at four combinations of viewport and theme: desktop light, desktop dark, a 390-pixel phone width, and a 320-pixel width, which is the width the reflow requirement actually names. Third, a set of purpose-built browser probes for the criteria that automated tools cannot decide. Those probes drove real keyboard traversal to test focus visibility, measured centre-to-centre distances between touch targets, applied the text-spacing overrides the standard specifies and looked for clipping, compared visual reading order against document order, rendered the application with a reduced-motion preference set and checked what was still moving, and submitted forms to observe real validation behaviour.
Colour contrast was computed rather than judged by eye. Design tokens were extracted from the running application, colour references resolved, semi-transparent values composited over the backgrounds they actually sit on, gradients evaluated at every stop with the worst stop taken, and contrast ratios calculated arithmetically. This was necessary because the automated scanner returned 2,503 contrast results it could not decide on its own, owing to the layered and semi-transparent surfaces Atlas uses — 755 of them in the dark theme alone. That last figure is why the dark theme got its own separate extraction: the scanner reporting no dark-theme failures meant only that it had not decided, and we had at one point written that up as a pass. It is a pass, but we did not know that until we computed it.
Limits of this assessment
Six limits should be stated plainly, because each of them qualifies something above.
Testing with screen reader software has not been performed. Not delayed or partially done — not done. We have not tested with JAWS, NVDA, or VoiceOver. Our testing reports what browsers expose to assistive technology, which is what those tools consume, but it is not a substitute for using them, and we do not claim otherwise. Update, 5 August 2026, evening: this began to change on 5 August — a structured VoiceOver pass against the current build, including two recorded walks of the customer home page, produced the four findings recorded in the screen-reader section above, each fixed the same day and one found regressed under the listener's own Safari/VoiceOver build. It is a start, not a re-assessment: one screen reader, one listener, a handful of pages, and NVDA and JAWS still untested. The September updates claim no new listening results. The re-assessment now under way treats assistive-technology listening as a required pass, not an afterthought.
We rendered fifteen pages of 401. Findings from source review cover the whole application; findings from browser testing cover the sample. Where a result above depends on the sample, we have said so.
We tested in Chromium only. Firefox and Safari were not exercised, and neither were their assistive-technology pairings. Behaviour may differ there. Update, 5 August 2026, evening: it does. The statistics-tile fix verified in one engine reads worse under Safari with VoiceOver, which is this limit made concrete; see the screen-reader section.
The 200% zoom testing covered the customer portal only. Six of its pages, in both display modes. The administrative portal was not tested at that zoom level at all, so nothing above claims a zoom result for it. Update, 7 September 2026: the September implementation checks enlarged root text to 200% on both portals; that is not browser zoom, and this limit stands until a re-assessment zooms the administrative portal.
Our test environment had very little form content in it. Across the fifteen rendered pages the automated scan encountered eight form controls in total, because the pages with substantial forms need data our test environment does not have and rendered as empty shells. Nearly all of the form-related findings above — labelling, required-field marking, error association — therefore rest on reading the source rather than on observing a form in a browser. We report them at full weight, because a control given no label can only fall back to a generic one, but the distinction is real and this is the largest single gap in our coverage.
Two findings rest on computed styles rather than on something we watched happen. The banner icon's contrast and the reduced-motion behaviour of the animation in banner messages were decided by resolving CSS and compositing colour values, because the banner did not appear on any page our tests could render. The arithmetic is sound and the cascade is unambiguous, but we did not see it.
Corrections we made to this assessment
Our internal findings were reviewed repeatedly before this statement was written, and every review found errors in the one before it. We are recording that here rather than quietly fixing it, because an assessment that hides its own corrections is not evidence of anything.
Some of the errors were findings that were not real. Two components the draft reported as defective already do the right thing — the dropdown and toggle components accept a caller-supplied label, and the container that displays status messages is permanently present in the page — so acting on the draft would have sent our engineers to change code that is already correct. A suspected keyboard trap in the help dialog and a suspected fault in the mobile navigation drawer both turned out on re-reading to be sound. A claim that two steps of one registration form asked the same questions twice was wrong: they ask similar-looking questions for different destinations, which a reader of the code could mistake for duplication and a person who knows the product could not.
Some were counts that did not survive checking. A table count was double what it should have been. A count of 41 unlabelled fields became three once each was inspected. A count of five controls whose spoken label does not match their visible one became two.
The corrections then had to be corrected. A second review found three errors that the first round of corrections had introduced, the most consequential being a passing verdict re-justified on the grounds that the Escape key closes our dialogs — it does not close most of them, and it does not close the one the claim was made about. A third found that our focus indicator's contrast had been measured on the wrong colour, and the true figure was worse. A fourth found the same class of error four more times, and it is worth naming the class, because it is the one to watch for in work like this: in every case a correctly measured number had been attached to the wrong thing. The right contrast ratio filed under the wrong criterion. The right count of animations described as no animation at all. A statement about grid layout that was true of three pages and false of the fourth — the fourth being the only one where it mattered.
The last round produced two corrections that changed what this statement says to you. Destructive actions: we had written that they are generally confirmed, with one exception. A search across the whole application found the ratio is the other way round — seven of nine are unconfirmed. And the ten progress dialogs: we had established that they hold keyboard focus, and then stopped one question short of asking whether a failed export releases you. It does. The difference between "ten dialogs can trap you permanently" and "ten dialogs hold you for the length of an export and then give your focus back" is the difference between a warning you can act on and one that would put you off the product for no reason, and we only have the second version because someone asked the next question.
A final round re-counted every figure in this document that comes from counting places in our own source code, and found three of them low. Our codebase writes the same component two different ways, and the searches behind those counts had only looked for one of the two spellings. There are 62 confirmation dialogs rather than 61, and 143 unlabelled toggles rather than 139, which moves the total number of unnamed controls from 327 to 331. Every number here that rests on counting components has now been re-derived by a method that reads both spellings. We are reporting a correction that made our own results slightly worse because a reader has no way to audit the difference, and a statement that only ever corrects itself in the flattering direction is not worth reading.
Corrections since publication. The 5 August update said every dialog now closes on Escape. That was true of every dialog built on the shared component and untrue of the home page's layout customizer, which is not built on it — a listener found the difference, and it was fixed in v2.5.501. The same walk found that the statistics-tile fix (v2.5.500) reads worse, not better, under Safari with VoiceOver; it is recorded above as open rather than fixed. Both corrections are noted where the claims sit.
We are stating this at length for a reason. Round after round found errors the round before had introduced, which is the strongest evidence we can offer that a self-assessment is not a substitute for being told by the people affected. It is also why we would rather hear from you than be trusted.
Two pieces of advice in earlier drafts were wrong and have been corrected rather than deleted. The first told users who find the light theme hard to read to switch to the dark theme; form field borders fail the contrast requirement in both. The second offered the Escape key as the way out of a dialog whose dismiss button can scroll out of reach, and that dialog is specifically one Escape does not close. Both were bad advice given to the people least able to route around it, which is worse than saying nothing. A third has been added above rather than removed: the browser tab title is offered as a partial workaround for missing page headings, and we now say plainly that it does not work on the home page.
What happens next
Each issue above has an identified remedy. Eight changes account for the majority of the affected surfaces, and they are sequenced first: making status messages announce, restoring page headings, adding column associations to data tables, naming dialogs, labelling the dropdowns and toggles, connecting error messages to their fields, making dialogs close on Escape, and giving the progress dialogs a keyboard way out. Four of the eight are single changes to shared components, which is why they reach so far — the first alone makes 586 existing messages audible by adding two attributes to one element, and the Escape and progress-dialog fixes are both single changes to the same shared dialog component, reaching every dialog in the product. Labelling individual controls is the one large job, because it has to be done at each of the 331 places a control is used. Update, 5 August 2026: six of the eight have shipped — status messages announce and data tables associate (v2.5.488), page headings are restored on the home pages with the custom shells still to do (v2.5.488), and dialogs are named, close on Escape, and give the progress dialogs their way out (v2.5.489). Of the eight, labelling the 331 controls and connecting error messages to their fields remain. Further update, later the same day: a seventh has shipped — error messages are now linked to their fields (v2.5.491). Of the eight, labelling the 331 controls remains. Update, 5 September 2026: the eighth has its shared-component fix (v3.0.163), with the control types that do not use the shared components following on 6 September — see the screen-reader section. All eight are now shipped in some form; none has been re-assessed.
The contrast corrections are a bounded set of colour values, with the high-contrast mode's own focus outline treated as the most urgent, since an accommodation that fails is worse than none. Update, 5 August 2026, evening: the high-contrast outline shipped in v2.5.469 and the rest of the set as one token sweep in v2.5.492; the structural items — the font-size lock, text-spacing clipping and table-link underlines — remain, and are listed under low vision above.
We also maintain a set of accessibility linting rules that has never actually run in our build pipeline: it exists as a command, and our verification pipeline does not call it. Its file coverage is also partial — four directories of components and shared views, which leaves most of both portals' page-level code unchecked. Wiring it in and widening it turns a class of these defects from something an audit finds into something a build refuses.
We will review and update this statement as remediation progresses, and re-assess in full at least annually. We have not set dated commitments against individual items here, because a date we miss is worse than no date; progress will be reflected in this statement as it lands.
Appendix: full criterion results
The complete assessment, for readers who need the detail. Levels are as defined by WCAG 2.2.
A rule about this table, made explicit on 5 August 2026 after two renderings of it were caught diverging: every result below is a measurement from the v2.5.345 assessment, and rows move only when a full re-assessment produces new measurements. Shipped fixes — however complete — are recorded in the dated update notes above, never as edits to these rows. Two rows (2.1.4 and 2.2.1) briefly carried updated results following the 1 August update; they have been returned to their assessed values under this rule, with the fix history noted beside them. This keeps the summary counts at the top of this statement and this table derived from the same measurement, and keeps "assessed at v2.5.345" literally true of every row.
| Success criterion | Level | Result |
|---|---|---|
| 1.1.1 Non-text Content | A | Partially Supports |
| 1.2.1 Audio-only and Video-only (Prerecorded) | A | Not Applicable |
| 1.2.2 Captions (Prerecorded) | A | Not Applicable |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | A | Not Applicable |
| 1.2.4 Captions (Live) | AA | Not Applicable |
| 1.2.5 Audio Description (Prerecorded) | AA | Not Applicable |
| 1.3.1 Info and Relationships | A | Partially Supports |
| 1.3.2 Meaningful Sequence | A | Supports |
| 1.3.3 Sensory Characteristics | A | Supports |
| 1.3.4 Orientation | AA | Supports |
| 1.3.5 Identify Input Purpose | AA | Does Not Support |
| 1.4.1 Use of Color | A | Partially Supports |
| 1.4.2 Audio Control | A | Supports |
| 1.4.3 Contrast (Minimum) | AA | Partially Supports |
| 1.4.4 Resize Text | AA | Partially Supports |
| 1.4.5 Images of Text | AA | Supports |
| 1.4.10 Reflow | AA | Supports |
| 1.4.11 Non-text Contrast | AA | Does Not Support |
| 1.4.12 Text Spacing | AA | Partially Supports |
| 1.4.13 Content on Hover or Focus | AA | Supports |
| 2.1.1 Keyboard | A | Partially Supports |
| 2.1.2 No Keyboard Trap | A | Partially Supports |
| 2.1.4 Character Key Shortcuts | A | Does Not Support (fix shipped in v2.5.407 — see the 1 August update; this row records the v2.5.345 measurement and moves only on re-assessment) |
| 2.2.1 Timing Adjustable | A | Does Not Support (largely fixed in v2.5.406 — see the 1 August update; this row records the v2.5.345 measurement and moves only on re-assessment) |
| 2.2.2 Pause, Stop, Hide | A | Partially Supports |
| 2.3.1 Three Flashes or Below Threshold | A | Supports |
| 2.4.1 Bypass Blocks | A | Supports |
| 2.4.2 Page Titled | A | Supports |
| 2.4.3 Focus Order | A | Supports |
| 2.4.4 Link Purpose (In Context) | A | Partially Supports |
| 2.4.5 Multiple Ways | AA | Supports |
| 2.4.6 Headings and Labels | AA | Does Not Support |
| 2.4.7 Focus Visible | AA | Partially Supports |
| 2.4.11 Focus Not Obscured (Minimum) | AA | Partially Supports |
| 2.5.1 Pointer Gestures | A | Supports |
| 2.5.2 Pointer Cancellation | A | Partially Supports |
| 2.5.3 Label in Name | A | Partially Supports |
| 2.5.4 Motion Actuation | A | Not Applicable |
| 2.5.7 Dragging Movements | AA | Supports |
| 2.5.8 Target Size (Minimum) | AA | Partially Supports |
| 3.1.1 Language of Page | A | Supports |
| 3.1.2 Language of Parts | AA | Supports |
| 3.2.1 On Focus | A | Supports |
| 3.2.2 On Input | A | Supports |
| 3.2.3 Consistent Navigation | AA | Supports |
| 3.2.4 Consistent Identification | AA | Supports |
| 3.2.6 Consistent Help | A | Supports |
| 3.3.1 Error Identification | A | Partially Supports |
| 3.3.2 Labels or Instructions | A | Partially Supports |
| 3.3.3 Error Suggestion | AA | Partially Supports |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Partially Supports |
| 3.3.7 Redundant Entry | A | Supports |
| 3.3.8 Accessible Authentication (Minimum) | AA | Supports |
| 4.1.2 Name, Role, Value | A | Does Not Support |
| 4.1.3 Status Messages | AA | Does Not Support |