AgencyDoc
An Administrative and Human Resource Management Tool by Public Safety Training and Development

Accessibility Conformance Report

Based on VPAT® Version 2.5 — Revised Section 508 edition · Report date: 12 August 2026

Summary

Name of product
AgencyDoc — An Administrative and Human Resource Management Tool
Product version
Build 2026-08-12c
Product description
A web application for fire departments and public-safety agencies: writing, adopting, distributing and acknowledging policies and procedures, plus job descriptions, collective bargaining reference, discipline documentation and testing.
Vendor
Public Safety Training and Development
Standards this report covers
WCAG 2.1 Level A and Level AA (W3C Recommendation, 5 June 2018)
Revised Section 508 (36 CFR Part 1194, Appendix A, C and D) — Chapters 3, 4, 5 and 6
Evaluation methods
Described in full under How this was tested. In short: an automated axe-core 4.13 audit across ten application screens; a scripted keyboard and assistive-technology walkthrough in a real browser measuring focus order, focus-indicator contrast, live regions, landmarks and reflow at 320 CSS px; a line-by-line source review against each criterion; and colour measurement by relative-luminance calculation rather than visual judgement.
Read the verdicts as written. Every WCAG 2.1 Level A criterion is met. Fourteen criteria are marked Partially Supports, and the remarks say exactly what is missing in each — a report with nothing but "Supports" in it has usually not been tested. Every "Supports" below refers to behaviour that was measured in a browser or read in the source, not assumed. The largest caveat is not in the tables at all: see How this was tested.

How to read the conformance column

Supports
The functionality meets the criterion, on everything evaluated.
Partially Supports
Some functionality meets the criterion and some does not. The remarks say which.
Does Not Support
The majority of the functionality does not meet the criterion.
Not Applicable
The criterion is not relevant to this product.

Table 1 — WCAG 2.1 Level A

CriterionConformanceRemarks and explanations
1.1.1 Non-text ContentPartially Supports All nine images in the application carry an alt attribute; decorative department logos use alt="" so they are not announced on every screen. A drawn signature names its signer. The signature canvas has an accessible name and fallback text pointing to the equally valid typed alternative. Exception: documents an agency uploads are the agency's own files — a scanned PDF with no text layer cannot be read aloud. AgencyDoc can transcribe such a document with AI, which usually resolves it, but the original file's accessibility is outside our control.
1.2.1–1.2.5 Time-based MediaNot Applicable The product contains no audio or video content.
1.3.1 Info and RelationshipsSupports Landmarks (header/nav/main/aside) on every screen; one h1 per screen with no skipped levels (verified in-browser across twelve screens); all twenty data tables carry an accessible name; form controls have programmatic labels rather than placeholder text alone.
1.3.2 Meaningful SequenceSupports Reading order follows DOM order. The exported manual was corrected so it opens with the cover page rather than the running page footer.
1.3.3 Sensory CharacteristicsSupports The one instruction that identified a control by shape and position ("look for the • marker") now names it in words instead.
1.4.1 Use of ColorSupports Status indicators pair colour with text. The pending-update dot carries hidden text. Diff insertions are underlined as well as tinted, so a tracked change survives both colour blindness and a monochrome printout.
1.4.2 Audio ControlNot ApplicableNo audio.
2.1.1 KeyboardPartially Supports Every navigation item, control and form field is reachable and operable by keyboard; an automated sweep for pointer-only controls across twelve screens returned none. Exception: drawing a signature freehand on the canvas requires a mouse or touchscreen. A typed signature is offered alongside it, carries identical legal weight in the product, and is announced as the alternative.
2.1.2 No Keyboard TrapSupports No trap found. The assistant panel can be left by Tab and closes on Escape.
2.1.4 Character Key ShortcutsSupports The product defines no single-character shortcuts.
2.2.1 Timing AdjustableSupports An authenticated session lasts 12 hours. Ten minutes before it ends the user is warned by a modal that says how long is left, states that unsaved work would be lost, and offers a single "Keep me signed in" action that extends the session for a further full period. The criterion asks for at least twenty seconds' warning and at least ten extensions; this gives ten minutes and ten extensions. The dialog is an alertdialog so it is read immediately rather than queued, focus moves to the extend button, focus is trapped while it is open, and Escape dismisses it. Session length, warning lead time and the extension cap are all configurable per deployment.
2.2.2 Pause, Stop, HideSupports No auto-updating, blinking, scrolling or auto-advancing content. A reduced-motion preference is honoured.
2.3.1 Three FlashesSupports Nothing flashes.
2.4.1 Bypass BlocksSupports A skip link is the first focusable element on every screen and on the public site. This matters here more than usual: the sidebar carries the department's whole manual, roughly 300 links, ahead of the page content.
2.4.2 Page TitledSupports The application is a single page, so the title is set per view — twelve screens verified to report distinct titles. An exported manual is titled after the department rather than after the product, so the resulting PDF is named usefully.
2.4.3 Focus OrderSupports Focus order follows visual order; no positive tabindex anywhere. Navigation moves focus into the new content region rather than dropping it to the top of the document. Closing the assistant returns focus to the control that opened it. A long operation that must disable its own button restores focus when it finishes. A background refresh caused by a colleague's edit deliberately does not move focus — it restores the user's position and announces the change politely.
2.4.4 Link Purpose (In Context)Supports Link text plus its context identifies the destination.
2.5.1 Pointer GesturesSupports The only path-based gesture is freehand signing, which has a typed alternative.
2.5.2 Pointer CancellationSupports Actions fire on the up-event.
2.5.3 Label in NameSupports Accessible names contain their visible label text.
2.5.4 Motion ActuationNot ApplicableNo motion-actuated functionality.
3.1.1 Language of PageSupports lang="en" on every page.
3.2.1 On FocusSupports Focus alone changes no context.
3.2.2 On InputPartially Supports The role selector in Manage Users saves to the server on change rather than on an explicit submit. The change is announced and is reversible from the same control, but it is a change of context on input. Under review.
3.3.1 Error IdentificationPartially Supports Errors are described in text and are announced — sign-in failures interrupt via role="alert"; other outcome messages are polite live regions. Not every failing field is yet tied to its message with aria-describedby and aria-invalid. Improvement scheduled.
3.3.2 Labels or InstructionsPartially Supports Every control has a label and forms carry explanatory text. Required fields are not yet marked with required/aria-required; the product validates on submit and explains what is missing. Improvement scheduled.
4.1.2 Name, Role, ValueSupports All six file inputs, the assistant controls and the score-sheet row controls have accessible names. State is programmatic, not merely visual: aria-current on the open document and active navigation, aria-pressed on toggle pairs, aria-expanded on the assistant. Verified in-browser.

Table 2 — WCAG 2.1 Level AA

CriterionConformanceRemarks and explanations
1.3.4 OrientationSupportsNo orientation lock.
1.3.5 Identify Input PurposeSupports Identity fields declare their purpose: autocomplete="username", current-password, name, organization. These had previously been set to off, which defeated the criterion.
1.4.3 Contrast (Minimum)Supports Text meets 4.5:1 (3:1 for large text) throughout, measured by relative-luminance calculation. One trap worth naming: a caption carrying opacity:.7 rendered at 2.97:1 even though its declared colour passed — contrast must be measured on what is actually painted, so the fade was removed.
1.4.4 Resize TextSupports Text scales to 200% without loss of content or function.
1.4.5 Images of TextSupports Text is text. The only image of text is a customer's own uploaded logo.
1.4.10 ReflowSupports All ten application screens verified at 320 CSS px with no two-dimensional scrolling. The sidebar and top bar stack below 860 px. Genuinely wide data tables scroll in one direction inside their own container, which the criterion allows.
1.4.11 Non-text ContrastSupports Control boundaries, drop zones, the signature canvas outline, meter tracks and the focus indicator all measure at least 3:1 against every surface they appear on. Interactive boundaries use a token separate from the decorative divider colour, so meeting this criterion did not require darkening the entire interface.
1.4.12 Text SpacingPartially Supports Content survives the required spacing overrides. Long uploaded filenames truncate at narrow widths; the full name remains available. Improvement scheduled.
1.4.13 Content on Hover or FocusSupports The product uses native title tooltips, which the criterion exempts. No custom hover popovers.
2.4.5 Multiple WaysSupports Full-text search and a navigable directory tree.
2.4.6 Headings and LabelsPartially Supports Headings and labels are descriptive, and an accessibility-tree walkthrough of the main journeys found no unnamed, glyph-only, vague or duplicated control names. Two wording issues remain, both cosmetic rather than blocking. First, around twenty headings and buttons begin with a decorative emoji, which is spoken before the words that matter. Second, form labels and table headers are capitalised with CSS text-transform; the underlying text is normal case, but the browser exposes the transformed string, and some screen readers spell all-capital words out letter by letter. Both are on the list.
2.4.7 Focus VisibleSupports A 3 px indicator measured at 4.13:1 on the page, 3.99:1 on the dark top bar and 3.81:1 on the sidebar, offset so it is drawn on the background rather than on a control's own fill. Previously the product defined no indicator of its own and inherited the browser default, which measured 1.15:1 on the dark top bar — effectively invisible. All 284 tab stops re-verified.
3.1.2 Language of PartsSupportsContent is in English throughout.
3.2.3 Consistent NavigationSupportsNavigation is in the same place and order on every screen.
3.2.4 Consistent IdentificationSupportsThe same function is named the same way throughout.
3.3.3 Error SuggestionPartially Supports Most messages say how to correct the problem. Coverage is not yet uniform across every form.
3.3.4 Error Prevention (Legal, Financial, Data)Partially Supports Destructive actions are confirmed, and a snapshot is taken immediately before any reset. Acknowledging a policy — which records a compliance signature — commits on a single click with no confirmation step. Under review.
4.1.3 Status MessagesSupports The product previously contained no live region at all, which mattered because AI operations can run 60–90 seconds: a non-visual user got silence and no way to tell working from broken. There are now two regions — polite for progress, assertive for failure — plus a live conversation log with speaker attribution, and every outcome container announces. Verified in-browser on every screen.

Table 3 — Revised Section 508 chapters

ProvisionConformanceRemarks
302 Functional Performance CriteriaPartially Supports 302.1 without vision, 302.2 with limited vision and 302.3 without perception of colour are supported for the workflows evaluated, with the two exceptions named above (freehand signing, and uploaded files an agency supplies). 302.4–302.6 (hearing, speech) are not applicable: the product has no audio and requires no speech. 302.7–302.9 (limited manipulation, reach and strength) are supported — everything is keyboard-operable and no action requires simultaneous keys or sustained pressure.
Chapter 4 — HardwareNot Applicable AgencyDoc is web software. It supplies no hardware.
501–504 SoftwarePartially Supports The product is a web application accessed through the customer's own browser and inherits its platform accessibility features (zoom, high contrast, screen readers). It overrides no platform setting and honours a reduced-motion preference. Conformance follows Tables 1 and 2.
602.2 Accessibility and Compatibility Features (documentation)Partially Supports The 132-page user manual documents every feature. It does not yet contain a dedicated accessibility chapter describing keyboard operation and the typed-signature alternative. Scheduled.
602.3 Electronic Support DocumentationPartially Supports Documentation is supplied as a Word document and PDF. It carries heading structure and is readable with assistive technology, but has not been through a formal tagged-PDF conformance check.
603 Support ServicesSupports Accessibility questions and requests for an alternative format go to the same support channel as any other request, and are answered there. Contact details are on the accessibility statement.

How this was tested

Four methods, because no one of them is sufficient:

The limit of all of this, stated plainly. Automated testing detects roughly a third of accessibility problems, and the scripted checks above extend that but do not close it. None of it establishes whether a real person using a real screen reader can complete a real task — adopt a policy, file a discipline case, print a manual. A full manual walkthrough with JAWS, NVDA and VoiceOver has not been completed, and this report does not claim otherwise. That work is the next step, and its findings will be published here.

Known gaps, in priority order

Every WCAG 2.1 Level A criterion is now met. What follows is Level AA and documentation work.

  1. Manual assistive-technology walkthrough of the core journeys.
  2. Field-level error association (aria-describedby, aria-invalid) and required-field marking (3.3.1, 3.3.2, 3.3.3).
  3. Confirmation step before acknowledging a policy (3.3.4).
  4. Emoji removed from screen headings (2.4.6).
  5. Tagged-PDF structure for exported manuals, and an accessibility chapter in the user manual (602.2, 602.3).

Contact

If you meet a barrier, or need something in a different format, tell us and we will help — and fix it. Please include the screen you were on and the assistive technology you were using, because that is what makes a problem reproducible. Contact your AgencyDoc administrator, or Public Safety Training and Development directly.