OKF v0.2 base layer (checkOkfBaseLayer, on by default): checks the plain-OKF v0.2 rules LOKF subsumes (required type, Attested Computation shape, index.md/log.md structure, v0.1→v0.2 migration hints), so a bundle stays checkable without a separate OKF validator. Severity follows the spec (REQUIRED/MUST → error); a settings toggle can downgrade those to warnings mid-migration.
Look up a LOKF field (command): searchable reference of frontmatter fields, sourced from the schema’s own slot definitions so wording never forks.
Generate Obsidian affordances: three commands projecting LOKF facts into Obsidian conventions - #genre tags and ## Related wikilinks in a managed block, plus a diataxis.md Map of Content. Idempotent, marker-delimited.
Inline diagnostics: CodeMirror 6 extension underlines offending frontmatter values (wavy red/amber) with the finding on hover.
Jump-to-line from the report: finding rows are clickable, opening the note with the cursor on the offending key.
Key anchors on findings: new src/locator.ts maps a key path to its line/column in raw frontmatter (prerequisite for underlines/jump).
Incremental re-validation: editing a note re-checks just that note from the metadata cache instead of a full rescan.
Schema-derived vocabulary manifest (src/lokf-vocab.json, npm run build-vocab): default type/predicate/genre vocabulary now derives from the LOKF schema, adding Role and the full 15-value RelationType.
Concept graph + quick-switcher: in-memory index of each concept’s type/id/relations, plus “Find a concept” and “Find an orphan concept” commands.
Trust/lifecycle shape checks (OKF v0.2 §5): validates the shape of verified/generated, status, stale_after, sources - never their credibility depth. All warnings, on by default.
Frontmatter value autocomplete: EditorSuggest for type/genre/status/predicate values and relation targets.
Safe quick-fixes (command + vault-wide variant): applies deterministic corrections (missing base_iri terminator, type aliases, bare-string relations) in one undo step; never guesses owned values.
Promote body links to typed relations (command): guesses a typed relation for body links resolving to another concept, confirmed via a review dialog before writing.
Per-note opt-out: lokf: ignore frontmatter key silences a note while it stays a concept in the graph.
Disable on this device: device-local switch (never synced) that silences the plugin entirely on one device.
Per-rule severity escalation: settings list of rule ids whose warnings become errors; escalation only, never downgrades.
Report context menu, finding grouping, render caps: right-click actions, grouping by top-level key, and a 300-file/100-finding-per-file cap with a filter hint.
Ribbon icon to open the report; last scan is retained across reopens.
Read-only public API at app.plugins.plugins["ktl-registrar"].api: getReport(), validatePath(path), onValidated(cb).
Field aliasing (advanced, off by default): user=canonical pairs rename a vault’s own keys onto LOKF ones before validation.
Node-tested throughout: locator, vocabulary manifest, concept graph, §5 checks, autocomplete, safe fixes, body-link promotion, opt-out, severity escalation, report filter, grouping, and field aliasing all carry smoke-test coverage.
Changed
Severity icons in the report via setIcon instead of spelled-out words.
Keyboard-operable collapse/expand in the report (role="button", aria-expanded, Enter/Space, focus ring).
Aligned three rules with upstream LOKF PR #69: base_iri may end in #; the by actor check matches the schema’s exact pattern; http_method is no longer a recommended-field warning on a Service.
@codemirror/state/@codemirror/view moved to devDependencies (types only; external at runtime).
tsconfig.json enables resolveJsonModule for the bundled vocabulary manifest.