<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>KTL Curator: 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/obsidian-ktl-curator/knowledge/log.xml"/>
  <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/"/>
  <link rel="alternate" type="text/markdown" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log.md"/>
  <id>https://w3id.org/ktl/curator/knowledge/log</id>
  <updated>2026-10-29T13:10:58Z</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-29 · Changed: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-10-29"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-10-29</id>
    <published>2026-10-29T13:10:58Z</published>
    <updated>2026-10-29T13:10:58Z</updated>
    <category term="Changed"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: lokf toolkit gives the &lt;code&gt;&amp;gt;=0.9.0&lt;/code&gt; floor that &lt;code&gt;.lokf/pyproject.toml&lt;/code&gt; now declares; LOKF and Trust engine count fourteen relation fields, with &lt;code&gt;isReplacedBy&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-27 · Changed: 2 · Resolved: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-10-27"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-10-27</id>
    <published>2026-10-27T01:38:54Z</published>
    <updated>2026-10-27T01:38:54Z</updated>
    <category term="Changed"/>
    <category term="Resolved"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Contributing describes the skills pin moving through &lt;code&gt;knowledge-sync.yaml&lt;/code&gt; and &lt;code&gt;knowledge-sync.sh&lt;/code&gt;, which copy every template the release's &lt;code&gt;knowledge-sync.manifest&lt;/code&gt; lists, as &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; has said since #104, in place of the three-workflow copy step.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolved&lt;/strong&gt;: &lt;code&gt;knowledge-sync.sh&lt;/code&gt; reads the manifest out of the release tag and copies every listed template the repository carries, so the playbook describes that sync; &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; says the same since #104.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map's sync row names &lt;code&gt;.lokf/scripts/knowledge-sync.sh&lt;/code&gt; and feeds the contributing playbook, which now says what a pin move copies.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-19 · Changed: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-10-19"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-10-19</id>
    <published>2026-10-19T15:10:07Z</published>
    <updated>2026-10-19T15:10:07Z</updated>
    <category term="Changed"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Settings tab adds &lt;code&gt;src/settings-model.ts&lt;/code&gt; as a source: the &lt;code&gt;knownTypes&lt;/code&gt; defaults and the upgrade-merge rule its description already describes live there, not in &lt;code&gt;src/settings.ts&lt;/code&gt;, and the coverage sweep found the file named in no concept.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-18 · Changed: 4 · Question: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-10-18"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-10-18</id>
    <published>2026-10-18T00:26:42Z</published>
    <updated>2026-10-18T16:56:12Z</updated>
    <category term="Changed"/>
    <category term="Question"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Trust fields names the ktl-curator skill in Knowledge Trust Ladder's bundle as the whole it is part of, since its resource is &lt;code&gt;skills/ktl-curator/references/trust-fields.md&lt;/code&gt; in that skill; the first link from this bundle into another member of the KTL federation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Review session names the ktl-curator skill in Knowledge Trust Ladder's bundle as the whole it is part of, since its resource is &lt;code&gt;skills/ktl-curator/references/review-session.md&lt;/code&gt; in that skill.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the trust-model page names its companion project as Knowledge Trust Ladder (KTL), as &lt;code&gt;docs/for-the-curious.md&lt;/code&gt; now does, so the later KTL Registrar reads as defined.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: the contributing playbook's pin rule counts three sidecar workflows, and the sync script now copies whatever the release's manifest lists, &lt;code&gt;knowledge-sync.yaml&lt;/code&gt; among them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map names &lt;code&gt;knowledge-sync.yaml&lt;/code&gt; and its pull request template, which the sidecar syncs added, and lists &lt;code&gt;package-lock.json&lt;/code&gt; among the build files left out.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-17 · Changed: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-10-17"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-10-17</id>
    <published>2026-10-17T00:49:16Z</published>
    <updated>2026-10-17T00:49:16Z</updated>
    <category term="Changed"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the edits engine names what each paired function does: &lt;code&gt;applyConfirm&lt;/code&gt; appends the event and &lt;code&gt;applyStaleAfter&lt;/code&gt; only sets &lt;code&gt;stale_after&lt;/code&gt;, and &lt;code&gt;parseCurationTally&lt;/code&gt; reads back the counts &lt;code&gt;upsertCurationLine&lt;/code&gt; writes, as &lt;code&gt;src/edits.ts&lt;/code&gt; shows.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-16 · Changed: 13 · Prose: 2 · Rewrite: 1 · Added: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-10-16"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-10-16</id>
    <published>2026-10-16T00:06:55Z</published>
    <updated>2026-10-17T00:49:16Z</updated>
    <category term="Prose"/>
    <category term="Changed"/>
    <category term="Rewrite"/>
    <category term="Added"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prose&lt;/strong&gt;: reworded 18 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;: The OKF glossary term gains a description, so its index bullet says what it defines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The LOKF glossary term gains a description, so its index bullet says what it defines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The Diátaxis genre glossary term gains a description, so its index bullet says what it defines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Curator side panel says that a confirmed concept a question set back to draft reads &quot;reopened&quot; on the card and the active note, and gets the reopened hint in the queue, as &lt;code&gt;src/curator-view.ts&lt;/code&gt; has done since faa8d93.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: In-editor aids says that a confirmed concept a question reopened keeps the confirmed tone, as &lt;code&gt;src/trust-label.ts&lt;/code&gt; has done since faa8d93. Its sources now list the seven files the source map names for it, so the work list sees &lt;code&gt;trust-label.ts&lt;/code&gt; move.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The trust-fields description names &lt;code&gt;docs/using.md&lt;/code&gt; for the health-line chips, which left the README when it became a doorway.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: lokf toolkit follows what &lt;code&gt;lokf validate&lt;/code&gt; does in 0.8.0, a JSON Schema check with no SHACL pass, and adds &lt;code&gt;scripts/build-vocab.mjs&lt;/code&gt;, the one maintenance step that reads the toolkit's schema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The lokf toolkit description drops the SHACL checks &lt;code&gt;lokf validate&lt;/code&gt; does not run, and its sources add the sidecar's &lt;code&gt;pyproject.toml&lt;/code&gt;, its justfile and &lt;code&gt;scripts/build-vocab.mjs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: LOKF specification says what the page holds today: no Golden Rules, which are the librarian skill's, and a type table of fourteen classes, while the 0.8.0 schema adds &lt;code&gt;Role&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The LOKF glossary term counts the thirteen relation fields &lt;code&gt;src/bundle.ts&lt;/code&gt; reads, not ten, the count &lt;code&gt;services/trust-engine.md&lt;/code&gt; already gives, and cites &lt;code&gt;src/bundle.ts&lt;/code&gt; as its source.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Diátaxis genre now carries &lt;code&gt;genre: reference&lt;/code&gt;, which its body already said it had.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map adds &lt;code&gt;scripts/build-vocab.mjs&lt;/code&gt; to the lokf toolkit row, and names the repository files it leaves out on purpose. The reworded README and docs pages still match their rows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the bundle's &lt;code&gt;base_iri&lt;/code&gt; moved from the placeholder &lt;code&gt;https://ktl-curator.example/knowledge/&lt;/code&gt; to &lt;code&gt;https://w3id.org/ktl/curator/knowledge/&lt;/code&gt;, a namespace under Knowledge Trust Ladder's w3id.org authority, so the bundle can join a federation; every id and relation target moved with it, and no concept's text changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt;: Knowledge website, from &lt;code&gt;website/README.md&lt;/code&gt; and &lt;code&gt;.github/workflows/knowledge-website.yaml&lt;/code&gt;, which the ktl-website skill added in a259ac0.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map gains the knowledge website (&lt;code&gt;website/&lt;/code&gt; and &lt;code&gt;knowledge-website.yaml&lt;/code&gt;, added in a259ac0), and the README row says the doorway now links the website's pages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prose&lt;/strong&gt;: reworded 12 concept bodies in plain English. No fact, link, number or frontmatter changed.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-10-15 · Changed: 11 · Rewrite: 6 · Resolved: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-10-15"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-10-15</id>
    <published>2026-10-16T00:06:55Z</published>
    <updated>2026-10-16T00:06:55Z</updated>
    <category term="Changed"/>
    <category term="Rewrite"/>
    <category term="Resolved"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the OKF specification moved to &lt;code&gt;GoogleCloudPlatform/open-knowledge-format&lt;/code&gt;, which still serves v0.2; the &lt;code&gt;knowledge-catalog/okf/&lt;/code&gt; copy is frozen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: the source map links the canonical OKF specification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: Why KTL Curator exists follows &lt;code&gt;docs/for-the-curious.md&lt;/code&gt;, which &lt;code&gt;docs/architecture.md&lt;/code&gt; now links to in place of the README, and adds what the plugin leaves to KTL Registrar and the librarian.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: Contributing follows the current &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; checklist: Node 20 or later, the changelog line, the vocab refresh, the skills pin sync and the releasing pull request title.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The Contributing description names the checklist items the concept now carries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: the registrar gate follows the current workflow: validate runs the justfile recipe after &lt;code&gt;uv sync --locked&lt;/code&gt; and passes the merge base to the conventions script; provenance reads whole events, removals included, and checks signatures against &lt;code&gt;.lokf/curators/&lt;/code&gt; too; the copy now keeps the template's jobs unchanged.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The registrar gate description covers removed confirmations, and its sources add &lt;code&gt;knowledge-provenance.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: the source map adds the docs pages, the release config, the sidecar's other copies and the curator keys, and its registrar and skill-reference rows follow their current sources. The dated re-check notes are gone; the log keeps that history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: Releasing adds the &lt;code&gt;workflow_dispatch&lt;/code&gt; path &lt;code&gt;release.yml&lt;/code&gt; gained for a tag semantic-release pushed before failing, the &lt;code&gt;security&lt;/code&gt; release type, and the &lt;code&gt;plan&lt;/code&gt; job's changelog and title checks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The Releasing description names the hand-run dispatch path, and its sources add &lt;code&gt;.releaserc.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrite&lt;/strong&gt;: the no-telemetry policy follows &lt;code&gt;SECURITY.md&lt;/code&gt;'s current wording and cites &lt;code&gt;docs/architecture.md&lt;/code&gt;'s Privacy section, where the README's former Privacy section now lives.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: The no-telemetry description follows &lt;code&gt;SECURITY.md&lt;/code&gt;, and its sources add &lt;code&gt;docs/architecture.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Curator side panel names the trust-ladder icon its tab and the ribbon now carry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Edits engine says the caller writes the body through &lt;code&gt;vault.process&lt;/code&gt;, not &lt;code&gt;vault.modify&lt;/code&gt;, and adds the four exported functions it left out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: KTL Curator plugin: the verbs write the body through &lt;code&gt;vault.process&lt;/code&gt;, the corrected guard is &lt;code&gt;hasReviewedCard&lt;/code&gt; plus &lt;code&gt;hasChangedSinceCardOpened&lt;/code&gt; (no &lt;code&gt;canMarkCorrected&lt;/code&gt;), and all six commands and the ribbon icon are listed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Settings tab adds the In-editor group, the trust-marker and autocomplete toggles it had left out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed&lt;/strong&gt;: Trust engine: reliance counts the schema's thirteen relation fields, once per relying concept with retired concepts left out, and an empty &lt;code&gt;verified&lt;/code&gt; list reads as unchecked.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolved&lt;/strong&gt;: &lt;code&gt;src/main.ts&lt;/code&gt; wires the four modules as the concept says. Its Look up a LOKF field command opens &lt;code&gt;FieldReferenceModal&lt;/code&gt; over &lt;code&gt;LOKF_FIELD_DOCS&lt;/code&gt;, it registers &lt;code&gt;lokfTrustMarkerExtension&lt;/code&gt; and &lt;code&gt;KtlCuratorSuggest&lt;/code&gt;, and it renders &lt;code&gt;trustLabel&lt;/code&gt; and &lt;code&gt;handoffLabel&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-24</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-09-24"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-24</id>
    <published>2026-09-24T16:23:43Z</published>
    <updated>2026-09-24T19:27:32Z</updated>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Future-dated times corrected.&lt;/strong&gt; 3 &lt;code&gt;process:ktl-librarian&lt;/code&gt; times were later than the commit that recorded them (round placeholders written as UTC). Each now carries that commit's time, the latest moment git attests, so the bundle keeps the sidecar's new conventions rule 11.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The signing setup moved to its own page in the skills.&lt;/strong&gt;
knowledge-trust-ladder split the registrar gate out of &lt;code&gt;automation.md&lt;/code&gt; into
&lt;code&gt;gate.md&lt;/code&gt;, so &lt;code&gt;playbooks/knowledge-registrar-gate.md&lt;/code&gt; now points there for
the signing setup.&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/obsidian-ktl-curator/knowledge/log/#2026-09-23"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-23</id>
    <published>2026-09-23T21:44:49Z</published>
    <updated>2026-09-23T22:13:07Z</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;
&lt;code&gt;.lokf/feedback.md&lt;/code&gt; is kept newest first, so adding an entry meant reading
it, editing it and writing it back, which put other readers' free text into
the docent's session, held off by prose alone (Snyk W011). The sidecar now
carries &lt;code&gt;knowledge-feedback.sh&lt;/code&gt;: the docent hands over its own entry and
never opens the file. The script comes from the &lt;code&gt;v0.23.0&lt;/code&gt; templates, the
release that ships it, and the pin moved to that tag with it.&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 still read &lt;code&gt;v0.21.0&lt;/code&gt;, where the skills are named &lt;code&gt;lokf-*&lt;/code&gt;; the rename to
&lt;code&gt;ktl-*&lt;/code&gt; landed in &lt;code&gt;v0.22.0&lt;/code&gt;. The install step copies &lt;code&gt;skills/ktl-librarian&lt;/code&gt;
and is not gated on &lt;code&gt;KNOWLEDGE_LIBRARIAN_ENABLED&lt;/code&gt;, so every weekly run has
been failing there since the plugin took the KTL name, armed or not. The pin
moves to &lt;code&gt;v0.23.0&lt;/code&gt;, the release that also ships &lt;code&gt;knowledge-feedback.sh&lt;/code&gt;. The
scripts under &lt;code&gt;.lokf/scripts/&lt;/code&gt; and &lt;code&gt;knowledge-registrar.yaml&lt;/code&gt; all match its
templates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-19 · Reference audit moved onto the toolkit's own flag: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-09-19"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-19</id>
    <published>2026-09-19T20:37:27Z</published>
    <updated>2026-09-19T21:53:51Z</updated>
    <category term="Reference audit moved onto the toolkit's own flag"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The logo now carries knowledge and trust.&lt;/strong&gt; The first mark was three rungs
alone: it drew &lt;em&gt;ladder&lt;/em&gt; and left the other two words to the filename. The
ladder now rises out of an open book, and its top rung is the check mark in
the curator's blue, so the mark reads draft, checked, vouched-for from bottom
to top. Still byte-identical in all three repositories.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Both diagrams carry the mark and the wordmark&lt;/strong&gt; in the top-left corner,
from the same shared definition.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Text that collided with its own box.&lt;/strong&gt; A headless-Chrome pass measured
every label against its enclosing card: the curator card's &quot;a few at a time&quot;
was painted before the card and hidden behind it, and two labels in the
plugins card came within 3px of their edges. Both diagrams now match the
skills repository's copy byte for byte.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Assets restacked, and the family logo added.&lt;/strong&gt; The diagrams' canvas was
pure white while their cards were tinted, so the biggest area was the
brightest and the cards read as sunken. The canvas is now &lt;code&gt;#E4E1D7&lt;/code&gt; and the
faint ink &lt;code&gt;#6E6D66&lt;/code&gt;, which also lifts 10px grey labels past 4.5:1. New
&lt;code&gt;.assets/knowledge-trust-ladder-logo.svg&lt;/code&gt;, identical in all three
repositories. The &lt;code&gt;.assets/*.svg&lt;/code&gt; source-map row covers it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Skills repository renamed to &lt;code&gt;knowledge-trust-ladder&lt;/code&gt;&lt;/strong&gt;, from
&lt;code&gt;lokf-agent-skills&lt;/code&gt;, because upstream LOKF now ships its own bundled skills.
Every deep link and the scheduled librarian's &lt;code&gt;LOKF_SKILLS_REPO&lt;/code&gt; follow it,
in one mechanical pass; no &lt;code&gt;verified&lt;/code&gt; event changed. This plugin's own name,
id and &lt;code&gt;base_iri&lt;/code&gt; are untouched - only references to the skills repository
moved. Concepts naming it in prose were rewritten by the same pass; entries
below this day keep the name the skills repository had when they were
written, as &lt;code&gt;CHANGELOG.md&lt;/code&gt; does.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reference audit moved onto the toolkit's own flag&lt;/strong&gt;: &lt;code&gt;just lokf-check-refs&lt;/code&gt;
ran a hand-written SPARQL query over ten relation predicates, which reported
an external &lt;code&gt;source:&lt;/code&gt; or &lt;code&gt;definedBy:&lt;/code&gt; URL - correct usage for both slots - as
a dangling target, and had drifted against the schema (missing &lt;code&gt;holder&lt;/code&gt;,
&lt;code&gt;measures&lt;/code&gt;, &lt;code&gt;memberOf&lt;/code&gt; and reified &lt;code&gt;relations&lt;/code&gt;). It calls &lt;code&gt;lokf validate --check-refs&lt;/code&gt; now, so the slot list comes from the schema. Only Knowledge
registrar gate changed here, to describe the recipe as it now runs; the
workflow no longer invokes it through &lt;code&gt;uvx ... just&lt;/code&gt;: the gate's third
step is gone and &lt;code&gt;--check-refs&lt;/code&gt; rides on its validate step. That change
has not reached the skills template yet, so this copy is ahead of it and
the preflight's &lt;code&gt;copies&lt;/code&gt; line reports the file as drifted until it does. That concept
described the recipe while citing only the workflow, the conventions
script and &lt;code&gt;SECURITY.md&lt;/code&gt;, so &lt;code&gt;.lokf/justfile&lt;/code&gt; is now one of its
&lt;code&gt;sources&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-18 · Resources repinned off runtime state: 1 · Sidecar brought up to the skills templates: 1 · Open question closed: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-09-18"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-18</id>
    <published>2026-09-17T23:55:35Z</published>
    <updated>2026-09-17T23:55:35Z</updated>
    <category term="Resources repinned off runtime state"/>
    <category term="Sidecar brought up to the skills templates"/>
    <category term="Open question closed"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resources repinned off runtime state&lt;/strong&gt;: &lt;code&gt;references/trust-fields.md&lt;/code&gt;
and &lt;code&gt;references/review-session.md&lt;/code&gt; named their installed copies under
&lt;code&gt;.agents/&lt;/code&gt;, which git ignores, so the conventions gate failed in a clean
CI checkout. Both now name the published file at the &lt;code&gt;v0.19.2&lt;/code&gt; tag the
workflow installs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sidecar brought up to the skills templates&lt;/strong&gt;: the scripts here were the
pre-0.19 copies, so the wrapper lacked 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, 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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Open question closed&lt;/strong&gt;: &lt;code&gt;references/trust-fields.md&lt;/code&gt; asked whether the
plugin was ahead of its pinned spec of record on &quot;known vocabulary&quot;. The
&lt;code&gt;LOKF_SKILLS_REF&lt;/code&gt; bump to &lt;code&gt;v0.19.2&lt;/code&gt; settles it - that release carries the
wording &lt;code&gt;src/curator-view.ts&lt;/code&gt; uses.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-14</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-09-14"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-14</id>
    <published>2026-09-14T16:26:10Z</published>
    <updated>2026-09-22T23:25:57Z</updated>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt;, against the now-committed &lt;code&gt;96cf5fe&lt;/code&gt; (&quot;docs(security):
improved layout&quot;): &lt;code&gt;SECURITY.md&lt;/code&gt; was slimmed and its design content moved
to the skills repository's new &lt;code&gt;docs/threat-model.md&lt;/code&gt;.
&lt;code&gt;playbooks/knowledge-registrar-gate.md&lt;/code&gt; corrected - two sentences named
&lt;code&gt;SECURITY.md&lt;/code&gt; as the design's home when it now only links there; retitled
to name the threat model directly. &lt;code&gt;policies/no-telemetry.md&lt;/code&gt; re-verified,
its cited section unchanged by the rewrite. &lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt;'s
&lt;code&gt;SECURITY.md&lt;/code&gt; row updated to describe the slimmed file. No new concept
needed: this repository has always treated &lt;code&gt;SECURITY.md&lt;/code&gt; as a &lt;code&gt;sources&lt;/code&gt;
entry, not a &lt;code&gt;Policy&lt;/code&gt; concept of its own.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (librarian pass, no feedback pending), against the
now-committed &lt;code&gt;feba4e0&lt;/code&gt; (&quot;gate runs the conventions script and
lokf-check-refs&quot;): the &lt;code&gt;validate&lt;/code&gt; job in
&lt;code&gt;.github/workflows/knowledge-registrar.yaml&lt;/code&gt; gained two steps -
&lt;code&gt;scripts/knowledge-conventions.sh&lt;/code&gt; and &lt;code&gt;just lokf-check-refs&lt;/code&gt; - that
&lt;code&gt;playbooks/knowledge-registrar-gate.md&lt;/code&gt; did not yet describe; corrected,
with the script added as a &lt;code&gt;sources&lt;/code&gt; entry. All other concepts re-checked
against current &lt;code&gt;src/&lt;/code&gt;, &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;, and the pinned skill copy: no
further drift. &lt;code&gt;references/trust-fields.md&lt;/code&gt;'s open question (the installed
copy still pinned to &lt;code&gt;LOKF_SKILLS_REF: v0.9.0&lt;/code&gt; and reading &quot;built-in
vocabulary&quot; against &lt;code&gt;src/curator-view.ts&lt;/code&gt;'s &quot;known vocabulary&quot;) re-checked
and still holds, unchanged. &lt;code&gt;just lokf-validate&lt;/code&gt;, &lt;code&gt;just lokf-check-refs&lt;/code&gt;,
and &lt;code&gt;scripts/knowledge-conventions.sh&lt;/code&gt; all pass.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; against an uncommitted working-tree change
(&lt;code&gt;CONTRIBUTING.md&lt;/code&gt; rewritten as a checklist under a word budget and
pointing at the skills repository's &lt;code&gt;docs/&lt;/code&gt; for release/signing detail;
&lt;code&gt;npm run check&lt;/code&gt;; four lint rules raised to error; a drift guard added to
&lt;code&gt;scripts/smoke-test.ts&lt;/code&gt;; &lt;code&gt;build.yml&lt;/code&gt;/&lt;code&gt;lint-and-docs.yaml&lt;/code&gt; hardened with a
main-only push trigger, a concurrency group, and an action-pin check).
&lt;code&gt;playbooks/contributing.md&lt;/code&gt; re-derived (the pure-module list grew from
four to seven; CI's mirror of &lt;code&gt;npm run check&lt;/code&gt; and the pin/link checks
added). &lt;code&gt;playbooks/releasing.md&lt;/code&gt;'s &lt;code&gt;resource&lt;/code&gt; moved from &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;
to &lt;code&gt;semantic-release.yml&lt;/code&gt;/&lt;code&gt;release.yml&lt;/code&gt;, since the prose it was derived
from no longer lives in &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;. Four source-map rows added for
files that predate this pass but were never listed:  &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;,
&lt;code&gt;build.yml&lt;/code&gt;/&lt;code&gt;lint-and-docs.yaml&lt;/code&gt;, &lt;code&gt;semantic-release.yml&lt;/code&gt;/&lt;code&gt;release.yml&lt;/code&gt;,
&lt;code&gt;pull_request_template.md&lt;/code&gt;. &lt;code&gt;playbooks/index.md&lt;/code&gt; was missing
&lt;code&gt;knowledge-registrar-gate.md&lt;/code&gt;; added.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Re-verified against the actual pinned resource, not the skill
repository's live checkout:&lt;/strong&gt; the prior pass's log entry called
&lt;code&gt;references/trust-fields.md&lt;/code&gt;'s open question closed by pointing at the
&lt;code&gt;lokf-agent-skills&lt;/code&gt; working tree; the concept's own &lt;code&gt;resource&lt;/code&gt; is the
locally installed copy, still pinned to &lt;code&gt;v0.9.0&lt;/code&gt;
(&lt;code&gt;knowledge-librarian.yaml&lt;/code&gt;'s &lt;code&gt;LOKF_SKILLS_REF&lt;/code&gt;, unchanged this run) and
still reading &quot;built-in vocabulary&quot; with no domain-schema mention, while
&lt;code&gt;src/curator-view.ts&lt;/code&gt; already reads &quot;known vocabulary&quot;. Reopened as an
open question there rather than left silently settled.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Re-verified, no change:&lt;/strong&gt; &lt;code&gt;references/obsidian-plugin-guidelines.md&lt;/code&gt;
(checked against the new &lt;code&gt;eslint.config.mts&lt;/code&gt; rules) and
&lt;code&gt;playbooks/knowledge-registrar-gate.md&lt;/code&gt; (workflow file unchanged).
&lt;code&gt;lokf&lt;/code&gt; on PyPI is still &lt;code&gt;0.7.0&lt;/code&gt;, matching the pinned floor - no bump
(&lt;code&gt;uv pip index versions&lt;/code&gt; has no &lt;code&gt;index&lt;/code&gt; subcommand in this environment;
checked directly against &lt;code&gt;pypi.org/pypi/lokf/json&lt;/code&gt; instead).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt; corrected, and &lt;code&gt;playbooks/contributing.md&lt;/code&gt; re-derived
from it.&lt;/strong&gt; The document still said the smoke test covers &quot;the three pure
modules&quot; and its &lt;code&gt;src/&lt;/code&gt; table had no &lt;code&gt;settings-model.ts&lt;/code&gt; row, so the
concept had been written ahead of its own source - the wrong direction for
a derived record. Source and concept now agree, and the same check found
the same fault in the sibling &lt;code&gt;ktl-registrar&lt;/code&gt; repository.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (librarian pass, no feedback pending) against the
uncommitted &lt;code&gt;feat/known-types-setting&lt;/code&gt; branch, which adds &lt;em&gt;Known LOKF
types&lt;/em&gt; (&lt;code&gt;knownTypes&lt;/code&gt;) under a new &lt;strong&gt;Type vocabulary&lt;/strong&gt; settings group - the
same list and upgrade rule as &lt;code&gt;ktl-registrar&lt;/code&gt;'s - and threads it into
&lt;code&gt;classify()&lt;/code&gt; and &lt;code&gt;parseCurationPolicyTable()&lt;/code&gt;, so a bundle validated
against a domain schema can list that schema's classes: they stop counting
as misfits and can carry a review interval. Updated
&lt;code&gt;services/settings-tab.md&lt;/code&gt;, &lt;code&gt;services/trust-engine.md&lt;/code&gt; (the class check was
still described as &quot;14-class&quot;; it is the manifest's fifteen, or the list
handed in), &lt;code&gt;services/ktl-curator-plugin.md&lt;/code&gt; and
&lt;code&gt;services/curator-view.md&lt;/code&gt; (the vocabulary line's new wording, and an open
question on its divergence from the skill's &lt;code&gt;trust-fields.md&lt;/code&gt;).
Re-verified, no change: &lt;code&gt;explanation/why-ktl-curator.md&lt;/code&gt;.
&lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt;: settings row and run note.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Two defects found by a coverage pass&lt;/strong&gt;, corrected here and in the code.
&lt;code&gt;parseCurationPolicyTable&lt;/code&gt; matched a class name literally, so the prose
rows of this plugin's own curation-policy template (&quot;Glossary terms&quot;,
&quot;people&quot;) bound nothing - hidden by their intervals coinciding with the
settings defaults. The parse now ignores spaces and English plurals, and
&lt;code&gt;services/trust-engine.md&lt;/code&gt; records rule and history; the upstream skill's
&lt;code&gt;references/review-session.md&lt;/code&gt;, spec of record for that table, states it
too, so the two cannot drift apart again. Separately, deleting an
&lt;code&gt;## Open questions&lt;/code&gt; section left two blank lines behind it (markdownlint
MD012); one now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The open question &lt;code&gt;services/curator-view.md&lt;/code&gt; raised was answered upstream
the same day&lt;/strong&gt; and is closed: the &lt;code&gt;ktl-curator&lt;/code&gt; skill's
&lt;code&gt;references/trust-fields.md&lt;/code&gt; now reads a host's domain schema from
&lt;code&gt;.lokf/justfile&lt;/code&gt;'s &lt;code&gt;--schema&lt;/code&gt; and words the label &quot;doesn't fit the known
vocabulary&quot;, as this plugin already did. The plugin keeps its &lt;em&gt;Known LOKF
types&lt;/em&gt; setting because it cannot read a file outside the vault; the two no
longer disagree about what the vocabulary is.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;src/settings-model.ts&lt;/code&gt; is a new pure module&lt;/strong&gt; holding the settings
shape, defaults and the saved-data merge rule, moved out of &lt;code&gt;main.ts&lt;/code&gt; so a
test can reach them. Recorded in &lt;code&gt;services/ktl-curator-plugin.md&lt;/code&gt;, this
map's &lt;code&gt;src/&lt;/code&gt; row, and &lt;code&gt;playbooks/contributing.md&lt;/code&gt;, whose import-free rule
now names it and says why logic leaves &lt;code&gt;main.ts&lt;/code&gt; rather than being tested
through it.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-13</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-09-13"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-13</id>
    <published>2026-09-13T17:14:36Z</published>
    <updated>2026-09-22T23:25:57Z</updated>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (librarian pass, no feedback pending), after a
&lt;code&gt;ktl-sidecar&lt;/code&gt; repair pass that restored &lt;code&gt;.lokf/.gitignore&lt;/code&gt;'s &lt;code&gt;.obsidian/&lt;/code&gt;
rule and laid the &lt;code&gt;knowledge_bundle&lt;/code&gt; doorway link. Re-verified
&lt;code&gt;playbooks/knowledge-registrar-gate.md&lt;/code&gt; against the now-committed workflow;
it now says the copy also words two comments its own way, not only
&lt;code&gt;persist-credentials: false&lt;/code&gt; and &lt;code&gt;permissions: {}&lt;/code&gt;.
&lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt;: &lt;code&gt;.assets/&lt;/code&gt; row and run note added.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (librarian pass, no feedback pending), against the
commits since &lt;code&gt;248f9e6&lt;/code&gt; (&lt;code&gt;knowledge-registrar.yaml&lt;/code&gt; gaining the template's
&lt;code&gt;provenance&lt;/code&gt;/&lt;code&gt;attestation&lt;/code&gt; jobs, &lt;code&gt;SECURITY.md&lt;/code&gt; restructured to inherit the
guard design from &lt;code&gt;lokf-agent-skills&lt;/code&gt;, two README images) and this
session's uncommitted README rewrite around usage. Added
&lt;code&gt;playbooks/knowledge-registrar-gate.md&lt;/code&gt; (a gap: no source-map row, no
concept) and two workflow rows to the source map. &lt;strong&gt;Audit fixes:&lt;/strong&gt;
&lt;code&gt;just lokf-check-refs&lt;/code&gt; failed on four &lt;code&gt;sameAs&lt;/code&gt; relations whose targets
were the external URLs already carried by &lt;code&gt;resource&lt;/code&gt; - removed from the
four &lt;code&gt;references/*&lt;/code&gt; concepts, as the sibling bundles do;
&lt;code&gt;references/okf-specification.md&lt;/code&gt; had &lt;code&gt;derivedFrom&lt;/code&gt; pointing at the LOKF
spec, backwards - moved onto &lt;code&gt;references/lokf-specification.md&lt;/code&gt;, the
profile derived from OKF; the LOKF spec's body said a &quot;14-class&quot;
vocabulary, corrected to 15 (&lt;code&gt;Role&lt;/code&gt;); the source map listed &lt;code&gt;CUR.md&lt;/code&gt;, a
file this repository has never had (deleted in the fork parent's 0.2.0).
&lt;code&gt;references/trust-fields.md&lt;/code&gt;'s description no longer claims a README
trust-label table - the rewritten README links to the skills' README for
the labels and to &lt;code&gt;docs/for-the-curious.md&lt;/code&gt; for the rules. Re-verified,
no change: &lt;code&gt;policies/no-telemetry.md&lt;/code&gt;, &lt;code&gt;explanation/why-ktl-curator.md&lt;/code&gt;
(first &lt;code&gt;verified&lt;/code&gt; event), &lt;code&gt;references/review-session.md&lt;/code&gt; and
&lt;code&gt;references/trust-fields.md&lt;/code&gt; (the installed &lt;code&gt;.agents/skills/ktl-curator/&lt;/code&gt;
copies are identical to the source skill this run). &lt;strong&gt;Drift audit
(reported, not fixed):&lt;/strong&gt; both workflow copies differ from their templates
only by the stricter &lt;code&gt;persist-credentials: false&lt;/code&gt; / &lt;code&gt;permissions: {}&lt;/code&gt; and
by comments. &lt;code&gt;lokf&lt;/code&gt; on PyPI is still &lt;code&gt;0.7.0&lt;/code&gt;, matching the floor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (librarian pass, no feedback pending): re-verified
&lt;code&gt;services/settings-tab.md&lt;/code&gt; and &lt;code&gt;services/ktl-curator-plugin.md&lt;/code&gt; against
&lt;code&gt;src/settings.ts&lt;/code&gt; and &lt;code&gt;src/main.ts&lt;/code&gt; after this session's README-notice
rewording and a comment-only pass over &lt;code&gt;src/main.ts&lt;/code&gt;/&lt;code&gt;src/bundle.ts&lt;/code&gt;
(&lt;code&gt;knowledge_bundle&lt;/code&gt; doorway wording, &lt;code&gt;implicitRoots&lt;/code&gt;). Both already
matched, so each gained its first &lt;code&gt;verified&lt;/code&gt; event
(&lt;code&gt;process:ktl-librarian&lt;/code&gt;) rather than a content change; &lt;code&gt;status: draft&lt;/code&gt;
is unchanged - that records no human curator has confirmed them yet,
which this refresh does not settle. &lt;code&gt;policies/no-telemetry.md&lt;/code&gt; (resource
&lt;code&gt;SECURITY.md&lt;/code&gt;) and &lt;code&gt;explanation/why-ktl-curator.md&lt;/code&gt; (resource
&lt;code&gt;docs/for-the-curious.md&lt;/code&gt;) were not re-checked this run - neither
resource changed this session.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-12</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-09-12"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-12</id>
    <published>2026-09-12T15:51:01Z</published>
    <updated>2026-09-22T23:25:57Z</updated>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Steady-state refresh&lt;/strong&gt; (&lt;code&gt;process:ktl-librarian&lt;/code&gt;), triggered by this
session's &quot;no bundle&quot; state and break-glass &quot;Treat the vault root as the
bundle&quot; setting (&lt;code&gt;src/main.ts&lt;/code&gt;, &lt;code&gt;src/bundle.ts&lt;/code&gt;, &lt;code&gt;src/settings.ts&lt;/code&gt;,
&lt;code&gt;src/curator-view.ts&lt;/code&gt;) and the README→&lt;code&gt;docs/for-the-curious.md&lt;/code&gt; split:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;services/ktl-curator-plugin.md&lt;/code&gt; - description and body corrected for
the no-bundle state (&lt;code&gt;hasNoBundle()&lt;/code&gt;/&lt;code&gt;noBundleNotice()&lt;/code&gt;) and fixed
drifted function names (&lt;code&gt;detectedRoot()&lt;/code&gt;/&lt;code&gt;autoBundleRoot&lt;/code&gt; no longer
exist; the current path is &lt;code&gt;implicitRoots()&lt;/code&gt; calling &lt;code&gt;bundle.ts&lt;/code&gt;'s pure
&lt;code&gt;implicitBundleRoots&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;services/settings-tab.md&lt;/code&gt; - added the break-glass &quot;Treat the vault
root as the bundle&quot; toggle to the Scope group's description.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;services/curator-view.md&lt;/code&gt; - added the report's no-bundle message.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;explanation/why-ktl-curator.md&lt;/code&gt; - &lt;code&gt;resource&lt;/code&gt; moved from &lt;code&gt;README.md&lt;/code&gt;
to &lt;code&gt;docs/for-the-curious.md&lt;/code&gt;, where the four-tier trust model content
now actually lives.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt; - updated the &lt;code&gt;README.md&lt;/code&gt; &quot;For the
curious&quot; row to point at &lt;code&gt;docs/for-the-curious.md&lt;/code&gt;, and added a row for
the in-editor-aids source files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;services/in-editor-aids.md&lt;/code&gt; (&lt;code&gt;status: draft&lt;/code&gt;, open
question left for a person): a new &lt;code&gt;Service&lt;/code&gt; concept covering
&lt;code&gt;src/fields.ts&lt;/code&gt;, &lt;code&gt;src/field-modal.ts&lt;/code&gt;, &lt;code&gt;src/inline.ts&lt;/code&gt;, &lt;code&gt;src/suggest.ts&lt;/code&gt;,
&lt;code&gt;src/suggest-context.ts&lt;/code&gt;, &lt;code&gt;src/trust-label.ts&lt;/code&gt;, &lt;code&gt;src/lokf-vocab.json&lt;/code&gt; -
the &quot;Look up a LOKF field&quot; command, the inline trust badge, and
frontmatter autocomplete - which had no concept of their own despite
being live features since v0.2.0. Wired into &lt;code&gt;services/index.md&lt;/code&gt;,
root &lt;code&gt;index.md&lt;/code&gt;, and &lt;code&gt;ktl-curator-plugin.md&lt;/code&gt;'s &lt;code&gt;hasPart&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Re-verified against their sources and unchanged otherwise: 13 concepts
(&lt;code&gt;policies/no-telemetry.md&lt;/code&gt;; the six &lt;code&gt;references/*.md&lt;/code&gt;; the three
&lt;code&gt;glossary/*.md&lt;/code&gt;; &lt;code&gt;services/trust-engine.md&lt;/code&gt;, &lt;code&gt;services/edits-engine.md&lt;/code&gt;;
&lt;code&gt;playbooks/contributing.md&lt;/code&gt;) got a refreshed &lt;code&gt;process:ktl-librarian&lt;/code&gt;
&lt;code&gt;verified&lt;/code&gt; event, no content changes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.lokf/pyproject.toml&lt;/code&gt;: &lt;code&gt;lokf[build]&lt;/code&gt; floor raised &lt;code&gt;&amp;gt;=0.5.0&lt;/code&gt; →
&lt;code&gt;&amp;gt;=0.7.0&lt;/code&gt; (latest on PyPI is 0.7.0; a minor-version bump, no major
change to review).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Semantic-release, hardened&lt;/strong&gt; (maintainer decision, matching upstream
&lt;code&gt;ktl-registrar&lt;/code&gt;): &lt;code&gt;playbooks/releasing.md&lt;/code&gt; rewritten (&lt;code&gt;generated&lt;/code&gt;/&lt;code&gt;verified&lt;/code&gt;
refreshed) - a person no longer picks the version. &lt;code&gt;semantic-release.yml&lt;/code&gt;'s
&lt;code&gt;release&lt;/code&gt; job, behind the &lt;code&gt;release&lt;/code&gt; GitHub Environment, computes it from
Conventional Commits and runs a new &lt;code&gt;.github/scripts/changelog-release.mjs&lt;/code&gt;
as semantic-release's own &lt;code&gt;verifyRelease&lt;/code&gt;/&lt;code&gt;generateNotes&lt;/code&gt;/&lt;code&gt;prepare&lt;/code&gt; hooks:
refuses an empty &lt;code&gt;## [Unreleased]&lt;/code&gt;, uses it as the release notes, retitles
it to a dated heading. &lt;code&gt;@semantic-release/npm&lt;/code&gt; (&lt;code&gt;npmPublish: false&lt;/code&gt;) still
triggers the existing &lt;code&gt;version&lt;/code&gt; script. &lt;code&gt;release.yml&lt;/code&gt; gained a
&lt;code&gt;workflow_call&lt;/code&gt; trigger for the same reason as the sibling plugin;
unchanged otherwise.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Corrected&lt;/strong&gt; &lt;code&gt;services/ktl-curator-plugin.md&lt;/code&gt; and &lt;code&gt;services/settings-tab.md&lt;/code&gt;
after the maintainer had the afternoon's recommendations implemented: with
no bundle roots configured a top-level &lt;code&gt;knowledge_bundle/&lt;/code&gt; is detected on
its own (&lt;code&gt;autoBundleRoot&lt;/code&gt;, identical to KTL Registrar's), and a dot-folder
root is accepted with a live-index check and a warning instead of refused.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;README restructured&lt;/strong&gt; around how an Obsidian user meets a knowledge
bundle - a new &quot;How this fits into an Obsidian vault&quot; section (the bundle
is the vault; a folder inside the vault; derived from a repository and
opened through &lt;code&gt;knowledge_bundle&lt;/code&gt;), where the &lt;code&gt;lokf-agent-skills&lt;/code&gt; come in,
and why a vault is never migrated into a bundle. Corrected the previous
README's claim that a repository root opened as a vault reaches the bundle
through the &lt;code&gt;knowledge_bundle&lt;/code&gt; link: per Obsidian's own help on symbolic
links, a link whose target is inside the same vault is ignored, and a
dot-folder is never indexed. Other OKF validators are now mentioned once,
in an &quot;Alternative plugins&quot; footnote. No concept body changed:
&lt;code&gt;explanation/why-ktl-curator.md&lt;/code&gt; already describes the relationship to
KTL Registrar correctly (siblings, no dependency either way). Targeted pass, not a full
steady-state sweep.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>2026-09-10 · Bootstrap discovery: 1 · Initialization: 1</title>
    <link rel="alternate" type="text/html" href="https://noelmcloughlin.github.io/obsidian-ktl-curator/knowledge/log/#2026-09-10"/>
    <id>https://w3id.org/ktl/curator/knowledge/log#2026-09-10</id>
    <published>2026-09-10T16:08:47Z</published>
    <updated>2026-09-22T23:25:57Z</updated>
    <category term="Bootstrap discovery"/>
    <category term="Initialization"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bootstrap discovery&lt;/strong&gt;: replaced the two placeholder services with 5 &lt;code&gt;Service&lt;/code&gt; concepts (&lt;code&gt;ktl-curator-plugin&lt;/code&gt;, &lt;code&gt;trust-engine&lt;/code&gt;, &lt;code&gt;edits-engine&lt;/code&gt;, &lt;code&gt;curator-view&lt;/code&gt;, &lt;code&gt;settings-tab&lt;/code&gt;) derived from &lt;code&gt;src/*.ts&lt;/code&gt;; added 6 &lt;code&gt;Reference&lt;/code&gt; concepts (the LOKF/OKF specs, the &lt;code&gt;lokf&lt;/code&gt; toolkit, Obsidian's plugin guidelines, and the &lt;code&gt;ktl-curator&lt;/code&gt; skill's &lt;code&gt;trust-fields.md&lt;/code&gt;/&lt;code&gt;review-session.md&lt;/code&gt;); 3 &lt;code&gt;GlossaryTerm&lt;/code&gt; concepts (OKF, LOKF, Diátaxis genre); 1 &lt;code&gt;Policy&lt;/code&gt; (no-telemetry); 1 &lt;code&gt;Explanation&lt;/code&gt; (why KTL Curator exists); and &lt;code&gt;playbooks/knowledge-sources.md&lt;/code&gt; recording where each of these came from, plus &lt;code&gt;playbooks/releasing.md&lt;/code&gt; and &lt;code&gt;playbooks/contributing.md&lt;/code&gt; from &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;. All 17 new concepts are &lt;code&gt;status: draft&lt;/code&gt;, none yet confirmed by a person.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Initialization&lt;/strong&gt;: Scaffolded the LOKF bundle for KTL Curator with placeholder
services. Real concepts to follow.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
</feed>
