ariada.org

System architecture

ariada is a seven-stop EAA-2025 compliance pipeline plus a TypeScript scanner runtime stack, distributed as separately versioned @ariada-org/* npm packages and a reusable GitHub Actions workflow. This page enumerates every component, its classification bucket, and its license — the same inventory cited in our NLnet Commons Fund proposal and the CRA Article 24 Open Source Steward declaration.

74% of the combined 35-component inventory ships under an open-source license (16 open-source + 6 HYBRID commodity-outer surfaces = 22 OSS-touching components out of 30 non-RETIRE rows; the remaining 8 are server-side operational surface or proprietary closed cores). The full architectural specification lives in docs/PLATFORM_SPEC.md in the public repository.

System diagram

Three buckets, colour-coded. Green is published under an OSI-approved license. Amber ships a substantial OSS commodity-outer surface with the proprietary algorithmic core retained closed. Red is closed by deployment (multi-tenant operational services and trademark-bound assets) or by deliberate proprietary reservation.

OSS surface — EUPL-1.2 / MIT / CC0-1.0 (16 modules)

  • wcag-rules-extended — EUPL-1.2
  • eaa-pipeline — EUPL-1.2 (also CI differential gate outer surface)
  • statement-generator — EUPL-1.2
  • penalty-estimator — EUPL-1.2
  • evidence-emitter — EUPL-1.2
  • core-engine — EUPL-1.2
  • core-browser — EUPL-1.2
  • core-playwright — EUPL-1.2
  • cli — EUPL-1.2
  • design-plugin-scaffolds — EUPL-1.2
  • L0-mindset-framework — EUPL-1.2 + CC-BY-4.0
  • Anti-overlay explainer — CC-BY-4.0
  • brand-tokens — MIT
  • embed-badge — MIT
  • dracula-agent — MIT
  • test-fixtures — EUPL-1.2 + CC0-1.0

HYBRID — EUPL-1.2 outer + closed inner (6 modules)

  • AI authorship attribution (outer: classification schema + reference implementation; inner: classifier weights)
  • Multi-domain scanner (outer: single-domain via wcag-rules-extended; inner: multi-standard orchestrator)
  • Scan-flow visualisation (outer: scan-flow-ui base; inner: character renderer)
  • HAES ledger (outer: event-ledger schema; inner: canonical registry + Merkle anchor)
  • CI differential gate (outer: eaa-pipeline reusable workflow; inner: differential threshold semantics + baseline diff)
  • Regulatory-context MCP server — full OSS, no closed inner

Closed — deployment or proprietary reservation (6 surfaces)

  • Hosted multi-tenant SaaS dashboard — closed by deployment
  • Multi-tenant ops layer (SSO / SCIM / row-level security) — closed by deployment
  • Hosted Certificate Authority (Ed25519 signing) — closed by deployment
  • HAES Merkle anchor + AIAS canonical registry — closed by deployment
  • Tiered LLM remediation cascade and predictive backlog optimiser — closed by deployment
  • Cross-tool canonical scoring and cross-deployment regression detection — closed by deployment
Mermaid source (copy into mermaid.live or any Mermaid-aware viewer)
flowchart TB
    subgraph OSS["OSS surface (EUPL-1.2 / MIT / CC0-1.0)"]
      rules[wcag-rules-extended — EUPL-1.2]
      pipeline[eaa-pipeline — EUPL-1.2]
      statement[statement-generator — EUPL-1.2]
      penalty[penalty-estimator — EUPL-1.2]
      evidence[evidence-emitter — EUPL-1.2]
      engine[core-engine — EUPL-1.2]
      browser[core-browser — EUPL-1.2]
      playwright[core-playwright — EUPL-1.2]
      cli[cli — EUPL-1.2]
      scanflow[scan-flow-ui — EUPL-1.2]
      tokens[brand-tokens — MIT]
      badge[embed-badge — MIT]
      fixtures[test-fixtures — CC0-1.0]
    end

    subgraph HYBRID["HYBRID (OSS outer + closed inner)"]
      aiAuthorship[AI authorship attribution]
      haesLedger[HAES ledger]
      multiDomain[Multi-domain scanner]
      ciGate[CI differential gate]
      draculaViz[Dracula scan-flow visualisation]
      mcpServer[Regulatory-context MCP server]
    end

    subgraph CLOSED["Closed (proprietary core + hosted ops)"]
      llmCascade[Tiered LLM remediation cascade]
      backlogOpt[Predictive backlog optimiser]
      regressionDetect[Cross-deployment regression detection]
      canonicalScoring[Cross-tool canonical scoring]
      SaaS[Hosted SaaS dashboard]
      HAES[HAES Merkle anchor]
    end

Component matrix

Every component, its classification bucket, its license, its shipped/in-flight status, and a one-line purpose. The full per-component design contract lives in docs/PLATFORM_SPEC.md §3-§4.

Component Bucket License Status Purpose
wcag-rules-extended open-source EUPL-1.2 shipped 31 WCAG 2.2 AA rules + EAA-gap pack
eaa-pipeline open-source (also CI differential gate outer surface) EUPL-1.2 shipped Reusable GitHub Actions workflow
statement-generator open-source EUPL-1.2 shipped EN 301 549 art. 7 statement generator
penalty-estimator open-source EUPL-1.2 shipped (11 jurisdictions) Per-jurisdiction administrative-fine estimator
evidence-emitter open-source EUPL-1.2 shipped VPAT 2.5 INT + EN 301 549 JSON bundle
core-engine open-source EUPL-1.2 Wave 2 publish TypeScript scanner orchestration core
core-browser open-source EUPL-1.2 Wave 2 publish DOM adapter for Chrome/Edge extension
core-playwright open-source EUPL-1.2 Wave 2 publish Node + Chrome DevTools Protocol adapter
cli open-source EUPL-1.2 Wave 2 publish Command-line runner wrapping the scanner runtime
design-plugin-scaffolds open-source EUPL-1.2 Wave 2 publish Figma / UXP / Sketch plugin scaffolds
L0-mindset-framework open-source EUPL-1.2 (code) + CC-BY-4.0 (prose) Wave 1 publish 10-rule architect-tier accessible-design framework
Anti-overlay explainer open-source CC-BY-4.0 Wave 1 publish Public-interest explainer on overlay-product risk
brand-tokens open-source MIT Wave 1 publish Zero-runtime CSS design tokens (no logo files)
embed-badge open-source MIT Wave 3 publish (post-trademark) Web Component for embedding scan badges
dracula-agent open-source MIT Wave 2 publish Commodity viz helpers for the Dracula scan agent
test-fixtures open-source EUPL-1.2 (code) + CC0-1.0 (HTML corpus) shipped EAA-paired HTML fixture corpus + snapshots
AI authorship attribution HYBRID EUPL-1.2 outer + Proprietary inner Wave 2 publish Outer: classification spec + JSON schema. Inner: classifier weights
Multi-domain scanner HYBRID EUPL-1.2 outer + Proprietary inner Wave 2 publish Outer: single-domain via wcag-rules-extended. Inner: multi-standard orchestrator
Dracula scan-flow visualisation HYBRID EUPL-1.2 outer + Proprietary inner HOLD pending viz validation Outer: scan-flow-ui base. Inner: character renderer
HAES ledger HYBRID EUPL-1.2 outer + Proprietary inner Wave 2 publish Outer: append-only event-ledger schema. Inner: canonical AIAS registry + Merkle anchor
CI differential gate HYBRID EUPL-1.2 outer + Proprietary inner shipped (outer) Outer: eaa-pipeline reusable workflow. Inner: differential AI-vs-human thresholds + baseline diff
Regulatory-context MCP server HYBRID (full OSS) EUPL-1.2 Wave 1 scaffold Planned expansion: EAA / EN 301 549 / national-transposition lookup over Model Context Protocol
Tiered LLM remediation cascade Closed (hosted service) Proprietary not on OSS roadmap Cascade routing for source-level pull-request generation
Predictive backlog optimiser Closed (methodology on arXiv) Proprietary; methodology on arXiv not on OSS roadmap Mixed-integer-programming + ML backlog scheduler
Cross-tool canonical scoring Proprietary (closed) Proprietary not on OSS roadmap Cross-tool score normaliser; hosted service component
Cross-deployment regression detection Proprietary (closed) Proprietary not on OSS roadmap Canonical rule registry + rule-provenance graph; hosted service component
Hosted SaaS dashboard + multi-tenant ops Closed (deployment) Proprietary operational Multi-tenant ops (PostgreSQL row-level-security, SSO, SCIM, audit-log export)
Hosted Certificate Authority Closed (deployment) Proprietary operational Ed25519 signing + revocation lists for conformance certs

Pipeline flow

The canonical user flow runs five stages. Every stage is independently usable — a downstream team may stop after any stage. The contracts between stages are file-on-disk artefacts, not in-process imports, so the pipeline degrades gracefully when one stage is held back a release.

  1. Scan (owner: you, OSS scanner)
    core-engine orchestrates wcag-rules-extended against your built site, via the core-browser extension or the core-playwright Node adapter.
  2. CI gate (owner: you, OSS reusable workflow)
    eaa-pipeline wraps the scan and downstream stages as a single uses: line. Fails the pull request on new violations. The differential-gate threshold semantics are part of the CI differential gate closed inner surface.
  3. Evidence (owner: you, OSS bundler)
    evidence-emitter writes the VPAT 2.5 INT report, the EN 301 549 JSON conformance record, and a CycloneDX SBOM of the scanner itself.
  4. Statement (owner: you, OSS generator)
    statement-generator produces the EN 301 549 art. 7 accessibility statement, deterministic and byte-identical across runs.
  5. Penalty estimate (owner: you, OSS data package)
    penalty-estimator computes per-jurisdiction administrative-fine exposure ranges. 11 EU member states at v0.1; 27 EU + 3 EEA at Wave 4.

Optional hosted stages — the certificate authority, the HAES Merkle anchor evidence ledger, and the AI authorship attribution classifier — are proprietary and closed by deployment. Self-hosting adopters run the full OSS pipeline without these.

OSS surface percentage

Counting the 35-component combined inventory (22 baseline v2.1 architecture-review rows + 13 competitive-gap rows; excluding the one RETIRE row):

For comparison against the mainstream open-core anchor band:

ariada at 74% sits inside the GitLab / Sentry / PostHog / Mattermost open-core leader band and exceeds the typical accessibility-vendor OSS surface by an order of magnitude. The classification was confirmed by maintainer direction after a multi-day review across three candidate scenarios, weighing the rationale and rejection reasoning for each alternative.

CRA Open Source Steward declaration

The Cyber Resilience Act (CRA, Regulation (EU) 2024/2847) enters force progressively from 2025 with full applicability from 2027-12-11. Article 24 introduces a separate, lighter-touch regime for Open Source Stewards — legal persons (other than manufacturers) that systematically and on a sustained basis support the development of OSS products with digital elements, without monetising those products directly.

Agonist Development AB operates a dual-class CRA posture:

EUPL-1.2 Article 5 source-availability obligations and the project's REUSE compliance discipline (per-file SPDX headers, REUSE.toml per package, REUSE-CLI verification in CI) map cleanly onto the documentation expectations a national market-surveillance authority would place on an Open Source Steward.

Trademark notice

EUPL-1.2 Article 5 explicitly excludes trademark grant. The following wordmarks and brand assets are reserved by Agonist Development AB and are not licensed under any OSS license shipped on this site:

Downstream forks of any @ariada-org/* package must use a different name; the full trademark policy modelled on Mozilla Trademark Policy ships in TRADEMARK.md with the first tagged release.

Maintained by Alexander Brichkin (Agonist Development AB, Sweden, org.nr 559452-5726).