Home / Vaults / DSIT AI Risk Toolkit
A government toolkit, turned into four connected worlds
The interesting thing is not that a guidance document was put in a vault. It is that the guidance, the spreadsheet that accompanies it, the risk method it describes and the frameworks it cites are modelled as four separate worlds with named bridges between them, and the vault says plainly why that matters: "containment alone is not fractality. Cross-world edges make the semantic transitions inspectable." 617 nodes, 694 edges, every one declaring its verb, its provenance and whether it was curated or merely found by a lexical match.
Read key:
sgit_public_read_cdc00d2baaf75361d86ae1b7a40169bd98d71aaae1bd581e181a0f0ba0e0e6bb:0q4sfr57In the official UI: open it read-only in a new tab · From the CLI:
sgit clone sgit_public_read_cdc00d2baaf75361d86ae1b7a40169bd98d71aaae1bd581e181a0f0ba0e0e6bb:0q4sfr57Submitted under the
sgit_public_read_ prefix, which is the form for a key published on purpose. Classified before it touched anything, and verified with an all-zeros negative control: the real key produced 42 files, the control an empty directory. What the prefixes declare →See it live, here
Open the vault in a new tab ↗Seven sections and a graph canvas. It has more room in its own tab.
The idea worth stealing: four worlds, and the bridges are the point
A guidance document, a spreadsheet, a risk method and a list of external frameworks are not the same kind of thing, and modelling them in one vocabulary would force three of them to pretend to be the fourth. This vault does the opposite. It declares four worlds and lets each keep its own shape:
| World | What lives in it |
|---|---|
source | The publication as retrieved: 30 guidance sections, 67 blocks, and the bytes they came from |
risk_method | The method the guidance describes: risk categories, treatments and appetite |
workbook | The official spreadsheet as data: 4 sheets, 490 cells, 208 of them formulas |
frameworks | The external standards the text cites, referenced and never reproduced |
Eight predicates carry everything between them, and one of the vault's own eight checks is that every predicate declares an inverse, so a link reads correctly from whichever end you stand at: has_artifact, contains, is_derived_from, defines_category, describes_treatment, describes_appetite, mentions, cites.
is_derived_from · curated is an authored claim, is_mentioned_by · lexical is a string match, and the vault never lets you mistake one for the other.The distinction that keeps it honest: curated against lexical
Most attempts to connect a document to a model quietly mix two very different things: an edge somebody decided, and an edge a search found. This vault labels every assertion with which it is, on the face of the link, and then says in its limits that "lexical mentions are not validated meaning."
That single label is what makes the graph arguable rather than impressive. A reader who disagrees with a curated edge is disagreeing with a person, and can say so. A lexical edge claims only that a word appeared. The vault also refuses the inference everyone wants to make from a compliance artefact: "no compliance inference or organisation attestation is made."
Every claim carries the bytes it came from
Five source snapshots are retained inside the vault, each with its URL, its retrieval date and the SHA-256 of the bytes: the guidance body, two content-API responses, and the official workbook in both XLSX and ODS. Two of the eight checks exist purely to prove the originals were not touched, and they are named as plainly as that: original XLSX bytes preserved, original ODS bytes preserved.
The workbook is read rather than rewritten. Cached values are not recalculated, dates stay as Excel serials, styling is not reproduced, and the vault says so. That is the difference between publishing a spreadsheet as data and publishing your opinion of a spreadsheet.
The six gaps it publishes about itself
This is the part to copy. The vault ships a known_gaps list, and it is not decorative:
- It corrects its own earlier number. "Direct OOXML recount finds 208 formula cells, correcting 227 in the retained earlier briefing." The earlier briefing is still in the vault, uncorrected, with the correction recorded next to it rather than written over it.
- It preserves a contradiction in the source instead of resolving it. The official file is named v1.1 and its own Welcome sheet says v1.0. Both labels are kept, because picking one would be an edit to somebody else's document.
- It refuses to repair the source. Two defined names in the official workbook are broken. They are reported broken. "No source repairs were made."
- It declines the flattering reading. "Starter rows are not evidence of adoption", and no independent implementation, compliance assessment or adoption metric is asserted.
- It dates itself. The retained briefing is a snapshot as of 20 September 2026, and external sources may change.
- It names what it did not build. Formula dependency expansion and shared-formula expansion are not implemented.
What it demonstrates about vaults
| Feature | How this vault uses it |
|---|---|
| Read, download, no write | fs.read is true and write and delete are both empty arrays. The scoring sandbox is deliberately temporary and is never written back |
| Queries with no backend | sql.js, which is SQLite compiled to WebAssembly, is bundled so the query view works offline. The copies were taken from the published Regulation Graph vault and the provenance of that decision is recorded in NOTICE.md |
| Versioned in the open | Two releases, each with its own page and JSON record, and the version badge in the app links to the release it is showing |
| A licence that survives the copy | Source text under OGL v3.0, application code separately licensable by the owner, bundled sql.js under MIT with SQLite in the public domain. Each is stated rather than blended |
| Machine-readable on the way out | downloads/graph.jsonld keeps every assertion's provenance and partition, so the graph leaves the vault without losing what made it checkable |
The pre-publication audit
Run against a full clone made with the published read key, before this page existed.
| Checked | Result |
|---|---|
| Credentials and secrets | None. No vault key, no credential under any sgit_private_ prefix, no API keys, tokens, delete_auth or append_token values, no private-key blocks |
| Personal data | None. Two email addresses appear, alt.formats@dsit.gov.uk and psai-tech@dsit.gov.uk, both published institutional contacts carried over from the official publication |
| The credential itself | Submitted as sgit_public_read_, classified by check_credential.py as read-only and declared public before use |
| Negative control | An all-zeros key with the same prefix and the same vault id produced no clone at all; the real key produced 42 files |
| Its own checks | Re-read from data/validation.json: 8 of 8 passing, with 6 known gaps published rather than filed away |
| Attribution | OGL v3.0 acknowledged, no crests or logos used, external standards referenced and not reproduced, and official status explicitly disclaimed on the front page and in NOTICE.md |
The usual rule applies to this key as to every other one here: revocation is not retroactive. Anyone who fetches these objects keeps them.
Derived facts
42 files · 3.2 MB · app entry index.html · seven sections · 617 nodes, 694 edges across 3 partitions and 4 worlds · 8 predicates, all with declared inverses · 30 guidance sections, 67 blocks · 4 workbook sheets, 490 cells, 208 formula cells · 5 hashed source snapshots retrieved 20 September 2026 · 2 released versions, current 0.1.1 · permissions fs.read with empty write and delete, plus downloads and external links.
Published as row #31. It is also a rung on Fractal Semantic Graphs, beside the Regulation Graph whose sql.js copies it reuses. ← All published vaults · The publishing method