Skip to content

Releases

Version 0.14.0

Security

A human:<id> verification is a claim any writer can type, not a credential, and lokf validate passes a forged one since it is well-formed - so “confirmed by a person” was forgeable by anything able to steer lokf-curator or edit the bundle directly.

  • knowledge-registrar.yaml gains a provenance job: every human: actor a PR newly adds under .lokf/knowledge/ needs forge-held evidence - an APPROVED review from that account, or, when they authored the PR, a signature of theirs on the introducing commit, checked via GitHub’s API (a runner has no keyring, so git log %G? can’t do this locally). The load-bearing change; the rest is defence in depth.
  • Solo maintainers take the signature branch (three git config lines, documented in references/automation.md); an optional attestation job gates on a GitHub Environment’s required reviewers instead for a repository that can’t sign - deliberately not a switch that disables the check, since an environment reviewer may be the PR’s own author.
  • lokf-curator resolves identity from gh api user only - the spoofable git config user.name fallback is gone - and Step 2 now refuses to run unattended (CI, a headless session, a subagent, a scheduled task); Step 1 stays read-only and safe anywhere.
  • lokf-sidecar and lokf-curator now report whether commit signing is on before a solo maintainer spends twenty minutes on confirmations the gate will reject, and lokf-curator Step 1 reports a Not tied to a signed commit count on existing human: events - both report only, never touch git config.

Fixed

  • lokf-curator and README.md said LOKF has 14 built-in classes; the installed schema has 15 - Role was missing from every count and enumeration. Corrected in the class list, the vocabulary-fit label, and the “vocabulary stops fitting” paragraph.

Added

  • lokf-sidecar Step 2 now also creates a knowledge_bundle symlink to .lokf/knowledge at the repo root, a visible entry point for folder pickers that hide dot-directories, Obsidian’s “Open folder as vault” among them. templates/gitignore excludes the .obsidian/ folder Obsidian writes through it, and the lint and link checks skip the aliased files.