Skip to content

at-overlay: add /arckit:at-barrierefreiheit — Austrian accessibility (BaFG / WZG, European Accessibility Act) #710

Closed

Description

@gtonic

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-bvergg already 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:

  1. Applicability determination — public body → WZG; product/service economic actor → BaFG; both possible. Apply the microenterprise exemption for BaFG.
  2. Standard & conformance — EN 301 549 mapping, WCAG 2.1/2.2 AA success-criteria status.
  3. Accessibility statement (Erklärung zur Barrierefreiheit) — required content, feedback mechanism, enforcement pointer.
  4. Product/service requirements (BaFG) — per Annex requirements, conformity assessment, CE-style declaration where applicable.
  5. Market surveillance / monitoring — SMS (BaFG) vs FFG (WZG); penalty exposure (BaFG up to €80,000).
  6. 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 both config/doc-types.mjs and commands/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

  1. self-assigned this
    on Jul 30, 2026
  2. tractorjuice commented on Jul 30, 2026

    @tractorjuice
    Owner

    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 in plugins/arckit-at/templates/_partials/document-control-at.md and referenced from at-dsgvo, at-bvergg and references/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:

    • BaFG: BGBl. I Nr. 76/2023, published 19 July 2023, applicable from 28 June 2025, transposing Directive (EU) 2019/882. Microenterprise exemption confirmed as fewer than 10 employees AND (turnover of at most EUR 2M OR balance sheet total of at most EUR 2M). Administrative penalties up to EUR 80,000, tiered lower for SMEs and microenterprises. Market surveillance by Sozialministeriumservice, which can require an entity claiming the exemption to produce the supporting evidence on request.
    • WZG: BGBl. I Nr. 59/2019, in force 23 July 2019, transposing Directive (EU) 2016/2102. EN 301 549 as the technical reference giving WCAG 2.1 AA, with a published Barrierefreiheitserklärung, a feedback mechanism and a complaints body. FFG handles monitoring and complaints.

    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. BAFG is free. The AT-regime codes currently registered in plugins/arckit-claude/config/doc-types.mjs are ATDSG, ATNISG and BVERGG, so BAFG is consistent with the BVERGG style. Registration is dual and failing it is fatal rather than cosmetic: the code must go in both plugins/arckit-claude/config/doc-types.mjs and the "Known artifact types" table in plugins/arckit-claude/commands/pages.md (around line 325 for the Austrian block). An unregistered code means validate-arc-filename.mjs blocks 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.json hardcodes "3 commands" in its description.
    • docs/index.html hardcodes "Community · 3 commands" on the Austrian jurisdiction card.
    • For the guide, note that per-command AT guides do ship to extensions (the plugin tree already carries at-bvergg.md, at-dsgvo.md, at-nisg.md), so docs/guides/at-barrierefreiheit.md plus check-guide-parity.py --sync is right and no ROOT_ONLY_BY_DESIGN entry is needed. Only overlay overview guides are root-only.

    One design question before implementation. Folding both transposition tracks into a single BAFG doc-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 register BAFG and WZG as 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?

  3. tractorjuice commented on Aug 13, 2026

    @tractorjuice
    Owner

    Re-reviewed against the current tree. Still open, still unimplemented, no PR, and nothing named barrierefreiheit or BAFG exists 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 and plugins/arckit-at/references/quality-checklist.md carries no matching ### section, CI fails. Resolution is per plugin, so the section has to exist in the AT copy, and sync-shared-assets.py --check then requires it byte-identical across every other governance overlay.
    • scripts/check-doc-type-registry.py now asserts the command's doc-type: frontmatter value against the registry, against pages.md, and against any recipe output.type. The AT overlay has no recipes/ 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 overlay README.md, plugins/arckit-at/.claude-plugin/plugin.json ("3 commands"), both marketplace manifests, and the root README.md section header (The 21 commands below). Plus docs/index.html and docs/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 needs doc-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 (or ATACC), 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 existing ATDSG / ATNISG prefix style better than BVERGG does. One registry entry, one pages.md row, 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:

    Sources: Sozialministeriumservice BaFG / SMS Kleinstunternehmen / BaFG paragraph reference / EN 301 549 status / EAA and EN 301 549

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions