SETTING GLOBAL STANDARDS FOR TRUSTED AI CREDENTIALSAI Competence Framework v1.29 · current release
You are reading the current version of the framework, v1.29.Permanent address for this version

Building on the data

This page documents the schema and conventions the framework's data is designed around, for anyone building tooling against it. It is the contract for tooling: what the schema guarantees, what the identifiers guarantee, and what you must handle because it will change.

Bulk machine-readable files (a JSON export of the full statement collection, a CSV, a formal JSON Schema) are a documented next step for this site and are not yet published as separate downloadable files. The data itself is fully readable today at the statement index, which supports a JSON export from its filter controls.
Schema

One object per statement, plus derived relationships

FieldTooling note
idPrimary key. Case-sensitive. Never reused, never re-pointed.
levelAlways agrees with the level segment of the id.
typeOne of four values: Knowledge, Skill, Judgement, Practice. Treat as a closed enum.
indicatorsOrdered array, 2–4 items.
assumes / relatedArrays of ids; related may contain domain wildcards such as D2.L2.*.
statusactive, deprecated or superseded. Never delete a record from your store on a status change.
stabilityprovisional statements may change wording within a minor release; stable ones may not.
introducedVersion string the statement first appeared in.
One statement, as published
{
  "id": "D6.L3.04",
  "domain": "D6",
  "level": "L3",
  "type": "Judgement",
  "statement": "Justify the choice of automated,
    model-graded or human evaluation
    for a given task.",
  "indicators": [ "…", "…", "…" ],
  "assumes": [],
  "related": [],
  "status": "active",
  "stability": "stable",
  "introduced": "0.1"
}

Derived fields (assumedBy, relatedFrom, referencedBy) are computed at build time on each statement page.

URL and identifier conventions

Resolving an identifier

Case-sensitive identifiers

Canonical form is upper-case unit and level: D6.L3.04.

Two-digit sequence

The sequence segment is always two digits, zero-padded. Sequences are not guaranteed contiguous.

Unit codes

D1–D8 for domains, O1–O3 for overlays, X-AAA for extensions.

Version strings

Release versions are strings like 0.1 and 1.29, not semver.

Stability commitments

What you may rely on, and what you may not

You may rely on
STABLEAn identifier always means the same competence, permanently.
STABLEAn identifier never changes its domain, level or sequence number.
STABLEDeprecated and superseded identifiers keep resolving, with status set.
STABLEThe identifier pattern and the four statement types — changeable only by structural release with consultation.
You may not rely on
MOVESThe set of published statements: minor releases add.
MOVESDerived relationship contents (assumedBy, relatedFrom, referencedBy) — populated as new statements and register entries are added.
MOVESstability values — most statements move from provisional to stable as the framework matures.
MOVESThe extension code list.
Graceful deprecation handling

Statements retire. Your tool should not.

A deprecated identifier resolves forever, so nothing 404s. The failure mode to design against is silence.

01Never delete on deprecation

Keep the record and the mapping.

02Surface status wherever the statement is shown

Show the DEPRECATED marker, the version of deprecation, and the successor.

03Follow supersededBy once, not transitively, without telling the user

If A was superseded by B and B by C, show the chain rather than silently jumping to C.

Schema documented for framework version 1.29