<!DOCTYPE html>

<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">

  <link rel="stylesheet" href="/aai-programme/assets/css/just-the-docs-default.css">

  <link rel="stylesheet" href="/aai-programme/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet">

  <style id="jtd-nav-activation">
  
    .site-nav ul li a {
      background-image: none;
    }

  </style>

  

  
    <script src="/aai-programme/assets/js/vendor/lunr.min.js"></script>
  

  <script src="/aai-programme/assets/js/just-the-docs.js"></script>

  <meta name="viewport" content="width=device-width, initial-scale=1">

  



  <!-- Begin Jekyll SEO tag v2.9.0 -->
<title>Assured AI programme | Coordination for the WHO Assured AI programme: the programme requirements, the processes that build and run it, and the combined work plan of the repositories it draws on. Staged in litlfred/aai-programme until the owner syncs it to the WHO organisation.</title>
<meta name="generator" content="Jekyll v4.4.1" />
<meta property="og:title" content="Assured AI programme" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Coordination for the WHO Assured AI programme: the programme requirements, the processes that build and run it, and the combined work plan of the repositories it draws on. Staged in litlfred/aai-programme until the owner syncs it to the WHO organisation." />
<meta name="twitter:description" property="og:description" content="Coordination for the WHO Assured AI programme: the programme requirements, the processes that build and run it, and the combined work plan of the repositories it draws on. Staged in litlfred/aai-programme until the owner syncs it to the WHO organisation." />
<link rel="canonical" href="https://litlfred.github.io/aai-programme/assets/css/just-the-docs-head-nav.css" />
<meta property="og:url" content="https://litlfred.github.io/aai-programme/assets/css/just-the-docs-head-nav.css" />
<meta property="og:site_name" content="Assured AI programme" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="Assured AI programme" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"Coordination for the WHO Assured AI programme: the programme requirements, the processes that build and run it, and the combined work plan of the repositories it draws on. Staged in litlfred/aai-programme until the owner syncs it to the WHO organisation.","headline":"Assured AI programme","url":"https://litlfred.github.io/aai-programme/assets/css/just-the-docs-head-nav.css"}</script>
<!-- End Jekyll SEO tag -->


  <!--
  The configured colour scheme, published for site-chrome/assets/js/docs-ui.js.

  just-the-docs' first stylesheet is `just-the-docs-default.css`, which is
  whatever `color_scheme` in _config.yml compiled to -- so `jtd.getTheme()`
  returns the string "default" on a fresh load, never "dark". The scheme
  toggle needs to know what "default" MEANS here, and reading it from the
  config is the one way that does not go stale when the config changes.

  FIRST in this file since 2026-09-24, because the first-paint snippet below
  reads it too, and a script can only read what the parser has already seen.
-->
<script type="application/json" id="fa-site-scheme">{"scheme": "dark"}</script>
<!--
  THE FIRST PAINT IS DARK — owner, 2026-09-24: *"when any
  page/foio-asst/cat-harness first loads if flashes white before goignt o
  dark mode. instead it should deafult dark mode then turn to light mode to
  prevent light flash in dark."*

  WHY IT FLASHED. The site is configured dark, so the theme's first
  stylesheet already paints dark. But `docs-ui.js` is deferred, and on load
  it applied a STORED choice with `jtd.setTheme(name)`, which swaps that
  stylesheet's href -- to the dark file, when the default file already was
  dark. The swap unloads the sheet that was painting the ground, and until
  the new one arrives the browser's WHITE canvas shows. Every reader who had
  ever pressed the light/dark control got that on every page. And nothing
  painted `html` at all, so any moment without the theme's sheet was white.

  So, FIRST THING in this include, before every stylesheet it emits:

  1. decide the scheme -- the reader's stored choice (`fa-color-scheme`, the
     key `docs-ui.js` writes), else the OS, else LIGHT -- and put it on
     `<html data-fa-scheme>` before the body is parsed, so no rule keyed on
     it ever paints the wrong way first;
  2. if that is not the configured scheme, switch the theme's sheet NOW,
     while the parser is still in the head. The link is parser-created, so
     the browser holds first paint for its new file: a light reader is light
     from the first frame, with no dark flash either;
  3. paint `html` itself, dark unless the scheme is light, so a sheet in
     flight shows the page's ground rather than white.

  The theme's own stylesheet link is ABOVE this include (just-the-docs emits
  `head_custom.html` last in its head), which is why step 2 exists: there is
  no hook before it, and none is needed -- nothing paints until the head is
  parsed, and this runs while it is being parsed.

  INLINE, which the rest of this file avoids so that no `script-src`
  relaxation is ever needed. This is the one exception, and it is the only
  way to run before first paint: a `src` script here is a network round-trip
  on the critical path of every page. It interpolates nothing into markup,
  and a CSP added later needs this block's hash.

  ELSE LIGHT -- owner, 2026-10-15, "follow os else light". The declared
  `color_scheme` only names the sheet shipped first. The ONE source: tools'
  `scheme-css.ts` lifts this script; `docs-ui.js` reads its attribute.

  NO LIQUID between the markers. `first-paint-scheme.e2e.ts` lifts these
  exact bytes into a replica page, so the spec tests what ships.

  The generated dashboards that write their OWN head (`state-visualizer.ts`,
  `gen-translation-status.ts`) do not carry this. They switch nothing with
  script, so they cannot flash: their first CSS paints dark, and the same spec
  holds them to that. Giving them this snippet would switch ON their
  `data-fa-scheme="light"` rules for the first time -- and those were never
  finished (axe, 2026-09-24: 3 to 6 contrast failures per dashboard in light,
  dark-scheme tag colours on a light ground). A light palette for them is its
  own piece of work, not a side effect of this one.
-->
<!-- fa-first-paint:begin -->
<script>(function(){var d=document.documentElement,s=null,c="dark";try{s=localStorage.getItem("fa-color-scheme")}catch(e){}if(s!=="light"&&s!=="dark"){s="light";try{if(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches)s="dark"}catch(e){}}try{var n=document.getElementById("fa-site-scheme");if(n)c=JSON.parse(n.textContent).scheme==="light"?"light":"dark"}catch(e){}d.setAttribute("data-fa-scheme",s);var j=window.jtd;if(s!==c&&j&&typeof j.setTheme==="function"){try{j.setTheme(s)}catch(e){}}})();</script>
<style>html{background-color:#27262b}html[data-fa-scheme="light"]{background-color:#ffffff}</style>
<!-- fa-first-paint:end -->
<!-- PROSE HERE IS NOT FREE: these are HTML comments, so every byte ships on
     every page (2356 of them). A comment in this file is a POINTER; the
     reasoning goes in the artefact. Measured, with the cost this change paid
     before measuring, in assets/harness/site.json's front matter. -->
<!-- THE RENDER STATE. pending here; ready/failed from assets/js/kg-render.js,
     which carries the contract. No attribute = no dynamic region on this page.
     The number is a MINIMUM cross-checking registrations, not a count. -->
<meta name="fa-render-regions" content="1">
<script>document.documentElement.setAttribute("data-fa-render","pending");</script>
<!--
  The browser-tab icon, from the same declared mark the sidebar title
  (`title.html`) renders — reused rather than looked up by its own
  `browser-icon` role. There WAS a second role for exactly that, on
  `mark-small` in `harness.json`, and it went unread: nothing in this
  repo ever emitted a favicon at all, `rel="icon"` included. It also could
  not have driven this lookup as declared — `imagesForRole()`
  (`schemas/kg-node.ts`) requires an image's `layout` field, which neither
  mark entry carries, so a `browser-icon`-role lookup returns nothing. Reusing
  the already-resolved `icon` (the same field `title.html` reads) sidesteps
  that and, more importantly, is what was asked for: the sidebar mark and the
  tab icon are meant to be the SAME glyph, so one declaration driving both is
  correct, not just convenient — flip `icon` in `harness.json` and both
  follow in one edit, no template change needed.

  SVG-only. No PNG/ICO fallback exists in the repo and none is generated
  here — every browser this matters for (evergreen Chrome/Firefox/Edge, and
  Safari since 16) reads `type="image/svg+xml"` directly; a raster fallback
  would need generating actual image files, which is out of scope for this
  change.

  `relative_url`, same as `title.html` and `landing.html` — a bare
  `/assets/...` 404s on the same baseurl this file's landing-panel fix exists
  for.
--><!--
  Site-wide styling for the BPMN workflow figures.

  just-the-docs pulls this file into <head> on every page. The diagrams are wide
  (a swimlane process does not shrink well), so the figure scrolls horizontally
  inside its own container rather than forcing the page body to scroll.

  The SVGs carry their own white backdrop — see scripts/render-bpmn.ts — so they
  stay legible under the dark colour scheme even if this stylesheet is missing.
-->
<style>
  .bpmn-figure {
    overflow-x: auto;
    background: #fff;
    border: 1px solid rgba(128, 128, 128, 0.35);
    border-radius: 6px;
    margin: 1em 0 0.4em;
  }
  .bpmn-figure img {
    display: block;
    width: 100%;
    min-width: 1200px;
    max-width: none;
  }
  .bpmn-source {
    margin-top: 0;
    font-size: 0.75rem;
  }
</style>

<!--
  Site UI: a QR of the current page in the sidebar header, and zoom /
  full-width controls on the figures.

  Loaded as same-origin files with no inline script, so no script-src
  relaxation is needed. The QR is generated in the browser from
  window.location.href rather than baked per page at build time, so it is
  right for anchors, query strings, and both the directory and .html forms of
  the same page. The UTF-8 shim must come after the encoder: without it the
  encoder's stringToBytes is single-byte and a non-ASCII character in a URL
  silently encodes to mojibake.
-->
<!--
  The TRANSLATION INDEX — which source page has a translation in which locale.

  `mountNavLocale` in docs-ui.js reads this to decide what the left-hand navbar
  shows: with the source language selected it does nothing, and with `fr`
  selected it swaps each nav item that HAS a French page for that page, IN
  PLACE OF the English one. An item with no translation is left exactly as it
  is — that is the fallback, and it is the absence of a rewrite rather than a
  code path of its own.

  Generated into `docs/_data/translations.json` by
  `content/pipeline/translation-index.ts`, from what each page DECLARES about
  itself: `lang`, and `translation_source` naming the page it expresses. NOT
  from a scan for directories whose names look like language subtags — see
  that module's header for why that inference is wrong in both directions.

  THREE STATES, and the third is the reason this is a JSON island rather than
  a conditional. (The tag name is written inside {% raw %}
  below because LIQUID PARSES TAGS INSIDE AN HTML COMMENT — the comment
  wrapper means nothing to it — so naming a tag in prose is a syntax error at
  build time, and the message points at the THEME's head.html because Liquid
  attributes an include's line to the includer. This comment cost one red
  deploy.

  AND THEN IT COST A SECOND ONE, differently, which is why this paragraph now
  describes the wrapper rather than spelling it. It used to SPELL both halves
  as an example — and the closing half ENDED THIS COMMENT eighteen lines
  early, so every line below it rendered as visible body text at the top of
  EVERY PAGE on the site. Reported by the owner from the staging URL,
  2026-09-19.

  The asymmetry is the lesson: a Liquid tag has an escape, and the closing
  comment delimiter has NONE. There is no way to write those three characters
  inside a comment and have the comment survive them, because the parser is
  not looking for an escape — it stops at the first match. So the rule is not
  "escape it carefully", it is DO NOT WRITE IT: describe it, or name it one
  character at a time. Guarded by
  scripts/tests/html-comment-delimiters.test.ts, which fails on an opening
  delimiter appearing inside an open comment — the one machine-detectable
  signature of somebody trying.)
  A {% if %} would have to choose between the second and
  third rows below, and there is no expression that can:

    1. the data file is there      -> `index` is an object; filter the nav.
    2. it is there and EMPTY       -> `pages` is `{}`; there is nothing to
                                      swap, so every item correctly falls back
                                      to the source language.
    3. the data file is ABSENT     -> `jsonify` emits `null`, and docs-ui.js
                                      leaves the navbar EXACTLY as built.

  A build that could not determine the translation set must never render as a
  folio that has no translations. `null` is how that is said.

  `baseurl` travels with it because the client has no other way to strip the
  site prefix off a nav `href` before matching it.
-->
<!-- MOVED 2026-10-02 to assets/harness/site.json: fetched once instead of
     inlined 2356x (9482 B/page, 22.34 MB, ONE payload). The three states above
     are unchanged; a fourth — the file is unreachable — is data-fa-render. -->
<!--
  Translation metadata for this page, consumed by docs-ui.js to auto-render
  language coverage and QA badges. The translation pipeline stamps front matter;
  this block publishes it to the client. No manual editing needed.
-->
<script type="application/json" id="fa-translation-meta">{
  "lang": "en",
  "translationStatus": "",
  "translationSource": "",
  "supportedLocales": ["ar","zh","en","fr","ru","es"],
  "availableLocales": null,
  "translationQa":{
    "key": "page.translation",
    "slug": "assets-css-just-the-docs-head-nav.css",
    "src": "/aai-programme/assets/qa/assets-css-just-the-docs-head-nav.css/page.translation.json",
    "index": "/aai-programme/assets/qa/assets-css-just-the-docs-head-nav.css/qa-index.json",
    "list": "/aai-programme/assets/qa/translation-qa-pages.json"
  },
  "sweep":{
    "absent": "aai-programme publishes no translation QA sweep on this site",
    "run": false,
    "sweptAt": "",
    "totalPages": 0,
    "pagesWithTranslations": 0,
    "complete": false
  },
  "statusSrc":"/aai-programme/assets/translation-status/index.json"
}</script>
<!--
  Where the action tiles point.

  RESOLVED, not composed. `scripts/sync-docs-harness.ts` writes
  `docs/_data/harness.json` from the instance's own `cat-harness.json`,
  through `siteLinks` in `scripts/site-links.ts` -- which computes every path
  with `artefactStub` and `renderingPath`, the same functions the knowledge
  graph exporter and the Pages workflow use. The tile therefore cannot
  disagree with what is published.

  This block previously wrote `/aai-programme/kg/` by hand. Nothing
  has ever been published at `<base>/kg/` -- the renderings sit at the base,
  named after the stub -- so the only entry point to the viewer anywhere on
  this site was a 404 from the day it was added. See bean `udx8`, and the
  identical defect AGENTS.md records against the README's chapter PDFs. A
  path built by convention is a claim; `bun run cat site:links --site _site`
  checks it against the tree that actually ships, and the Pages workflow runs
  that check after the export.

  `path` is site-ROOT-relative and gets `relative_url`, which is what makes it
  right under this site's `/folio-assistant/` baseurl. `url` is off-site and
  is printed as-is. `source` is no longer taken from `aux_links`: those were
  removed so the forge link stops appearing as text at the top of the main
  panel (the owner asked for it as an icon, not a header), and the URL is
  resolved from the git remote instead of written down twice.
-->
<!--
  THE NAVBAR ICON ROW — which icons this instance shows, and where each goes.

  `null` when the instance has not decided, and that is NOT the same as an
  empty list: `navbarIcons` absent means "inherit, and nothing up the chain has
  said either", while `[]` means the instance chose to show none. docs-ui.js
  reads the two apart, and `jsonify` emits `null` for the first exactly as the
  translations block above relies on.

  Resolved in `sync-docs-harness.ts`: the icon list walks `needs` with the site
  owner as the floor, and the hrefs come from this instance's own declared
  visualisations plus `siteLinks`. Nothing about the row is decided in Liquid
  or in JavaScript.
-->
<script type="application/json" id="fa-navbar-row">{"icons":["close","todos","beans","fsh-guts","qr","launcher"],"hrefs":{},"notes":{"beans":"no viewer yet"},"folders":[{"kind":"bean-defs","label":"Bean definitions","note":"no viewer yet"},{"kind":"beans","label":"Beans","note":"no viewer yet"},{"kind":"docs","label":"Docs","note":"no viewer yet"},{"kind":"library","label":"Library","path":"https://litlfred.github.io/folio-assistant/en/cat-harness/library/aai-programme/"},{"kind":"processes","label":"Processes","path":"https://litlfred.github.io/folio-assistant/en/cat-harness/processes/"},{"kind":"requirements","label":"Requirements","within":"docs","note":"no viewer yet"},{"kind":"uploads","label":"Uploads","note":"aai-programme's uploads graph is not published on this site"}]}</script><!-- NOT MOVED, deliberately. Measured, with the reason and the condition for
     moving it, in assets/harness/site.json's front matter. -->
<script type="application/json" id="fa-site-links">{"kg":"https://litlfred.github.io/folio-assistant/aai-programme/","jsonld":"https://litlfred.github.io/folio-assistant/aai-programme.jsonld","source":"https://github.com/litlfred/aai-programme"}</script>

<!--
  The todo index — a PERSON's outstanding items, published by
  `scripts/gen-docs-pages.ts` to `/assets/todos/index.json`.

  `relative_url` for the same reason every other path here uses it: the site is
  served from `/folio-assistant` on the canonical deploy and from
  `/folio-assistant/STAGING/<branch>` on a preview, and an absolute literal
  404s on every deploy but one.

  A URL rather than inline JSON, unlike `fa-site-links` above, because the
  index grows with the todo corpus and inlining it would put the whole set into
  every page's <head> whether the reader opens the board or not. A missing file
  is reported by the fetch and the board is simply not mounted — a board that
  opens empty is indistinguishable from a person with nothing outstanding, and
  those are opposite facts.

  `<meta>` and not a `<div>`: this is `<head>`, where flow content is not
  permitted. A browser hoists a stray `<div>` into `<body>` and the code still
  works, which is exactly what makes the mistake survive review.
-->
<!-- THE SITE INDEX, published once. docs-ui.js reads an ISLAND FIRST where a
     page has one and falls back to this. Rationale and measurement are in that
     file's front matter, which is not served. -->
<meta name="fa-site-index-src" content="/aai-programme/assets/harness/site.json">
<meta name="fa-todo-src" content="/aai-programme/assets/todos/index.json">
<!-- The todo GRAPH (#1941): the typed edges — node, person, bean — the board
     filters and groups by, and each todo's own page. -->
<meta name="fa-todo-graph" content="/aai-programme/todos.jsonld">

<!--
  THE SEMANTIC-ZOOM DECLARATION — when the card stops rendering its words and
  becomes its avatar.

  R2 of issue #602: *"The threshold SHALL be declared data, not a literal in
  the renderer."* `gen-docs-pages.ts` publishes the folio's own
  `semantic-zoom.json`, and publishes NOTHING when the folio has not declared
  one. So this `<meta>` may point at a 404, and that is a real state rather
  than a defect: `docs-ui.js` reports it could not determine a threshold and
  leaves every card's words in place. A default in either file would be the
  literal R2 forbids, one layer further from where anybody looks for it.

  The pointer is emitted UNCONDITIONALLY because Liquid cannot see whether the
  generator wrote the file, and a conditional that guessed would make "this
  folio declares no threshold" and "the build did not run" the same page.
-->
<meta name="fa-zoom-src" content="/aai-programme/assets/semantic-zoom.json">

<!--
  THE DECLARED VISUALISATIONS, as tiles.

  Owner, 2026-09-20: *"if harness declares visaluzers, those should have tile"*
  — so the tile set is the `coverage.visualiser` obligation made reachable, not
  a second registry. `graph-tiles.ts` derives it into `_data/harness.json`;
  this hands it to `docs-ui.js` for BOTH surfaces, because a tile is declared
  once and says where it shows.

  INLINE rather than a second fetch, unlike the todo index above, and the two
  are different for a reason worth stating: that index grows with the todo
  corpus, while this one is bounded by the number of directories an instance
  DECLARES — twelve here — and every page needs it before first paint or the
  navbar would visibly grow tiles a moment after the reader arrives.

  `jsonify` and not a hand-built string: a title carrying a quote would
  otherwise close the attribute, and the quoting rule is Liquid's rather than
  something this comment has to be right about.
-->
<meta name="fa-tiles" content="[{&quot;id&quot;:&quot;aai-processes&quot;,&quot;directory&quot;:&quot;aai-processes&quot;,&quot;title&quot;:&quot;Processes&quot;,&quot;qualifier&quot;:&quot;Assured AI programme&quot;,&quot;ref&quot;:&quot;cat-harness/docs/en/cat-harness/processes/index.html&quot;,&quot;surfaces&quot;:[&quot;navbar&quot;,&quot;board&quot;,&quot;glass&quot;],&quot;hidden&quot;:false,&quot;icon&quot;:&quot;processes&quot;,&quot;href&quot;:&quot;https://litlfred.github.io/folio-assistant/en/cat-harness/processes/&quot;,&quot;showQualifier&quot;:true},{&quot;id&quot;:&quot;library&quot;,&quot;directory&quot;:&quot;library&quot;,&quot;title&quot;:&quot;Library&quot;,&quot;qualifier&quot;:&quot;Assured AI programme&quot;,&quot;ref&quot;:&quot;cat-harness/docs/en/cat-harness/library/aai-programme/index.html&quot;,&quot;surfaces&quot;:[&quot;navbar&quot;,&quot;board&quot;,&quot;glass&quot;],&quot;hidden&quot;:false,&quot;icon&quot;:&quot;library&quot;,&quot;href&quot;:&quot;https://litlfred.github.io/folio-assistant/en/cat-harness/library/aai-programme/&quot;,&quot;showQualifier&quot;:true},{&quot;id&quot;:&quot;uploads&quot;,&quot;directory&quot;:&quot;uploads&quot;,&quot;title&quot;:&quot;Uploads&quot;,&quot;qualifier&quot;:&quot;Assured AI programme&quot;,&quot;ref&quot;:&quot;cat-harness/docs/en/cat-harness/uploads/aai-programme/index.html&quot;,&quot;surfaces&quot;:[&quot;navbar&quot;,&quot;board&quot;,&quot;glass&quot;],&quot;hidden&quot;:false,&quot;icon&quot;:&quot;uploads&quot;}]">
<!--
  THE GLASS STRIP'S PINNED TILES, in order (owner, 2026-10-01, bean `ob3m`
  finding 10: "Pinned tiles first, plus '+N more'"). Resolved from the
  instance's `glassStrip` declaration by `sync-docs-harness.ts`; absent when
  nothing declared one. Replica pages read `assets/harness/glass-strip.json`.
-->
<meta name="fa-glass-strip" content="[&quot;glass-todos&quot;,&quot;glass-settings&quot;,&quot;library&quot;,&quot;aai-processes&quot;]">

<!--
  THE SITE'S BASEURL, for the tiles above.

  Every other site-root path on this page is composed by Liquid: `relative_url`
  prepends `site.baseurl`, which is `/folio-assistant` on the canonical deploy
  and `/folio-assistant/STAGING/<branch>` on a preview. The tiles cannot use
  it, because they reach the client as JSON and are composed in `docs-ui.js`
  after Liquid has finished — so the base has to travel with them.

  IT SHIPPED WITHOUT ONE AND EVERY TILE 404ed (issue #801). `graph-tiles.ts`
  stores `/beans/`, which is correct as data and is what `harness.links[].path`
  stores too; written into an `href` unprefixed, a browser resolves it against
  the ORIGIN, so the beans tile pointed at `litlfred.github.io/beans/`. The
  owner found it by going looking for the board and landing there.

  A meta of its own rather than reading the site index, which also carries a
  `baseurl`: that document reads as `null` when `_data/translations.json` was
  not built, and since 2026-10-02 it is FETCHED, so it is also absent until a
  request resolves and may never arrive. Composing links out of an optional
  block means the day it goes missing every tile silently points at the origin
  again — which is this defect, with a second way to reach it. Two reasons for
  one answer now.
-->
<meta name="fa-baseurl" content="/aai-programme">

<!--
  WHETHER THIS IS A PREVIEW, for the tiles above.

  `feature-staging.yml` writes `staging_slug` into `_data/build.yml`;
  `docs-site.yml` writes the same file WITHOUT it. So a non-empty value here
  means "a STAGING/<slug>/ preview", an empty one means the canonical deploy
  or a local build.

  It exists so a tile can vanish with its page. `compose-docs.ts` withholds a
  `publish: "staging-only"` page from the canonical tree; a tile still pointing
  at it would be a link to a 404 — `pb04`, a dead link being worse than no
  link, and worse than usual here because the tile ALSO advertises content the
  declaration is deliberately not publishing.

  The filtering is client-side rather than baked into `harness.json` because
  that file is generated once and committed, so it cannot know which deploy
  will serve it. The page can be withheld at compose time because compose runs
  per deploy; the data file cannot.

  EMPTY IS THE SAFE VALUE, and it is what an absent `_data/build.yml` yields:
  a build that cannot say it is a preview is treated as canonical and hides
  the tile. That matches `compose-docs.ts`, which withholds unless positively
  told `--staging` — one direction in both places, so the page and its tile
  cannot disagree about which deploy they are on.
-->
<meta name="fa-staging" content="">

<!--
  WHICH SEARCH INDEX THIS PAGE IS SERVING.

  `feature-staging.yml` fetches the PUBLISHED index before the build and
  stamps what happened; `docs-site.yml` writes no such key, so the canonical
  deploy leaves this empty and draws no warning. Bean `eof6`, on the owner's
  ruling of 2026-09-22: *"staging uses last published index (w/ wanrnig)"*.

  Three values, and the empty one is a real state rather than a fallback:

    published    the preview serves the last published index. Results are
                 about the MAIN SITE, not about this branch.
    unavailable  the fetch failed; an empty index is served.
    (empty)      not a staging build. No warning.

  The bean this implements had first concluded that staging must disable
  search outright, because a stale hit is "a wrong PASS, BELIEVED". The ruling
  keeps search and attacks the belief instead — which is why the value is
  emitted at all. An index swapped in with nothing on the page saying so would
  be the unmarked staleness the bean was right to refuse.
-->
<meta name="fa-search-index" content="">

<!--
  A page left out of the search index ON PURPOSE (`search_exclude: true`)
  says so in what is built, so `publish:verify`'s search-index check can tell
  a deliberate exclusion from a truncated index (#2233). Front matter is gone
  once Jekyll has run; without this marker the ~2,800 IG artefact pages that
  #2194 excluded read as "4,189 pages offer a search box, 1,003 indexed".
-->




<!--
  The bean index — the AGENT work plan, published by the same generator beside
  the todo index above, for the same reason and read the same way. Separate
  files rather than one combined document because the two stores are separate
  graphs with separate declarations, and a consumer that wants only the human
  half should not fetch 239 beans to get three todos.
-->
<meta name="fa-beans-src" content="/aai-programme/assets/beans/index.json">
<!--
  The process index's entry point — the REPOSITORY's named-subgraph index,
  whose children are the harness roots this site frames (`bun run
  subgraph:jsonld`; bean `ax6r`, owner 2026-10-03: "Move to JSON-LD").
  Read by assets/js/process-index.js on the page carrying
  `[data-fa-process-index]` (the publication-workflow page), which walks it
  down to every `processes` subgraph's `index.hydrated.jsonld`.
-->
<meta name="fa-processes-src" content="/aai-programme/subgraph/index.jsonld">
<!--
  The deploy's stamp — when it was built and from which commit — which the
  work-plan dashboard turns into "generated … · N commits behind main".
  `build.json` on the main site, `staging.json` on a preview; written by the
  deploy, never committed, because a committed timestamp is a merge conflict
  on every pair of concurrent changes (bean `y7b3`).
-->
<meta name="fa-build-src" content="/aai-programme/build.json">

<!--
  The discarded-items document — `fsh-guts.jsonld`, published at the base by
  `docs-site.yml`. A URL and not inline JSON, for the todo index's reason and
  then some: it carries every node's BODY, which is 64 KB against a 5 KB
  document without them. Inlining that into every page's <head> would be
  absurd for content reached through one control inside Settings.

  `.json` rather than `.jsonld`. Both are published and they are the same
  bytes; Pages has no media type for `.jsonld` and serves it as
  octet-stream. `fetch().json()` would parse it anyway, but every other
  rendering here uses the alias and one that did not would be the odd case a
  later reader has to work out.

  The viewer fetches this WHEN SETTINGS OPENS, never on page load, and a
  fetch that fails is reported rather than shown as an empty trashcan —
  "nothing discarded" and "could not read the document" are opposite facts.
-->
<!--
  NOT on a folio's site that does not link its OWN fsh-guts (#2263 follow-up):
  there this path is the folio's, where no document is published, and the
  fetch's 404 painted "?" -- an error -- on the fish. With no meta the count is
  ABSENT, and the row's fish is a link or an inert icon saying why
  (`foreignSite.absent.fshGuts`, `lib/foreign-site-scope.ts`).
-->
<!--
  ?v=<build time> ON EVERY FIRST-PARTY ASSET — and the reason is a REVIEW
  failure, not a performance one.

  These five are served from stable paths with no hash in the name, so a
  browser that has the page cached keeps the old CSS and JS until its
  `max-age` runs out. On the live site that is invisible. On a STAGING
  preview it is the whole point of the deployment: the reviewer opens the URL
  they opened an hour ago, gets yesterday's stylesheet, and reports "i dont
  see changes" — which is indistinguishable from a deploy that never
  happened, and sends the next hour after the wrong cause. Measured
  2026-09-21 on this branch: every byte of the change was verified present in
  the publish ref while the page rendered the previous build.

  `site.time` is the BUILD's timestamp, so the query changes exactly when the
  bytes might have, and never between two readers of the same build. A
  content hash would be tighter and needs a pipeline step; this needs none
  and closes the case that costs review time.

  NOT a cache-busting strategy for third-party assets, and not applied to
  them: those are versioned in their own URLs already.
-->
<!-- The harness icon row's own style, which railed pages load without docs-ui.css (beans `lhvt`, `9rq1`). -->
<link rel="stylesheet" href="/aai-programme/assets/css/navbar-row.css?v=1792595885">
<link rel="stylesheet" href="/aai-programme/assets/css/docs-ui.css?v=1792595885">
<!-- Narrow viewports: wide content scrolls in its own box, never the page
     (bean `2r2n`). The standalone viewers inline the same file through
     `withViewerNav`, so both kinds of page read one set of rules. -->
<link rel="stylesheet" href="/aai-programme/assets/css/narrow-viewport.css?v=1792595885">

<!--
  The work-plan dashboard's styles, split from docs-ui.css so that
  `state-visualizer.ts` can inline exactly these bytes into the generated
  `<base>/<stub>/state-visualizer/` pages. One rule, two surfaces.
-->
<link rel="stylesheet" href="/aai-programme/assets/css/work-plan.css?v=1792595885">
<!-- Sticky themes. GENERATED from the theme nodes in `schemas/themes.ts` by
     `bun run cat themes:css`; `themes:css:check` fails the build when it is stale.
     Loaded AFTER docs-ui.css deliberately: it supplies the `--fa-sticky-*`
     roles that docs-ui.css consumes, and a custom property has to be set on a
     matching element before the rule reading it takes effect. -->
<link rel="stylesheet" href="/aai-programme/assets/css/themes.css?v=1792595885">
<!-- UML overview colours: one class per graph typology, set on the Mermaid nodes
     that `scripts/gen-uml-overview.ts` writes into docs/uml/overview/. -->
<link rel="stylesheet" href="/aai-programme/assets/css/uml.css?v=1792595885">
<!-- Kind avatars. GENERATED from `schemas/avatars.ts` by `bun run cat avatars:css`;
     `avatars:css:check` fails the build when it is stale. One stylesheet
     rather than 68 assets: the glyph is a mask and the colour is a property,
     so a scheme swap is a custom property and the trash state is a selector. -->
<link rel="stylesheet" href="/aai-programme/assets/css/avatars.css?v=1792595885">

<!--
  The kinds THIS INSTANCE DECLARES, for the avatar fan.

  Owner: "shows the DECLared kinds for that instance, not inheritance." Written
  by `sync-docs-harness.ts` from the instance's own `harness.json`, BEFORE
  `resolveDirectories` overlays a dependency's. The effective set is strictly
  larger, and showing it would name kinds this repository never claimed.

  Inline rather than a fetched URL, unlike the todo index and the discarded
  document: this is a dozen short strings, it is needed to render the fan at
  all, and a fetch for that would put a spinner in front of a badge.
-->
<!-- NOT MOVED: same reason as fa-site-links above. -->
<script type="application/json" id="fa-declared-kinds">["beans","docs","library","processes","uploads"]</script>
<script src="/aai-programme/assets/js/vendor/qrcode.js" defer></script>
<script src="/aai-programme/assets/js/vendor/qrcode_UTF8.js" defer></script>
<!-- BEFORE docs-ui.js and work-plan.js: both read window.faRender. -->
<script src="/aai-programme/assets/js/kg-render.js" defer></script>
<!-- BEFORE docs-ui.js, which calls it: the one drawing of the harness icon row (beans `lhvt`, `9rq1`). -->
<script src="/aai-programme/assets/js/navbar-row.js?v=1792595885" defer></script>
<script src="/aai-programme/assets/js/docs-ui.js?v=1792595885" defer></script>
<!-- The edit, source and feedback links of every page, from the platform's one
  recipe (cat-harness-tools/src/core/edit-links.ts, bean v433): links carry their
  facts and this builds the hrefs. -->
<script src="/aai-programme/assets/js/edit-links.js?v=1792595885" defer></script>

<!--
  The work-plan dashboard. SELF-MOUNTING on any page carrying
  `[data-fa-workplan]`, so docs-ui.js neither calls it nor knows it exists; a
  page without that container pays one failed querySelector. The same file is
  inlined verbatim into the generated state-visualiser pages.
-->
<script src="/aai-programme/assets/js/work-plan.js" defer></script>
<!--
  The process index, self-mounting on `[data-fa-process-index]` the same way.
  Its rows are the diagrams' own documentation, from the published subgraph JSON-LD.
-->
<script src="/aai-programme/assets/js/process-index.js" defer></script>

<!--
  The landing panel — the instance's declared description drawn inside the
  quiet part of its declared backdrop. Markup: `_includes/landing.html`.

  The region comes in as custom properties (`--fl-x` …) set per instance from
  `harness.json`, so this stylesheet knows nothing about where any
  particular picture is quiet. That is the whole design: a downstream folio
  swaps the art and the numbers and needs no CSS.
-->
<style>
  .folio-landing { position: relative; margin: 0 0 2rem; }

  /* WHAT IS LEFT HERE, AND WHY IT IS SO LITTLE.
     `landing.html` emits exactly one folio-landing class —
     `folio-landing folio-landing--plain` — the no-stickies fallback, which
     renders the description and no art. The art path moved to the sticky
     board (`fa-sticky--backdrop` in docs-ui.css), which composites text into
     the picture through a declared `textRegion` and a scrim.

     So this block used to carry fourteen selectors of which ELEVEN matched
     nothing: every rule reaching for `folio-landing__art`,
     `folio-landing__text` or `folio-landing--no-region`. Measured before they
     were cut — those three classes appear in no markup in this repository and
     on none of the 331 published pages that were inlining the CSS for them.
     CSS has no error for a selector that matches nothing, which is the same
     silence that let `.fa-sticky--backdrop > .fa-sticky-art` ship wrong.

     The reasoning did not go with them. The blend-direction argument for the
     fade is now at `.fa-sticky--backdrop::before`, where a scrim replaces it;
     the region, overflow and breakpoint-parity lessons were already
     re-derived and better stated on `.fa-landing-sticky--fixed`. What is NOT
     carried over is the `cqw` container-query sizing: the successor scales
     through `--fa-text-scale` rather than container queries, so a note about
     `container-type` not being its own query container would be advice about
     a mechanism nothing here uses. Bean `alox`, issue #873. */
  .folio-landing--plain {
    position: static; width: auto; height: auto; color: inherit;
  }
  .folio-landing--plain p { font-size: inherit; font-weight: inherit; }
</style>

<!--
  AN INSTANCE'S OWN WEBPAGE THEME, scoped to its pages.

  Bean `7h3u`, on the owner's 2026-09-30 ruling to wire this at the PLATFORM
  layer so every ingested IG gets it, rather than in one instance's page
  generator.

  WHY LIQUID AND NOT CSS. A webpage theme dresses one instance's pages, so it
  has to be scoped by URL — and CSS cannot select on a URL. Jekyll is what
  knows which page is rendering, so the scope is applied here and the VALUES
  come from `_data/instance-themes.json`, written by `gen-themes-css.ts` from
  each instance's declared `themes/`. That is the `site.data` pass-through bean
  `kott` settled, and the owner's own instruction for this work: "reuse all
  existing justthedocs infra".

  WHY INLINE AND NOT A LINKED STYLESHEET. The same first-paint reasoning this
  file already carries for the colour scheme: a sheet arriving after first
  paint flashes the unthemed colours, which is the defect this file was
  rewritten to remove.

  WHAT IT RETHEMES, AND WHAT IT CANNOT. These three names are read by
  `docs-ui.css` at 29 of its 33 `var(--x, #literal)` sites and DEFINED by
  nothing — just-the-docs is Sass, so its own chrome compiles to literals and
  no custom property can reach it. So this dresses the surfaces the site owns,
  the left-hand nav among them, and leaves just-the-docs' compiled chrome
  alone. Stated here because the alternative is a reader concluding the theme
  is broken when it is doing exactly what it can.
-->

</head>

<body>
  <a class="skip-to-main" href="#main-content">Skip to main content</a>
  <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
  <symbol id="svg-link" viewBox="0 0 24 24">
  <title>Link</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
    <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
  </svg>
</symbol>

  <symbol id="svg-menu" viewBox="0 0 24 24">
  <title>Menu</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu">
    <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>
  </svg>
</symbol>

  <symbol id="svg-arrow-right" viewBox="0 0 24 24">
  <title>Expand</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
    <polyline points="9 18 15 12 9 6"></polyline>
  </svg>
</symbol>

  <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE -->
<symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link">
  <title id="svg-external-link-title">(external link)</title>
  <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>
</symbol>

  
    <symbol id="svg-doc" viewBox="0 0 24 24">
  <title>Document</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file">
    <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>
  </svg>
</symbol>

    <symbol id="svg-search" viewBox="0 0 24 24">
  <title>Search</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search">
    <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>
  </svg>
</symbol>

  
  
    <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md -->
<symbol id="svg-copy" viewBox="0 0 16 16">
  <title>Copy</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/>
    <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/>
  </svg>
</symbol>
<symbol id="svg-copied" viewBox="0 0 16 16">
  <title>Copied</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16">
    <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/>
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/>
  </svg>
</symbol>

  
</svg>

  
    <header class="side-bar">
  <div class="site-header">
    <a href="/aai-programme/" class="site-title lh-tight"><span class="fa-site-mark fa-site-mark--initial" aria-hidden="true">A</span><span class="fa-site-title" lang="en" dir="ltr">Assured AI programme</span>
</a>
    <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false">
      <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg>
    </button>
  </div>

  <nav aria-label="Main" id="site-nav" class="site-nav">
  
  
    <ul class="nav-list"><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Glossary submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/aai-programme/en/folio-assistant-core/glossary/" class="nav-list-link">Glossary</a><ul class="nav-list"><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/instance/cat-harness/" class="nav-list-link">Glossary: cat-harness</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/instance/folio-assistant-core/" class="nav-list-link">Glossary: folio-assistant-core</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/instance/bootstrap/" class="nav-list-link">Glossary: bootstrap</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/skills/" class="nav-list-link">Glossary: Skills</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/tools/" class="nav-list-link">Glossary: Tools</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/bpmn-activities/" class="nav-list-link">Glossary: BPMN activities</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/dmn-decisions/" class="nav-list-link">Glossary: DMN decisions</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Glossary: Schema fields submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/aai-programme/en/folio-assistant-core/glossary/schema-fields/" class="nav-list-link">Glossary: Schema fields</a><ul class="nav-list"><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/schema-fields/a-e/" class="nav-list-link">Glossary: Schema fields, A–E</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/schema-fields/f-l/" class="nav-list-link">Glossary: Schema fields, F–L</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/schema-fields/m-r/" class="nav-list-link">Glossary: Schema fields, M–R</a></li><li class="nav-list-item"><a href="/aai-programme/en/folio-assistant-core/glossary/schema-fields/s-z/" class="nav-list-link">Glossary: Schema fields, S–Z</a></li></ul></li></ul></li><li class="nav-list-item"><a href="/aai-programme/" class="nav-list-link">Assured AI programme</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-acceptance.html" class="nav-list-link">Assured AI programme: acceptance criteria</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-automation.html" class="nav-list-link">Assured AI programme: automation</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-decisions.html" class="nav-list-link">Assured AI programme: decisions needed before the build</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-dependencies.html" class="nav-list-link">Assured AI programme: dependencies</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-design-principles.html" class="nav-list-link">Assured AI programme: design principles</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-information.html" class="nav-list-link">Assured AI programme: information classification</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-linking.html" class="nav-list-link">Assured AI programme: linking to workstream projects</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-metrics.html" class="nav-list-link">Assured AI programme: metrics</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-pilot.html" class="nav-list-link">Assured AI programme: pilot tests</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/aai-views.html" class="nav-list-link">Assured AI programme: programme project views</a></li><li class="nav-list-item"><a href="/aai-programme/programme/drift.html" class="nav-list-link">Bean drift</a></li><li class="nav-list-item"><a href="/aai-programme/en/cat-harness/external-schemas/" class="nav-list-link">External schemas</a></li><li class="nav-list-item"><a href="/aai-programme/qa/validation/" class="nav-list-link">Integration readiness: who did what</a></li><li class="nav-list-item"><a href="/aai-programme/en/cat-harness/lsi/" class="nav-list-link">Latent semantic indexes</a></li><li class="nav-list-item"><a href="/aai-programme/en/cat-harness/methodologies/" class="nav-list-link">Methodologies</a></li><li class="nav-list-item"><a href="/aai-programme/programme/" class="nav-list-link">Programme board</a></li><li class="nav-list-item"><a href="/aai-programme/docs/staging-project.html" class="nav-list-link">Project 110 as the programme board</a></li><li class="nav-list-item"><a href="/aai-programme/docs/requirements/" class="nav-list-link">Requirement nodes</a></li><li class="nav-list-item"><a href="/aai-programme/en/cat-harness/tools/" class="nav-list-link">Tools</a></li><li class="nav-list-item"><a href="/aai-programme/en/cat-harness/tools/cat-harness/" class="nav-list-link">Tools — cat-harness</a></li><li class="nav-list-item"><a href="/aai-programme/en/cat-harness/tools/cat-harness-tools/" class="nav-list-link">Tools — cat-harness-tools</a></li><li class="nav-list-item"><a href="/aai-programme/en/cat-harness/tools/folio-assistant-core/" class="nav-list-link">Tools — folio-assistant-core</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v1.html" class="nav-list-link">V1 Master programme</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v10.html" class="nav-list-link">V10 Blocked and at risk</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v11.html" class="nav-list-link">V11 WHO review</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v12.html" class="nav-list-link">V12 Decisions</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v13.html" class="nav-list-link">V13 Overdue</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v2.html" class="nav-list-link">V2 Roadmap</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v3.html" class="nav-list-link">V3 Milestones</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v4.html" class="nav-list-link">V4 Research questions</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v5.html" class="nav-list-link">V5 Pipeline stages</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v6.html" class="nav-list-link">V6 Integration readiness</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v7.html" class="nav-list-link">V7 Sprint review</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v8.html" class="nav-list-link">V8 Next 30 days</a></li><li class="nav-list-item"><a href="/aai-programme/programme/v9.html" class="nav-list-link">V9 Dependencies</a></li><li class="nav-list-item"><a href="/aai-programme/board/" class="nav-list-link">Work plan board</a></li><li class="nav-list-item"><a href="/aai-programme/programme/workstreams.html" class="nav-list-link">Workstreams, epics and beans</a></li></ul>
  
</nav>


<div class="d-md-block d-none site-footer">
  
  
    <!-- GENERATED by cat-harness/scripts/gen-navbar-include.ts. Do not hand-edit: `bun run cat navbar:include` rewrites it, and `--check` fails the build if it is stale. --><input type="checkbox" class="fa-nav-open" id="fa-nav-open"><div class="fa-nav-in"><div class="fa-nav-top"></div><div class="fa-nav-bottom"><details class="fa-nav-group"><summary><span class="fa-nav-glyph" aria-hidden="true">▦</span><span class="fa-nav-label">Harnesses</span></summary><div class="fa-nav-sub"><div class="fa-nav-row"><a href="/aai-programme/"><span class="fa-nav-glyph fa-nav-tone fa-nav-blank" style="background:hsl(184 45% 28%)" aria-hidden="true"></span><span class="fa-nav-label">Assured AI programme</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="aai-programme" aria-label="Configuration of Assured AI programme" data-fa-tip="Configuration of Assured AI programme">⚙︎</button><div class="fa-nav-kids"><span class="fa-nav-dead fa-nav-kind" title="Bean definitions — Work items, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7zM4 9h2M4 15h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bean definitions<span class="fa-nav-sr"> — Work items, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Beans — The work plan, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Beans<span class="fa-nav-sr"> — The work plan, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Docs — Documentation ABOUT the knowledge graph, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h8l4 4v14H6zM14 3v4h4M9 12h6M9 16h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Docs<span class="fa-nav-sr"> — Documentation ABOUT the knowledge graph, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/library/aai-programme/" class="fa-nav-kind" title="Library — L1 source content, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 4h4v16H5zM11 4h3v16h-3zM16 5l3 15-2 .4L14 5.4z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Library<span class="fa-nav-sr"> — L1 source content, Assured AI programme</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, Assured AI programme</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Requirements — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h12v18H6zM9 8l1.5 1.5L13 7M9 14l1.5 1.5L13 13M15 8h1M15 14h1" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Requirements<span class="fa-nav-sr"> — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/uploads/aai-programme/" class="fa-nav-kind" title="Uploads — The incoming queue, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 17V5m0 0l-4 4m4-4l4 4M5 19h14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Uploads<span class="fa-nav-sr"> — The incoming queue, Assured AI programme</span></span></a></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-cat-harness-tools"><span class="fa-nav-glyph fa-nav-tone" style="background:hsl(268 45% 28%)" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14.5 5.5a4 4 0 005 5L11 19a2.1 2.1 0 01-3-3l8.5-8.5a4 4 0 01-2-2zM8.5 16.5h.01" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">C@T Harness Tools</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="cat-harness-tools" aria-label="Configuration of C@T Harness Tools" data-fa-tip="Configuration of C@T Harness Tools">⚙︎</button><div class="fa-nav-kids"><span class="fa-nav-dead fa-nav-kind" title="Bean definitions — Work items, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7zM4 9h2M4 15h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bean definitions<span class="fa-nav-sr"> — Work items, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Bean notes — Bean notes, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 5c4 0 6 3 6 7s-2 7-6 7c2-3 2-4 2-7s0-4-2-7zM16 8h4v8h-4zM17 11h2M17 13h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bean notes<span class="fa-nav-sr"> — Bean notes, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/beans/cat-harness-tools/" class="fa-nav-kind" title="Beans — The work plan, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Beans<span class="fa-nav-sr"> — The work plan, C@T Harness Tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code/cat-harness-tools/" class="fa-nav-kind" title="Code — Source code, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 7l-5 5 5 5m8-10l5 5-5 5M13 5l-2 14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code<span class="fa-nav-sr"> — Source code, C@T Harness Tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/health/cat-harness-tools/" class="fa-nav-kind" title="Health — Repository health reports, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 13h4l2-5 3 10 2-6 2 3h5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Health<span class="fa-nav-sr"> — Repository health reports, C@T Harness Tools</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Sweep marks — When a sweep step last ran, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 4a8 8 0 1 0 0 16a8 8 0 1 0 0-16M12 8v4l3 2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Sweep marks<span class="fa-nav-sr"> — When a sweep step last ran, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/tools/cat-harness-tools/" class="fa-nav-kind" title="Tools — Tool definitions, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14 4a4 4 0 00-5 5l-5 5 2 2 5-5a4 4 0 005-5l-2 2-2-2 2-2z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Tools<span class="fa-nav-sr"> — Tool definitions, C@T Harness Tools</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Workflow state — Running BPMN instances, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 7h5v5H5zM14 12h5v5h-5zM10 9h4v6" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Workflow state<span class="fa-nav-sr"> — Running BPMN instances, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-cat-harness"><span class="fa-nav-glyph fa-nav-tone fa-nav-crop" style="background:hsl(268 45% 28%)"><img src="/aai-programme/assets/img/harness/landing-grumpy-cyborg-agents-card.webp" alt="" title="Grumpy cyborg agents" loading="lazy" decoding="async" style="width:500%;height:500%;left:-30%;top:-170%"></span><span class="fa-nav-label">C@T Harness</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="cat-harness" aria-label="Configuration of C@T Harness" data-fa-tip="Configuration of C@T Harness">⚙︎</button><div class="fa-nav-kids"><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/attestations/cat-harness/" class="fa-nav-kind" title="Attestations — QA attestations, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h12v18H6zM9 8h6M9 12h6M10 17l2 2 3-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Attestations<span class="fa-nav-sr"> — QA attestations, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Auto docs — Derived indexes over the other graphs, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h8l4 4v14H6zM14 3v4h4M9 12h.01M11.5 12h5M9 15h.01M11.5 15h5M9 18h.01M11.5 18h3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Auto docs<span class="fa-nav-sr"> — Derived indexes over the other graphs, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Basic CDN site — A published static site on a CDN that serves files by path only (GitHub Pages), C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18M3 12h18M12 3q-4 9 0 18M12 3q4 9 0 18" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Basic CDN site<span class="fa-nav-sr"> — A published static site on a CDN that serves files by path only (GitHub Pages), C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/beans/" class="fa-nav-kind" title="Beans — The work plan, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Beans<span class="fa-nav-sr"> — The work plan, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code/cat-harness/" class="fa-nav-kind" title="Code — Source code, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 7l-5 5 5 5m8-10l5 5-5 5M13 5l-2 14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code<span class="fa-nav-sr"> — Source code, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code-lists/cat-harness/" class="fa-nav-kind" title="Code lists — Closed sets of codes, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 6h3v2H4zM9 7h11M4 11h3v2H4zM9 12h11M4 16h3v2H4zM9 17h11" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code lists<span class="fa-nav-sr"> — Closed sets of codes, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/start/" class="fa-nav-kind" title="Doc group — A named group of the documentation's own pages, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 6h6l2 2h10v11H3zM7 12h10M7 15h7" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Doc group<span class="fa-nav-sr"> — A named group of the documentation's own pages, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Docs — Documentation ABOUT the knowledge graph, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h8l4 4v14H6zM14 3v4h4M9 12h6M9 16h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Docs<span class="fa-nav-sr"> — Documentation ABOUT the knowledge graph, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/external-schemas/" class="fa-nav-kind" title="External schemas — The specifications this instance depends on, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 6h7v12H4zM13 6h7v12h-7zM11 9h2M11 12h2M11 15h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">External schemas<span class="fa-nav-sr"> — The specifications this instance depends on, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/folio/" class="fa-nav-kind" title="Folio — Authored content, rendered to a website by the just-the-docs pipeline, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h7v14H4zM13 5h7v14h-7zM11 5v14M7 9h1M16 9h1" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Folio<span class="fa-nav-sr"> — Authored content, rendered to a website by the just-the-docs pipeline, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="FSH guts — Deprecated and throwaway structured content, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 7h14M9 7V5h6v2M7 7l1 13h8l1-13M11 11v6M14 11v6" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">FSH guts<span class="fa-nav-sr"> — Deprecated and throwaway structured content, C@T Harness</span></span><span class="fa-nav-note">staging only</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/health/cat-harness/" class="fa-nav-kind" title="Health — Repository health reports, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 13h4l2-5 3 10 2-6 2 3h5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Health<span class="fa-nav-sr"> — Repository health reports, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/issue-marks/" class="fa-nav-kind" title="Issue marks — How far an agent has read an issue, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M7 4h10v16l-5-4-5 4zM4 8h2M4 12h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Issue marks<span class="fa-nav-sr"> — How far an agent has read an issue, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/library/cat-harness/" class="fa-nav-kind" title="Library — L1 source content, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 4h4v16H5zM11 4h3v16h-3zM16 5l3 15-2 .4L14 5.4z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Library<span class="fa-nav-sr"> — L1 source content, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/memory/cat-harness/" class="fa-nav-kind" title="Memory — Durable facts an agent carries between sessions, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m8 0h4M9.5 9.5a3 3 0 000 5M14.5 9.5a3 3 0 010 5M9.5 9.5c2 1 3 1 5 0M9.5 14.5c2-1 3-1 5 0" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Memory<span class="fa-nav-sr"> — Durable facts an agent carries between sessions, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/methodologies/" class="fa-nav-kind" title="Methodologies — Judgement methodologies, adopted whole and kept independent, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 20V12m0 0L6 6m6 6l6-6M4 4h4m8 0h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Methodologies<span class="fa-nav-sr"> — Judgement methodologies, adopted whole and kept independent, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/policies/cat-harness/" class="fa-nav-kind" title="Policies — W3C ODRL 2.2 policies, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6l7-3zm-3.5 9l2.5 2.5 4.5-4.5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Policies<span class="fa-nav-sr"> — W3C ODRL 2.2 policies, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/proposals/" class="fa-nav-kind" title="Proposals — Proposals for the harness's own features, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3a5 5 0 00-3 9v2h6v-2a5 5 0 00-3-9zM10 17h4M10.5 20h3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Proposals<span class="fa-nav-sr"> — Proposals for the harness's own features, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/lsi/" class="fa-nav-kind" title="QA — QA verdicts and their projections, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l7 3v6c0 4-3 7-7 9-4-2-7-5-7-9V6zM9 12l2 2 4-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">QA<span class="fa-nav-sr"> — QA verdicts and their projections, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/requirements/" class="fa-nav-kind" title="Requirements — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h12v18H6zM9 8l1.5 1.5L13 7M9 14l1.5 1.5L13 13M15 8h1M15 14h1" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Requirements<span class="fa-nav-sr"> — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/scenarios/cat-harness/" class="fa-nav-kind" title="Scenarios — A Subgraph of Roles, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 11a3 3 0 100-6 3 3 0 000 6zm0 0c-2.5 0-4 1.5-4 4v4h8v-4c0-2.5-1.5-4-4-4zm8-6a2.5 2.5 0 110 5M17 12c2 0 3 1.5 3 3v4h-3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Scenarios<span class="fa-nav-sr"> — A Subgraph of Roles, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/schemas/cat-harness/" class="fa-nav-kind" title="Schemas — A Subgraph of Node Schemas, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l8 4-8 4-8-4zM4 12l8 4 8-4M4 17l8 4 8-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Schemas<span class="fa-nav-sr"> — A Subgraph of Node Schemas, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Skills — A Subgraph of Skills, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h6a2 2 0 012 2v12a2 2 0 00-2-2H4zm16 0h-6a2 2 0 00-2 2v12a2 2 0 012-2h6z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Skills<span class="fa-nav-sr"> — A Subgraph of Skills, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/substrate-snapshots/cat-harness/" class="fa-nav-kind" title="Substrate snapshots — The root declaration of each Knowledge Graph this instance subscribes to, cached byte for byte at the pinned commit with its fixity, and what the substrate judgement found in it, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 7h14v11H3zM3 7l7 6 7-6M17 4l4 4M19 6l-3 3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Substrate snapshots<span class="fa-nav-sr"> — The root declaration of each Knowledge Graph this instance subscribes to, cached byte for byte at the pinned commit with its fixity, and what the substrate judgement found in it, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/swimlane-glossary/" class="fa-nav-kind" title="Swimlane glossary — A Subgraph recording every term a Knowledge Graph's Processes have ever named, and when each stopped being used, so a retired term is never silently reused, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 6h18M3 12h18M3 18h18M15 9h5v6h-5z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Swimlane glossary<span class="fa-nav-sr"> — A Subgraph recording every term a Knowledge Graph's Processes have ever named, and when each stopped being used, so a retired term is never silently reused, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/test-plans/cat-harness/" class="fa-nav-kind" title="Test plan — Test plans, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 4h12v16H6zM8 8h2v2H8zM12 9h4M8 12h2v2H8zM12 13h4M8 16h2v2H8zM12 17h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Test plan<span class="fa-nav-sr"> — Test plans, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/todos/" class="fa-nav-kind" title="Todos — Human actors' outstanding work, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 4h11l3 3v13H5zM16 4v3h3M8 12l2 2 4-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Todos<span class="fa-nav-sr"> — Human actors' outstanding work, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/tool-releases/cat-harness/" class="fa-nav-kind" title="Tool releases — External tool releases, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14.5 4a4.5 4.5 0 0 0-4.2 6.1L4 16.4 7.6 20l6.3-6.3A4.5 4.5 0 0 0 20 9.5l-2.7 2.7-2.8-.7-.7-2.8L16.5 6A4.5 4.5 0 0 0 14.5 4zM4 4h4v4H4zM6 8v3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Tool releases<span class="fa-nav-sr"> — External tool releases, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/tools/cat-harness/" class="fa-nav-kind" title="Tools — Tool definitions, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14 4a4 4 0 00-5 5l-5 5 2 2 5-5a4 4 0 005-5l-2 2-2-2 2-2z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Tools<span class="fa-nav-sr"> — Tool definitions, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/translation-status/" class="fa-nav-kind" title="Translation sources — POT templates, PO catalogues and their TranslationNode manifests, one directory per target locale, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 6h7M7 6v2c0 3-1 5-3 6M6 10c1 3 3 4 5 5M13 19l4-10 4 10M15 16h5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Translation sources<span class="fa-nav-sr"> — POT templates, PO catalogues and their TranslationNode manifests, one directory per target locale, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/graph-typologies/aai-programme/" class="fa-nav-kind" title="Graph typologies — The graph typologies a harness declares it owns, one node per kind, so no central registry names another harness's subgraph types, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 8h12v11H5zM7 5h12v11M9 2h12v11M8 12h6M8 15h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Graph typologies<span class="fa-nav-sr"> — The graph typologies a harness declares it owns, one node per kind, so no central registry names another harness's subgraph types, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="UML — UML class diagrams of each named sub-graph a harness declares, derived from the node schemas its graph typologies register, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 4h9v12H3zM3 8h9M12 10h4M16 7h5v6h-5z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">UML<span class="fa-nav-sr"> — UML class diagrams of each named sub-graph a harness declares, derived from the node schemas its graph typologies register, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/uploads/cat-harness/" class="fa-nav-kind" title="Uploads — The incoming queue, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 17V5m0 0l-4 4m4-4l4 4M5 19h14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Uploads<span class="fa-nav-sr"> — The incoming queue, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/validators/cat-harness/" class="fa-nav-kind" title="Validators — The validators a harness's code provides, one node each naming the graph typology and $schema family it checks and the Zod export that checks it, joined onto the kinds on first use, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l7 3v6c0 4-3 7-7 9-4-2-7-5-7-9V6zM8.5 12.5l2.5 2.5 4.5-5M12 3v2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Validators<span class="fa-nav-sr"> — The validators a harness's code provides, one node each naming the graph typology and $schema family it checks and the Zod export that checks it, joined onto the kinds on first use, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/vocab-mappings/cat-harness/" class="fa-nav-kind" title="Vocab mapping — Vocabulary mappings, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 6h4M3 12h4M3 18h4M8 6l8 6M8 12l8-6M8 18h8M17 6h4M17 12h4M17 18h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Vocab mapping<span class="fa-nav-sr"> — Vocabulary mappings, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/voices/aai-programme/" class="fa-nav-kind" title="Voices — Editorial voice profiles, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 4a3 3 0 013 3v4a3 3 0 01-6 0V7a3 3 0 013-3zM7 11a5 5 0 0010 0M12 16v4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Voices<span class="fa-nav-sr"> — Editorial voice profiles, C@T Harness</span></span></a></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-bootstrap-tools"><span class="fa-nav-glyph fa-nav-tone" style="background:hsl(96 45% 28%)" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3v9M8 12h8l-1 5a3 3 0 01-6 0z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bootstrap tools</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="bootstrap-tools" aria-label="Configuration of Bootstrap tools" data-fa-tip="Configuration of Bootstrap tools">⚙︎</button><div class="fa-nav-kids"><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code/bootstrap-tools/" class="fa-nav-kind" title="Code — Source code, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 7l-5 5 5 5m8-10l5 5-5 5M13 5l-2 14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code<span class="fa-nav-sr"> — Source code, Bootstrap tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, Bootstrap tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/scenarios/bootstrap-tools/" class="fa-nav-kind" title="Scenarios — A Subgraph of Roles, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 11a3 3 0 100-6 3 3 0 000 6zm0 0c-2.5 0-4 1.5-4 4v4h8v-4c0-2.5-1.5-4-4-4zm8-6a2.5 2.5 0 110 5M17 12c2 0 3 1.5 3 3v4h-3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Scenarios<span class="fa-nav-sr"> — A Subgraph of Roles, Bootstrap tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/schemas/bootstrap-tools/" class="fa-nav-kind" title="Schemas — A Subgraph of Node Schemas, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l8 4-8 4-8-4zM4 12l8 4 8-4M4 17l8 4 8-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Schemas<span class="fa-nav-sr"> — A Subgraph of Node Schemas, Bootstrap tools</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Skills — A Subgraph of Skills, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h6a2 2 0 012 2v12a2 2 0 00-2-2H4zm16 0h-6a2 2 0 00-2 2v12a2 2 0 012-2h6z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Skills<span class="fa-nav-sr"> — A Subgraph of Skills, Bootstrap tools</span></span><span class="fa-nav-note">no viewer yet</span></span></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-bootstrap"><span class="fa-nav-glyph fa-nav-tone fa-nav-crop" style="background:hsl(96 45% 28%)"><img src="/aai-programme/assets/img/harness/landing-bootstrap-card.webp" alt="" title="CatBootstrap" loading="lazy" decoding="async" style="width:416.6667%;height:416.6667%;left:-112.5%;top:-256.25%"></span><span class="fa-nav-label">Bootstrap</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="bootstrap" aria-label="Configuration of Bootstrap" data-fa-tip="Configuration of Bootstrap">⚙︎</button><div class="fa-nav-kids"><span class="fa-nav-dead fa-nav-kind" title="Models — A Subgraph describing the language models an Actor may be, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 8h8v8H8zM4 10h4M4 14h4M16 10h4M16 14h4M10 4v4M14 4v4M10 16v4M14 16v4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Models<span class="fa-nav-sr"> — A Subgraph describing the language models an Actor may be, Bootstrap</span></span><span class="fa-nav-note">no viewer by design</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, Bootstrap</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/scenarios/bootstrap/" class="fa-nav-kind" title="Scenarios — A Subgraph of Roles, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 11a3 3 0 100-6 3 3 0 000 6zm0 0c-2.5 0-4 1.5-4 4v4h8v-4c0-2.5-1.5-4-4-4zm8-6a2.5 2.5 0 110 5M17 12c2 0 3 1.5 3 3v4h-3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Scenarios<span class="fa-nav-sr"> — A Subgraph of Roles, Bootstrap</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/schemas/bootstrap/" class="fa-nav-kind" title="Schemas — A Subgraph of Node Schemas, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l8 4-8 4-8-4zM4 12l8 4 8-4M4 17l8 4 8-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Schemas<span class="fa-nav-sr"> — A Subgraph of Node Schemas, Bootstrap</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Skills — A Subgraph of Skills, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h6a2 2 0 012 2v12a2 2 0 00-2-2H4zm16 0h-6a2 2 0 00-2 2v12a2 2 0 012-2h6z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Skills<span class="fa-nav-sr"> — A Subgraph of Skills, Bootstrap</span></span><span class="fa-nav-note">no viewer by design</span></span></div></div></div></details><a href="/aai-programme/"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true">⌂</span><span class="fa-nav-label">Assured AI programme</span></a></div></div>

  
  </div>
</header>

  
  <div class="main" id="top">
    <div id="main-header" class="main-header">
  
    

<div class="search" role="search">
  <div class="search-input-wrap">
    <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Assured AI programme" autocomplete="off">
    <label for="search-input" class="search-label">
      <span class="sr-only">Search Assured AI programme</span>
      <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg>
    </label>
  </div>
  <div id="search-results" class="search-results"></div>
</div>

  
  
  
</div>

    <div class="main-content-wrap">
      
      <div id="main-content" class="main-content">
        <main>
          
            <h.site-nav ul li a {
  background-image: linear-gradient(-90deg, rgb(31.6333333333, 30.8222222222, 34.8777777778) 0%, rgba(31.6333333333, 30.8222222222, 34.8777777778, 0.8) 80%, rgba(31.6333333333, 30.8222222222, 34.8777777778, 0) 100%);
}

          

          
            
          
        </main>
        
<hr>
<footer>
  

  <p class="text-small mb-0">Assured AI programme — built with <a href="https://litlfred.github.io/folio-assistant/">folio-assistant</a>.</p><p class="text-small mb-0 fa-build-stamp">
  deployed
  <a href="https://github.com/litlfred/folio-assistant/actions"><code>dev</code></a></p>


  <div class="d-md-none mt-4 fs-2">
    
    
      <!-- GENERATED by cat-harness/scripts/gen-navbar-include.ts. Do not hand-edit: `bun run cat navbar:include` rewrites it, and `--check` fails the build if it is stale. --><div class="fa-nav-in"><div class="fa-nav-top"></div><div class="fa-nav-bottom"><details class="fa-nav-group"><summary><span class="fa-nav-glyph" aria-hidden="true">▦</span><span class="fa-nav-label">Harnesses</span></summary><div class="fa-nav-sub"><div class="fa-nav-row"><a href="/aai-programme/"><span class="fa-nav-glyph fa-nav-tone fa-nav-blank" style="background:hsl(184 45% 28%)" aria-hidden="true"></span><span class="fa-nav-label">Assured AI programme</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="aai-programme" aria-label="Configuration of Assured AI programme" data-fa-tip="Configuration of Assured AI programme">⚙︎</button><div class="fa-nav-kids"><span class="fa-nav-dead fa-nav-kind" title="Bean definitions — Work items, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7zM4 9h2M4 15h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bean definitions<span class="fa-nav-sr"> — Work items, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Beans — The work plan, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Beans<span class="fa-nav-sr"> — The work plan, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Docs — Documentation ABOUT the knowledge graph, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h8l4 4v14H6zM14 3v4h4M9 12h6M9 16h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Docs<span class="fa-nav-sr"> — Documentation ABOUT the knowledge graph, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/library/aai-programme/" class="fa-nav-kind" title="Library — L1 source content, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 4h4v16H5zM11 4h3v16h-3zM16 5l3 15-2 .4L14 5.4z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Library<span class="fa-nav-sr"> — L1 source content, Assured AI programme</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, Assured AI programme</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Requirements — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h12v18H6zM9 8l1.5 1.5L13 7M9 14l1.5 1.5L13 13M15 8h1M15 14h1" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Requirements<span class="fa-nav-sr"> — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, Assured AI programme</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/uploads/aai-programme/" class="fa-nav-kind" title="Uploads — The incoming queue, Assured AI programme"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 17V5m0 0l-4 4m4-4l4 4M5 19h14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Uploads<span class="fa-nav-sr"> — The incoming queue, Assured AI programme</span></span></a></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-cat-harness-tools"><span class="fa-nav-glyph fa-nav-tone" style="background:hsl(268 45% 28%)" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14.5 5.5a4 4 0 005 5L11 19a2.1 2.1 0 01-3-3l8.5-8.5a4 4 0 01-2-2zM8.5 16.5h.01" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">C@T Harness Tools</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="cat-harness-tools" aria-label="Configuration of C@T Harness Tools" data-fa-tip="Configuration of C@T Harness Tools">⚙︎</button><div class="fa-nav-kids"><span class="fa-nav-dead fa-nav-kind" title="Bean definitions — Work items, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7zM4 9h2M4 15h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bean definitions<span class="fa-nav-sr"> — Work items, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Bean notes — Bean notes, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 5c4 0 6 3 6 7s-2 7-6 7c2-3 2-4 2-7s0-4-2-7zM16 8h4v8h-4zM17 11h2M17 13h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bean notes<span class="fa-nav-sr"> — Bean notes, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/beans/cat-harness-tools/" class="fa-nav-kind" title="Beans — The work plan, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Beans<span class="fa-nav-sr"> — The work plan, C@T Harness Tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code/cat-harness-tools/" class="fa-nav-kind" title="Code — Source code, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 7l-5 5 5 5m8-10l5 5-5 5M13 5l-2 14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code<span class="fa-nav-sr"> — Source code, C@T Harness Tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/health/cat-harness-tools/" class="fa-nav-kind" title="Health — Repository health reports, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 13h4l2-5 3 10 2-6 2 3h5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Health<span class="fa-nav-sr"> — Repository health reports, C@T Harness Tools</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Sweep marks — When a sweep step last ran, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 4a8 8 0 1 0 0 16a8 8 0 1 0 0-16M12 8v4l3 2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Sweep marks<span class="fa-nav-sr"> — When a sweep step last ran, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/tools/cat-harness-tools/" class="fa-nav-kind" title="Tools — Tool definitions, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14 4a4 4 0 00-5 5l-5 5 2 2 5-5a4 4 0 005-5l-2 2-2-2 2-2z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Tools<span class="fa-nav-sr"> — Tool definitions, C@T Harness Tools</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Workflow state — Running BPMN instances, C@T Harness Tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 7h5v5H5zM14 12h5v5h-5zM10 9h4v6" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Workflow state<span class="fa-nav-sr"> — Running BPMN instances, C@T Harness Tools</span></span><span class="fa-nav-note">no viewer yet</span></span></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-cat-harness"><span class="fa-nav-glyph fa-nav-tone fa-nav-crop" style="background:hsl(268 45% 28%)"><img src="/aai-programme/assets/img/harness/landing-grumpy-cyborg-agents-card.webp" alt="" title="Grumpy cyborg agents" loading="lazy" decoding="async" style="width:500%;height:500%;left:-30%;top:-170%"></span><span class="fa-nav-label">C@T Harness</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="cat-harness" aria-label="Configuration of C@T Harness" data-fa-tip="Configuration of C@T Harness">⚙︎</button><div class="fa-nav-kids"><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/attestations/cat-harness/" class="fa-nav-kind" title="Attestations — QA attestations, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h12v18H6zM9 8h6M9 12h6M10 17l2 2 3-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Attestations<span class="fa-nav-sr"> — QA attestations, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Auto docs — Derived indexes over the other graphs, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h8l4 4v14H6zM14 3v4h4M9 12h.01M11.5 12h5M9 15h.01M11.5 15h5M9 18h.01M11.5 18h3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Auto docs<span class="fa-nav-sr"> — Derived indexes over the other graphs, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><span class="fa-nav-dead fa-nav-kind" title="Basic CDN site — A published static site on a CDN that serves files by path only (GitHub Pages), C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18M3 12h18M12 3q-4 9 0 18M12 3q4 9 0 18" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Basic CDN site<span class="fa-nav-sr"> — A published static site on a CDN that serves files by path only (GitHub Pages), C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/beans/" class="fa-nav-kind" title="Beans — The work plan, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 5c4 0 7 3 7 7s-3 7-7 7c2-3 3-4 3-7s-1-4-3-7z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Beans<span class="fa-nav-sr"> — The work plan, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code/cat-harness/" class="fa-nav-kind" title="Code — Source code, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 7l-5 5 5 5m8-10l5 5-5 5M13 5l-2 14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code<span class="fa-nav-sr"> — Source code, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code-lists/cat-harness/" class="fa-nav-kind" title="Code lists — Closed sets of codes, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 6h3v2H4zM9 7h11M4 11h3v2H4zM9 12h11M4 16h3v2H4zM9 17h11" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code lists<span class="fa-nav-sr"> — Closed sets of codes, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/start/" class="fa-nav-kind" title="Doc group — A named group of the documentation's own pages, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 6h6l2 2h10v11H3zM7 12h10M7 15h7" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Doc group<span class="fa-nav-sr"> — A named group of the documentation's own pages, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Docs — Documentation ABOUT the knowledge graph, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h8l4 4v14H6zM14 3v4h4M9 12h6M9 16h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Docs<span class="fa-nav-sr"> — Documentation ABOUT the knowledge graph, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/external-schemas/" class="fa-nav-kind" title="External schemas — The specifications this instance depends on, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 6h7v12H4zM13 6h7v12h-7zM11 9h2M11 12h2M11 15h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">External schemas<span class="fa-nav-sr"> — The specifications this instance depends on, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/folio/" class="fa-nav-kind" title="Folio — Authored content, rendered to a website by the just-the-docs pipeline, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h7v14H4zM13 5h7v14h-7zM11 5v14M7 9h1M16 9h1" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Folio<span class="fa-nav-sr"> — Authored content, rendered to a website by the just-the-docs pipeline, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="FSH guts — Deprecated and throwaway structured content, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 7h14M9 7V5h6v2M7 7l1 13h8l1-13M11 11v6M14 11v6" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">FSH guts<span class="fa-nav-sr"> — Deprecated and throwaway structured content, C@T Harness</span></span><span class="fa-nav-note">staging only</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/health/cat-harness/" class="fa-nav-kind" title="Health — Repository health reports, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 13h4l2-5 3 10 2-6 2 3h5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Health<span class="fa-nav-sr"> — Repository health reports, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/issue-marks/" class="fa-nav-kind" title="Issue marks — How far an agent has read an issue, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M7 4h10v16l-5-4-5 4zM4 8h2M4 12h2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Issue marks<span class="fa-nav-sr"> — How far an agent has read an issue, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/library/cat-harness/" class="fa-nav-kind" title="Library — L1 source content, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 4h4v16H5zM11 4h3v16h-3zM16 5l3 15-2 .4L14 5.4z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Library<span class="fa-nav-sr"> — L1 source content, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/memory/cat-harness/" class="fa-nav-kind" title="Memory — Durable facts an agent carries between sessions, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m8 0h4M9.5 9.5a3 3 0 000 5M14.5 9.5a3 3 0 010 5M9.5 9.5c2 1 3 1 5 0M9.5 14.5c2-1 3-1 5 0" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Memory<span class="fa-nav-sr"> — Durable facts an agent carries between sessions, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/methodologies/" class="fa-nav-kind" title="Methodologies — Judgement methodologies, adopted whole and kept independent, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 20V12m0 0L6 6m6 6l6-6M4 4h4m8 0h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Methodologies<span class="fa-nav-sr"> — Judgement methodologies, adopted whole and kept independent, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/policies/cat-harness/" class="fa-nav-kind" title="Policies — W3C ODRL 2.2 policies, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6l7-3zm-3.5 9l2.5 2.5 4.5-4.5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Policies<span class="fa-nav-sr"> — W3C ODRL 2.2 policies, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/proposals/" class="fa-nav-kind" title="Proposals — Proposals for the harness's own features, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3a5 5 0 00-3 9v2h6v-2a5 5 0 00-3-9zM10 17h4M10.5 20h3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Proposals<span class="fa-nav-sr"> — Proposals for the harness's own features, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/lsi/" class="fa-nav-kind" title="QA — QA verdicts and their projections, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l7 3v6c0 4-3 7-7 9-4-2-7-5-7-9V6zM9 12l2 2 4-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">QA<span class="fa-nav-sr"> — QA verdicts and their projections, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/requirements/" class="fa-nav-kind" title="Requirements — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 3h12v18H6zM9 8l1.5 1.5L13 7M9 14l1.5 1.5L13 13M15 8h1M15 14h1" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Requirements<span class="fa-nav-sr"> — What the harness promises, one document per shipped feature, each carrying a Requirement in its front matter, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/scenarios/cat-harness/" class="fa-nav-kind" title="Scenarios — A Subgraph of Roles, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 11a3 3 0 100-6 3 3 0 000 6zm0 0c-2.5 0-4 1.5-4 4v4h8v-4c0-2.5-1.5-4-4-4zm8-6a2.5 2.5 0 110 5M17 12c2 0 3 1.5 3 3v4h-3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Scenarios<span class="fa-nav-sr"> — A Subgraph of Roles, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/schemas/cat-harness/" class="fa-nav-kind" title="Schemas — A Subgraph of Node Schemas, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l8 4-8 4-8-4zM4 12l8 4 8-4M4 17l8 4 8-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Schemas<span class="fa-nav-sr"> — A Subgraph of Node Schemas, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Skills — A Subgraph of Skills, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h6a2 2 0 012 2v12a2 2 0 00-2-2H4zm16 0h-6a2 2 0 00-2 2v12a2 2 0 012-2h6z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Skills<span class="fa-nav-sr"> — A Subgraph of Skills, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/substrate-snapshots/cat-harness/" class="fa-nav-kind" title="Substrate snapshots — The root declaration of each Knowledge Graph this instance subscribes to, cached byte for byte at the pinned commit with its fixity, and what the substrate judgement found in it, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 7h14v11H3zM3 7l7 6 7-6M17 4l4 4M19 6l-3 3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Substrate snapshots<span class="fa-nav-sr"> — The root declaration of each Knowledge Graph this instance subscribes to, cached byte for byte at the pinned commit with its fixity, and what the substrate judgement found in it, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/swimlane-glossary/" class="fa-nav-kind" title="Swimlane glossary — A Subgraph recording every term a Knowledge Graph's Processes have ever named, and when each stopped being used, so a retired term is never silently reused, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 6h18M3 12h18M3 18h18M15 9h5v6h-5z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Swimlane glossary<span class="fa-nav-sr"> — A Subgraph recording every term a Knowledge Graph's Processes have ever named, and when each stopped being used, so a retired term is never silently reused, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/test-plans/cat-harness/" class="fa-nav-kind" title="Test plan — Test plans, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M6 4h12v16H6zM8 8h2v2H8zM12 9h4M8 12h2v2H8zM12 13h4M8 16h2v2H8zM12 17h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Test plan<span class="fa-nav-sr"> — Test plans, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/todos/" class="fa-nav-kind" title="Todos — Human actors' outstanding work, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 4h11l3 3v13H5zM16 4v3h3M8 12l2 2 4-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Todos<span class="fa-nav-sr"> — Human actors' outstanding work, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/tool-releases/cat-harness/" class="fa-nav-kind" title="Tool releases — External tool releases, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14.5 4a4.5 4.5 0 0 0-4.2 6.1L4 16.4 7.6 20l6.3-6.3A4.5 4.5 0 0 0 20 9.5l-2.7 2.7-2.8-.7-.7-2.8L16.5 6A4.5 4.5 0 0 0 14.5 4zM4 4h4v4H4zM6 8v3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Tool releases<span class="fa-nav-sr"> — External tool releases, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/tools/cat-harness/" class="fa-nav-kind" title="Tools — Tool definitions, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M14 4a4 4 0 00-5 5l-5 5 2 2 5-5a4 4 0 005-5l-2 2-2-2 2-2z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Tools<span class="fa-nav-sr"> — Tool definitions, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/translation-status/" class="fa-nav-kind" title="Translation sources — POT templates, PO catalogues and their TranslationNode manifests, one directory per target locale, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 6h7M7 6v2c0 3-1 5-3 6M6 10c1 3 3 4 5 5M13 19l4-10 4 10M15 16h5" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Translation sources<span class="fa-nav-sr"> — POT templates, PO catalogues and their TranslationNode manifests, one directory per target locale, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/graph-typologies/aai-programme/" class="fa-nav-kind" title="Graph typologies — The graph typologies a harness declares it owns, one node per kind, so no central registry names another harness's subgraph types, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M5 8h12v11H5zM7 5h12v11M9 2h12v11M8 12h6M8 15h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Graph typologies<span class="fa-nav-sr"> — The graph typologies a harness declares it owns, one node per kind, so no central registry names another harness's subgraph types, C@T Harness</span></span></a><span class="fa-nav-dead fa-nav-kind" title="UML — UML class diagrams of each named sub-graph a harness declares, derived from the node schemas its graph typologies register, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 4h9v12H3zM3 8h9M12 10h4M16 7h5v6h-5z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">UML<span class="fa-nav-sr"> — UML class diagrams of each named sub-graph a harness declares, derived from the node schemas its graph typologies register, C@T Harness</span></span><span class="fa-nav-note">no viewer yet</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/uploads/cat-harness/" class="fa-nav-kind" title="Uploads — The incoming queue, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 17V5m0 0l-4 4m4-4l4 4M5 19h14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Uploads<span class="fa-nav-sr"> — The incoming queue, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/validators/cat-harness/" class="fa-nav-kind" title="Validators — The validators a harness's code provides, one node each naming the graph typology and $schema family it checks and the Zod export that checks it, joined onto the kinds on first use, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l7 3v6c0 4-3 7-7 9-4-2-7-5-7-9V6zM8.5 12.5l2.5 2.5 4.5-5M12 3v2" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Validators<span class="fa-nav-sr"> — The validators a harness's code provides, one node each naming the graph typology and $schema family it checks and the Zod export that checks it, joined onto the kinds on first use, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/vocab-mappings/cat-harness/" class="fa-nav-kind" title="Vocab mapping — Vocabulary mappings, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M3 6h4M3 12h4M3 18h4M8 6l8 6M8 12l8-6M8 18h8M17 6h4M17 12h4M17 18h4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Vocab mapping<span class="fa-nav-sr"> — Vocabulary mappings, C@T Harness</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/voices/aai-programme/" class="fa-nav-kind" title="Voices — Editorial voice profiles, C@T Harness"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 4a3 3 0 013 3v4a3 3 0 01-6 0V7a3 3 0 013-3zM7 11a5 5 0 0010 0M12 16v4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Voices<span class="fa-nav-sr"> — Editorial voice profiles, C@T Harness</span></span></a></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-bootstrap-tools"><span class="fa-nav-glyph fa-nav-tone" style="background:hsl(96 45% 28%)" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3v9M8 12h8l-1 5a3 3 0 01-6 0z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Bootstrap tools</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="bootstrap-tools" aria-label="Configuration of Bootstrap tools" data-fa-tip="Configuration of Bootstrap tools">⚙︎</button><div class="fa-nav-kids"><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/code/bootstrap-tools/" class="fa-nav-kind" title="Code — Source code, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 7l-5 5 5 5m8-10l5 5-5 5M13 5l-2 14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Code<span class="fa-nav-sr"> — Source code, Bootstrap tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, Bootstrap tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/scenarios/bootstrap-tools/" class="fa-nav-kind" title="Scenarios — A Subgraph of Roles, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 11a3 3 0 100-6 3 3 0 000 6zm0 0c-2.5 0-4 1.5-4 4v4h8v-4c0-2.5-1.5-4-4-4zm8-6a2.5 2.5 0 110 5M17 12c2 0 3 1.5 3 3v4h-3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Scenarios<span class="fa-nav-sr"> — A Subgraph of Roles, Bootstrap tools</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/schemas/bootstrap-tools/" class="fa-nav-kind" title="Schemas — A Subgraph of Node Schemas, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l8 4-8 4-8-4zM4 12l8 4 8-4M4 17l8 4 8-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Schemas<span class="fa-nav-sr"> — A Subgraph of Node Schemas, Bootstrap tools</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Skills — A Subgraph of Skills, Bootstrap tools"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h6a2 2 0 012 2v12a2 2 0 00-2-2H4zm16 0h-6a2 2 0 00-2 2v12a2 2 0 012-2h6z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Skills<span class="fa-nav-sr"> — A Subgraph of Skills, Bootstrap tools</span></span><span class="fa-nav-note">no viewer yet</span></span></div></div><div class="fa-nav-row"><a href="https://litlfred.github.io/folio-assistant/#harness-bootstrap"><span class="fa-nav-glyph fa-nav-tone fa-nav-crop" style="background:hsl(96 45% 28%)"><img src="/aai-programme/assets/img/harness/landing-bootstrap-card.webp" alt="" title="CatBootstrap" loading="lazy" decoding="async" style="width:416.6667%;height:416.6667%;left:-112.5%;top:-256.25%"></span><span class="fa-nav-label">Bootstrap</span></a><button type="button" class="fa-nav-action" data-fa-harness-config="bootstrap" aria-label="Configuration of Bootstrap" data-fa-tip="Configuration of Bootstrap">⚙︎</button><div class="fa-nav-kids"><span class="fa-nav-dead fa-nav-kind" title="Models — A Subgraph describing the language models an Actor may be, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M8 8h8v8H8zM4 10h4M4 14h4M16 10h4M16 14h4M10 4v4M14 4v4M10 16v4M14 16v4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Models<span class="fa-nav-sr"> — A Subgraph describing the language models an Actor may be, Bootstrap</span></span><span class="fa-nav-note">no viewer by design</span></span><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/processes/" class="fa-nav-kind" title="Processes — A Subgraph of Processes, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 12h4m4 0h4m4 0h.01M6 12a2 2 0 11-4 0 2 2 0 014 0zm14 0a2 2 0 11-4 0 2 2 0 014 0zM12 9l3 3-3 3-3-3z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Processes<span class="fa-nav-sr"> — A Subgraph of Processes, Bootstrap</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/scenarios/bootstrap/" class="fa-nav-kind" title="Scenarios — A Subgraph of Roles, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M9 11a3 3 0 100-6 3 3 0 000 6zm0 0c-2.5 0-4 1.5-4 4v4h8v-4c0-2.5-1.5-4-4-4zm8-6a2.5 2.5 0 110 5M17 12c2 0 3 1.5 3 3v4h-3" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Scenarios<span class="fa-nav-sr"> — A Subgraph of Roles, Bootstrap</span></span></a><a href="https://litlfred.github.io/folio-assistant/en/cat-harness/schemas/bootstrap/" class="fa-nav-kind" title="Schemas — A Subgraph of Node Schemas, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M12 3l8 4-8 4-8-4zM4 12l8 4 8-4M4 17l8 4 8-4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Schemas<span class="fa-nav-sr"> — A Subgraph of Node Schemas, Bootstrap</span></span></a><span class="fa-nav-dead fa-nav-kind" title="Skills — A Subgraph of Skills, Bootstrap"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 5h6a2 2 0 012 2v12a2 2 0 00-2-2H4zm16 0h-6a2 2 0 00-2 2v12a2 2 0 012-2h6z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="fa-nav-label">Skills<span class="fa-nav-sr"> — A Subgraph of Skills, Bootstrap</span></span><span class="fa-nav-note">no viewer by design</span></span></div></div></div></details><a href="/aai-programme/"><span class="fa-nav-glyph fa-nav-tone" aria-hidden="true">⌂</span><span class="fa-nav-label">Assured AI programme</span></a></div></div>

    
  </div>
</footer>

      </div>
    </div>
    
      

<div class="search-overlay"></div>

    
  </div>

  
    





<script type="module">
  
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.9.0/dist/mermaid.esm.min.mjs';
  

  var config = /* Mermaid configuration for this docs site.

   just-the-docs interpolates this file's contents directly into
   `var config = <here>; mermaid.initialize(config);`
   — see that theme's `_includes/components/mermaid.html` — so this must be a
   bare JavaScript object literal. No `export`, no statements, no semicolon.

   DIAGRAMS ARE ALWAYS LIGHT, IN BOTH COLOUR SCHEMES. The site's stylesheet
   follows the reader's choice; the drawings do not. They render in Mermaid's
   light palette on a white card supplied by `.fa-figure-wrap`
   (site-chrome/assets/css/docs-ui.css), exactly like the BPMN exports beside them,
   which carry their own white backdrop and cannot follow a scheme at all.

   This reverses a decision made an hour earlier in this session, and the
   reversal is the whole point of the comment. Setting `theme: "dark"` did fix
   the ORIGINAL complaint — pale nodes glaring on a dark page — and replaced it
   with a worse one: dark-on-dark, the diagram's own near-black background
   dissolving into the page and the text with it. Owner's call, and it is the
   right one: a schematic is a figure, figures are printed on white, and one
   consistent treatment across BPMN and Mermaid beats two that each look
   correct only in one mode.

   Consequence worth knowing: the palette no longer depends on the reader's
   scheme, so the header's light/dark toggle does not need to re-render
   anything and no longer reloads the page on diagram pages.

   The PARENTHESES are load-bearing. A bare `{ "theme": ... }` at the start of
   a statement parses as a BLOCK, not an object, so eslint rejects it with
   "';' expected" — and eslint lints this file, which is free syntax checking
   worth keeping. `var config = ({ ... });` is exactly as valid as without
   them, so the wrapper costs nothing and buys the linter. */
(({
  "theme": "default",
  "themeVariables": {
    /* Match the card the diagram sits on, so its own backdrop and the
       wrapper's are the same white rather than two near-whites with a seam. */
    "background": "#ffffff"
  },
  /* Long swimlane labels wrap rather than forcing the diagram wider than the
     zoom controls can usefully bring back. */
  "flowchart": { "useMaxWidth": true }
}))
;
  mermaid.initialize(config);
  mermaid.run({
    querySelector: '.language-mermaid',
  });
</script>



  
</body>
</html>
