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

Incident and disclosure obligations

F2
▶
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.6.mp4
Risk

Materiality assessed for an autonomous actor with a human-actor playbook.

Control

Coordinate with E2 in hour one.

The lab

Draft the notification for an agentic incident.

◉Use case relevance

The question "is this reportable" has to be answerable in hours, by someone who is already busy. Trigger criteria written during an incident are written under the worst conditions available.

At CyberTravels. E5.6 started the clocks in hour one. This is the phase breakdown underneath them, and the finding is where the time goes: establishing who acted is the largest block, which E1.0's clock already measured and which would be near zero for a human actor.

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

Breaking a disclosure deadline into its phases to find the one that consumes it, which for an agentic incident is establishing who acted rather than containment.

Day 0 — why

The clock starts at awareness and broken attribution consumes it, so containing fast buys no reporting time.

Day 1 — how

Write the trigger criteria before they are needed, with separate owners for containment and disclosure.

Day 2 — measure

Whether the pre-incident reading existed at all. During an incident you are either quoting a measurement or guessing.

Measure this

what to measuredenominator or target
whether the pre-incident reading existed at allyes/no; during an incident you are either quoting a measurement or guessing

▦The framework, and how it works

   the question, asked at 2am, by someone already busy

   is it reportable?  --> to whom?  --> by when?

   +---------------------------------------------+
   | trigger criteria, written in advance:       |
   | data class . autonomy . harm . jurisdiction |
   +---------------------------------------------+

   criteria written during an incident are written badly

Incident and disclosure obligations meet agentic incidents badly, for one specific reason: broken attribution consumes the clock.

The clock starts at awareness — when you know a reportable event may have occurred. It does not pause while you work out who did it. So if your logs attribute an agent's actions to the human whose credential it borrowed (E3.4), the days you spend establishing what actually happened are deadline days.

Two consequences worth internalising:

  1. Containing fast does not buy reporting time. You can contain in an hour and still miss a 72-hour deadline.
  2. You will have to disclose before attribution is complete. So the sentence you send when you know an agent acted but cannot yet say which one needs to be drafted now, not during the incident.
Anchor → F1.1. A disclosure clock runs on facts you either measured before the incident or are guessing at during it. E5.4 re-measures the indicators after the fix; this lesson is why the pre-incident reading has to have existed at all.

2 · Demo — the clock, and what attribution costs it

3 · The control — fix attribution, and pre-draft the hard sentence

4 · The procedure, as a skill

Containment takes an hour and establishing who acted takes forty-eight, on a seventy-two hour clock. The skill breaks the deadline into phases, finds the dominant one, and re-runs it with delegation chains recorded.

▶Real time execution as skill

The skill — skills/regulatory/disclosure-phase-breakdown/SKILL.md

name: disclosure-phase-breakdown
description: >-
  Break a disclosure deadline into its phases and find the one that consumes
  most of it — usually establishing who acted rather than containment. Use when
  a reporting obligation is being planned for, or was missed.
allowed-tools: Read, Grep, Glob

Two-thirds of the clock is establishing who acted

Disclosure planning concentrates on containment because that is the exciting part. The phase breakdown says otherwise: containment in an hour, and establishing the acting identity in forty-eight, on a seventy-two hour clock. The delay is attribution, and attribution is fixed months earlier by what the logs record.

When to use this

Planning for a reporting obligation, and at post-incident review when a deadline was met late or narrowly.

Procedure

1 — Enumerate the phases. Detection, triage, containment, establishing who acted, scoping affected subjects, drafting, approval, submission. All of them, including the approval step everyone forgets.

2 — Attribute hours to each from a real incident or a tabletop. Estimates here are systematically optimistic; use measured values where you have them and mark the rest as estimates.

3 — Find the dominant phase. It is usually attribution or scoping. Report it as a proportion of the whole clock, which is what makes it actionable.

4 — Re-run with delegation chains recorded. Model what attribution costs when the acting identity and the chain are on every record. The difference is the business case for B2.7-style attribution, in hours against a regulatory deadline.

5 — Pre-draft what can be pre-drafted. The regime, the template, the distribution list, the approver. Drafting under time pressure is where the avoidable hours are.

Example

Input — the fixture committed at the top of scripts/disclosure_phase_breakdown.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:

scenario                          contain   report   met   margin
------------------------------------------------------------------
attribution sound                     2.0     20.0  True     52.0
attribution broken, 3d scope          6.0     92.0 False    -20.0
fast containment, slow scope          1.0     80.0 False     -8.0

The third row contained in ONE HOUR and missed by 8 hours.
phase                                   hours  cumulative  note

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

{
  "obligation": {"regime": "str", "hours": 0},
  "phases": [{"phase": "str", "hours": 0, "measured": false}],
  "total_hours": 0,
  "dominant": {"phase": "str", "share": 0.0},
  "with_attribution": {"phase_hours": 0, "total_hours": 0, "meets_deadline": true},
  "pre_drafted": ["str"]
}

Failure modes

  • Optimising containment. It is already the fast phase.
  • Estimating attribution. Measure it once; it is worse than you think.
  • Omitting approval. It is a real phase with a real queue.

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.6

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-6-incident-and-disclosure-obligations:

agentinstall just for this agentstart it
Claude Codepython3 scripts/install_skills.py --tool claude --lessons F2.6type /f2-6-incident-and-disclosure-obligations
GitHub Copilot (VS Code)python3 scripts/install_skills.py --tool copilot --lessons F2.6type /f2-6-incident-and-disclosure-obligations in Chat
Cursorpython3 scripts/install_skills.py --tool cursor --lessons F2.6type / in Agent chat and search for it
Codexpython3 scripts/install_skills.py --tool agents --lessons F2.6type $f2-6-incident-and-disclosure-obligations, 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.6

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.6 --out work/cybertravels
python3 scripts/checkpoint.py --at F2.6 --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

One-hour containment still misses the 72-hour deadline when scoping is slow. The phase breakdown totals 92 hours, of which establishing who acted is 48 — two-thirds of the entire deadline. Recording act chains cuts the total to 44.5 hours and meets the deadline. The runbook check flags a shared owner, a late clock start and a missing pre-drafted disclosure.

✎Your turn

Draft the disclosure sentence you would send when you know an agent acted but cannot say which one. Getting legal to agree that wording takes weeks in peacetime and is impossible at hour 60.

Skill source: skills/regulatory/disclosure-phase-breakdown

← PreviousF2.5 · Privacy and data protection