Repository navigation
at-overlay: add /arckit:at-barrierefreiheit — Austrian accessibility (BaFG / WZG, European Accessibility Act) #710
Description
Feature request from the AT overlay legal review (follow-up to #707, alongside #708/#709). The Austrian overlay covers data protection (DSG), NIS2 (NISG 2026) and procurement (BVergG), but has no accessibility command. Austria has now transposed the European Accessibility Act, so this is a live compliance gap for AT projects.
Scope — two Austrian transposition tracks
1. BaFG — Barrierefreiheitsgesetz (private sector / products & services)
- Full title: Bundesgesetz über Barrierefreiheitsanforderungen für Produkte und Dienstleistungen (BaFG).
- Transposes Directive (EU) 2019/882 (European Accessibility Act, EAA); passed June 2023, applicable since 28 June 2025.
- Applies to manufacturers / importers / distributors of products and to service providers: online shops, banking services, e-books, electronic communications services, self-service terminals (ATMs, ticket machines), certain websites/apps.
- Microenterprise exemption: < 10 employees AND (≤ €2M turnover OR ≤ €2M balance sheet).
- Market surveillance: Sozialministeriumservice (SMS). Administrative penalties up to €80,000 (tiered by severity + size).
- Presumption of conformity via harmonised standard EN 301 549 (being revised for the EAA during 2025).
- Emergency calls (Notrufe) are transposed separately via the TKG 2021.
2. WZG — Web-Zugänglichkeits-Gesetz (public sector)
- BGBl. I Nr. 59/2019, in force 23 July 2019; transposes Directive (EU) 2016/2102 (public-sector websites & mobile apps).
- Applies to federal public bodies and predominantly publicly-funded bodies (Länder have their own Landesgesetze).
- Standard: EN 301 549 / WCAG 2.1 AA; requires an Erklärung zur Barrierefreiheit (accessibility statement).
- Monitoring: FFG (Österreichische Forschungsförderungsgesellschaft) + complaints body; triennial report to the EU Commission.
Note:
/arckit:at-bverggalready covers procurement accessibility (§107 BVergG / EN 301 549 / WCAG 2.2). This command is about the entity's own products/services/websites, not the tender clause.
Proposed command
/arckit:at-barrierefreiheit <project ID or description> — determines which track(s) apply and produces a conformance assessment.
Suggested sections:
- Applicability determination — public body → WZG; product/service economic actor → BaFG; both possible. Apply the microenterprise exemption for BaFG.
- Standard & conformance — EN 301 549 mapping, WCAG 2.1/2.2 AA success-criteria status.
- Accessibility statement (Erklärung zur Barrierefreiheit) — required content, feedback mechanism, enforcement pointer.
- Product/service requirements (BaFG) — per Annex requirements, conformity assessment, CE-style declaration where applicable.
- Market surveillance / monitoring — SMS (BaFG) vs FFG (WZG); penalty exposure (BaFG up to €80,000).
- Gap analysis & remediation roadmap — prioritised, with owners and dates.
Deliverables (per the "Adding a New Slash Command" checklist)
plugins/arckit-at/commands/at-barrierefreiheit.md+.arckit/templates/+plugins/arckit-at/templates/at-barrierefreiheit-template.md- New doc-type code (proposed
BAFG— "Austrian Accessibility Assessment (BaFG / WZG)") registered in bothconfig/doc-types.mjsandcommands/pages.md docs/guides/at-barrierefreiheit.md(+check-guide-parity.py --sync)- BAFG section in the shared
quality-checklist.md - Regenerate extensions (
converter.py), sync mirror + shared assets - README, CHANGELOG; handoffs to
/arckit:at-bvergg(procurement accessibility) and/arckit:requirements(NFR-UX) - Uses the new AT InfoSiG classification scheme (at-overlay: Austrian InfoSiG classification scheme instead of UK OFFICIAL-SENSITIVE #709); tests + lint green
Verification pointers (confirm against RIS before shipping)
- BaFG BGBl. number and the exact §§ for the microenterprise exemption and penalties (SMS pages / RIS)
- WZG current standard reference (EN 301 549 version; WCAG 2.1 vs 2.2)
Sources: Sozialministerium — BaFG · SMS Marktüberwachung · WZG (RIS) · FFG WZG
Activity
tractorjuice commentedon Jul 30, 2026
Triaged. Scope is sound, the legal claims check out, and the blocking dependency has cleared, so this is ready to build as written.
Dependency cleared. #709 landed with #707 (merged today,
b5480ff4). The InfoSiG scheme is live inplugins/arckit-at/templates/_partials/document-control-at.mdand referenced fromat-dsgvo,at-bverggandreferences/quality-checklist.md, so the classification prerequisite in your deliverables list is satisfied. #710 is now the last open item from the AT legal-review batch.Legal claims verified independently:
No corrections needed to the scope as filed.
Two items still open from your verification list. RIS returned 503 when I tried, so the exact paragraph numbers in the BaFG for the microenterprise exemption and the penalty tiers remain unconfirmed and need a direct RIS check before the command text quotes them. Separately, the issue notes EN 301 549 was under revision for the EAA during 2025. That revision decides WCAG 2.1 versus 2.2 in the conformance mapping, so its current status wants a fresh check now rather than the position as of filing.
Doc-type code.
BAFGis free. The AT-regime codes currently registered inplugins/arckit-claude/config/doc-types.mjsareATDSG,ATNISGandBVERGG, soBAFGis consistent with theBVERGGstyle. Registration is dual and failing it is fatal rather than cosmetic: the code must go in bothplugins/arckit-claude/config/doc-types.mjsand the "Known artifact types" table inplugins/arckit-claude/commands/pages.md(around line 325 for the Austrian block). An unregistered code meansvalidate-arc-filename.mjsblocks every write the command attempts, which was the #712 failure mode.Three enumeration points beyond your checklist, all of which fail silently rather than breaking a test:
plugins/arckit-at/.claude-plugin/plugin.jsonhardcodes "3 commands" in its description.docs/index.htmlhardcodes "Community · 3 commands" on the Austrian jurisdiction card.at-bvergg.md,at-dsgvo.md,at-nisg.md), sodocs/guides/at-barrierefreiheit.mdpluscheck-guide-parity.py --syncis right and noROOT_ONLY_BY_DESIGNentry is needed. Only overlay overview guides are root-only.One design question before implementation. Folding both transposition tracks into a single
BAFGdoc-type means a public body's WZG artefact carries a code named after the private-sector act. Two options: keep one code with the applicability determination up front, which is simplest and matches the proposal as filed, or registerBAFGandWZGas separate codes so the artefact name matches the regime that actually applies. Happy either way, but worth settling before the template is written since changing it later moves filenames. Do you have a preference?tractorjuice commentedon Aug 13, 2026
Re-reviewed against the current tree. Still open, still unimplemented, no PR, and nothing named
barrierefreiheitorBAFGexists anywhere.plugins/arckit-at/still ships 3 commands, and this is still the only open AT issue. Everything in the triage above holds. Three updates.Two new CI gates now impose requirements this issue's deliverables list does not mention
Both landed in the fortnight since triage.
scripts/check-quality-checklist-refs.py(quality-checklist.md has no per-type sections for 61 doc-types across 5 regimes #748 / feat(ci): guard that every per-type quality-checklist reference resolves #751). The checklist section is no longer optional. If the command ends with the standard "plus the BAFG per-type checks" line andplugins/arckit-at/references/quality-checklist.mdcarries no matching###section, CI fails. Resolution is per plugin, so the section has to exist in the AT copy, andsync-shared-assets.py --checkthen requires it byte-identical across every other governance overlay.scripts/check-doc-type-registry.pynow asserts the command'sdoc-type:frontmatter value against the registry, againstpages.md, and against any recipeoutput.type. The AT overlay has norecipes/directory, so only the first two bite here. The "registration is dual and failing it is fatal" note above is now enforced rather than advisory.Separately, the enumeration points listed by hand in the triage comment are now written down in
CONTRIBUTING.md(#741), at lines 82 to 88 and 232 onward. It puts the count at five stated numbers, two more than the triage listed: the overlayREADME.md,plugins/arckit-at/.claude-plugin/plugin.json("3 commands"), both marketplace manifests, and the rootREADME.mdsection header (The 21 commands below). Plusdocs/index.htmlanddocs/DEPENDENCY-MATRIX.md.The two open verification items
EN 301 549 is resolved. v3.2.1 (March 2021, harmonised August 2021) is still the cited harmonised standard under both the EAA and the Web Accessibility Directive, so WCAG 2.1 AA is the binding baseline today. Draft v4.1.0 went out for public review in November 2025; final v4.1.1 carrying WCAG 2.2 AA is expected to be cited in the Official Journal around October 2026. The command should assess against 2.1 AA and treat 2.2 as forward-looking, not the reverse.
The BaFG paragraph numbers are still not RIS-confirmed. RIS returned 503 again today, the same failure as at triage. Secondary sources give consistent candidates: microenterprise exemption at § 6, the definition (fewer than ten persons, and turnover or balance sheet total of at most EUR 2M) at § 3 Z 19, market surveillance at § 21, and Strafbestimmungen at § 36. The first two agree across two independent sources; § 21 and § 36 rest on one. Good enough to draft against, not good enough to quote as authority. This stays a pre-merge check against RIS.
The design question, answered
Neither of the two options offered above is the right one. A third is better.
Both candidate codes are free (
BAFG,WZG, and neutral alternatives all return zero collisions against the 183 currently registered codes). But the two-code option carries a cost the triage did not price in: it needsdoc-type: [BAFG, WZG], and no command in the tree declares a doc-type list today. It would be first of kind against a gate only ever exercised on scalars. It also duplicates the EN 301 549 mapping, which is the substantive half of the document and identical across both tracks.Recommendation: one artefact, one code, named neutrally.
ATBFR(orATACC), described as "Austrian Accessibility Assessment (BaFG / WZG)". That keeps the shape exactly as filed, with applicability determination as section 1, while removing the actual defect: a public body's artefact carrying a private-sector act's name. It also fits the overlay's existingATDSG/ATNISGprefix style better thanBVERGGdoes. One registry entry, onepages.mdrow, one checklist section, no first-of-kind frontmatter.The one case arguing for a split is an entity subject to both tracks, such as a public body running an in-scope e-commerce service. That is real but rare, and the enforcement split (SMS with EUR 80,000 exposure versus FFG with monitoring and complaints) is a section heading inside one document rather than a reason for two filenames.
Two adjacent defects found while checking
Both pre-date this issue, so they are filed separately rather than folded in:
plugins/arckit-at/commands/at-bvergg.md:140cites "§107 BVergG / EN 301 549 / WCAG 2.2", but the harmonised reference is v3.2.1, which gives 2.1 AA. This one is worth landing before the accessibility command is written, so the overlay is internally consistent from the start.README.md(lines 367 and 396) anddocs/contributors.html:393still say "NISG 2024" and "GovCERT reporting" after the NISG 2026 correction reached the command and template. Documentation only.Sources: Sozialministeriumservice BaFG / SMS Kleinstunternehmen / BaFG paragraph reference / EN 301 549 status / EAA and EN 301 549
feat(at): add /arckit:at-barrierefreiheit — Austrian accessibility (B…
Merge branch 'main' into feat/arckit-eu-cloud-sovereignty