EU AI Act · Article 50 · in force from 2 August 2026

What each surface on this site actually is.

Article 50(1) requires that you be told, at the start of your first interaction, when you are interacting with an AI system. Article 3(1) defines an AI system as one that infers, from the input it receives, how to generate its output. Recital 12 places outside that definition “systems that are based on the rules defined solely by natural persons to automatically execute operations”.

Self-conformance record · 2026-08-01

Statement. As of 2 August 2026, 171 interactive surfaces on this site are classified: 130 are rule-based instruments or deterministic displays that call no model; 41 routes across 14 components are AI systems — they send your input to the live Council chat endpoint, and they say so. Any surface not in the registry defaults to the strictest reading — treated as an AI system — until it is classified.

How this record updates. The registry is a source file (client/src/lib/ai-surfaces.ts), version 2.0.0; every change is a commit, and a guard in the release gate fails the build if a surface starts calling a model without being registered and noticed. This record is sha256-linked into the public decision chain at publication — recompute it yourself at /gspc-verify.

311
routes scanned
171
interactive surfaces
41
AI-system routes
0
unclassified

The correction this page owes you

Version 1.0.0 of this registry (29 July 2026) stated that zero surfaces on this site call a model. That was wrong, and the method was why: the scan walked imports of model-provider SDKs, but the surfaces that talk to a model do it with a plain fetch to our own gateway — no SDK involved. A manual audit of every fetch on 1 August 2026 found 14 components calling the live Council chat endpoint. They are classified below, and the guard is being extended to cover gateway fetches so the next miss is caught by the machine, not by a deadline.

The AI-system surfaces — 41

These routes reach a live model. 7 of them mount the Article 50(1) first-interaction notice above the input today; for the rest, this registry entry is the disclosure while the notice component is wired — listed plainly, because a notice you can check beats a claim you cannot.

/sovereign-dockCouncil Signal (global)notice wiringAI system

The dock sends your message to the live Council gateway (councilof.ai/api/gspc) and a model writes the reply. It is mounted on every page; the notice below the dock header discloses this at first interaction, per Article 50(1).

check it: client/src/components/SovereignDock.tsx · client/src/lib/sovAsk.ts

/ai-act-summaryActSummarynotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/ActSummary.tsx · client/src/components/SovereignSpot.tsx

/classifierAnnex III classifiernotice mountedAI system

CORRECTED 1 Aug 2026 — v1.0.0 registered this as keyword matching; the code actually sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Article 50(1) notice is mounted above the input.

check it: client/src/pages/EuActClassifier.tsx

/cyber-scanCyberScannotice mountedAI system

The triage box sends pasted scanner output to the live Council chat endpoint (councilof.ai/api/gspc), where a model ranks the findings and maps them to frameworks. The Article 50(1) notice is mounted above the input.

check it: client/src/pages/CyberScan.tsx

/demoDemoOSnotice wiringAI system

The guided demo answers questions by sending your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/DemoOS.tsx · client/src/lib/sovAsk.ts

/eu-ai-act-explainedActSummarynotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/ActSummary.tsx · client/src/components/SovereignSpot.tsx

/finesPenaltiesnotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/Penalties.tsx · client/src/components/SovereignSpot.tsx

/foundation-modelsGpaiObligationsnotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/GpaiObligations.tsx · client/src/components/SovereignSpot.tsx

/frameworks/nistNISTAIRMFGuidenotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/NISTAIRMFGuide.tsx · client/src/components/SovereignSpot.tsx

/globeWorldGlobenotice mountedAI system

'Ask your Council assistant about the world' sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The answer can also drive the globe (layers, flights) through a deterministic action layer. The Article 50(1) notice is mounted above the input.

check it: client/src/pages/WorldGlobe.tsx · client/src/lib/sovAsk.ts

/gods-eyeCyberScannotice mountedAI system

The triage box sends pasted scanner output to the live Council chat endpoint (councilof.ai/api/gspc), where a model ranks the findings and maps them to frameworks. The Article 50(1) notice is mounted above the input.

check it: client/src/pages/CyberScan.tsx

/governance-graphGovGraphnotice wiringAI system

The query box sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/GovGraph.tsx

/gpaiGpaiObligationsnotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/GpaiObligations.tsx · client/src/components/SovereignSpot.tsx

/graphGovGraphnotice wiringAI system

The query box sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/GovGraph.tsx

/guides/nist-ai-rmfNISTAIRMFGuidenotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/NISTAIRMFGuide.tsx · client/src/components/SovereignSpot.tsx

/heatmapWatchdogMapnotice wiringAI system

The map Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/WatchdogMap.tsx

/hive/:slugFrameworkHivenotice wiringAI system

The framework Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/FrameworkHive.tsx · client/src/lib/sovAsk.ts

/humanoids-pocPocShowcasenotice wiringAI system

The showcase Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/PocShowcase.tsx

/iso-42001-vs-eu-ai-actIso42001VsEuActnotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/Iso42001VsEuAct.tsx · client/src/components/SovereignSpot.tsx

/iso-euIso42001VsEuActnotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/Iso42001VsEuAct.tsx · client/src/components/SovereignSpot.tsx

/nist-ai-rmfNISTAIRMFGuidenotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/NISTAIRMFGuide.tsx · client/src/components/SovereignSpot.tsx

/one-osPocShowcasenotice wiringAI system

The showcase Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/PocShowcase.tsx

/osOsLaunchernotice wiringAI system

The launcher command box posts to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/OsLauncher.tsx

/os-demoDemoOSnotice wiringAI system

The guided demo answers questions by sending your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/DemoOS.tsx · client/src/lib/sovAsk.ts

/penaltiesPenaltiesnotice wiringAI system

The embedded 'Ask your Council assistant' panel (SovereignSpot) sends questions to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/Penalties.tsx · client/src/components/SovereignSpot.tsx

/pocPocShowcasenotice wiringAI system

The showcase Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/PocShowcase.tsx

/regulator-atlasRegulatorAtlasnotice wiringAI system

The atlas Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/RegulatorAtlas.tsx

/regulatorsRegulatorAtlasnotice wiringAI system

The atlas Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/RegulatorAtlas.tsx

/scanCyberScannotice mountedAI system

The triage box sends pasted scanner output to the live Council chat endpoint (councilof.ai/api/gspc), where a model ranks the findings and maps them to frameworks. The Article 50(1) notice is mounted above the input.

check it: client/src/pages/CyberScan.tsx

/simulateCouncilSpacenotice wiringAI system

Scenario verdicts are written by the live Council chat endpoint (councilof.ai/api/gspc), a model prompted as the governance council. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/CouncilSpace.tsx

/gspc-arenaCouncilSpacenotice wiringAI system

Scenario verdicts are written by the live Council chat endpoint (councilof.ai/api/gspc), a model prompted as the governance council. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/CouncilSpace.tsx

/sov3Workbenchnotice wiringAI system

The workbench asks the live Council assistant to produce the governance artifact for the skill you pick. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/Workbench.tsx · client/src/lib/sovAsk.ts

/tryTryCouncilnotice mountedAI system

The first pass (risk classification) runs locally on fixed rules; 'Convene the council' sends your system description to the live Council chat endpoint (councilof.ai/api/gspc), where five model agents answer in role. The Article 50(1) notice is mounted above the input.

check it: client/src/pages/TryCouncil.tsx

/watchdog-heatmapWatchdogMapnotice wiringAI system

The map Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/WatchdogMap.tsx

/watchdog-mapWatchdogMapnotice wiringAI system

The map Q&A sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/WatchdogMap.tsx

/workbenchWorkbenchnotice wiringAI system

The workbench asks the live Council assistant to produce the governance artifact for the skill you pick. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/Workbench.tsx · client/src/lib/sovAsk.ts

/worldWorldGlobenotice mountedAI system

'Ask your Council assistant about the world' sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The answer can also drive the globe (layers, flights) through a deterministic action layer. The Article 50(1) notice is mounted above the input.

check it: client/src/pages/WorldGlobe.tsx · client/src/lib/sovAsk.ts

/world-dataGovGraphnotice wiringAI system

The query box sends your input to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Art 50(1) notice for this surface is registered here and being wired; until the component ships, this registry entry is the disclosure.

check it: client/src/pages/GovGraph.tsx

/hiveFrameworkHivenotice wiringAI system

The hive list view mounts the same component as /hive/:slug, whose detail view asks the live Council assistant about the framework you open. Because this surface's code reaches the live chat endpoint it is registered ai_system; the Article 50(1) notice is mounted at the top of the list view.

check it: client/src/pages/FrameworkHive.tsx · client/src/lib/sovAsk.ts

/old-homeHome (legacy chat)notice wiringAI system

The legacy home is a chat panel: every message you send goes to the chat backend (trpc.chat.sendMessage) and an assistant-written reply is rendered. The server router's types are not in this repo (a pre-existing broken import), so the backend cannot be inspected from here; under this registry's strictest-reading rule a chat-with-assistant surface is treated as an AI system. The Article 50(1) notice is mounted above the message area.

check it: client/src/pages/Home.tsx

/why-csoaiWhyCSOAInotice wiringAI system

The page mounts SovereignSpot, whose 'Ask your Council assistant' box sends your question through askSovereign to the live Council chat endpoint (councilof.ai/api/gspc), where a model writes the answer. The Article 50(1) notice is mounted at the top of the page, before the chat panel.

check it: client/src/pages/WhyCSOAI.tsx · client/src/components/SovereignSpot.tsx · client/src/lib/sovAsk.ts

The rule-based surfaces — 130

Deterministic instruments, data displays and forms. Each was grep-audited for model calls; the mechanism line names what the surface is and asserts only what was verified. Rule-based systems defined solely by natural persons fall outside the Article 3(1) definition (Recital 12), so Article 50(1) does not apply to them — we say so rather than leave it unsaid.

One thing worth watching

3 model SDKs are declared in package.json — @anthropic-ai/sdk, openai, @google/generative-ai — and never imported anywhere. A dependency is not a call, so this is not a disclosure failure. It is the shortest possible distance to becoming one: adding inference is a single import with no install step and nothing to prompt a second look. The guard reports it every run.

What happens when this stops being true

A page like this is worth nothing if it is maintained by remembering to maintain it. The classification is a registry file, and article50_guard.py reads it: if any surface's code reaches a model — by SDK import or, after the 1 August correction, by gateway fetch — that surface must be registered as an AI system and must mount the Article 50(1) notice. If an interactive surface exists and is missing from the registry, the guard fails. The check runs in the release gate.

Three outcomes, never two. When the guard cannot read the app it reports UNMEASURED, which is not a pass. And when its method has a blind spot — as the import-only scan did — the correction is published in the registry itself, not buried in a changelog.

Scope, honestly

  • This covers interaction, not reading. Static prose pages are out of scope — Article 50(1) is about interacting with a system.
  • Article 50(2) is not engaged. Nothing here generates synthetic audio, image, video or text, so there is no output to mark. If that changes, the marking obligation attaches — and the grace period to 2 December 2026 reaches only systems placed on the market before 2 August 2026, which a new feature would not be.
  • The gateway is ours. The model behind the Council chat endpoint is operated under our own governance boundary; the endpoint, not the model vendor, is what these surfaces call.
  • Classification is our reading, not a determination. Whether a given rules engine falls inside Article 3(1) is a legal question. The mechanism and the source file are published so you can reach your own view.
  • This is our own compliance. Publishing it does not make CSOAI a certifier of anyone else's.
registry version 2.0.0
assessed 2026-08-01
source: client/src/lib/ai-surfaces.ts
guard: article50_guard.py