Bundle log
A feed reader can follow this log: log.xml holds its newest 20 days.
2026-10-29
Section titled “2026-10-29”- Changed: LOKF Toolkit gives the
>=0.9.0floor that.lokf/pyproject.tomlnow declares and pins its fallback schema to the commit tagged v0.9.0; Validator Engine lists fourteen relation fields withisReplacedBy.
2026-10-27
Section titled “2026-10-27”- Changed: Contributing says what a pin move copies, from
knowledge-sync.shandknowledge-sync.yaml: each template the release’sknowledge-sync.manifestlists that the repository carries, the site’s templates, and the workflow changes held back for a person. - Changed: the source map’s contributing row names
knowledge-sync.shandknowledge-sync.yaml, and its sync gap note points to the contributing playbook for what a pin move copies. - Changed: Contributing now describes the skills pin moving through the weekly
knowledge-sync.yamlpull request, asCONTRIBUTING.mdhas said since #103, in place of the retired by-hand copy step. - Resolved:
CONTRIBUTING.mditself now describes the automated weekly sync (#103), so the playbook follows that wording rather than choosing between the two. - Changed: Knowledge registrar gate’s validate job now runs
lokf-check-refsthroughuv run --locked just, since.lokf/uv.lockpinsrust-just, with theuvxform kept only as the fallback for a host whose lock does not. - Changed: Scheduled librarian now says the wrapper sets
KNOWLEDGE_PEN_DRY_RUN_ONLY=1while the agent runs, so the pen itself refuses to apply a patch early and leaves the file forpublishto apply. - Changed: the source map’s
knowledge-sync.yamlgap row no longer saysSECURITY.mdleaves the workflow out, since #103 added it to the surface table.
2026-10-26
Section titled “2026-10-26”- Changed: the bundle index says w3id.org resolves
https://w3id.org/ktl/registrar/knowledge/, as the docent reported on 2026-10-17; it had said the rule was pending.
2026-10-18
Section titled “2026-10-18”- Changed: Knowledge registrar gate is related to the registrar in Knowledge Trust Ladder’s bundle, the role that concept says
knowledge-registrar.yamlplays; the first link from this bundle into another member of the KTL federation. - Changed: links to Knowledge Trust Ladder’s docs pages and to KTL Curator use their w3id.org addresses, as
CONTRIBUTING.md,SECURITY.mdanddocs/install.mdnow do. - Question: the contributing playbook’s pin rule counts three sidecar workflows, and the sync script now copies whatever the release’s manifest lists,
knowledge-sync.yamlamong them. - Changed: the source map lists
knowledge-sync.yamland its pull request template, which the sidecar syncs added, as a gap with no concept.
2026-10-17
Section titled “2026-10-17”- Changed: the Diátaxis genre term now says its
genre: referencetag sits in its own frontmatter; it had placed the tag in the bundle’s root header, which carries none.
2026-10-16
Section titled “2026-10-16”- Prose: reworded 15 concept bodies in plain English. No fact, link, number or frontmatter changed.
- Changed: Quality Gates; the paragraph on
MD024and the ignored folders no longer runs on from the last list item, so Markdown shows it as a paragraph of its own. - Changed: Validator Engine; the paragraph on the REQUIRED
generated.byand sourceresourceno longer runs on from the last list item, so Markdown shows it as a paragraph of its own. - Changed: Why KTL Registrar names the
okf/*findings where the base-layer switch turns them off, now that the switch has a paragraph of its own. - Changed: Why KTL Registrar’s section on the OKF base layer is split into three paragraphs, one each for severity, the conformance switch and the base-layer switch.
- Changed: Contributing now names
.github/workflows/build.ymlas a source, since it saysnpm run checkruns the same three steps that workflow runs. - Changed: Why KTL Registrar now says that turning off Enforce OKF conformance as errors, on by default in
src/settings.ts, downgrades the OKF errors to warnings, as the rewordeddocs/for-the-curious.mdputs it. The sentence after the list of checks is now its own paragraph. - Added: Install KTL Registrar, from
docs/install.md, which the source map listed as a gap. - Changed: the source map now lists
docs/install.mdas the source of Install KTL Registrar and no longer as a gap, namesbuild.ymlbesideCONTRIBUTING.md, and leaves out.gitignore,.npmrc,package-lock.json,styles.cssand the generatedsrc/lokf-vocab.jsonon purpose. - Changed: the bundle’s
base_irimoved from the placeholderhttps://ktl-registrar.example/knowledge/tohttps://w3id.org/ktl/registrar/knowledge/, 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. - Changed: Quality Gates now says that
.markdownlint-cli2.jsoncignores the folders the knowledge website generates, as it does since #74. - Changed: LOKF Toolkit now gives the
>=0.8.0floor that.lokf/pyproject.tomldeclares, not 0.7.0, and pins its fallback schema to the commit tagged v0.8.0 instead ofmain. - Rewrite: LOKF Toolkit now says that
lokf-installrunsuv syncwhile the other recipes runuv run lokf, and that the website’s sync runslokf export, from.lokf/justfileandwebsite/README.md. - Added: Knowledge Website, from
website/README.md,website/site.config.mjsand.github/workflows/knowledge-website.yaml, which #74 added. - Changed: the source map now lists
website/andknowledge-website.yamlas the sources of Knowledge Website,.lokf/pyproject.tomland.lokf/justfileas the sources of LOKF Toolkit, and says the README links the docs pages on the website. - Prose: reworded 16 concept bodies in plain English. No fact, link, number or frontmatter changed.
2026-10-15
Section titled “2026-10-15”- Changed: the OKF specification moved to
GoogleCloudPlatform/open-knowledge-format, which still serves v0.2; theknowledge-catalog/okf/copy is frozen. - Rewrite: Why KTL Registrar, after the README became a doorway; the reasoning now comes from
docs/architecture.mdanddocs/for-the-curious.md, and the history of removed designs is gone. - Changed: Why KTL Registrar now names
docs/for-the-curious.mdas its resource and the architecture and using pages as sources. - Rewrite: Contributing, from the current
CONTRIBUTING.md: Node versions, the codemirror override, the skills pin with its SHA and sidecar copies, and the releasing pull request title. - Changed: Contributing now names
scripts/smoke-test.tsas a source for the word budgets. - Rewrite: Knowledge registrar gate; the validate job now runs the justfile recipe, provenance reads whole events added, changed or removed, and a second step checks signatures against
.lokf/curators/keys. - Changed: Knowledge registrar gate’s description now says the gate also reads confirmations a change alters or removes.
- Rewrite: Quality gates;
MD060is the sixth disabled markdownlint rule, actionlint ignores thecopilot-requestsscope, and Dependabot holds back three majors. - Changed: Quality gates now names the markdownlint config and the Dependabot file as sources.
- Changed: Releasing now records the plan job’s changelog and title checks, takes the protection of
mainfromSECURITY.md, and lists the release workflows as sources. - Rewrite: Scheduled librarian; the workflow now has three jobs, the agent’s one output is
.lokf/patch.yaml, a quiet week runs no agent, andpublishalso refuses a change to a person’s record. - Changed: Scheduled librarian now lists the wrapper script,
SECURITY.mdandAI_COVENANT.mdas sources. - Rewrite: Knowledge sources now maps today’s files, with the README split into the docs pages; the dated pass notes are gone, and
knowledge-release.yaml,docs/install.mdandllms.txtare listed as gaps. - Changed: Knowledge sources’ description now names the left-out files and the gaps.
- Rewrite: No telemetry, now drawn from the Privacy section of
docs/architecture.mdand fromSECURITY.md, since the README became a doorway. - Changed: No telemetry now names
docs/architecture.mdas its resource. - Rewrite: AI covenant; the file is adapted from knowledge-trust-ladder’s covenant, not a verbatim copy, as its closing note says.
- Changed: AI covenant’s description now follows the covenant’s own section names.
- Rewrite: Code of conduct; the file says it is adapted from Contributor Covenant 2.1, so the claim that it is unmodified is gone.
- Changed: Code of conduct’s description now says the covenant is adapted.
- Rewrite: Commands and settings, from
docs/using.mdnow that the README is a doorway; the command ids still come fromsrc/main.ts. - Changed: Commands and settings now names
docs/using.mdas its resource andsrc/main.tsas a source. - Changed: OKF specification’s description now names the specification’s version and its trust and lifecycle fields.
- Changed: Obsidian plugin guidelines’ description now names the guidelines the lint rules enforce here.
- Changed: LOKF glossary term gains a description, so its index bullet says what it defines.
- Changed: OKF glossary term gains a description, so its index bullet says what it defines.
- Changed: Diátaxis genre glossary term gains a description, so its index bullet says what it defines.
- Changed: KTL Registrar plugin now points at
docs/using.mdanddocs/architecture.md, where the README’s material moved;src/main.tschanged only names and the ribbon icon. - Rewrite: Settings tab; the group headings are now spelt as
src/settings.tsspells them, the full list of comma-separated settings is named, and the break-glass toggle is quoted from its own description. - Changed: Settings tab now names
src/vocab.tsas a source for the vocabulary refresh rule. - Rewrite: Validator engine; it checks the OKF v0.2 base layer itself, reports lokf 0.8.0’s pattern failures as errors, and covers thirteen relation fields with
measures,memberOfandholder. - Changed: Validator engine’s description now names the OKF base layer and the errors shared with
lokf validate.
2026-09-24
Section titled “2026-09-24”- Future-dated times corrected. 6
process:ktl-librariantimes 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. - The signing setup moved to its own page in the skills.
knowledge-trust-ladder split the registrar gate out of
automation.mdintogate.md, soplaybooks/knowledge-registrar-gate.mdnow points there for the signing setup.
2026-09-23
Section titled “2026-09-23”-
The docent records a reader’s gap without reading the file it goes in.
.lokf/feedback.mdis 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 carriesknowledge-feedback.sh: the docent hands over its own entry and never opens the file. The script comes from thev0.23.0templates, the release that ships it, and the pin moved to that tag with it. -
The scheduled librarian installs its skill from a tag that has it. The pin still read
v0.21.0, where the skills are namedlokf-*; the rename toktl-*landed inv0.22.0. The install step copiesskills/ktl-librarianand is not gated onKNOWLEDGE_LIBRARIAN_ENABLED, so every weekly run has been failing there since the plugin took the KTL name, armed or not. The pin moves tov0.23.0, the release that also shipsknowledge-feedback.sh. The scripts under.lokf/scripts/andknowledge-registrar.yamlall match its templates.
2026-09-19
Section titled “2026-09-19”-
The logo now carries knowledge and trust. The first mark was three rungs alone: it drew ladder 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.
-
Both diagrams carry the mark and the wordmark in the top-left corner, from the same shared definition.
-
Text that collided with its own box. A headless-Chrome pass measured every label against its enclosing card: the curator card’s “a few at a time” 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.
-
Assets restacked, and the family logo added. 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
#E4E1D7and the faint ink#6E6D66, which also lifts 10px grey labels past 4.5:1. New.assets/knowledge-trust-ladder-logo.svg, identical in all three repositories. The.assets/*.svgsource-map row covers it. -
Skills repository renamed to
knowledge-trust-ladder, fromlokf-agent-skills, because upstream LOKF now ships its own bundled skills. Every deep link and the scheduled librarian’sLOKF_SKILLS_REPOfollow it, in one mechanical pass; noverifiedevent changed. This plugin’s own name, id andbase_iriare 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, asCHANGELOG.mddoes. -
Reference audit moved onto the toolkit’s own flag:
just lokf-check-refsran a hand-written SPARQL query over ten relation predicates, which reported an externalsource:ordefinedBy:URL - correct usage for both slots - as a dangling target, and had drifted against the schema (missingholder,measures,memberOfand reifiedrelations). It callslokf validate --check-refsnow, 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 throughuvx ... just: the gate’s third step is gone and--check-refsrides on its validate step, That change has not reached the skills template yet, so this copy is ahead of it and the preflight’scopiesline reports the file as drifted until it does. That concept described the recipe while citing only the workflow andSECURITY.md, so.lokf/justfileis now one of itssources.
2026-09-18
Section titled “2026-09-18”- Sidecar brought up to the skills templates: the scripts here were the
pre-0.19 copies, so the wrapper lacked the
EXIT-trap restore and the registrar gate still read confirmations by theirby:line. Synced all five scripts, added.gitattributes, and bumpedLOKF_SKILLS_REFfromv0.9.0tov0.19.2. The release workflow now checks release notes and the pull request title on a releasing pull request.
2026-09-14
Section titled “2026-09-14”-
Steady-state refresh, against this session’s uncommitted
SECURITY.mdrewrite (matching the same change already committed inlokf-agent-skillsandobsidian-ktl-curator): its design content moved to the skills repository’s newdocs/threat-model.md. Two concepts had cited it by a now-gone section heading -playbooks/scheduled-librarian.md(“The librarian workflow: what is inherited, what this repository owns”) andplaybooks/knowledge-registrar-gate.md(“The attribution gate is installed”) - both corrected to link the threat model’s anchors directly.playbooks/knowledge-sources.md’sSECURITY.mdrow updated to match. -
Steady-state refresh (librarian pass, no
.lokf/feedback.mdpresent), against the now-committedchore/known-types-docs-and-coveragebranch (git status clean). Two real drifts found and fixed:playbooks/knowledge-registrar-gate.md’svalidatejob paragraph still described onlyuv run lokf validate knowledge, missing the two steps commit80bd8b0added to that same job (scripts/knowledge-conventions.shanduvx ... just lokf-check-refs) - that commit updated the workflow, the new script andCHANGELOG.mdbut not this bundle.services/settings-tab.mdandreferences/commands-and-settings.mdboth listed the settings-tab group order as... Semantic header & base_iri, Relationships, OKF v0.2 base layer, Trust & lifecycle, Rule severity ...;src/settings.ts’s actualheading:order is... Semantic header and base IRI, OKF v0.2 base layer, Trust and lifecycle, Relationships, Rule severity ...- both concepts corrected to match. Re-verified against source with no change needed:playbooks/contributing.md(CONTRIBUTING.md’s dev-setup, layout, and pre-PR checklist sections),references/commands-and-settings.md’s command table (all 15addCommandids insrc/main.tsmatch),services/ktl-registrar-plugin.md(thevocab.tssettings-merge paragraph). Orphan sweep: no new file undersrc/,docs/,.github/workflows/, or the repository root beyond whatplaybooks/knowledge-sources.mdalready accounts for.just lokf-validate(22/22),just lokf-check-refs, andbash scripts/knowledge-conventions.shall pass. -
Steady-state refresh (librarian pass, no
.lokf/feedback.mdpresent), against this session’s further uncommitted working-tree change on top of the earlier pass below:CONTRIBUTING.mdrewritten again, this time from a design log back into a checklist under a 1000-word budget, with the release walkthrough moved out tolokf-agent-skills’docs/releasing.mdanddocs/signing-commits.md(both confirmed present);npm run checkadded (build && lint && smoke-test, matchingbuild.yml); fourobsidianmdsettings-tab/createEllint rules promoted from warning to error ineslint.config.mts;lint-and-docs.yamlgained an action-pinning step inlint-workflowsand, withbuild.yml, narrowed itspushtrigger from every branch tomainonly; andscripts/smoke-test.tsgained a drift guard checking CONTRIBUTING’s own word count and its import-free module list against what the suite actually imports.playbooks/contributing.mdrewritten to match;playbooks/quality-gates.mdcorrected (trigger, the new pin-check step).explanation/why-ktl-registrar.mdgains a short addition: the README’s new three lines of defence framing (linkingdocs/three-lines.md) places this plugin on the second line. Re-verified, no content change:playbooks/releasing.md(CONTRIBUTING.md’s own release section is now a pointer elsewhere, butsemantic-release.yml/release.yml, the concept’s real facts, are unchanged).playbooks/knowledge-sources.md: a run note, a neweslint.config.mtsrow, and thepackage.jsonrow extended to cover npm scripts. Orphan sweep: no new file undersrc/,docs/,.github/workflows/, or the repository root. PyPI’slokfis still0.7.0, matching thepyproject.tomlfloor - no bump.just lokf-validate(22/22) andjust lokf-check-refsboth pass. -
CONTRIBUTING.mdand its concept disagreed with the code, found on a whole-repository librarian pass. The document still said “npm run smoke-testonly coversvalidator.ts” and listed only foursrc/files, after the suite grew to ten import-free modules and the settings merge rule moved intovocab.tsprecisely so a test could reach it. The source is corrected (avocab.tsrow, the real module list, and the reason logic leavesmain.ts) andplaybooks/contributing.mdre-derived from it.services/ktl-registrar-plugin.mdgains the same fact forloadSettings, which the bundle had recorded only in this log. -
Steady-state refresh (librarian pass, no feedback pending) against the uncommitted
chore/known-types-docs-and-coveragebranch, where Known LOKF types is documented - settings description, README,docs/for-the-curious.md- as the extension point for a bundle validated against a domain schema.services/settings-tab.mdsays so, with the two facts the code already held: a customised list is never refreshed to the manifest, and the type-specific field checks key on the exact class name.references/commands-and-settings.md: the README bullet. Re-verified, no change:explanation/why-ktl-registrar.md.playbooks/knowledge-sources.md: run note. -
Coverage pass on the same branch, no behaviour change: the settings merge rule moved from
main.tsinto the purevocab.ts(mergeSavedSettings, plusvocabFromManifestso the malformed-manifest fallbacks are reachable from a test); 277 to 324 expectations; the two golden fixtures now pin their warning counts. This map’sscripts/smoke-test.tsrow was stale - it asked a future run to confirm the suite “imports only from../src/validator”, untrue as the plugin grew - and now names the import-free modules it may draw on.
2026-09-13
Section titled “2026-09-13”-
Steady-state refresh (librarian pass, no feedback pending), after a
ktl-sidecarrepair pass that restored.lokf/justfile’slokf-check-refsrecipe and laid theknowledge_bundledoorway link. Re-verifiedplaybooks/scheduled-librarian.mdandplaybooks/knowledge-registrar-gate.mdagainst the now-committed workflows; the gate concept now says its copy also rewords theprovenancejob’s signing comment, not onlypersist-credentials: false.playbooks/knowledge-sources.md:.assets/row and run note added. -
Steady-state refresh (librarian pass, no feedback pending), against the 1.1.0 release commits and this session’s uncommitted working tree: the README rewritten around usage (two vaults, quick start, commands, Which folder is the bundle),
SECURITY.mdrestructured to inherit the guard design fromlokf-agent-skills, andknowledge-registrar.yamlgaining the template’sprovenanceandattestationjobs. Addedplaybooks/knowledge-registrar-gate.mdfor that gate - a real gap: the workflow had no source-map row and no concept. Correctedpolicies/no-telemetry.md(it still named the header command as the plugin’s only write; the README has listed the safe-fix, promote-relations, affordance and report-action writes for some time - drift older than this session),explanation/why-ktl-registrar.md(the alternatives footnote now sits beneath the credits, and the warnings-not-errors argument isdocs/for-the-curious.md’s longest section, not the README’s),playbooks/scheduled-librarian.md(theif:guard on therefreshjob’s write-scope step;SECURITY.md’s renamed section and its links out to the skills repository) andplaybooks/releasing.md(required status checks deliberately off, perCONTRIBUTING.md/SECURITY.md) andreferences/lokf-specification.md(itsdefinedBypointed at the spec’s own URL rather than a concept, the one dangling target the hand-run reference check found;derivedFromthe OKF spec instead; “14 classes” corrected to 15; and it still said Rule 6’s trust fields were left to a separately installed OKF validator - the design abandoned on 2026-09-12, since when the plugin checks their shape itself). Re-verified, no change:references/commands-and-settings.md(command table and settings groups identical in the rewritten README) andplaybooks/contributing.md. Drift audit (reported, not fixed - ktl-sidecar’s job):.lokf/justfilelacks the template’slokf-check-refsrecipe (its query run by hand this pass, clean after the fix above);knowledge-librarian.yamldiffers from its template in comments only, beyond the deliberatepersist-credentials: false;knowledge-registrar.yamldiffers by that line alone.lokfon PyPI is still0.7.0, matching the floor. -
Steady-state refresh (librarian pass, no feedback pending): re-verified
policies/no-telemetry.md,references/commands-and-settings.md,services/settings-tab.mdandservices/ktl-registrar-plugin.mdagainstREADME.md,src/main.tsandsrc/settings.tsafter this session’s README-notice rewording, the header command’s new two-choice modal (src/scaffold-modal.ts), and the sidecar’s.lokf/justfile/workflow comments following the currentktl-sidecartemplates. All four already matched - the command table, the break-glass setting’s description and the no-bundle state were corrected in an earlier pass this session - so only each concept’sverifiedevent was refreshed; no content changed.src/scaffold-modal.tsis not given its own concept: it is a small UI helper ofktl-registrar-plugin.md, already described there under “Insert the bundle’s semantic header”.playbooks/quality-gates.mdandplaybooks/releasing.mdwere not re-checked this run - their resources (lint-and-docs.yaml,CONTRIBUTING.md) were untouched this session.
2026-09-12
Section titled “2026-09-12”-
Steady-state refresh (librarian pass, no feedback pending): corrected drift against this session’s “no bundle” state and break-glass
treatVaultRootAsBundlesetting (src/main.ts,src/validator.ts,src/settings.ts) -services/ktl-registrar-plugin.mdandservices/validator-engine.mddescribed the old always-a-whole-vault fallback and the renamedautoBundleRoot/implicitBundleRootsfunction under its previous name;services/settings-tab.mdhad no mention of the break-glass toggle at all.references/commands-and-settings.md’s command table was corrected wholesale againstsrc/main.ts: it named 12 ids that do not exist in the source (find-orphan,lookup-field,goto-finding,fix-safe-active/fix-safe-vault,promote-links,affordances-active/affordances-vault/diataxis-map) in place of the 15 the plugin actually registers - a pre-existing drift this session’s changes only made more visible, not one this session caused. -
Corrected
playbooks/scheduled-librarian.mdagainst this session’s security hardening of the scheduled-agent workflow: a third, independent write-scope re-derivation in thepublishjob (on a checkout that never shared a workspace with the agent), a guard refusing any patch that adds aby: human:claim, and the wrapper script’s.git/config/.git/hookssnapshot-and-restore around the agent call - all newly documented inSECURITY.mdthis session. -
Extended
playbooks/knowledge-sources.mdwith a row for the newdocs/for-the-curious.md(the former README “For the curious” section, moved out this session) and an orphan-sweep note forsrc/’s implementation-detail files and a handful of repo-plumbing files, both consciously left without their own concepts. Addeddocs/for-the-curious.mdtoexplanation/why-ktl-registrar.md’ssources, alongsideREADME.md. -
Re-verified (no drift):
playbooks/contributing.md,policies/no-telemetry.md,playbooks/quality-gates.md.playbooks/releasing.mdwas already current from earlier the same day. PyPI’slokfis still at0.7.0(checked via the PyPI JSON API;uv pip index versionsis not a subcommand of this environment’suv 0.12.11) - nopyproject.tomlfloor bump needed. -
Semantic-release, hardened (maintainer decision):
playbooks/releasing.mdrewritten (generated/verifiedrefreshed) - a person no longer picks the version.semantic-release.yml’sreleasejob, behind thereleaseGitHub Environment, computes it from Conventional Commits and runs a new.github/scripts/changelog-release.mjsas semantic-release’s ownverifyRelease/generateNotes/preparehooks: refuses an empty## [Unreleased], uses it as the release notes, retitles it to a dated heading.@semantic-release/npm(npmPublish: false) still triggers the existingversionscript, somanifest.json/versions.jsonupdate exactly as before.release.ymlgained aworkflow_calltrigger so the resulting tag reaches it without relying on a bot-pushed tag re-triggering its ownpush:event; unchanged otherwise, including for a hand-pushed tag. semantic-release is installed at pinned versions inside the workflow, never added topackage.json. -
Name and identity recorded (maintainer decision):
why-ktl-registrar.mdgains a “Why the name” section andktl-registrar-plugin.mdan “Identity” section (API path, device key,generated.byactor); bothgeneratedrefreshed.NOTICEno longer calls the plugin a companion to a separate OKF validator - it checks the base layer itself.references/okf-specification.mdcorrected in passing: the plugin has checked requiredtypeand Attested Computation shape itself since 0.4.0, which that concept still denied. -
Corrected
services/ktl-registrar-plugin.md,services/settings-tab.md,references/commands-and-settings.mdafter the maintainer had the afternoon’s feature-fit audit implemented:diataxis.mdis now written as aDocumentwith a mintedidandgenerated.by: ktl-registrar/<version>(the earlier headerless map madelokf validateabort a run); with no bundle roots configured a top-levelknowledge_bundle/is detected on its own (autoBundleRoot); a dot-folder root is accepted with a live-index check and a warning instead of being refused. The## Open questionssection on the plugin concept is replaced by the record of what changed. -
Corrected
services/ktl-registrar-plugin.md,services/settings-tab.md,references/commands-and-settings.md, and rewroteexplanation/why-ktl-registrar.md: the plugin no longer detects, recommends, or deep-links to any other OKF validator. The commented-outdetectOkfValidator, the one-time notice (recommendOkfValidator/okfValidatorNoticeShown), and the “Alternative OKF validator” settings group were removed fromsrc/main.ts,src/settings.ts, andsrc/validator.tsat the maintainer’s direction: with the OKF v0.2 base layer checked here, a separate validator is an alternative worth a footnote, not a companion, and the only plugin this one names is its sibling KTL Curator.README.mdwas restructured the same day around how an Obsidian user actually meets a bundle (the bundle is the vault; a folder in the vault; derived from a repository and opened viaknowledge_bundle) and now states, per Obsidian’s own help on symbolic links, that a repository root opened as a vault cannot reach the bundle through the link - the previous README’s contrary claim was wrong. The smoke test’s first header fixture, formerly a verbatim copy of another project’sindex.md, is now a neutral example; the frozen template fixture moved fromscripts/fixtures/scaffolding-skeleton/toscripts/fixtures/sidecar-skeleton/named for the upstreamktl-sidecarskill. Command table inreferences/commands-and-settings.mdextended to the commands the README documents. Not a full steady-state sweep - concepts untouched by these changes were not re-checked.
2026-09-11
Section titled “2026-09-11”-
Corrected
services/validator-engine.md,services/ktl-registrar-plugin.md,services/report-view.mdagainst the six-bug correctness pass onsrc/*.ts: the rule engine now warns on a bare scalar where the schema requires a list (the same bug class fixed in this bundle’s own concepts on 2026-09-09, recurring independsOnet al.), on a non-stringtype, on an unnormalizedexcludeFoldersentry, and closes a:portbypass in the authority-denylist check; Validate active note now tells the user why when it does nothing (excluded, or outside every bundle root); and the report panel’s “N clean” count no longer subtracts bundle-level findings that were never one of the scanned files. -
Added
playbooks/scheduled-librarian.md(status: draft): theknowledge-librarian.yamlworkflow’s two-job privilege split (a read-only agent job with no persisted credentials, handing a patch to a privileged job that runs no agent code) had no concept at all, despite being the most security-sensitive workflow in the repo -SECURITY.mddocuments it in prose but nothing in the bundle traced back to it. -
Added
policies/ai-covenant.md,policies/code-of-conduct.md(bothstatus: draft): two governance documents new since the last pass, adopted verbatim from the siblinglokf-agent-skillsrepository. -
Extended
playbooks/quality-gates.md: added.github/dependabot.yml, the mechanism that actually keeps the gate’s own SHA pins from going stale (actionlintcatches syntax drift, never staleness). -
Updated
playbooks/knowledge-sources.mdwith source-map rows for all of the above, and re-checked the PyPIlokffloor (still0.7.0, no bump needed). -
Corrected
services/ktl-registrar-plugin.md,references/commands-and-settings.md: both described a fourth command,check-sibling-plugin, “re-checking for an installed OKF validator” viaapp.plugins. That detection (detectOkfValidator) is commented out insrc/main.ts- not a public API, flagged in community-plugin review - and was never wired to a command; only three commands exist (validate-vault,validate-active,scaffold-root-header), and the sibling notice now fires unconditionally rather than only when the sibling is absent.README.mdalready stated this correctly; only the bundle’s own concepts had drifted. -
Corrected
services/report-view.md: attributedprocessQueue/batch size 50 tosrc/report-view.tsitself. That batching lives insrc/main.ts(seektl-registrar-plugin.md) and the batch size is the user-configurablebatchSizesetting, not a hardcoded constant;report-view.tsonly renders the progress bar it’s driven with. -
Added
playbooks/quality-gates.md(status: draft): the.github/workflows/lint-and-docs.yamlCI workflow (ShellCheck, actionlint, markdownlint-cli2 +.markdownlint-cli2.jsonc, lychee, codespell) had no concept and wasn’t in the source map, despite being committed since 2026-09-08 (e735ffe). Extendedknowledge-sources.mdwith a row for it and its markdownlint config. -
Re-verified:
playbooks/contributing.md(enriched to describe the git-ignored-main.js“Failed to load plugin” failure mode, matchingCONTRIBUTING.md’s newly added guidance),playbooks/releasing.md,services/validator-engine.md,services/settings-tab.md,policies/no-telemetry.md,references/lokf-toolkit.md(PyPIlokfstill at0.7.0-pyproject.toml’s floor needs no bump) - no other drift found. The three external-spec-URL references (LOKF spec, OKF spec, Obsidian plugin guidelines) and the glossary/explanation concepts were not re-fetched this run and remain unverified.
2026-09-10
Section titled “2026-09-10”-
Corrected the bundle header’s
publisher.id: it declaredtype: Personbut minted underorg/(.../knowledge/org/noelmcloughlin); nowperson/noelmcloughlin, the convention the siblinglokf-agent-skillsbundle uses. The plugin’s own scaffold template (src/main.ts,scaffold-root-header) carried the same mismatch and was fixed alongside. -
Corrected
playbooks/releasing.md’sresource: it describes the PR-based version-bump flow now citesCONTRIBUTING.md.
2026-09-09
Section titled “2026-09-09”-
Bug fixed: 6 concepts carried a bare-scalar value on a multivalued typed-relation field (
definedByonglossary/lokf.md,glossary/okf.md,references/lokf-specification.md;relatedToonreferences/lokf-toolkit.mdandservices/validator-engine.md;isPartOfonservices/report-view.md,services/settings-tab.md,services/validator-engine.md) - the same bug class the 2026-09-08 audit found and fixed elsewhere had recurred.just lokf-validatenow passes again (17/17 concepts). Caught only after bumping thelokftoolkit floor from>=0.5.0to>=0.7.0in.lokf/pyproject.toml(latest PyPI release; no breaking changes noted) surfaced it under the newer generated schema. -
Re-verified: all 9 resource-bearing concepts backed by a repo-local file or by
README.md(both plugin services, both playbooks with a repo doc resource,references/commands-and-settings.md,policies/no-telemetry.md) against their current sources - no drift found - plusreferences/lokf-toolkit.mdagainst the live PyPI listing. Recorded aprocess:ktl-librarianverifiedevent on each. The three concepts whoseresourceis an external spec URL (LOKF spec, OKF spec, Obsidian plugin guidelines) were not re-fetched this run and were left unverified.
2026-09-08
Section titled “2026-09-08”-
Added
references/lokf-toolkit.md: the.lokf/pyproject.tomltoolkit dependency (thelokfPyPI package, or its raw LinkML schema as a no-Python fallback) was previously conflated with the specification website in this bundle’s own prose (.lokf/README.mdcalled the website “the toolkit that does the turning”). Split into its own Reference concept,relatedTo-linked fromservices/validator-engine.md, and fixed the website/toolkit conflation in.lokf/README.md. -
Gap closed: the version-history gap flagged in Knowledge sources -
manifest.json/thev0.2.0git tag ahead ofversions.json/CHANGELOG.md- was fixed in the host repo (versions.jsonnow records0.2.0;CHANGELOG.mdhas a## [0.2.0]entry). Updated the playbook to stop reporting it as open. -
Initialization: Bootstrap discovery pass. Scaffolded the LOKF bundle and populated it with 16 concepts derived from the obsidian-ktl-registrar repository: 4 services (plugin, validator engine, report view, settings tab), 4 references (LOKF spec, OKF spec, Obsidian plugin guidelines, commands and settings), 3 glossary terms (LOKF, OKF, Diátaxis genre), 3 playbooks (knowledge sources, contributing, releasing), 1 policy (no telemetry), and 1 explanation (why KTL Registrar exists as a layered add-on).
base_iriis a placeholder (ktl-registrar.example) pending a real, owned namespace.