Sources
DraftDraft — these words are still waiting for Robin.
Where every number on this site comes from, when it was read, and the record of our own tests.
Every number on this site has a source and a date. Every test we run on this site is recorded here, with what was found and what changed.
Numbers on this site
- The directory: directory.csv, with every row’s
verified_howand date; the change log is below. - Room facts: read live from Alberta Current’s
/api/venues/access, which carries the date each fact was attested. - Barrier reports this year, counted only where the sender allowed it: none yet.
- Retention: the way to reach a person who reported a barrier is blanked after 365 days; contact messages and directory corrections are deleted after 730 days. The rule is the site’s own code (
lib/retention.js), run nightly. - Privacy requests: we answer within 45 days. That is the limit in Alberta’s Personal Information Protection Act, section 28 (see the laws below).
- Directory checks: a row is marked for a check 180 days after its last verification. The schedule is the society’s own (
tools/reverify/, run on the first of each month). - Drop-in headcounts: per session on the drop-in page; by town, per year only.
Laws this site names
Each Act this site names, where it lives, the sections we cite, the version we read, and the day we last read it. The service dogs page names most of them. “Not yet read” means Robin has still to read it on the day and fill in the date.
- Service Dogs Act (Statutes of Alberta 2007, chapter S-7.5) — sections 2, 3 and 4; the version current to 2009-01-01, read 2026-09-21. Alberta. Rights of access for a qualified service dog team; identification cards.
- Service Dogs Qualifications Regulation (Alberta Regulation 59/2017) — section 1; the version current to 2017-03-30, read 2026-09-21. Alberta. The regulation under the Service Dogs Act: which dogs qualify.
- Blind Persons' Rights Act (Revised Statutes of Alberta 2000, chapter B-3) — section 5; the version current to 2004-03-11, read 2026-09-21. Alberta. Guide dog teams.
- Alberta Human Rights Act (Revised Statutes of Alberta 2000, chapter A-25.5) — sections 4, 5, 7, 11, 20 and 44; the version current to 2023-04-01, read 2026-09-21. Alberta. Discrimination on the ground of disability; the one-year complaint deadline. Complaints go to the Alberta Human Rights Commission. Complaints: Alberta Human Rights Commission.
- Canadian Human Rights Act (Revised Statutes of Canada 1985, chapter H-6) — sections 2 and 5; the version current to 2026-07-21, read 2026-09-21. Canada. Federally regulated places: banks, airlines, federal offices.
- Accessible Canada Act (Statutes of Canada 2019, chapter 10) — section 7; the version current to 2026-07-21, read 2026-09-21. Canada. Federal bodies and federally regulated organisations.
- Personal Information Protection Act (Statutes of Alberta 2003, chapter P-6.5) — sections 28 and 56; the version current to 2025-09-01, read 2026-09-21. Alberta. Privacy in private organisations. For a non-profit as the Act defines one, it applies only to commercial activity; we follow it as a practice.
Test records
- 2026-09-21 — axe-core 4.13.0 via @axe-core/playwright, Playwright 1.63.0, Chromium 1243 build; pa11y-ci 4.1.1 with pa11y 9.1.1 (axe + htmlcs, WCAG2AA); Lighthouse 12.6.1 through Lighthouse CI 0.15.1, mobile preset, median of three runs tags wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, best-practice; WCAG 2.2 checks of the site's own; reading gate grade 8, 20 words a sentence, automated (npm run test:a11y, test:pa11y, test:lighthouse, check:reading), run by Claude Code for Andrew on a laptop: The first Lighthouse run failed once: the home page's largest paint read 2.7 s on a cold first run against a 2.5 s budget. Measured again three times it read 2.16 to 2.23 s, so the budget is now judged on the median of three runs. Lighthouse also found one console error on every page, a missing /favicon.ico; the site now declares that it has no icon, and best practices went from 0.96 to 1.00. After both changes: 64 of 64 Playwright checks passed (zero axe violations on every public route in both themes, plus the site's own WCAG 2.2 checks); pa11y-ci 25 of 25 URLs clean; every page's own prose at or under grade 8, the highest /not/ at 7.6; Lighthouse on a phone for the home page, rooms, directory and report: accessibility 1.00, performance 0.98 or better, best practices 1.00, largest paint 2.10 to 2.17 s, layout shift 0. (Run on an in-process Postgres seeded with the first (DRAFT) words, against a production build on the laptop. Lighthouse numbers are simulated for a phone on a slow network, not measured on one. The W3C HTML validator (A10 §4.3 A.2) is not in this repository's tooling and was not run. The criteria no automated check can decide are listed in docs/OPERATIONS.md.)
- 2026-09-18 — axe-core 4.13.0 via @axe-core/playwright, Playwright 1.63.0, Chromium 1194 build; pa11y-ci (axe + htmlcs, WCAG2AA); Lighthouse CI, mobile preset tags wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, best-practice; WCAG 2.2 checks of the site's own, automated (npm run test:a11y, test:pa11y, test:lighthouse), run by Claude Code in the build session: 64 of 64 checks passed: 29 public routes with zero axe violations in light and dark themes, one h1 each, the skip link first in the tab order, every image and svg with text beside it or hidden, every page's own prose at or under grade 8 with sentences averaging under 20 words; a 'Last checked' line and the accessibility, sources and formats links on every page; nothing animates under reduced motion; links keep an underline or border under forced colours; the Tab order follows the document with a visible focus ring; every target is 24 px or larger except links inside a sentence; no drag-only control; help in the same place on every page; no form asks for a reach-back twice; the page still reads at 200 % text zoom without sideways scroll; the desk's pages and forms render with JavaScript off. pa11y-ci: 25 of 25 URLs clean. Lighthouse on a phone: accessibility 1.00, performance 0.98 or better, best practices 0.96, largest contentful paint under 2.3 s, layout shift 0. (Run on an in-process Postgres seeded with the first (DRAFT) words; the same sweeps run in CI on every push. Lighthouse numbers are from the build sandbox, not a phone.)
- 2026-09-17 — axe-core 4.13.0 via @axe-core/playwright, Playwright 1.63.0, Chromium 1194 build tags wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, best-practice, automated (npm run test:a11y), run by Claude Code in the build session: 30 of 30 checks passed: 27 public routes with zero axe violations in light and dark themes, one h1 each, the skip link first in the tab order, every image with alt text, every page's own prose at or under grade 9; the home, directory, report and rooms pages read fully with JavaScript off and do not scroll sideways at 320 px; the contact form posts without JavaScript; the JSON, RSS, calendar, CSV and HSDS endpoints answer with the right types and the content-security policy. (Run on an in-process Postgres seeded with the first (DRAFT) words; the same sweep runs in CI on every push.)
Directory change log
Canonical from 2026-09-17: this file. Copied from Website/access-research-2026-09-15/directory.csv at root commit 2500eb9; earlier history is in that folder's CHANGELOG.md.
Changelog — Central Alberta disability services directory (site copy)
Newest entry first. Versions follow the convention in Website/access-research-2026-09-15/DATASET-README.md §5:
MAJOR = a column added, removed, renamed or its allowed values changed; MINOR = rows added or removed, or a status
change to defunct/renamed; PATCH = a field correction or a re-verification that changed only verified_how.
2026-09-17 — 0.2.0
data/directory.csvbecomes the canonical copy of the directory (291 rows, 13 columns, CRLF, no BOM), byte-identical toWebsite/access-research-2026-09-15/directory.csvat root commit 2500eb9. The research folder keeps the history up to that point and the scripts that built the rows; it is no longer the file the site reads.- No row changed in the copy. The next change to any row is made here.
Before 2026-09-17
See Website/access-research-2026-09-15/CHANGELOG.md: the 2026-09-15 first release (281 rows), the 2026-09-16
corroboration pass (291 rows; evidence tiers recorded), the FCSSAA registry repair and the reach check.
How to change a row
- Edit
data/directory.csv. It is the only file a row is edited in. Keep the 13 columns and their order; keep theverified_howforms (FCSSAA program registry (...) YYYY-MM-DD,page-corroborated (name+place) YYYY-MM-DD,page-corroborated (name) YYYY-MM-DD,browser-read YYYY-MM-DD,fetched YYYY-MM-DD,search result YYYY-MM-DD,recall) —lib/directory.jsreads the tier and the date out of that string, and a new wording silently drops the row to "not verified". - Add a dated line here, newest first, naming the row, what changed, and the evidence: a URL and the date it was read, or "phone, YYYY-MM-DD, [role spoken to]" — never a person's name (DATASET-README §7).
- Never edit a generated output. The public CSV and JSON downloads, the Human Services Data Specification (HSDS) export and anything rendered from them
are produced from this CSV by
lib/directory.jsandlib/hsds.jsat build time. Editing an output is lost on the next build and leaves the two disagreeing. - Re-run the tests —
node --test tests/*.test.mjs. They assert the row count, the header, unique ids and the status/verification buckets, so a malformed edit fails there rather than on the site. - Nothing identifying a resident goes in any field. Before publishing,
grepthe CSV for@and for phone patterns and confirm every hit is an organisation's own published contact (DATASET-README §7).
Last checked: September 24, 2026.