lokf-curator/references/domain-schemas.md gains “When the domain already has a schema”: a domain schema imports a domain’s existing LinkML vocabulary beside LOKF’s rather than re-describing it. Whether provenance fields belong on domain records is left to the domain’s owners and OKF.
lokf-scaffolding renamed lokf-sidecar, matching what it produces: directory, frontmatter, install commands, this repository’s own bundle, and every cross-reference. A bundle already laid down needs nothing - the files it wrote are identical.
Corrected Obsidian guidance for knowledge_bundle: the link is opened itself as a vault, never the repository root (Obsidian skips a symlink resolving inside the vault it’s indexing, and never indexes a dot-folder). Linking a repository’s .lokf/knowledgeinto a personal vault - the reverse direction - is supported and now documented.
README.md gains “Where the skills meet an Obsidian vault”: the bundle’s two names and which is real per host, a plugin-for-skill table, and the vault-as-workshop/bundle-as-exhibition framing. “The fifth role” no longer calls LOKF Curator a registrar: it is the curator’s assistant, and the curator is always a person.
LOKF Enforcer is now LOKF Registrar (repository obsidian-lokf-registrar), renamed for its role before its first release, wherever the README, the skills and this repository’s bundle name it.
Added
lokf-sidecar lays the bundle down by host. Two names, one real folder: .lokf/knowledge (what the tools address) and knowledge_bundle (what people and Obsidian open). A code repository keeps the hidden folder real with knowledge_bundle as the doorway link; a notes vault or shared folder (Step 0 asks) makes knowledge_bundle/ real and .lokf/knowledge the link - detected by both plugins with nothing to configure.
just lokf-link recreates the visible layout’s link where a sync service drops it, follows a new visible variable for a vault nested inside its repository (e.g. ../vault/knowledge_bundle), and refuses a dangling link instead of failing on ln.
scripts/test-sidecar-layouts.sh, run by the repository-contract check: builds throwaway hosts in both layouts and pins the wrapper’s boundary check, the librarian workflow’s change detection and packaging, the registrar’s triggers, and lokf-link, all against both bundle names.
lokf-librarian now leaves LOKF Registrar’s Obsidian affordances alone by rule - the <!-- lokf:related --> block and the diataxis.md map - and addresses the bundle by both paths when scoping a diff or PR.
Semantic release, version and changelog only: the version is computed from Conventional Commits on main, and CHANGELOG.md’s ## [Unreleased] section is promoted into a dated heading. It never tags - gh skill publish remains the one tag creator - and publish.yml now refuses a typed version that disagrees with what was promoted. See docs/releasing.md.
Fixed
The librarian wrapper and both workflow templates name the bundle under both.lokf/knowledge and knowledge_bundle: a git pathspec never traverses a symlink, so the visible layout previously went undetected. git add is guarded against a pathspec matching nothing.
Windows guidance now prefers a junction (mklink /J, no elevated rights, followed by Obsidian like a symlink) over the Developer-Mode mklink /D note.