All lessons › Function F — AI Governance for Agentic Systems › Building the Governance Platform — Regulatory and Compliance
F2.1

The regulatory map

F2

This starts chapter F2. Its course guide is F2 in the Function F course guide →

▶
Lightboard recording

Not recorded yet. The lesson below is complete and runnable today — the video is added later without touching this page.

Video placeholderpublishes automatically from recordings/F2.1.mp4
Risk

One programme per regime; four times the work, none of it joined up.

Control

One control set that satisfies several regimes. Verify current status before relying on any date.

The lab

Build the crosswalk for your own sector.

◉Use case relevance

The regulatory landscape for AI is large, fast-moving and mostly draft. Reading it instrument by instrument is a way to drown; reading it as a map of jurisdictions and obligation types is a way to work.

At CyberTravels. map_obligations() shows one control answering several regimes — E1.3's per-field retention answers GDPR storage limitation and EU AI Act record-keeping, E5.6 answers GDPR Art. 33 and NIS2 Art. 23. That reuse is the argument against one programme per regime, and it is a number rather than an assertion.

◴What this lesson is — Day 0, Day 1, Day 2

One control set mapped to many regimes instead of one programme per regime, with the reuse counted — the number that argues against quadrupling the work for an eighty per cent overlap.

Day 0 — why

One programme per regime is four times the work and none of it joined up.

Day 1 — how

Separate horizontal regulation, sector overlays and cross-cutting law, and map controls outward.

Day 2 — measure

Regimes an indicator can be quoted to. They overlap on evidence, not on wording.

Measure this

what to measuredenominator or target
regimes an indicator can be quoted tocount; they overlap on evidence, not on wording

▦The framework, and how it works

   read it as a map, not as a reading list

              horizontal AI law      sector overlay      privacy
   EU         +----------------+     +------------+      +--------+
   US         |  obligations   |     | finance    |      | data   |
   UK         |  by risk tier  |     | health     |      | rights |
   other      +----------------+     +------------+      +--------+

   what you owe = the union of the cells your business sits in

The regulatory picture for an AI system has three layers, and confusing them is how programmes end up heavily invested in one while blind to another.

  1. Horizontal AI regulation — applies because it is AI, regardless of what you do. The EU AI Act is the archetype.
  2. Sector overlays — apply because of what you do, and mostly predate AI entirely: DORA for financial services, HIPAA for health, PCI DSS for card data, NIS2 for critical infrastructure.
  3. Cross-cutting law — applies to the data and the outcome: GDPR and privacy law, consumer protection, sectoral incident reporting.

The common mistake is treating layer 1 as the whole map. For most organisations layers 2 and 3 bite first and harder, because they already apply, they already have supervisors, and their clocks are shorter.

The useful exercise is never "what does the AI Act say". It is: locate one system on all three layers and find the shortest clock.

Anchor → F1.1. The reason one control set can satisfy several regimes is that regimes overlap on evidence, not on wording. An indicator computed once is quotable to each of them; a control described three ways is not.

2 · Demo — the three layers, and what triggers each

layerinstrumentstriggered bylead time
1 · horizontal AI regulationEU AI Act, national AI acts in progressthe system being AI, and its risk classificationmonths to years of transition
2 · sector overlaysDORA (financial), HIPAA (health), PCI DSS (cards), NIS2 (CNI)what your organisation doesnone — already applies
3 · cross-cuttingGDPR and privacy law, consumer protection, incident reportingthe data processed and the outcome producednone — already applies
Layer 1 is the one that gets written about and the one with time left on it. Layers 2 and 3 were already in force before anyone deployed an agent.

3 · Locate one system on all three layers

4 · The control — the shortest-clock register

Your real deadline is not the one you have read about. It is the shortest one that applies.

5 · The procedure, as a skill

CyberTravels' claims-triage agent attracts obligations from all three layers at once. The skill resolves each layer independently and registers the shortest clock among them, because that is the one the incident runbook has to meet.

▶Real time execution as skill

The skill — skills/regulatory/obligation-mapping/SKILL.md

name: obligation-mapping
description: >-
  Resolve which regulatory layers apply to an AI system — horizontal, sectoral
  and data protection — and register the shortest clock among the obligations
  they impose. Use when a system attracts obligations from more than one regime.
allowed-tools: Read, Grep, Glob

Three layers, and the shortest clock is the one you plan against

Regulation arrives in layers that apply simultaneously: horizontal AI rules triggered by what the system does, sector rules triggered by the industry, and data protection triggered by the data. A single agent commonly attracts all three, and the operational consequence is one number — the shortest reporting clock among them.

When to use this

At intake for any AI system, and again when it changes what it does, who it serves, or what data it reads.

Procedure

1 — Describe the system in the terms the regimes use. Purpose, sector, decision effect on individuals, data categories, deployment geography. These are the trigger inputs, and vague answers here produce vague obligations.

2 — Resolve each layer independently. Horizontal by risk category, sector by industry and function, data protection by category and territory. Do not let one layer's conclusion suppress another's — they are cumulative.

3 — List the obligations each produces, with its clock. Reporting windows, assessment requirements, record-keeping durations, human-oversight duties.

4 — Register the shortest clock. That is the one the incident runbook has to meet. Publish it with the obligation it comes from, so nobody relaxes it by citing a longer one.

5 — Record what changes the answer. Adding a decision effect, a new territory, a new data category. Obligations are re-derived on those events, not annually.

Example

Input — the fixture committed at the top of scripts/obligation_mapping.py. Edit it and re-run: the buckets, counts and verdicts below are derived from it, not hard-coded.

Output — the opening lines of a real run:

claims-triage-agent — autonomy L2.5, data ['customer', 'health', 'regulated']

instrument             layer  obligation
--------------------------------------------------------------------------------------------
EU AI Act                  1  automated decision affecting individuals; human oversight and record-keeping obligations
DORA                       2  ICT third-party risk, incident reporting, resilience testing, exit strategy
HIPAA-equivalent           2  minimum necessary; audit controls
GDPR                       3  lawful basis, erasure, automated decision-making

The run continues past this. test_skills.py executes the script on every build, with no model configured — so what CI proves is that it runs and refuses legibly, not that it prints these lines. The output above is a recorded run against a real model, and nothing re-diffs it: a model's answer is not reproducible, and this repository does not claim otherwise anywhere it can be checked.

Output contract

{
  "system": {"purpose": "str", "sector": "str", "decision_effect": true,
             "data_categories": ["str"], "territories": ["str"]},
  "layers": [{"layer": "horizontal|sector|data_protection", "regime": "str", "applies": true, "why": "str"}],
  "obligations": [{"regime": "str", "obligation": "str", "clock_hours": 0}],
  "shortest_clock": {"hours": 0, "from": "str"},
  "re_derive_on": ["str"]
}

Failure modes

  • Stopping at the first regime that applies. They are cumulative.
  • Planning against the longest clock. The shortest is the one you miss.
  • Annual re-derivation. The triggers are changes, not dates.

Three ways to do this lesson. Pick one. They run the same procedure against the same code — what changes is who drives it, and how much you see.

1In your AI agent — you are taught

The agent reads the lesson, explains the idea, fetches the code, runs the check and answers your questions as you go. This is the one to take if you are here to learn.

Install it, once. From the folder you cloned. --all does every agent it finds on your machine:

python3 scripts/install_skills.py --all --lessons F2.1

Then restart your agent and open it in that folder. On Windows, if python3 says Python was not found, use python instead.

Then pick f2-1-the-regulatory-map:

agentinstall just for this agentstart it
Claude Codepython3 scripts/install_skills.py --tool claude --lessons F2.1type /f2-1-the-regulatory-map
GitHub Copilot (VS Code)python3 scripts/install_skills.py --tool copilot --lessons F2.1type /f2-1-the-regulatory-map in Chat
Cursorpython3 scripts/install_skills.py --tool cursor --lessons F2.1type / in Agent chat and search for it
Codexpython3 scripts/install_skills.py --tool agents --lessons F2.1type $f2-1-the-regulatory-map, or run /skills

2As one Python command — you just run it

No agent, no conversation. The same lesson executes and prints the same readback. Take this one if you have no assistant, if you are reviewing rather than learning, or if you want the result without the teaching around it.

python3 scripts/lesson.py F2.1

3Read the code, and the difference — nothing runs

Neither of the above, and no model needed. The first command writes CyberTravels exactly as it stood at the end of this lesson; the second prints the diff — the lines this lesson added or changed, and nothing from any later one.

python3 scripts/checkpoint.py --at F2.1 --out work/cybertravels
python3 scripts/checkpoint.py --at F2.1 --diff

On Windows, type python wherever these say python3 — and use \ instead of / in the paths. Everything else is identical. A0.0 step 2 explains why.

Ways 1 and 2 need a model; way 3 does not. A signed-in Claude Code CLI needs no API key, and any OpenAI-compatible endpoint works too. With neither, the audit exits 2 and says so rather than inventing an answer. A0.0 sets this up.

Ways 1 and 2 both end with the same readback: What I did, What changed, The number and Read this next. A step that was skipped or refused is reported as exactly that, never as a pass.

If you did the last lesson’s challenge, expect this to stop. Most challenges ask you to edit the code, and ways 1 and 2 will not overwrite your edits: you get stopped, not a failure, with two options — --out for a fresh folder that keeps your work, or --force to discard it and start this lesson clean.

✓What you just proved

The three layers print with what triggers each. The claims-triage agent attracts obligations from all three — EU AI Act, DORA, a HIPAA-equivalent and GDPR. The shortest-clock register identifies DORA's 4-hour initial notification as the binding deadline, and layers 2 and 3 together produce more obligations than the horizontal AI regulation.

✎Your turn

Build the shortest-clock register for your highest-tier AI system. Most teams discover the binding deadline is a sector overlay or a customer contract, not the AI regulation they have been reading.

Tools used

OSCAL

Skill source: skills/regulatory/obligation-mapping

← PreviousF1.13 · Measuring the controls on CyberTravels — gaps and mitigations