assurance · Level 3
Open model licences, datasets and deployment obligations
Open weights versus open source, the licence families you will meet, dataset rights, model cards, AI bills of materials and supply-chain checks, with a licence checklist tool you build and test.

Your next step
Start this course online
Register your start, then work through the lessons and exercises at your own pace. You can download the PDF separately. Where a scored exam is available, you will find it after the lessons.
Register or resume your course
Start with the essentials
The short answer
An open model is only as open as its terms. Open weights are not open source: the OSI's definition also asks for complete code, detailed data information and freedom to use for any purpose. Before you use, host or redistribute a model or dataset, read the grant, restrictions, thresholds, attribution and termination terms, check dataset rights separately, verify hashes, and involve a solicitor when unsure.
What you will learn
- You will be able to explain the difference between open weights and open source, using what the Open Source AI Definition 1.0 actually requires.
- You will be able to read any model licence for its grant, field-of-use limits, redistribution, attribution, patents, outputs, derivatives, termination and thresholds.
- You will be able to tell a dataset's licence apart from the rights in its items, and spot terms that clash with your intended use.
- You will be able to use model cards, datasheets and a CycloneDX or SPDX bill of materials as evidence, and say what each records.
- You will have built and tested a standard-library Python licence checklist that flags common problems and drafts a NOTICE file, and you will be able to verify hashes and explain why pickled files are risky.
Who it is for
Procurement, legal-adjacent, security and engineering staff in UK public-sector and regulated organisations who must decide whether an 'open' model or dataset may be used, modified, hosted or redistributed. You need to read short Python and run a script from a terminal.
Before you start
- Know what an open-weight model is, as in Which AI model should I use?, and be able to run a Python script from a terminal, as in Python: from first script to a useful automation. Privacy and data minimisation in AI applications helps with the personal data parts.
Learn in your browser · Chapter 01 of 06
Open weights are not open source
Many releases are called open. Pin down what was actually released, and what the Open Source AI Definition asks for.
An open-weight model has downloadable weights under some licence. Open source is a stricter claim. The Open Source Initiative's Open Source AI Definition 1.0 (OSAID) requires freedoms to use, study, modify and share. The first reads: "Use the system for any purpose and without having to ask for permission." It also requires the preferred form to make modifications:
Scroll sideways to see every column.
| Element | What OSAID 1.0 requires |
|---|---|
| Data information | Enough detail for a skilled person to build a substantially equivalent system, including where to get public or third-party data. Unshareable data, such as personal data, is described, not published. |
| Code | The complete code to train and run the system, under OSI-approved licences. |
| Parameters | The weights and other settings, under OSI-approved terms. |
The OSI's FAQ adds that it validates legal documents, not individual AI systems. A release is a bundle: weights, code, datasets, hosting terms and acceptable-use policies can each carry different terms, so record each one.
Try it yourself · Activity 01
10 minClassify three releases
All three are invented. Could each meet the OSAID?
- A: weights under Apache-2.0; no training code; the card says only "trained on public web data".
- B: weights and code under OSI-approved licences; a data description listing public datasets and where to get them, and describing a private dataset it cannot share.
- C: weights, code and full data information, under a licence forbidding surveillance use.
What would you write in a procurement file for A?
Worked answer
A: no. The licence is permissive, but code and data information are missing: record it as open weights under Apache-2.0. B: possibly, because unshareable data may be described rather than published; check the description is complete. C: no: a use restriction conflicts with the freedom to use for any purpose.
Learn in your browser · Chapter 02 of 06
Licence families and what to read in any licence
Model licences fall into three broad families. Whatever the family, ten questions show what you may do.
Scroll sideways to see every column.
| Family | Usually means | Examples |
|---|---|---|
| Permissive | Broad rights, if you keep notices | Apache-2.0, MIT |
| Use-restricted | Broad rights minus listed uses, which travel with copies | Responsible AI Licences (RAIL) |
| Custom community | Publisher-written; may add thresholds, naming rules and use policies | Licences named after a model family |
Apache-2.0 grants copyright and patent licences. Redistributors must include the licence, mark changed files, keep notices and pass on any NOTICE file's contents (section 4). The patent licence ends for anyone who sues claiming the work infringes a patent (section 3). MIT asks that its notices travel with copies.
RAIL licences carry behavioural-use restrictions that must bind downstream users and derivatives. The RAIL FAQ says OpenRAIL licences are not open source under the OSI's definition.
Custom licences vary most. A custom community licence may combine a user-count threshold above which you need a separate licence, a required credit display and notice file, a naming rule for derived models, an incorporated acceptable-use policy, termination on breach and a foreign governing law.
Scroll sideways to see every column.
| Read | Ask |
|---|---|
| Grant | Use, copy, modify, distribute, sublicense? |
| Field of use | Any uses, users or sectors excluded? |
| Redistribution | What must travel with a copy? |
| Attribution | What credit, file or display? |
| Patents | A grant? What ends it? |
| Outputs | Any claim on, or limit to, outputs? |
| Derivatives | Do fine-tuned versions inherit terms or names? |
| Termination | What ends it, and what then? |
| Thresholds | Do users, revenue or size change the terms? |
| Law | Which country's law and courts? |
Try it yourself · Activity 02
15 minRead the MIT License
Open the MIT License on the OSI's website (opensource.org) and answer from its text alone.
- What may a recipient do?
- What condition applies?
- Are patents granted expressly?
- What about warranty?
- Is any field of use restricted?
Which of the ten questions does MIT leave open for weights?
Worked answer
1 Use, copy, modify, merge, publish, distribute, sublicense and sell copies, and let others do so. 2 The notices "shall be included in all copies or substantial portions of the Software". 3 No: it names no patents. 4 Provided "AS IS", without warranty. 5 No. It is silent on outputs, thresholds and governing law, and says "Software": whether that covers weights is for your lawyer.
Learn in your browser · Chapter 03 of 06
Datasets: the licence, the items and the law
A dataset carries two layers of rights: the licence on the collection, and the rights in each item inside it. Check both.
Scroll sideways to see every column.
| Licence | Key condition |
|---|---|
| CC BY 4.0 | Credit, licence link, note of changes; commercial use allowed |
| CC BY-SA 4.0 | As BY; shared adaptations use the same licence |
| CC BY-NC 4.0 | As BY; no use primarily intended for commercial advantage or monetary compensation |
| CC0 1.0 | Rights waived as far as the law allows |
| ODbL 1.0 | Attribution and share-alike for the database; rights in individual contents not covered |
| ODC-By 1.0, PDDL 1.0 | Attribution for databases; public domain dedication |
A Creative Commons deed "is not a license and has no legal value", so read the legal code. Creative Commons' FAQ says the NC definition "does not turn on the type of user".
Licence versus items. The deeds warn that publicity, privacy or moral rights may still limit use, and Creative Commons has not verified the copyright status of works marked CC0. A dataset labelled CC BY can hold items its publisher could not license. Scraped data adds the platform's terms, a contract. Creative Commons' September 2026 guidance adds that copyright exceptions may permit some AI uses whatever a licence says.
Personal data brings data protection law whatever the licence. For training generative AI on web-scraped personal data, the ICO says legitimate interests is the sole available lawful basis on current practices, if its three-part test is passed. See Privacy and data minimisation in AI applications.
Try it yourself · Activity 03
12 minJudge three datasets
All three are invented. Name the main problem and the next step.
- civic-letters, CC BY 4.0: residents' consultation letters with names and addresses, for a summarising model.
- clinic-notes, CC BY-NC 4.0: to fine-tune a triage model a supplier will sell.
- forum-scrape, no licence: posts scraped from a forum whose terms forbid scraping.
Which problem would a licence tag have hidden?
Worked answer
1 Reuse is allowed with credit, but names and addresses are personal data: lawful basis and DPIA screening first. Could the publisher even license letters their writers own? 2 Selling is commercial, so NC rules it out: get other terms or do not sell. Clinic notes may also hold health data. 3 With no licence nothing is granted, the terms forbid scraping and posts hold personal data: stop and take legal advice.
Learn in your browser · Chapter 04 of 06
Model cards, datasheets and an AI bill of materials
Documentation is your evidence. Learn what good records contain, then keep your own in a standard form.
Model cards (Mitchell and colleagues, 2018) give intended uses, evaluation across relevant groups, and limitations. Datasheets for datasets (Gebru and colleagues, 2018) record motivation, composition, collection and recommended uses. On the Hugging Face hub (a documented practice, not a recommendation) a card's metadata can name the licence, datasets and a base_model for fine-tuned versions. Treat cards as dated claims, not proof.
The NCSC's secure AI guidelines ask you to document training data sources, limitations and cryptographic hashes or signatures, using model cards, data cards and software bills of materials (SBOMs), which CISA calls a nested inventory of ingredients. Two open standards cover AI:
Scroll sideways to see every column.
| Record | CycloneDX 1.7 (ML-BOM) | SPDX 3.0.1 (AI and Dataset) |
|---|---|---|
| Model | Component type machine-learning-model with a modelCard | AIPackage: supplier, version, download location, release time required |
| Use and limits | considerations: users, use cases, limitations, ethics, fairness | domain, limitation, safetyRiskAssessment |
| Data | data components: sensitive data, governance roles | DatasetPackage: collection, intended use, known bias, sensitive personal information; trainedOn |
| Licences | SPDX identifiers or named licences | One declared and one concluded licence |
| Integrity | hashes, pedigree | verifiedUsing |
Copy SPDX's split: the declared licence is the one found in the artefact; the concluded licence is the one the record's author concluded applies. Identifiers such as CC-BY-NC-4.0 name listed licences; LicenseRef- marks others.
Try it yourself · Activity 04
12 minMap a card to a BOM
This card excerpt is invented: "kestrel-chat 3.0. License: other (Kestrel Community Licence 2.0). base_model: kestrel-base 3.0. Trained on a web crawl and forum-scrape. Intended use: general chat. Limitations: may make mistakes."
- List the BOM fields it fills.
- List what is missing.
Which gap would stop you signing off?
Worked answer
Filled: name, version, declared licence LicenseRef-Kestrel-Community-2.0 (concluded: pending review), base model as pedigree, trainedOn the crawl and forum-scrape, a use case and one vague limitation. Missing: supplier, download location, release time, hash, the base model's licence, dataset licences and provenance, personal data, evaluation results and the user threshold.
Learn in your browser · Chapter 05 of 06
Build a licence checklist tool
Turn the questions into a small tool that reads an inventory, flags problems and drafts a NOTICE file. Everything is invented; nothing is downloaded.
In a new folder, save this as inventory.json: three invented models with planted mistakes. Sources use example.org, which IANA keeps for documentation.
[
{"model": "fern-summarise", "version": "1.2", "licence": "Apache-2.0",
"source": "example.org/fern-summarise",
"sha256": "5f40da6a3889713715188839b3f2901be2b0ff831bb5bf8d51f6fc4e6625b08e",
"dataset": "civic-letters", "dataset_licence": "CC-BY-4.0",
"intended_use": ["summarisation"], "commercial": false,
"redistribute": true, "above_threshold": false,
"notice": "Copyright 2025 Fernwood Labs (invented)"},
{"model": "harbour-triage", "version": "0.9", "licence": "LicenseRef-Harbour-RAIL-1.0",
"source": "example.org/harbour-triage", "sha256": "",
"dataset": "clinic-notes", "dataset_licence": "CC-BY-NC-4.0",
"intended_use": ["triage", "medical-advice"], "commercial": true,
"redistribute": false, "above_threshold": false, "notice": ""},
{"model": "kestrel-chat", "version": "3.0", "licence": "LicenseRef-Kestrel-Community-2.0",
"source": "example.org/kestrel-chat",
"sha256": "40c74848309fe8d05b570ea39700045a580bfeafb791a54a193bc9ae850a7634",
"dataset": "forum-scrape", "dataset_licence": "",
"intended_use": ["chat"], "commercial": false,
"redistribute": true, "above_threshold": null, "notice": ""}
]The tool holds simplified summaries. STOP means do not deploy, FIX means an incomplete record, DUTY is something you must do. Save it as licence_check.py beside the inventory.
"""licence_check.py: report licence problems; --write drafts a NOTICE file."""
import json
import re
import sys
from pathlib import Path
# Simplified summaries. Both LicenseRef- licences are INVENTED.
MODELS = {"Apache-2.0": {}, "MIT": {},
"LicenseRef-Harbour-RAIL-1.0": {"restricted": ["medical-advice"], "flow_down": True},
"LicenseRef-Kestrel-Community-2.0": {"threshold": True}}
DATA = {"CC-BY-4.0": True, "CC0-1.0": True, "CC-BY-NC-4.0": False} # commercial use allowed?
def check(e):
lic = MODELS.get(e["licence"])
issues = [] if lic is not None else [("STOP", f"unknown licence '{e['licence']}'")]
lic = lic or {}
for use in e["intended_use"]:
if use in lic.get("restricted", []):
issues.append(("STOP", f"licence restricts '{use}'"))
if lic.get("threshold") and e["above_threshold"] is not False:
issues.append(("STOP", "user threshold passed or unknown"))
if not re.fullmatch(r"[0-9a-f]{64}", e["sha256"]):
issues.append(("FIX", "sha256 missing or malformed"))
if e["redistribute"] and not e["notice"]:
issues.append(("FIX", "no attribution text for NOTICE"))
if e["dataset_licence"] not in DATA:
issues.append(("STOP", f"unknown dataset terms '{e['dataset_licence']}'"))
elif e["commercial"] and not DATA[e["dataset_licence"]]:
issues.append(("STOP", "dataset licence forbids commercial use"))
if lic.get("flow_down"):
issues.append(("DUTY", "pass use restrictions on to users"))
return issues
inventory = Path(sys.argv[1])
totals, notice = {}, ["NOTICE (practice file)"]
for e in json.loads(inventory.read_text(encoding="utf-8")):
print(e["model"], e["version"], e["licence"])
for level, text in check(e) or [("ok", "no issues found")]:
print(f" {level:<4} {text}")
totals[level] = totals.get(level, 0) + 1
if e["redistribute"]:
notice += [f"{e['model']} {e['version']} ({e['licence']})",
" " + (e["notice"] or "ATTRIBUTION MISSING: fix before release")]
print("Totals:", totals)
out = Path("practice") / f"NOTICE-{inventory.stem}.txt"
if "--write" not in sys.argv:
print(f"Dry run: {out.name} not written. Add --write.")
elif out.exists():
print(f"Skipped: {out.name} already exists")
else:
out.parent.mkdir(exist_ok=True)
out.write_text("\n".join(notice) + "\n", encoding="utf-8")
print("Wrote", out.as_posix())Only false passes a threshold check: null means nobody checked. A missing field stops Python with a KeyError. Nothing is written without --write, or overwritten: to redo a NOTICE file, delete the old one. Run the dry run (python3 on macOS and Linux):
python licence_check.py inventory.json
fern-summarise 1.2 Apache-2.0
ok no issues found
harbour-triage 0.9 LicenseRef-Harbour-RAIL-1.0
STOP licence restricts 'medical-advice'
FIX sha256 missing or malformed
STOP dataset licence forbids commercial use
DUTY pass use restrictions on to users
kestrel-chat 3.0 LicenseRef-Kestrel-Community-2.0
STOP user threshold passed or unknown
FIX no attribution text for NOTICE
STOP unknown dataset terms ''
Totals: {'ok': 1, 'STOP': 4, 'FIX': 2, 'DUTY': 1}
Dry run: NOTICE-inventory.txt not written. Add --write.All six planted problems are caught. With --write the last line becomes Wrote practice/NOTICE-inventory.txt, and the file shows the gap:
NOTICE (practice file)
fern-summarise 1.2 (Apache-2.0)
Copyright 2025 Fernwood Labs (invented)
kestrel-chat 3.0 (LicenseRef-Kestrel-Community-2.0)
ATTRIBUTION MISSING: fix before releaseDeployment obligations. The tool drafts; people decide. Before release, check:
- Notices: licence copies, NOTICE contents and marked changes (Apache-2.0 section 4); credit lines or name prefixes custom licences require.
- Flow-down: use restrictions and acceptable-use policies reach your users through your own terms.
- Transparency: GOV.UK says the Algorithmic Transparency Recording Standard is mandatory for in-scope tools in government departments and in arm's-length bodies delivering public or frontline services or dealing directly with the public. Records ask about third-party suppliers and models.
- Logs and incidents: the UK's voluntary AI cyber security code asks operators to log system and user actions, plan for incidents and tell end-users before model updates. The UK GDPR requires certain personal data breaches to be reported to the ICO within 72 hours, where feasible.
Try it yourself · Activity 05
20 minCatch and fix the mistakes
Plant one more mistake, then fix what can honestly be fixed.
- Change
Apache-2.0toApache 2.0ininventory.json, predict, do the dry run, then change it back. - Copy it to
inventory-fixed.json. For harbour-triage, remove"medical-advice"and the comma before it, setcommercialtofalseandsha256to14da5db577177ba83d2a52518102f346615297c8677e5b2e4610ca7ccbb25fdf. For kestrel-chat, setabove_thresholdtofalseandnoticeto"Copyright 2026 Kestrel Collective (invented)". - Run
python licence_check.py inventory-fixed.json --write.
Which STOP could no honest edit fix?
Worked answer
Step 1 prints STOP unknown licence 'Apache 2.0' and totals of 'STOP': 5: identifiers must match exactly. Step 3 prints ok, only the DUTY line for harbour-triage, STOP unknown dataset terms '' for kestrel-chat, Totals: {'ok': 1, 'DUTY': 1, 'STOP': 1} and Wrote practice/NOTICE-inventory-fixed.txt. Such edits are honest only if the facts changed. forum-scrape still needs real terms.
Learn in your browser · Chapter 06 of 06
Supply-chain checks before you run anything
A licence covers a specific file. Check that the file you hold is that file, and that opening it cannot run someone else's code.
A SHA-256 hash is a 64-character fingerprint of a file's exact bytes. The UK's voluntary AI cyber security code says developers shall release hashes for model components. A match proves your copy equals the published value, not who published it, so take the value from the publisher's own page and verify signatures where offered.
Save verify.py beside the inventory. It checks stand-in text files, not models; --make creates them. hashlib.file_digest needs Python 3.11 or later.
"""verify.py: compare stand-in files with the inventory's SHA-256 values."""
import hashlib
import json
import sys
from pathlib import Path
folder = Path("stand-ins")
if "--make" in sys.argv: # fails if the folder exists
folder.mkdir()
(folder / "fern-summarise.txt").write_bytes(b"stand-in for model weights\n")
(folder / "kestrel-chat.txt").write_bytes(b"stand-in, altered in transit\n")
for e in json.loads(Path("inventory.json").read_text(encoding="utf-8")):
path = folder / f"{e['model']}.txt"
if not e["sha256"]:
print(path.name, "no hash recorded, cannot verify")
continue
with open(path, "rb") as f:
actual = hashlib.file_digest(f, "sha256").hexdigest()
print(path.name, "MATCH" if actual == e["sha256"] else "MISMATCH, do not use")python verify.py --make
fern-summarise.txt MATCH
harbour-triage.txt no hash recorded, cannot verify
kestrel-chat.txt MISMATCH, do not useBoth planted problems show. A mismatch means stop and fetch again from the official source.
Pickled files. Python's documentation warns: "The pickle module is not secure. Only unpickle data you trust." A pickle can name a function to call while loading. This harmless demonstration reads the steps without running them, then loads:
"""pickle_demo.py: harmless proof that loading a pickle can run code."""
import pickle
import pickletools
class Surprise:
def __reduce__(self):
return (print, ("This ran while the file was loading.",))
data = pickle.dumps(Surprise(), protocol=4)
pickletools.dis(pickletools.optimize(data)) # reads the steps, runs nothing
pickle.loads(data) # loading runs thempython pickle_demo.py
0: \x80 PROTO 4
2: \x95 FRAME 59
11: \x8c SHORT_BINUNICODE 'builtins'
21: \x8c SHORT_BINUNICODE 'print'
28: \x93 STACK_GLOBAL
29: \x8c SHORT_BINUNICODE 'This ran while the file was loading.'
67: \x85 TUPLE1
68: R REDUCE
69: . STOP
highest protocol among opcodes = 4
This ran while the file was loading.STACK_GLOBAL finds builtins.print and REDUCE calls it, so the last line printed during loading. python -m pickletools disassembles a file without loading it. Safer formats hold data, not instructions: safetensors is a header length, a JSON header and raw tensor bytes, designed so loading runs no arbitrary code. Loaders and shipped code still need checking.
Try it yourself · Activity 06
15 minVerify and inspect
Change one thing at a time.
- Run
python verify.py, thenpython verify.py --makeagain. - Add a full stop to
stand-ins/fern-summarise.txtin a plain text editor, save and rerunpython verify.py. - In the demo output, find where the function is named and called.
Why must the expected hash not sit beside the file?
Worked answer
The first prints the three lines above; the second stops with FileExistsError, so nothing is overwritten. After the edit, fern-summarise.txt prints MISMATCH too: one byte changes the whole hash. 'builtins', 'print' and STACK_GLOBAL name the function; REDUCE calls it. Anyone who can alter a file can alter a hash stored next to it.
Keep learning
The complete workbook
This workbook is for procurement, legal-adjacent, security and engineering staff in UK public-sector and regulated organisations. You will learn what the Open Source AI Definition requires, how permissive, use-restricted and custom licences differ, and how dataset licences relate to rights in the data. Then you will build and test a small Python licence checklist, verify file hashes and see why pickled model files are risky.
- 01Open weights are not open sourceRead here · 1 exercise
Many releases are called open. Pin down what was actually released, and what the Open Source AI Definition asks for.
- 02Licence families and what to read in any licenceRead here · 1 exercise
Model licences fall into three broad families. Whatever the family, ten questions show what you may do.
- 03Datasets: the licence, the items and the lawRead here · 1 exercise
A dataset carries two layers of rights: the licence on the collection, and the rights in each item inside it. Check both.
- 04Model cards, datasheets and an AI bill of materialsRead here · 1 exercise
Documentation is your evidence. Learn what good records contain, then keep your own in a standard form.
- 05Build a licence checklist toolRead here · 1 exercise
Turn the questions into a small tool that reads an inventory, flags problems and drafts a NOTICE file. Everything is invented; nothing is downloaded.
- 06Supply-chain checks before you run anythingRead here · 1 exercise
A licence covers a specific file. Check that the file you hold is that file, and that opening it cannot run someone else's code.
Also inside: a 10-point checklist, a glossary of 12 terms and 10 questions and answers to test yourself. 6 hands-on exercises, each with a worked answer at the back where the workbook gives one.
The PDF is free. We ask for your name and email before downloading. Read the privacy notice at the download form. Free to download and use for personal learning, study groups and inside your own team. Please do not resell the workbooks or republish them as your own. Link people to trust-agent.ai instead.
Get your free PDF workbook
Enter your name and email, then download the complete workbook. This form also works without JavaScript.
Test yourself
Questions and answers
Is this workbook legal advice?
No. It is general education based on primary sources read on 26 September 2026. Involve your legal team or a solicitor before redistributing a model, relying on a custom or use-restricted licence for a public service, accepting another country's governing law or using a dataset whose rights are unclear, and when a complaint arrives. Involve your data protection officer whenever personal data may be present.
Is an open-weight model open source?
Not necessarily. The OSI's Open Source AI Definition requires freedom to use for any purpose, study, modify and share, plus detailed data information, complete code and the parameters under OSI-approved terms. Many open-weight releases lack code or data information, or restrict uses. Unless the terms meet the definition, describe it as open weights under the named licence.
Does open source AI mean all the training data is published?
No. The OSAID requires data information detailed enough for a skilled person to build a substantially equivalent system, including where to obtain public and third-party data. Data that cannot be shared, such as personal data, must be described rather than published.
Can we use an Apache-2.0 or MIT model in a public service?
Usually the licence allows it, including modification and commercial use. The main conditions bite when you redistribute: include the licence, keep the notices and, for Apache-2.0, pass on NOTICE contents and mark changed files. Dataset rights, personal data, security and procurement rules still apply separately.
What is a RAIL licence?
A Responsible AI Licence grants broad permissions but restricts listed uses, and those restrictions must bind downstream users and derivatives. The RAIL FAQ says OpenRAIL licences are not open source under the OSI's definition. If your use falls within a restriction, the licence does not permit it, and you must pass the restrictions on to your users.
What should we do about user thresholds in a model licence?
Record the threshold, how and when it is measured, and whether your organisation is above it (and affiliates, if the licence counts them), with evidence and a date. Treat unknown as a problem. Above a threshold you may need a separate licence before using the model at all, so ask your legal team early.
If a dataset is CC BY or CC0, can we use everything in it?
Not necessarily. The publisher may not hold rights in every item. Creative Commons says its licences may not give every permission you need, and that publicity, privacy or moral rights may limit use; it has not verified the status of works marked CC0. Check item rights, personal data and the source platform's terms.
What is an AI bill of materials?
A machine-readable inventory of an AI system's models, datasets and other components, with versions, suppliers, licences, hashes, training data and lineage. CycloneDX (ML-BOM) and SPDX 3 (AI and Dataset profiles) are open standards for it. The NCSC names model cards, data cards and software bills of materials as useful documentation.
Why are pickled model files risky?
Python's documentation says the pickle module is not secure: malicious pickle data can execute arbitrary code during unpickling. Load pickles only from sources you trust completely, inspect them with pickletools without loading, and prefer data-only formats such as safetensors, while still checking the loading software.
Which deployment obligations commonly apply?
Licence notices and NOTICE contents, credit lines or naming rules, passing use restrictions and acceptable-use policies to users, and keeping hashes and records. Government departments and in-scope arm's-length bodies must publish Algorithmic Transparency Recording Standard records for in-scope tools. The UK's voluntary AI cyber security code adds logging, incident plans and warning users before model updates. The UK GDPR requires certain personal data breaches to be reported to the ICO within 72 hours, where feasible.
Write as you go
My notes
Use this scratchpad for your own notes, working or answers as you read. Notes are saved in this browser on this device. Downloading makes a local copy; it does not send your notes to Mickai.
Consolidate your learning
Review your work
Work through the exercises and questions, then compare your reasoning with the worked answers. A scored exam and verifiable certificate are not yet available for this course.
Review the questionsLearn the language
Key terms
- Open weights
- A release whose trained weights can be downloaded under some licence. It says nothing about code, data or freedom of use.
- Open Source AI Definition (OSAID)
- The Open Source Initiative's definition, version 1.0: freedoms to use, study, modify and share, plus data information, complete code and parameters under OSI-approved terms.
- Permissive licence
- A licence granting broad rights in return for light conditions such as keeping notices, for example Apache-2.0 or MIT.
- Use restriction
- A clause forbidding particular uses. In RAIL licences it must also bind downstream users and derivatives.
- Threshold clause
- A term that changes or removes your rights above a stated size, such as a number of monthly active users.
- NOTICE file
- A text file of attribution notices shipped with a work. Apache-2.0 requires its contents to be passed on when you redistribute.
6 of the workbook's 12 terms. The complete glossary is in the workbook.
Follow the evidence
Sources and checks
Facts last checked: .
Examples in this workbook were run on: Python 3.12.10 on Windows 11 (standard library only), run in Git Bash (2026-09-26).
These workbooks use AI assistance. See how the workbooks are made.
- The Open Source AI Definition 1.0Open Source Initiative
- Open Source AI Definition: frequently asked questionsOpen Source Initiative
- Apache License, Version 2.0Apache Software Foundation
- The MIT LicenseOpen Source Initiative
- Responsible AI Licenses (RAIL)RAIL initiative
- RAIL frequently asked questionsRAIL initiative
- Naming convention of Responsible AI Licenses (18 August 2022)RAIL initiative
- Attribution 4.0 International (CC BY 4.0) deedCreative Commons
- Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) deedCreative Commons
- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) deedCreative Commons
- CC0 1.0 Universal deedCreative Commons
- CC License Guidance (September 2026)Creative Commons
- Frequently Asked Questions (NonCommercial licences)Creative Commons
- Open Database License (ODbL) v1.0, legal text (section 2.4, contents)Open Data Commons (Open Knowledge Foundation)
- Open Data Commons Attribution License (ODC-By)Open Data Commons (Open Knowledge Foundation)
- Public Domain Dedication and License (PDDL)Open Data Commons (Open Knowledge Foundation)
- Copyright, Designs and Patents Act 1988, section 29A (Copies for text and data analysis for non-commercial research)legislation.gov.uk (The National Archives)
- Report on Copyright and Artificial Intelligence (18 March 2026)DSIT, DCMS and Intellectual Property Office (GOV.UK)
- Response to the consultation series on generative AI: the lawful basis for web scraping to train generative AI modelsInformation Commissioner's Office (ICO)
- Personal data breaches: a guideInformation Commissioner's Office (ICO)
- Model Cards for Model Reporting (Mitchell and others)arXiv
- Datasheets for Datasets (Gebru and others)arXiv
- Model Cards (documented practice reference)Hugging Face Hub documentation
- Guidelines for secure AI system development: secure developmentNational Cyber Security Centre (NCSC)
- Software Bill of Materials (SBOM)Cybersecurity and Infrastructure Security Agency (CISA)
- Machine Learning Bill of Materials (ML-BOM)OWASP CycloneDX
- CycloneDX v1.7 JSON referenceOWASP CycloneDX
- SPDX 3.0.1: AI profileSPDX (The Linux Foundation)
- SPDX 3.0.1: AIPackage classSPDX (The Linux Foundation)
- SPDX 3.0.1: Dataset profileSPDX (The Linux Foundation)
- SPDX 3.0.1: DatasetPackage classSPDX (The Linux Foundation)
- SPDX 3.0.1: RelationshipType vocabulary (declared and concluded licences, trainedOn, testedOn)SPDX (The Linux Foundation)
- SPDX 3.0.1: verifiedUsing propertySPDX (The Linux Foundation)
- SPDX 3.0.1 Annex B: SPDX license expressions (LicenseRef-)SPDX (The Linux Foundation)
- SPDX License List (version 3.29.0, 16 September 2026)SPDX (The Linux Foundation)
- Code of Practice for the Cyber Security of AI (31 January 2025)Department for Science, Innovation and Technology (GOV.UK)
- Algorithmic Transparency Recording Standard HubGovernment Digital Service (GOV.UK)
- Algorithmic Transparency Recording Standard: guidance for public sector bodiesGovernment Digital Service (GOV.UK)
- pickle: Python object serializationPython Software Foundation
- pickletools: tools for pickle developersPython Software Foundation
- hashlib: secure hashes and message digests (file_digest)Python Software Foundation
- Pickle scanningHugging Face Hub documentation
- safetensors README (format and safety aims)safetensors project on GitHub
- Example DomainsInternet Assigned Numbers Authority (IANA)
Created by Mickarle Wagstaff-Irons - Micky Irons with the Mickai team. Published by Mickai LTD. Last updated 26 September 2026.
NextKeep going
Where to go next
Recommended for you
Privacy and data minimisation in AI applications
Keep personal data under control in an AI feature: UK GDPR principles, DPIAs, roles and transfers, and a redaction pipeline you run and test to see what it misses.
Recommended for you
How to evaluate a new frontier model the day it lands
A ten-step method for judging a new model: primary sources, licence, architecture, hardware, benchmarks, your own tests, safety, jurisdiction and a decision record.
Recommended for you
AI images and video: rights, provenance, labels and quality checks
Use AI images and video responsibly: ownership in the UK, EU and US, tool terms, consent, labelling, Content Credentials, quality checks and simple records.