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

Documentation that survives supervision

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.7.mp4
Risk

"Explainability" for a system with no deterministic reasoning.

Control

System documentation, data lineage, eval records, oversight evidence, decision logs.

The lab

Assemble the pack for one high-risk workflow.

◉Use case relevance

Documentation written for an auditor and documentation written for engineers are usually two documents that disagree. The one that survives supervision is the one generated from the same source as the system.

At CyberTravels. Six sections, none of which is an explanation of the model's reasoning and all of which a supervisor can act on: purpose, authority, bounds, a run record, who decided, and the known limitations — including F1.13's known_gaps(), which is the section that makes the other five believable.

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

What supervisory documentation can contain for a system with no deterministic reasoning — purpose, authority, bounds, a run record, decisions and known limitations — none of which is an explanation of the model and all of which a supervisor can use.

Day 0 — why

Documentation that restates intent is what supervision fails.

Day 1 — how

Make every sentence name a control, an artefact and a date.

Day 2 — measure

Indicator readings with dates on them. A narrative describing a control is not evidence that it operated.

Measure this

what to measuredenominator or target
indicator readings carrying a dateshare of readings; a narrative describing a control is not evidence it operated

▦The framework, and how it works

   two documents that disagree
   +------------------+     +---------------------+
   | for the auditor  |     | for the engineers   |
   +------------------+     +---------------------+

   one document, generated from the system's own source
   +----------------------------------------------+
   | model card . decision record . control        |
   | narrative — all from the register and the CI  |
   +----------------------------------------------+

Documentation survives supervision when it points at machine-generated evidence rather than restating intent.

The difference is not length or formality. It is whether each sentence names three things:

  • a control that operates,
  • an artefact it produces,
  • a date on which that artefact was last produced.

A sentence with all three can be checked. A sentence with none of them is a statement of intent, and a supervisor's next question makes that visible immediately.

Intent statements are not forbidden — some things genuinely are aspirations. The failure is presenting them as controls. Label them, and the rest of the document becomes more credible rather than less.

Anchor → F1.1. Documentation that survives supervision is largely indicator readings with dates on them. A narrative describing a control is what supervision fails; a series of measurements is what it accepts.

2 · Demo — the same policy paragraph, two ways

3 · Where it breaks — the follow-up question

the follow-up questionanswerable from the document?
“appropriate oversight” — show me the last time it operated.no
“reviewed periodically” — what period, and when was the last one?no
“comprehensive logging” — produce one action's full record.no
“act chain for every action” — produce the August sample.yes
Three of four cannot be answered, and by the time the fourth is asked the person asking doubts that one too. Vague language does not fail on its own line; it fails the lines around it.

4 · The control — verify the document against live control state

5 · The procedure, as a skill

The skill counts the sentences that name a control, an artefact and a date. The weak paragraph scores zero and reads perfectly well; the strong one scores three and answers the follow-ups a supervisor actually asks.

▶Real time execution as skill

The skill — skills/regulatory/supervisory-documentation-score/SKILL.md

name: supervisory-documentation-score
description: >-
  Score written documentation on how many of its sentences are checkable — each
  naming a control, an artefact and a date — and test it against the follow-up
  questions a supervisor actually asks. Use before submitting anything to an
  assessor.
allowed-tools: Read, Grep, Glob

Count the checkable sentences

Documentation that survives supervision is not better written; it is differently written. Each load-bearing sentence names a control, the artefact that evidences it, and a date. A paragraph with none of those reads well, passes internal review, and produces four follow-ups you cannot answer.

When to use this

Before submitting documentation to a regulator, an auditor or a customer's assurance team.

Procedure

1 — Split the text into sentences and score each. Does it name a control identifier, an artefact, and a date? Three marks per sentence, and the count of sentences scoring all three is the headline.

2 — Report the weak version's score. Usually zero. Showing it beside the strong version is what changes how the next document gets written.

3 — Rewrite so the load-bearing claims carry all three. Not every sentence — the ones an assessor would test. The rest can be prose.

4 — Generate the follow-up questions and try to answer them from the text alone. "Which control", "show me the artefact", "when was it last tested", "who owns it". A question you cannot answer from the document is a question you will answer live, badly.

5 — Attach the artefacts. A checkable sentence with an unattached artefact is one email away from being unevidenced.

Example

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

=== WEAK — 0/3 sentences checkable ===
   [---] Our AI systems are subject to appropriate oversight and 
   [---] Access is
granted on a least-privilege basis and reviewe
   [---] Agents are
monitored for anomalous behaviour and we main

=== STRONG — 0/6 sentences checkable ===

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

{
  "sentences": [{"text": "str", "names_control": false, "names_artefact": false, "has_date": false}],
  "score": {"checkable": 0, "total": 0},
  "comparison": {"weak_checkable": 0, "strong_checkable": 0},
  "followups": [{"question": "str", "answerable_from_text": false}],
  "artefacts_attached": ["str"]
}

Failure modes

  • Editing for tone. The problem is not the prose.
  • Making every sentence checkable. Only the load-bearing ones need it.
  • Naming an artefact you did not attach. The follow-up arrives immediately.

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

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-7-documentation-that-survives-supervision:

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

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.7 --out work/cybertravels
python3 scripts/checkpoint.py --at F2.7 --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 weak paragraph has zero checkable sentences; the strong one has three, each naming a control, an artefact and a date. Three of four supervisor follow-ups are unanswerable from the weak version. Verifying the strong document against live control state finds SB-2 stale, so one of its claims is no longer true — which is only detectable because the document named a control.

✎Your turn

Rewrite one paragraph of your AI policy in the strong shape. Any sentence that cannot name an artefact is intent — label it as such rather than deleting it, and the document gets more credible.

Tools used

OSCALModel Cards

Skill source: skills/regulatory/supervisory-documentation-score

← PreviousF2.6 · Incident and disclosure obligations