<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>AI-LinkMO: bundle log</title>
  <subtitle>What changed in the knowledge bundle, a day to an entry, newest first.</subtitle>
  <link rel="self" type="application/atom+xml" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log.xml"/>
  <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/"/>
  <link rel="alternate" type="text/markdown" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log.md"/>
  <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log</id>
  <updated>2026-10-27T18:46:21Z</updated>
  <author><name>Noel McLoughlin</name></author>
  <rights>CC BY 4.0</rights>
  <link rel="license" href="https://creativecommons.org/licenses/by/4.0/"/>
  <entry>
    <title>2026-10-27 · Changed: 12 · Prose: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-10-27"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-10-27</id>
    <published>2026-10-27T01:16:59Z</published>
    <updated>2026-10-27T18:46:21Z</updated>
    <category term="Changed"/>
    <category term="Prose"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map's exclusions name &lt;code&gt;ai-risk-ontology-linkmo/docs/elements&lt;/code&gt; and the project's &lt;code&gt;scripts/gen_examples.py&lt;/code&gt;, where 0.5.0 moved them, and are split into shorter sentences and a list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the FastAPI backend names the file of count cases, &lt;code&gt;expected_counts.yaml&lt;/code&gt;, as &lt;code&gt;lib/api/README.md&lt;/code&gt; now does, in place of the README.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prose&lt;/strong&gt;: reworded 3 concept bodies in plain English: &lt;code&gt;services/cli&lt;/code&gt;, &lt;code&gt;services/fastapi-backend&lt;/code&gt; and &lt;code&gt;services/datasette-browse&lt;/code&gt;. No fact, link, number or frontmatter changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the FastAPI backend names the linkmo project's folder and its answers file as sources, so the coverage sweep counts them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: &lt;code&gt;./ai&lt;/code&gt; now runs the linkmo project's generated command line, so the CLI concept cites &lt;code&gt;ai-risk-ontology-linkmo/src/ai_linkmo/cli.py&lt;/code&gt; and &lt;code&gt;AI_LINKMO_MODE&lt;/code&gt;; &lt;code&gt;lib/cli/&lt;/code&gt; and &lt;code&gt;lib/api/api.yaml&lt;/code&gt; are gone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the FastAPI backend is the linkmo project's app over ai-linkmo's handlers since 0.5.0; &lt;code&gt;api.yaml&lt;/code&gt;, &lt;code&gt;exposure.py&lt;/code&gt; and &lt;code&gt;server_kernel.py&lt;/code&gt; are gone, and the store switch is &lt;code&gt;AI_LINKMO_BACKEND&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the linkmo project builds the browse databases, under &lt;code&gt;ai-risk-ontology-linkmo/browse&lt;/code&gt; and &lt;code&gt;browse-byod&lt;/code&gt;, since &lt;code&gt;lib/browse/&lt;/code&gt; was removed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the web UI's entity list is written from the linkmo project's exposure file, which replaced &lt;code&gt;lib/api/api.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: BYOD names the exposure file, which now declares the &lt;code&gt;byod&lt;/code&gt; parameter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the store switch is &lt;code&gt;AI_LINKMO_BACKEND&lt;/code&gt; since 0.5.0, as &lt;code&gt;lib/store/source.py&lt;/code&gt; says.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map names the linkmo project's files in place of &lt;code&gt;lib/cli/&lt;/code&gt;, &lt;code&gt;lib/api/api.yaml&lt;/code&gt;, &lt;code&gt;exposure.py&lt;/code&gt;, &lt;code&gt;server_kernel.py&lt;/code&gt; and &lt;code&gt;lib/browse/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the browse database with your files is built by &lt;code&gt;just build-browse-byod&lt;/code&gt;, since &lt;code&gt;just build-browse&lt;/code&gt; builds the packaged data alone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map's exclusions name &lt;code&gt;docs/threat-model.md&lt;/code&gt; and &lt;code&gt;.github/workflows/lint-and-docs.yaml&lt;/code&gt;, both added in #123, so every tracked file keeps a place in the map.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-18 · Changed: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-10-18"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-10-18</id>
    <published>2026-10-18T00:31:39Z</published>
    <updated>2026-10-18T00:31:39Z</updated>
    <category term="Changed"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map names the three generator scripts beside the rows they serve, the sync's pull request template beside the sidecar, and the repository plumbing and &lt;code&gt;llms.txt&lt;/code&gt; it leaves out, so every tracked file has a place in it.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-17 · Changed: 32 · Provenance: 18 · Open question: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-10-17"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-10-17</id>
    <published>2026-10-17T00:53:26Z</published>
    <updated>2026-10-17T00:53:26Z</updated>
    <category term="Changed"/>
    <category term="Provenance"/>
    <category term="Open question"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: EU AI Act requirements dataset lists &lt;code&gt;byo/data/eu_ai_act.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: FFIEC IT Handbook dataset lists &lt;code&gt;byo/data/ffiec_it_handbook.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: FINOS AI Governance Framework dataset lists &lt;code&gt;byo/data/finos-aigf.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: ISO/IEC 42001 controls dataset lists &lt;code&gt;byo/data/iso_42001.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Knowledge-graph export (YAML + Cypher) lists &lt;code&gt;graph&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: NIST AI 600-1 GenAI profile dataset lists &lt;code&gt;byo/data/nist_ai_600_1.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: NIST AI RMF crosswalks lists &lt;code&gt;graph&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: NIST SP 800-53 r5 controls dataset lists &lt;code&gt;byo/data/nist_sp_800_53_r5.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: OWASP Top 10 for LLM Applications dataset lists &lt;code&gt;byo/data/owasp_llm_top_10.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: OWASP ML Security Top 10 dataset lists &lt;code&gt;byo/data/owasp_ml_top_10.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: DuckDB record store lists &lt;code&gt;lib/store&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: SR 11-7 model risk management dataset lists &lt;code&gt;byo/data/sr_11_7.yaml&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, so the work list compares it; &lt;code&gt;resource&lt;/code&gt; keeps its URL, because &lt;code&gt;lokf export&lt;/code&gt; reads a relative &lt;code&gt;resource&lt;/code&gt; as a concept id.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Risk is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Obligation is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Taxonomy is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Evaluation is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Control / Action is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Incident is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Bring Your Own Data is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Crosswalk is now the repository path &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Neo4j Graph Database is now the repository path &lt;code&gt;graph&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of AI-LinkMO CLI is now the repository path &lt;code&gt;lib/cli&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of FastAPI Backend is now the repository path &lt;code&gt;lib/api&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Datasette browse UI is now the repository path &lt;code&gt;lib/browse&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Svelte Web UI is now the repository path &lt;code&gt;lib/frontend&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; and the 2 &lt;code&gt;sources&lt;/code&gt; entries of Why linked AI governance are now repository paths, &lt;code&gt;docs/architecture.md&lt;/code&gt; first, in place of GitHub addresses, so the work list sees when they move.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; and the 3 &lt;code&gt;sources&lt;/code&gt; entries of What AI-LinkMO adds to AI Atlas Nexus are now repository paths, &lt;code&gt;docs/for-the-curious.md&lt;/code&gt; first, in place of GitHub addresses, so the work list sees when they move.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; of Bring your own data (BYOD) is now the repository path &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;resource&lt;/code&gt; and the 7 &lt;code&gt;sources&lt;/code&gt; entries of Install and run AI-LinkMO are now repository paths, &lt;code&gt;docs/install.md&lt;/code&gt; first, in place of GitHub addresses, so the work list sees when they move.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the &lt;code&gt;sources&lt;/code&gt; entry of DuckDB record store is now the repository path &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt;, in place of its GitHub address, so the work list sees when it moves. Its &lt;code&gt;resource&lt;/code&gt; keeps the GitHub address, since &lt;code&gt;lokf export&lt;/code&gt; reads a path there as a concept id when it writes &lt;code&gt;datasets.jsonld&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: FINOS AI Governance Framework dataset, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;byo/data/finos-aigf.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: ISO/IEC 42001 controls dataset, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;byo/data/iso_42001.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: NIST AI 600-1 GenAI profile dataset, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;byo/data/nist_ai_600_1.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: NIST SP 800-53 r5 controls dataset, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;byo/data/nist_sp_800_53_r5.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: OWASP Top 10 for LLM Applications dataset, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;byo/data/owasp_llm_top_10.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: OWASP ML Security Top 10 dataset, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;byo/data/owasp_ml_top_10.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: SR 11-7 model risk management dataset, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;byo/data/sr_11_7.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: NIST AI Risk Management Framework, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against its NIST page and the crosswalk files and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: NIST AI 600-1 (Generative AI Profile), which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against the publication its DOI resolves to and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: NIST SP 800-53 Revision 5, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against the publication its DOI resolves to and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: OWASP Top 10 for LLM Applications, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against genai.owasp.org and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: FINOS AI Governance Framework, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against the framework's site and &lt;code&gt;byo/data/finos-aigf.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: EU Artificial Intelligence Act, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against the AI Act Explorer and &lt;code&gt;byo/data/eu_ai_act.yaml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: ISO/IEC 42001, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against the Internet Archive's copy of its ISO page from 2026-10-06, since iso.org refuses automated reads, and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: FFIEC IT Examination Handbook, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against the Internet Archive's copy of the handbook's home page from 2026-05-12, since the site refuses automated reads, and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: The FINOS concept, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against finos.org and the &lt;code&gt;byo/data/&lt;/code&gt; file headers and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: The IBM concept, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against the ai-atlas-nexus site and &lt;code&gt;pyproject.toml&lt;/code&gt; and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance&lt;/strong&gt;: The Noel McLoughlin concept, which a librarian run created on 2026-08-05, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;. It was re-read today against &lt;code&gt;pyproject.toml&lt;/code&gt;, &lt;code&gt;LICENSE&lt;/code&gt; and the GitHub profile and needed no change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: NIST AI RMF crosswalks says the IBM Risk Atlas file names its mapping columns &lt;code&gt;closeMatch&lt;/code&gt; and the like, as its header row does. The &lt;code&gt;fields&lt;/code&gt; list matches the other two files only. The concept, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: AI Risk Ontology names the two views its source names, an AI risk view and an AI model view, where it said a System view and a Risk view. The concept, which the librarian wrote at the bootstrap on 2026-07-13, now has a &lt;code&gt;generated&lt;/code&gt; record in place of the OKF v0.1 &lt;code&gt;timestamp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open question&lt;/strong&gt;: OWASP ML Security Top 10: &lt;a href=&quot;https://owasp.org/www-project-machine-learning-security-top-10/&quot;&gt;https://owasp.org/www-project-machine-learning-security-top-10/&lt;/a&gt; now redirects to &lt;a href=&quot;https://owasp.org/projects/machine-learning-security-top-10&quot;&gt;https://owasp.org/projects/machine-learning-security-top-10&lt;/a&gt;, which answers 404 (checked 2026-10-17). The project page is at &lt;a href=&quot;https://owasp.org/projects/machine-learning-security-top-ten&quot;&gt;https://owasp.org/projects/machine-learning-security-top-ten&lt;/a&gt;. &lt;code&gt;byo/data/owasp_ml_top_10.yaml&lt;/code&gt; still cites the first address, and the source map asks that the two match. Which address should this reference cite?&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-16 · Changed: 10 · Prose: 1 · Rewrite: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-10-16"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-10-16</id>
    <published>2026-10-17T00:53:26Z</published>
    <updated>2026-10-17T00:53:26Z</updated>
    <category term="Prose"/>
    <category term="Changed"/>
    <category term="Rewrite"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prose&lt;/strong&gt;: reworded 17 concept bodies in plain English. No fact, link, number or frontmatter changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: What AI-LinkMO adds names what the library loads, which the earlier change today had left two sentences away.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: BYOD no longer says every access pattern picks up your files. The Cypher export refuses &lt;code&gt;--byod&lt;/code&gt;, as &lt;code&gt;docs/neo4j.md&lt;/code&gt; and &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt; say.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Why linked AI governance gets a description that names the four doors, as the README and the architecture page now do, and cites both pages it draws on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Taxonomy says a catalogue of risks and controls, as the table in &lt;code&gt;docs/key-concepts.md&lt;/code&gt; says, where it said risks or controls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: Why linked AI governance follows &lt;code&gt;docs/architecture.md&lt;/code&gt; as it now reads: the missing catalogue, the four doors with the stakeholders the page names, and the couplet. Claims the page does not make were dropped, and &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt; is cited for the BYOD paragraph.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: What AI-LinkMO adds says curate mode adds, edits and deletes records and that the lookups follow the packaged relationships through the library, as &lt;code&gt;docs/for-the-curious.md&lt;/code&gt; says. It now cites its sources, among them &lt;code&gt;docs/cli-examples.md&lt;/code&gt; for the CLI examples run as tests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Install and run cites &lt;code&gt;docs/install.md&lt;/code&gt; as its resource, where the README's install steps moved in #62, and lists every page its steps come from. The steps still match those pages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Bring your own data says curate mode adds, edits and deletes records, as &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt; says.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: AI-LinkMO CLI no longer says it is built from the OpenAPI specification, which #57 replaced with &lt;code&gt;lib/api/api.yaml&lt;/code&gt; and the schema, and says the tests run most of the listed commands, as &lt;code&gt;docs/cli-examples.md&lt;/code&gt; says.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: FastAPI Backend's documentation link names &lt;code&gt;lib/api/README.md&lt;/code&gt;, since &lt;code&gt;lib/api/openapi.yaml&lt;/code&gt; was deleted in #57, and its description no longer says the endpoints come from an OpenAPI specification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map places the §What it looks like examples on the architecture page, where #62 moved them from the README.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-14 · Changed: 12 · Added: 3 · Migration: 1 · Prose: 1 · Removal: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-10-14"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-10-14</id>
    <published>2026-10-14T02:18:30Z</published>
    <updated>2026-10-14T16:49:18Z</updated>
    <category term="Changed"/>
    <category term="Migration"/>
    <category term="Prose"/>
    <category term="Removal"/>
    <category term="Added"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map's exclusions name &lt;code&gt;.assets/&lt;/code&gt;, where the screenshots and logos moved from &lt;code&gt;byo/images/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migration&lt;/strong&gt;: &lt;code&gt;base_iri&lt;/code&gt; moved from &lt;code&gt;https://github.com/noelmcloughlin/ai-linkmo/knowledge/&lt;/code&gt;, a path space GitHub owns, to &lt;code&gt;https://noelmcloughlin.github.io/ai-linkmo/knowledge/&lt;/code&gt;, where the knowledge-website workflow now publishes each concept, so every concept &lt;code&gt;id&lt;/code&gt; resolves to its page. The publisher &lt;code&gt;id&lt;/code&gt;, every concept &lt;code&gt;id&lt;/code&gt; and every typed-relation target moved with it; &lt;code&gt;resource&lt;/code&gt; and &lt;code&gt;distribution&lt;/code&gt; links are unchanged.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prose&lt;/strong&gt;: reworded 10 concept bodies in plain English. No fact, link, number or frontmatter changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Removal&lt;/strong&gt;: DuckDB record store, recreated in the same run without a key a Dataset does not take.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt;: DuckDB record store, from &lt;code&gt;https://github.com/noelmcloughlin/ai-linkmo/tree/main/lib/store&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: DuckDB record store cites &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt; under &lt;code&gt;sources&lt;/code&gt;, since a Dataset takes no &lt;code&gt;documentation&lt;/code&gt; key.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: AI-LinkMO CLI rewritten for the CLI generated from &lt;code&gt;lib/api/api.yaml&lt;/code&gt; and the schema since #57; it said the CLI read &lt;code&gt;lib/api/openapi.yaml&lt;/code&gt;, which is gone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: FastAPI Backend rewritten for the kernel that registers endpoints from &lt;code&gt;lib/api/api.yaml&lt;/code&gt; and the schema since #57; &lt;code&gt;server_dynamic.py&lt;/code&gt; and &lt;code&gt;openapi.yaml&lt;/code&gt; are gone, and the listings can read the DuckDB store.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Svelte Web UI says the entity list and the record form are generated, from &lt;code&gt;lib/api/api.yaml&lt;/code&gt; and the JSON Schema, as &lt;code&gt;lib/frontend/README.md&lt;/code&gt; says since #57.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Neo4j Graph Database says the Cypher is fetched from ai-atlas-nexus with &lt;code&gt;just fetch-cypher&lt;/code&gt;, not generated here, and that &lt;code&gt;--byod&lt;/code&gt; is refused, as &lt;code&gt;docs/neo4j.md&lt;/code&gt; says since #57.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Knowledge-graph export says the Cypher distribution is ai-atlas-nexus's own, fetched at the installed version's tag, since #57 removed &lt;code&gt;graph/cypher/export.py&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Install and run now derives from &lt;code&gt;docs/install.md&lt;/code&gt;, where #62 moved the README's install steps; the graph step fetches the Cypher, and a step for the store, search and Datasette is added.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Bring your own data says the Cypher export refuses &lt;code&gt;--byod&lt;/code&gt; and that the store and browse UI load your files, as &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt; says since #57.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Why linked AI governance now cites &lt;code&gt;docs/architecture.md&lt;/code&gt;, where #62 moved the README's two sections; the argument is unchanged.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: BYOD names &lt;code&gt;lib/api/api.yaml&lt;/code&gt; for the &lt;code&gt;byod&lt;/code&gt; parameter, since &lt;code&gt;openapi.yaml&lt;/code&gt; was removed in #57.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt;: DuckDB record store, from &lt;code&gt;lib/store/&lt;/code&gt;, the justfile and &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt;; #57 added it and no concept covered it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt;: Datasette browse UI, from &lt;code&gt;lib/browse/&lt;/code&gt;, the justfile and &lt;code&gt;docs/working-with-the-data.md&lt;/code&gt;; #57 added it and no concept covered it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map follows #57 and #62: the API and CLI rows name &lt;code&gt;lib/api/api.yaml&lt;/code&gt; and &lt;code&gt;exposure.py&lt;/code&gt;, the graph row the fetched Cypher, the install and rationale rows &lt;code&gt;docs/install.md&lt;/code&gt; and &lt;code&gt;docs/architecture.md&lt;/code&gt;; rows added for the store and the browse UI, and &lt;code&gt;website/&lt;/code&gt; and &lt;code&gt;docs/elements&lt;/code&gt; left out on purpose.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-25 · Glossary follows the README split: 1 · Cypher export scope corrected: 1 · Install and BYOD playbooks re-walked: 1 · SR 11-7 superseded: 1 · New explanation: 1 · Source map updated: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-09-25"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-09-25</id>
    <published>2026-09-25T20:35:35Z</published>
    <updated>2026-09-25T20:35:35Z</updated>
    <category term="Glossary follows the README split"/>
    <category term="Cypher export scope corrected"/>
    <category term="Install and BYOD playbooks re-walked"/>
    <category term="SR 11-7 superseded"/>
    <category term="New explanation"/>
    <category term="Source map updated"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Glossary follows the README split&lt;/strong&gt;: the six terms now cite &lt;code&gt;docs/key-concepts.md&lt;/code&gt;, where the table moved, and &lt;code&gt;glossary/incident&lt;/code&gt; and &lt;code&gt;glossary/evaluation&lt;/code&gt; are new drafts for the two rows the table gained, each checked against its endpoint and an example id in the packaged data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cypher export scope corrected&lt;/strong&gt;: &lt;code&gt;datasets/knowledge-graph-export&lt;/code&gt;, &lt;code&gt;services/graph-db&lt;/code&gt; and &lt;code&gt;playbooks/bring-your-own-data&lt;/code&gt; said BYOD files reach every door; the Cypher export runs &lt;code&gt;graph/cypher/export.py&lt;/code&gt;, which loads packaged data only, so only the YAML export includes them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install and BYOD playbooks re-walked&lt;/strong&gt;: &lt;code&gt;install-and-run&lt;/code&gt; follows the new README, install notes and Neo4j page (&lt;code&gt;uv sync --extra test&lt;/code&gt;, &lt;code&gt;npm ci&lt;/code&gt;, &lt;code&gt;--isDefinedByTaxonomy&lt;/code&gt; in place of a &lt;code&gt;--taxonomy&lt;/code&gt; flag that does not exist, the CI test command), and the BYOD validation path gains its missing &lt;code&gt;schema/&lt;/code&gt; segment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SR 11-7 superseded&lt;/strong&gt;: SR 26-2 replaced it on 2026-04-17 and its URL now returns 404, so &lt;code&gt;references/sr-11-7&lt;/code&gt; says so, cites SR 26-2, and is a draft with an open question for the curator.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New explanation&lt;/strong&gt;: &lt;code&gt;explanations/what-ai-linkmo-adds&lt;/code&gt; records what the repository adds over AI Atlas Nexus and the provenance its records lack, from the README and &lt;code&gt;docs/for-the-curious.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source map updated&lt;/strong&gt;: &lt;code&gt;playbooks/knowledge-sources&lt;/code&gt; names the &lt;code&gt;docs/&lt;/code&gt; pages the README now delegates to, and re-decides the exclusions; 35 concepts re-confirmed against their sources, while FFIEC, ISO and OWASP ML keep their older check because their sites refused or broke the fetch.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-23</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-09-23"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-09-23</id>
    <published>2026-09-23T22:48:00Z</published>
    <updated>2026-09-23T22:48:00Z</updated>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The docent records a reader's gap without reading the file it goes in.&lt;/strong&gt;
The sidecar now carries &lt;code&gt;knowledge-feedback.sh&lt;/code&gt;, so ktl-docent hands over
its own entry and never opens &lt;code&gt;.lokf/feedback.md&lt;/code&gt;, where other readers' free
text would enter its session (Snyk W011).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The scheduled librarian installs its skill from a tag that has it.&lt;/strong&gt; The
pin read &lt;code&gt;v0.19.7&lt;/code&gt;, where the skills are named &lt;code&gt;lokf-*&lt;/code&gt;, so the install step
(not gated on &lt;code&gt;KNOWLEDGE_LIBRARIAN_ENABLED&lt;/code&gt;) failed on every run. It moves to
&lt;code&gt;v0.23.0&lt;/code&gt;. The scripts under &lt;code&gt;.lokf/scripts/&lt;/code&gt; and &lt;code&gt;knowledge-registrar.yaml&lt;/code&gt;
now match that release's templates: the gate runs &lt;code&gt;lokf validate --check-refs&lt;/code&gt;, and every bundle path is read with &lt;code&gt;core.quotePath&lt;/code&gt; off.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-18 · Sidecar brought up to the skills templates: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-09-18"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-09-18</id>
    <published>2026-09-18T00:26:39Z</published>
    <updated>2026-09-18T00:26:39Z</updated>
    <category term="Sidecar brought up to the skills templates"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sidecar brought up to the skills templates&lt;/strong&gt;: the wrapper here predated
the &lt;code&gt;EXIT&lt;/code&gt;-trap restore and the registrar gate still read confirmations by
their &lt;code&gt;by:&lt;/code&gt; line. Synced all five scripts - the conventions pair is new to
this repository - added &lt;code&gt;.gitattributes&lt;/code&gt;, and bumped &lt;code&gt;LOKF_SKILLS_REF&lt;/code&gt;
from &lt;code&gt;v0.9.0&lt;/code&gt; to &lt;code&gt;v0.19.2&lt;/code&gt;. The release workflow now checks release notes
and the pull request title on a releasing pull request.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-12 · Still pending from 2026-08-05: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-09-12"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-09-12</id>
    <published>2026-09-12T23:34:04Z</published>
    <updated>2026-09-22T23:29:48Z</updated>
    <category term="Still pending from 2026-08-05"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Toolkit upgrade 0.6.0 -&amp;gt; 0.7.0&lt;/strong&gt; (minor - PyPI shows no breaking-change notice; the bundle
validated unchanged both before and after): bumped the &lt;code&gt;lokf&lt;/code&gt; floor in &lt;code&gt;pyproject.toml&lt;/code&gt; to
&lt;code&gt;lokf[build]&amp;gt;=0.7.0&lt;/code&gt; and ran &lt;code&gt;uv sync&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Steady-state refresh - no drift.&lt;/strong&gt; Drift surface since the 2026-08-28 run is empty: &lt;code&gt;git diff&lt;/code&gt;
between that run's commit (&lt;code&gt;36354c4&lt;/code&gt;) and current HEAD (&lt;code&gt;350d533&lt;/code&gt;) touches no file outside
&lt;code&gt;.lokf/&lt;/code&gt;, &lt;code&gt;.claude/skills/&lt;/code&gt;, &lt;code&gt;.agents/&lt;/code&gt;. Spot-verified against the live tree: &lt;code&gt;byo/data/&lt;/code&gt; still 9
files with unchanged AUTOGENERATED headers/bodies (the &lt;code&gt;eu_ai_act.yaml&lt;/code&gt;/&lt;code&gt;ffiec_it_handbook.yaml&lt;/code&gt;
header-vs-body class-name mismatch noted 2026-08-28 is still present, still a repo bug outside
this bundle's write scope); &lt;code&gt;graph/*.csv&lt;/code&gt; still 3 crosswalk files; &lt;code&gt;openapi.yaml&lt;/code&gt; still 28 paths;
&lt;code&gt;lib/cli&lt;/code&gt;, &lt;code&gt;lib/api&lt;/code&gt;, &lt;code&gt;lib/frontend&lt;/code&gt; (Svelte 5.55 + Vite 8, port-5173 proxy) unchanged; README
§Key concepts table still backs all six &lt;code&gt;glossary/&lt;/code&gt; terms; &lt;code&gt;org/finos&lt;/code&gt; and &lt;code&gt;org/ibm&lt;/code&gt; resources
unchanged. All 39 concepts re-confirmed against their &lt;code&gt;resource&lt;/code&gt;/&lt;code&gt;derivedFrom&lt;/code&gt;/&lt;code&gt;source&lt;/code&gt; and given
a fresh &lt;code&gt;verified: [{by: process:ktl-librarian, at: 2026-09-12T00:00:00Z}]&lt;/code&gt; event (none of them
had ever recorded one before this run). No concept content changed, none deleted, no &lt;code&gt;human:&lt;/code&gt;
text touched.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source map updated.&lt;/strong&gt; Two new repo-root artifacts from an unrelated skill-tooling change (the
&lt;code&gt;.claude/skills/*&lt;/code&gt; -&amp;gt; &lt;code&gt;.agents/skills/*&lt;/code&gt; move, still uncommitted) needed a call: &lt;code&gt;.agents/&lt;/code&gt; (skill
definitions - same exclusion as &lt;code&gt;.claude/&lt;/code&gt;) and &lt;code&gt;skills-lock.json&lt;/code&gt; (skill-install lockfile). Both
added to &lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt;'s conscious-exclusion list - they are tooling, not
project knowledge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Still pending from 2026-08-05&lt;/strong&gt;: the &lt;code&gt;base_iri&lt;/code&gt; migration finding (&lt;code&gt;github.com/...&lt;/code&gt; -&amp;gt; a
namespace the project controls, proposed &lt;code&gt;https://w3id.org/ai-linkmo/knowledge/&lt;/code&gt;) remains
unresolved, awaiting human sign-off.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-08-28</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-08-28"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-08-28</id>
    <published>2026-08-28T09:52:57Z</published>
    <updated>2026-09-22T23:29:48Z</updated>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Toolkit upgrade 0.4.0 -&amp;gt; 0.6.0&lt;/strong&gt; (0.6.0 realizes the LOKF v0.2 format; no breaking schema changes
surfaced - the bundle validated unchanged before any edits): bumped the &lt;code&gt;pyproject.toml&lt;/code&gt; dependency
to &lt;code&gt;lokf[build]&amp;gt;=0.6.0&lt;/code&gt; (the &lt;code&gt;[build]&lt;/code&gt; extra now supplies &lt;code&gt;linkml&lt;/code&gt;, so the independent &lt;code&gt;linkml&lt;/code&gt;
pin was dropped per the step-5 rule) and lowered &lt;code&gt;requires-python&lt;/code&gt; to &lt;code&gt;&amp;gt;=3.10&lt;/code&gt; to match the
toolkit's own floor. Declared the bundle's target format accordingly: root &lt;code&gt;index.md&lt;/code&gt;
&lt;code&gt;lokf_version&lt;/code&gt;/&lt;code&gt;okf_version&lt;/code&gt; &lt;code&gt;&quot;0.1&quot;&lt;/code&gt; -&amp;gt; &lt;code&gt;&quot;0.2&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (drift surface since the 2026-08-12 run is exactly commit &lt;code&gt;36354c4&lt;/code&gt;,
&quot;updated files for latest ai-atlas-nexus schema&quot;): two dataset concepts had drifted and were
corrected, both now carrying v0.2 &lt;code&gt;generated&lt;/code&gt; provenance (&lt;code&gt;by: process:ktl-librarian&lt;/code&gt;) in place
of the superseded &lt;code&gt;timestamp&lt;/code&gt;:
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;datasets/eu-ai-act&lt;/code&gt; - the encoding's taxonomy row is now &lt;code&gt;type: RiskTaxonomy&lt;/code&gt; (was
&lt;code&gt;Taxonomy&lt;/code&gt;); Format line updated.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datasets/ffiec-it-handbook&lt;/code&gt; - the taxonomy row is now &lt;code&gt;type: RiskControlGroupTaxonomy&lt;/code&gt;, and
each of the 11 booklet groups is now &lt;code&gt;type: RiskControlGroup&lt;/code&gt; wired to the taxonomy via
&lt;code&gt;isDefinedByTaxonomy&lt;/code&gt;; Format line updated.
&lt;code&gt;datasets/finos-aigf&lt;/code&gt; was re-verified against the same commit (its &lt;code&gt;hasStakeholder&lt;/code&gt; slot went
single- to multivalued) - the concept records the file at knowledge_graph-YAML level, so no
recorded fact drifted and it is untouched. All other sources: unchanged in git since the last
run; &lt;code&gt;byo/data&lt;/code&gt; still 9 files with AUTOGENERATED headers and matching &lt;code&gt;url:&lt;/code&gt; fields,
&lt;code&gt;openapi.yaml&lt;/code&gt; still 28 paths (&lt;code&gt;/taxonomy&lt;/code&gt;, &lt;code&gt;/risk&lt;/code&gt;, &lt;code&gt;/crosswalk&lt;/code&gt; endpoints confirmed). No new
concepts, no orphans, source map unchanged (the knowledge geography is the same).
&lt;strong&gt;Repo bug found, outside the bundle's write scope&lt;/strong&gt;: the AUTOGENERATED 3-line headers of
&lt;code&gt;byo/data/eu_ai_act.yaml&lt;/code&gt; and &lt;code&gt;byo/data/ffiec_it_handbook.yaml&lt;/code&gt; still name the old classes
(&lt;code&gt;Taxonomy&lt;/code&gt;) while their bodies carry the new ones - the concepts record the body truth; the
headers need regeneration upstream.
&lt;strong&gt;Still pending from 2026-08-05&lt;/strong&gt;: the &lt;code&gt;base_iri&lt;/code&gt; migration finding (&lt;code&gt;github.com/...&lt;/code&gt; -&amp;gt; a
namespace the project controls, proposed &lt;code&gt;https://w3id.org/ai-linkmo/knowledge/&lt;/code&gt;) remains
unresolved, awaiting human sign-off.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-08-12 · Validation: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-08-12"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-08-12</id>
    <published>2026-08-12T00:52:22Z</published>
    <updated>2026-08-12T00:52:22Z</updated>
    <category term="Validation"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Toolkit upgrade 0.3.0 -&amp;gt; 0.4.0&lt;/strong&gt; (minor, additive - Diátaxis support, a CLI &lt;code&gt;--version&lt;/code&gt; option,
and an Apache-2.0 licence change; no breaking schema changes, so no human sign-off needed per the
librarian's step-5 rule): bumped the &lt;code&gt;lokf&lt;/code&gt; floor in &lt;code&gt;pyproject.toml&lt;/code&gt; to &lt;code&gt;&amp;gt;=0.4.0&lt;/code&gt; and ran &lt;code&gt;uv sync&lt;/code&gt;.
The bundle validated unchanged against the new schema before any edits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diátaxis facet applied&lt;/strong&gt; to all 32 existing concepts (&lt;code&gt;genre&lt;/code&gt;, new in LOKF 0.4.0): 2 how-to
(&lt;code&gt;playbooks/install-and-run&lt;/code&gt;, &lt;code&gt;playbooks/bring-your-own-data&lt;/code&gt; - both terse numbered recipes that
assume competence, so how-to rather than tutorial), the remaining 30 &lt;code&gt;reference&lt;/code&gt;. Judgement call
worth flagging for review: &lt;code&gt;playbooks/knowledge-sources&lt;/code&gt; is typed &lt;code&gt;Playbook&lt;/code&gt; but tagged
&lt;code&gt;genre: reference&lt;/code&gt;, because its body is a per-source lookup table rather than an ordered procedure -
type and genre are orthogonal by design, so this is legal, but a reviewer may prefer &lt;code&gt;how-to&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two gaps promoted from the conscious-exclusion list&lt;/strong&gt;, both re-opened by 0.4.0 making
understanding-oriented prose a first-class type. The 2026-08-10 run excluded README §The Problem,
§What AI-LinkMO Does and its glossary subsection as &quot;restating facts already captured in
&lt;code&gt;services/*&lt;/code&gt; and &lt;code&gt;references/*&lt;/code&gt;&quot;; that reasoning held for &lt;em&gt;mechanics&lt;/em&gt; but not for &lt;em&gt;rationale&lt;/em&gt; or
&lt;em&gt;vocabulary&lt;/em&gt;:
&lt;ol&gt;
&lt;li&gt;Six &lt;code&gt;glossary/&lt;/code&gt; GlossaryTerms from README §Key concepts, in plain English (Taxonomy, Risk,
Control / Action, Obligation, Crosswalk, BYOD), each &lt;code&gt;definedBy&lt;/code&gt; the AI Risk Ontology and each
verified code-backed (&lt;code&gt;/taxonomy&lt;/code&gt;, &lt;code&gt;/risk&lt;/code&gt;, &lt;code&gt;/control&lt;/code&gt;, &lt;code&gt;/action&lt;/code&gt;, &lt;code&gt;/obligation&lt;/code&gt;, &lt;code&gt;/crosswalk&lt;/code&gt;
endpoints and the &lt;code&gt;byod&lt;/code&gt; parameter in &lt;code&gt;openapi.yaml&lt;/code&gt;). Control and Action are kept as one term
because the README defines them jointly - splitting them would have meant inventing two
definitions the source does not give.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;explanations/why-linked-ai-governance&lt;/code&gt; (&lt;code&gt;type: Explanation&lt;/code&gt;, &lt;code&gt;genre: explanation&lt;/code&gt;) capturing the
README's opening argument - framework fragmentation, manual mapping, the governance/engineering
language gap, and why one shared ontology is what makes the traceability auditable.
Bundle grew 32 -&amp;gt; 39 concepts. Updated &lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt; with two new source rows and
rewrote the exclusion paragraph to record what was promoted and what stays out (§About Trustworthy
AI, &quot;What that looks like in practice&quot;, §Roadmap - all unchanged).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (same run, no drift found): re-verified all 32 pre-existing concepts against
recorded provenance - &lt;code&gt;byo/data/*.yaml&lt;/code&gt; still 9 files with matching AUTOGENERATED headers and &lt;code&gt;url:&lt;/code&gt;
fields, &lt;code&gt;graph/&lt;/code&gt; and &lt;code&gt;graph/cypher/&lt;/code&gt; unchanged, &lt;code&gt;openapi.yaml&lt;/code&gt; still 28 paths, all four services still
match current code, README section structure still matches the source map. No concepts deleted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validation&lt;/strong&gt;: &lt;code&gt;just lokf-validate&lt;/code&gt; -&amp;gt; &lt;code&gt;OK — 39 concepts in knowledge validate against KnowledgeBundle&lt;/code&gt;. &lt;code&gt;lokf convert --format ttl&lt;/code&gt;: 424 triples, 39 subjects, all inside the knowledge
namespace, zero dangling internal relation targets; genre distribution 36 reference / 2 how-to /
1 explanation. All relative markdown links in the bundle resolve.
&lt;strong&gt;Still pending from 2026-08-05&lt;/strong&gt;: the &lt;code&gt;base_iri&lt;/code&gt; migration finding (&lt;code&gt;github.com/...&lt;/code&gt; -&amp;gt; a namespace
the project controls) remains unresolved, awaiting human sign-off. The seven new concepts were minted
under the existing base for consistency and will need rewriting along with the rest when it moves.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-08-10</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-08-10"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-08-10</id>
    <published>2026-08-10T10:34:38Z</published>
    <updated>2026-08-10T10:34:38Z</updated>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (triggered by a README rewrite in the same session): re-verified all 32
concepts against recorded provenance - &lt;code&gt;byo/data/*.yaml&lt;/code&gt; still 9 files, &lt;code&gt;graph/&lt;/code&gt; and &lt;code&gt;graph/cypher/&lt;/code&gt;
contents unchanged, all four service concepts (&lt;code&gt;cli&lt;/code&gt;, &lt;code&gt;fastapi-backend&lt;/code&gt;, &lt;code&gt;web-ui&lt;/code&gt;, &lt;code&gt;graph-db&lt;/code&gt;) still
match current code and commands. The README rewrite added business-framing narrative (§The Problem,
§What AI-LinkMO Does incl. a plain-English glossary, §About Trustworthy AI reframed) and a new
§Roadmap section naming &lt;a href=&quot;https://github.com/asago-ai/asago-policy-mapper&quot;&gt;asago-policy-mapper&lt;/a&gt; as a
possible future upstream integration, and reorganized existing content under new headers (§Quick
Start, §Working With the Data) without changing any facts - also fixed a &lt;code&gt;./ai graph cyper&lt;/code&gt; -&amp;gt;
&lt;code&gt;./ai graph cypher&lt;/code&gt; typo, which already matched &lt;code&gt;services/graph-db&lt;/code&gt;'s recorded command, so no concept
drift. Updated &lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt;: retitled the install/BYOD source-map rows to the new
section names, and added the new narrative sections plus §Roadmap to the conscious-exclusion list -
Roadmap's asago-policy-mapper mention is not code-backed in this repo (no dependency, no integration
point), so no &lt;code&gt;references/&lt;/code&gt;/&lt;code&gt;services/&lt;/code&gt; concept was minted; promote it once a real integration lands.
No new concepts, no orphans found. &lt;code&gt;lokf validate&lt;/code&gt; (run via &lt;code&gt;.venv/bin/lokf&lt;/code&gt; with &lt;code&gt;.venv/bin&lt;/code&gt; on PATH,
since neither &lt;code&gt;uv&lt;/code&gt; nor &lt;code&gt;just&lt;/code&gt; are on PATH in this environment): &lt;code&gt;OK — 32 concepts in knowledge validate against KnowledgeBundle&lt;/code&gt;. Toolkit version-floor check (step 5): completed later the same
day via the PyPI JSON API (&lt;code&gt;uv&lt;/code&gt; is unavailable in this environment) - latest release is 0.3.0, equal
to the &lt;code&gt;&amp;gt;=0.3.0&lt;/code&gt; floor in &lt;code&gt;pyproject.toml&lt;/code&gt;, so no bump needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit&lt;/strong&gt; (same day, second run): full section-2 audit on top of the refresh - projected the bundle
to RDF (&lt;code&gt;lokf convert --format ttl&lt;/code&gt;): 32 subjects, all internal typed-relation targets resolve (zero
dangling), no subjects minted outside the knowledge namespace. Verified all nine &lt;code&gt;byo/data/*.yaml&lt;/code&gt;
AUTOGENERATED headers and &lt;code&gt;url:&lt;/code&gt; fields against the datasets' recorded formats and the references'
&lt;code&gt;resource&lt;/code&gt; URLs (all match, incl. dual-URL cases nist-sp-800-53-r5 and finos w3id), crosswalk CSV
header row matches the &lt;code&gt;fields&lt;/code&gt; list, &lt;code&gt;openapi.yaml&lt;/code&gt; still 28 paths, orphan sweep of the repo tree
found nothing unaccounted for. No knowledge changes from the audit itself.
&lt;strong&gt;Still pending from 2026-08-05&lt;/strong&gt;: the &lt;code&gt;base_iri&lt;/code&gt; migration finding (&lt;code&gt;github.com/...&lt;/code&gt; -&amp;gt; a namespace
the project controls) remains unresolved, awaiting human sign-off.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-08-05 · Steady-state refresh: 1 · Schema migration (lokf toolkit upgrade): 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-08-05"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-08-05</id>
    <published>2026-08-05T17:53:58Z</published>
    <updated>2026-08-05T18:35:20Z</updated>
    <category term="Steady-state refresh"/>
    <category term="Schema migration (lokf toolkit upgrade)"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt;: re-verified all 31 concepts against their recorded provenance (all 9
&lt;code&gt;byo/data/*.yaml&lt;/code&gt; files present, all graph files present, &lt;code&gt;openapi.yaml&lt;/code&gt; unchanged at 28 paths, all 4
services stable). Swept for orphans: no new concepts warranted. Fixed one bug from the audit: the
bundle-root &lt;code&gt;index.md&lt;/code&gt; declared &lt;code&gt;publisher.id = .../org/noel-mcloughlin&lt;/code&gt; with no backing concept and the wrong &lt;code&gt;type: Organization&lt;/code&gt;. Created
&lt;code&gt;org/noel-mcloughlin.md&lt;/code&gt; (&lt;code&gt;type: Person&lt;/code&gt;, &lt;code&gt;resource: https://github.com/noelmcloughlin&lt;/code&gt;,
&lt;code&gt;timestamp: 2026-08-05T00:00:00Z&lt;/code&gt;); corrected publisher type to &lt;code&gt;Person&lt;/code&gt;; updated &lt;code&gt;org/index.md&lt;/code&gt; and
the root TOC. Bundle now has 32 concepts; &lt;code&gt;lokf validate&lt;/code&gt; passes.
&lt;strong&gt;Finding for review&lt;/strong&gt;: &lt;code&gt;base_iri: https://github.com/noelmcloughlin/ai-linkmo/knowledge/&lt;/code&gt; violates
Rule 2 — GitHub owns that path space, so these identifiers can never be made to resolve. Proposed
migration target: &lt;code&gt;https://w3id.org/ai-linkmo/knowledge/&lt;/code&gt; (requires a w3id.org redirect PR). Migration
touches every concept &lt;code&gt;id&lt;/code&gt;, publisher &lt;code&gt;id&lt;/code&gt;, and typed-relation target — needs human sign-off before
proceeding.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema migration (lokf toolkit upgrade)&lt;/strong&gt;: upgraded the lokf toolkit, which ships &lt;code&gt;lokf validate&lt;/code&gt; (was
previously unavailable). Running &lt;code&gt;lokf validate knowledge&lt;/code&gt; against the upgraded schema (now backed by
&lt;code&gt;linkml-validate&lt;/code&gt;) revealed three breaking changes from the old &lt;code&gt;convert&lt;/code&gt;-only validation:
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;timestamp&lt;/code&gt; — changed from date-only (&lt;code&gt;YYYY-MM-DD&lt;/code&gt;) to ISO 8601 datetime with timezone
(&lt;code&gt;YYYY-MM-DDTHH:MM:SSZ&lt;/code&gt;). Fixed across all 31 concepts.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;distribution&lt;/code&gt; — changed from a plain list of URL strings to a list of &lt;code&gt;Distribution&lt;/code&gt; objects
(&lt;code&gt;access_url&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;media_type&lt;/code&gt;). Fixed in &lt;code&gt;datasets/knowledge-graph-export&lt;/code&gt; and
&lt;code&gt;datasets/nist-ai-rmf-crosswalks&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fields&lt;/code&gt; — changed from a plain list of strings to a list of &lt;code&gt;Field&lt;/code&gt; objects (&lt;code&gt;name&lt;/code&gt;). Fixed in
&lt;code&gt;datasets/nist-ai-rmf-crosswalks&lt;/code&gt;.
Result: &lt;code&gt;OK — 31 concepts in knowledge validate against KnowledgeBundle.&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-07-27 · Steady-state refresh: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-07-27"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-07-27</id>
    <published>2026-07-29T15:07:17Z</published>
    <updated>2026-07-29T15:07:17Z</updated>
    <category term="Steady-state refresh"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt;: re-verified all 31 concepts against their recorded
provenance (source-map paths, CLI/API OpenAPI wiring, frontend Svelte 5 +
proxy config, graph export tooling, all 9 &lt;code&gt;byo/data/*.yaml&lt;/code&gt; headers and
&lt;code&gt;url:&lt;/code&gt; fields, index completeness) and projected the bundle to RDF
(278 triples, 31 subjects, no dangling internal relation targets). One
drift fixed: the sidecar was renamed &lt;code&gt;lokf/&lt;/code&gt; -&amp;gt; &lt;code&gt;.lokf/&lt;/code&gt; since the last run,
so &lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt; now names the &lt;code&gt;.lokf/&lt;/code&gt; sidecar in its
exclusion list (and makes &lt;code&gt;lib/frontend/STATUS.md&lt;/code&gt; and the
&lt;code&gt;knowledge-*.yaml&lt;/code&gt; automation workflows conscious exclusions); the root
README's LLM-visitors pointer to the bundle was repaired to &lt;code&gt;.lokf/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-07-13 · Steady-state refresh: 1 · Initialization: 1 · Validation skipped: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/ai-linkmo/knowledge/log/#2026-07-13"/>
    <id>https://noelmcloughlin.github.io/ai-linkmo/knowledge/log#2026-07-13</id>
    <published>2026-07-13T18:01:20Z</published>
    <updated>2026-09-22T23:29:48Z</updated>
    <category term="Steady-state refresh"/>
    <category term="Initialization"/>
    <category term="Validation skipped"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt;: re-verified all 31 concepts against their recorded
&lt;code&gt;resource&lt;/code&gt;/&lt;code&gt;derivedFrom&lt;/code&gt; provenance (manifest identity, CLI/API OpenAPI
wiring, frontend constants, graph CSV headers, all 9 &lt;code&gt;byo/data/*.yaml&lt;/code&gt;
headers and &lt;code&gt;url:&lt;/code&gt; fields, org/reference facts) - no drift found. Swept the
full README table of contents for orphans: confirmed &lt;code&gt;/ares&lt;/code&gt; and LLM
inferencing are real, code-backed endpoints (&lt;code&gt;handlers.py&lt;/code&gt;, &lt;code&gt;cli.py&lt;/code&gt;,
&lt;code&gt;vite.config.ts&lt;/code&gt;) but already covered generically by the dynamic
OpenAPI-driven CLI/API service concepts, so no new concept was minted.
Extended &lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt; with the consciously-excluded
README sections (§LLM Inferencing, §ARES Evaluation, §ADOPT?, §Curate your
own Open Data, §Building Python Applications, §Research) so future refreshes
don't need to re-investigate them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bootstrap discovery&lt;/strong&gt; (ktl-librarian): swept the repository and replaced the
scaffold's placeholder services with 31 real concepts - 4 services (CLI,
FastAPI backend, Svelte web UI, Neo4j graph DB), 11 datasets (knowledge-graph
export, NIST AI RMF crosswalks, and the nine &lt;code&gt;byo/data/*.yaml&lt;/code&gt; framework
encodings), 11 references (the external authorities those datasets encode),
3 playbooks (knowledge-sources map, install-and-run, BYOD), and 2
organizations (FINOS, IBM). Recorded the scrape map as
&lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt;; rebuilt all section indexes and the root TOC.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Initialization&lt;/strong&gt;: Scaffolded the LOKF bundle for AI-LinkMO with placeholder
services. Real concepts to follow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Validation skipped&lt;/strong&gt;: &lt;code&gt;lokf validate&lt;/code&gt; is not yet available in the toolkit
(PyPI 0.2.0 and git main both lack the command). As a substitute,
&lt;code&gt;lokf convert --format ttl knowledge&lt;/code&gt; ran clean. Re-run validation once a
toolkit release ships &lt;code&gt;validate&lt;/code&gt; (the CI gate in
&lt;code&gt;.github/workflows/knowledge-validate.yaml&lt;/code&gt; will catch it).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
</feed>
