Changelog

What has landed in lore so far, distilled from the CLI repository’s own CHANGELOG.md, newest release first.

0.12.0 — 2026-09-29

Added

  • lore query --across-refs reads your bundle across refs without writing anything: a document that lives on an open pull request or another branch is found and labelled with the ref it came from, every answer reports its own coverage, and two copies of an id that differ are shown side by side rather than merged.
  • lore check reports an agent-profile-capacity finding for an agent profile whose declared sources cannot fit its max_tokens budget, naming the sources that cannot fit — a warning for one release, then an error.

Changed

  • Breaking: lore now refuses to drive a quest that is not its exact pair version — the two CLIs carry one version number in every release, and a mismatch fails with a message naming both installed versions and which side to upgrade.
  • Breaking: lore init detects a tracker, offers, and instructs — it never installs or initializes one for you. A missing tracker CLI or an uninitialized project now stops with the exact commands (install pinned to lore’s own version, then quest init), and --install-tracker / --no-install-tracker are accepted as no-ops for one release.
  • Breaking: lore check now fails on the error-tier quote-safety findings lore validate already reports — an unquoted YAML 1.1 boolean like yes or on, a value that starts with a YAML indicator character, or a value containing a colon followed by a space. Run lore validate to preview what will now fail.
  • Breaking: the pinned runtime moves from Bun 1.3.14 to 1.4.2, and the declared support floor with it; a dotted lore replace --in pattern now descends into dot-directories instead of matching nothing.
  • lore read now renders the markdown body — headings, emphasis, lists, quotes, code and tables — when stdout is a terminal; piped output, --plain and --json stay byte-for-byte unchanged.
  • lore now reads quest’s terminal statuses from the configured status flow, so a task in your tracker’s own closed status counts as complete for Story/Task coupling and lore check.
  • A profile anchor on a heading nested inside a blockquote or a list item now resolves instead of crashing lore agent context.

0.11.0 — 2026-09-27

Added

  • Two new built-in document types for governance: lore new constitution scaffolds a Constitution (principles, governance, and an amendment log), and lore new constants scaffolds a Constants catalogue of named values, each checkable against the file it names as its source of truth.
  • lore agent context pins a bundle’s Constitution first in every context pack, and the generated Claude Code bridge (lore agents) renders a present Constitution’s and Constants document’s content into the managed block as MUST/MUST NOT rules and named values.

Changed

  • Breaking: lore check now fails on the same frontmatter and required-section errors lore validate already reported for every type — a missing required section or an invalid field no longer passes silently.

Fixed

  • lore unlink no longer fails when another writer has already removed the back-reference label it was about to remove; lore link’s own writes are guarded the same way.
  • Generated output can no longer be reordered by hidden right-to-left override or other invisible Unicode characters in a document title or message — the shared output sanitiser now strips them.
  • A Claude Code plugin row set by your administrator is now left alone by lore agents instead of being updated.

0.9.3 — 2026-09-25

Added

  • Every lore agent context pack now includes a “Bundle-wide query hits” section: up to three additional relevant matches the rest of the pack didn’t already surface.

Changed

  • lore agent context <unknown profile> now exits 0 with a warning and a degraded pack, instead of failing with exit 3.

Fixed

  • The README quickstart runs end-to-end again, against a freshly compiled binary, in CI.

0.9.2 — 2026-09-24

Changed

  • Agent guidance now leads with retrieval — lore query then lore read — instead of browsing the whole docs tree; a new lore instructions retrieval topic covers single-repository search.
  • The generated Claude Code skill file is now produced by the same builder as the opum-lore plugin’s own copy, so the two can no longer drift apart.

0.9.1 — 2026-09-23

Fixed

  • lore new story scaffolds into docs/stories/ again, while still writing the canonical Arc type underneath.

0.9.0 — 2026-09-22

Added

  • Committed JSON Schemas now carry a generator stamp, and lore check gains an eighth exit code, 7, for a schema it cannot attribute to any known profile — so it never advises deleting a file it doesn’t recognize.
  • Deprecated type aliases: a profile can declare an old spelling for a type that resolves to the canonical one everywhere, withlore schema export emitting a matching schema file for each alias.

Changed

  • Breaking: the built-in Story type is renamed Arc; Story keeps working as a deprecated alias until 1.0.0.

Fixed

  • lore schema export no longer deletes a case-variant schema file on a case-insensitive filesystem.
  • The generated schema for a type now accepts its alias spellings too, matching the resolution lore new already supported.

0.8.0 — 2026-09-18

Added

  • lore types prints the active profile’s full type vocabulary — every declared type with its slug, required sections, and field table.
  • profile.strict_types makes an unknown document type an error instead of a warning, for projects that don’t want tolerated producer extensions.

Changed

  • lore check now detects when a committed schema file has drifted from what the current profile would generate, instead of trusting it silently.

Fixed

  • lore new attested-computation (and any other multi-word built-in type) is now reachable from its own slug.
  • lore new scaffolds every section a type declares as required, instead of producing a file its own validator immediately rejects.
  • lore link/lore unlink no longer clobber a concurrent tracker edit: against a tracker that supports it, they now assert the revision they read and retry on conflict.

0.7.0 — 2026-09-15

Added

  • lore read <id> returns one concept exactly as authored — its frontmatter and full body, verbatim, with no budget flag at all. It is a separate command from lore context, which assembles a neighbourhood and is lossy by design.
  • Typed authored relationships: a new reserved relations frontmatter list records that one document requires, refutes, is an alternative to, supersedes or is superseded_by another, optionally pinned to a statement and a version. claim_outcome, claim_evidence_level and claim_version are a third axis beside status, never derived from it and never written by lore. --proof-only on lore graph/path/impact selects just the proof-bearing kinds; lore check reports relation-version-drift as a warning, plus broken-relation and unknown-relation-kind; and lore graph --json carries a versionState on every relation edge. A bundle that adopts none of it serializes and exports byte-identically.
  • lore sync --fail-on-drop refuses the run with exit 6, before any write, when regenerating docs/log.md would drop unrecognized content. Opt-in: without it, sync still warns, proceeds and exits 0.
  • lore help --json flag entries may now carry required: true, so an agent can build a valid invocation from the manifest alone.

Changed

  • lore context --max-tokens is now a hard ceiling, not an advisory label: neighbours are dropped nearest-first, then the target’s own body if it still doesn’t fit, and data.omitted always names what was dropped — present even when nothing was. A budget too small to hold the target’s identity is refused with exit 6. Omitting the flag still applies no cap.
  • lore graph, query, context, path and impact now report which retrieval backend served the request: --json carries backend as "indexed" or "reference" on every successful response.
  • The projection export schema is now 1.1: task records carry a dependencies array and the stream a new dependency edge kind. lore export --schema-version 1.0 is refused; a bare lore export is unaffected, and projections retained under 1.0 are still read.

Fixed

  • lore path, lore impact and lore export now see tracker dependency edges, which run dependent → prerequisite and are selectable with --edge dependency; an unresolvable prerequisite is reported as dangling rather than dropped.
  • The indexed retrieval backend works again on a tracker whose tasks carry prerequisites — the ordinary shape of a Quest-backed workspace — instead of silently falling back to the reference backend on every command.
  • When indexed retrieval does fall back, the warning names its cause from a closed set (unsupported platform, driver unavailable, verification failed, no usable snapshot, preflight failed, unrecognised), and the one route that used to fall back silently now warns too.
  • Projection task records name the adapter that actually produced them (quest-json/1, jira-rest/1, backlog-json/1) instead of always claiming Backlog.md.
  • Required flags are marked (required) in help text and in lore help --json — five across lore impact and lore path, two more on lore provenance — and lore provenance no longer reports an omitted flag as an invalid value.
  • A cached indexed-retrieval generation is no longer permanently invalidated by a projection schema bump.

0.6.2 — 2026-09-13

Added

  • lore sync now tells you when it is about to drop content from docs/log.md — naming the count and sampling the text — and reports N added, N carried forward, N dropped on every run, also in --json. Blank lines and the log title are structure and never counted, so a healthy sync stays quiet.

0.6.1 — 2026-09-11

Fixed

  • lore sync no longer destroys docs/log.md entries it cannot re-derive from the visible git history — a shallow clone, a limited CI fetch depth, or a rewritten history all used to truncate the file silently. Regeneration now merges: derived entries render from history, and any committed entry history cannot account for is carried forward. Where history only grows, output is byte-identical to before.

0.6.0 — 2026-09-09

Added

  • lore init --migrate-backlog accepts --preserve-source-ids --source-family <PREFIX>, threading Quest’s own fix for the unrecoverable Alias collision (exit 5) a dotted Backlog.md subtask could trigger during migration.
  • A new --antigravity agent bridge writes a project-local GEMINI.md for Google Antigravity and Gemini CLI, offered in the wizard whenever the gemini binary is on PATH.

Changed

  • The interactive wizard’s sequential yes/no agent-bridge questions are now one multi-select listing only the bridges detected on PATH. Nothing starts pre-checked, so a bare Enter writes no bridge files at all; the non-interactive flag path (--claude, --codex, --hermes, --antigravity, --yes) is unchanged.
  • The AGENTS.md option’s label now names pi and OpenCode, both of which read that file as their primary convention.

0.5.0 — 2026-09-08

Removed

  • Breaking: InitResult.backlog and the internal legacy Backlog-check helper are removed. trackerCheck is now the only tracker-capability field lore init --json emits, naming whichever backend was actually probed.

Added

  • A new lore instructions agents topic documents how lore agents/lore agents --check decide which agent bridge (Claude, Codex, or both) to check or write.

Fixed

  • lore export and workspace/indexed retrieval no longer reject a tracker-disabled bundle (lore init --tracker none); a read-only projection now works with an empty task set instead of throwing.
  • lore check no longer walks into a git-ignored vendor or cache directory inside a checked path, so a stray file in a build cache can no longer produce false findings.
  • Breaking: Lore’s Quest writes now require an explicit actor to be declared instead of silently writing every task edit as an unattributed human.

0.4.6 — 2026-09-07

Fixed

  • lore sync/lore check no longer throw when a Story links a task Quest has paused to its Blocked status; the tracker adapter now classifies it as active instead of failing reconciliation.

0.4.5 — 2026-09-07

Fixed

  • lore agents --check no longer labels a SKILL.md sourced from the opum-lore plugin as present once the per-repo copy has been removed; it now reports the file as absent by design instead of “up to date.”

0.4.4 — 2026-09-05

Added

  • lore agent context <profile> --workspace <manifest> --repository <member-id> compiles a profile-bounded evidence pack across an explicit multi-repository workspace manifest, with every resolved item carrying its originating member’s provenance.

Fixed

  • lore agent context no longer crashes on a qualified (member::path) reference compiled without --workspace; a bare compile now resolves it against the one bundle it can mean.

0.4.3 — 2026-09-05

Added

  • [agents].skill_source config key and lore init --skill-source repo|plugin flag. Opting into plugin tells lore agents that .claude/skills/lore/SKILL.md is owned by the opum-lore marketplace plugin, not the repository, so a bare lore agents run stops proposing or regenerating it.

Changed

  • A leftover SKILL.md left behind under skill_source = "plugin" is now flagged as drift rather than silently ignored.

0.4.2 — 2026-09-05

Added

  • The opum-lore Claude Code plugin, shipping the lore skill from the same repository and tag so a skill can never describe a CLI version you don’t have.

Changed

  • lore init’s interactive wizard now defaults to one agent harness, not both, when both Claude Code and Codex are detected; answering yes to the Codex question explicitly still sets up both.

Fixed

  • lore link, lore unlink, and lore rename no longer fail after mutating both sides under a Quest-backed tracker.

0.4.1 — 2026-09-04

Fixed

  • A managed task-block link to a non-markdown task file (a Quest task’s real .quest/tasks/<id>.json path) no longer corrupts into a dead target; a tracker adapter’s task-file path is now always linked verbatim.

0.4.0 — 2026-09-02

Changed

  • Breaking: lore check and lore validate now flag a concept whose body opens with a second, parseable frontmatter fence as an error, not just at lore new scaffold time.

Added

  • lore orphans --json separates pendingLinks (a tracker task with recorded documentation but no linkage yet) from orphanTasks (documented nowhere at all).

Fixed

  • lore orphans no longer misreports a Done, correctly-linked Quest task as dangling.

0.3.5 — 2026-08-29

Fixed

  • The Quest version gate is a minimum floor, not a frozen allow-list, so Lore and Quest can be released independently; lore init --tracker quest now evaluates that gate before persisting the choice instead of committing to a backend that then refuses every command.

Added

  • lore init detects which tracker backends are installed before asking which to use, and can configure Jira, validating the configuration before persisting it.

0.3.4 — 2026-08-27

Fixed

  • The Quest adapter now accepts the structured acceptance-criteria contract Quest 0.2.7 shipped, mapping it losslessly to Lore criteria.

0.3.3 — 2026-08-26

Added

  • New bundles now persist Quest as their tracker backend by default.

0.3.2 — 2026-08-17

Added

  • Agent instructions and the generated Claude Code / Codex bridges now explain explicit multi-repository workspace selection, bounded retrieval, and provenance.

Fixed

  • Backlog subprocesses used by lore export and workspace commands now launch from an isolated empty directory while retaining their logical project root through BACKLOG_CWD, so a protected ambient environment file can no longer cause a false “not --json-capable” error.

0.3.0 — 2026-08-16

Added

  • lore backlog adopt provides deterministic, digest-guarded Backlog knowledge adoption. Its preview, apply, status, and rollback operations create provenance-bearing Lore concepts and receipts, require the approved preview digest before mutation, stay idempotent, and compensate exactly or report a blocked-incomplete outcome.

Fixed

  • lore check no longer reads the machine clock for OKF 0.2 stale-content rules; --as-of YYYY-MM-DD pins date-sensitive checks explicitly, and otherwise they use HEAD’s recorded commit date, keeping unchanged repository state byte-stable across runs.
  • lore check now reports relative links that escape the documentation root instead of silently skipping them.
  • Docker end-to-end tests no longer write a repository-local Git identity that can leak into unrelated commits.

0.2.0 — 2026-08-09

Added

  • Lore can now use either Backlog.md or Jira Cloud as its task tracker; lore init --tracker backlog|jira selects it without prompting, and existing zero-config repositories stay byte-stable Backlog projects.
  • OKF 0.2 Attested Computations are a first-class, representation-only concept type: Lore can scaffold, validate, link, and check their runtime, parameters, computation, executor, and attester metadata, but never executes bundle code.

Changed

  • New bundles now emit OKF 0.2 while existing OKF 0.1 bundles remain readable, strict-clean, and byte-stable.
  • Validation, checking, projection, schemas, templates, generated guidance, and Docker E2E coverage now negotiate a bundle’s declared producer version, keeping Lore’s stricter profile and documentation-coherence gates separate from the permissive OKF conformance floor.

Fixed

  • Generated docs/log.md commit subjects containing MDX-sensitive characters are now wrapped in collision-safe code spans, so a successful lore sync can no longer make lore check --strict fail.
  • lore init now distinguishes an uninitialized Backlog project from a genuinely non-JSON-capable Backlog binary and recommends backlog init instead of an unnecessary reinstall.
  • Automatic indexed retrieval now reports a sanitized fallback advisory when source loading fails before native activation, instead of misclassifying it as a native search-index failure.
  • Selecting an unknown --repository under an explicit workspace is now validated consistently against the manifest, including in a single-member workspace whose declared member isn’t yet valid.

0.1.1 — 2026-08-04

Added

  • Windows ARM64 is now a first-class compiled release target, alongside macOS, Linux, and Windows x64.

Fixed

  • Global installs no longer need an extra --allow-scripts flag for the native search-index backend; it ships pre-built for supported platforms, with an automatic, clearly labeled fallback where a matching build isn’t available.
  • Selecting an unknown --repository under an explicit workspace now fails with a clear validation error for graph, query, context, path, and impact, instead of proceeding silently.
  • lore link, lore unlink, and lore check --strict now agree on which concept types support Backlog task coupling.
  • lore sync correctly regenerates a Story’s managed task table when its last linked task is unlinked; lore check --strict flags the same drift if a sync is skipped.
  • lore check (and --strict) now catches unknown concept types the same way lore validate --strict already did.

0.1.0 — 2026-08-03

Added

  • lore init scaffolds a new OKF bundle (docs/, .lore/) in a repository; on an interactive terminal it also offers a short wizard for Claude Code / Codex agent setup and a doc-site scaffold.
  • lore init --claude / --codex set up each coding agent deterministically, without the wizard.
  • lore check is the read-only CI gate: status drift, stale managed blocks, broken links and anchors, and a portability lint, aggregated into one exit code.
  • lore sync is the write counterpart — it reconciles a Story’s status against its linked Backlog tasks and regenerates the managed task table.
  • lore link / lore unlink couple a concept’s tasks: frontmatter to Backlog task ids, with a queryable back-reference label on the task itself.
  • lore tasks <id> shows a concept’s linked Backlog tasks with their current status.
  • lore orphans reports Backlog tasks with no linked doc, and doc links pointing at tasks that no longer exist.
  • lore query full-text searches the bundle with frontmatter filters; lore graph emits its cross-link graph; lore context assembles a token-budgeted context pack for a concept.
  • lore rename, lore supersede, and lore replace perform a graph-aware rename, record a supersession, and do a managed-region-safe find-and-replace.
  • lore schema export materializes the current profile’s editor JSON Schemas.
  • lore scaffold mkdocs / docusaurus / obsidian generate a ready-to-build doc-site config alongside the OKF bundle.
  • lore agents generates and refreshes the Claude Code agent bridge (a generated SKILL.md plus a managed pointer in CLAUDE.md).
  • lore help prints the full command reference, and carries a machine-readable --json capability manifest for agents.
  • lore export emits a deterministic OKF projection (JSONL) for downstream indexes.
  • A release pipeline that compiles and publishes platform binaries for five targets through npm.

Fixed

  • Upgraded the YAML parser dependency off a version carrying a known vulnerability.
  • File writes now retry automatically past transient Windows antivirus/indexer lock errors instead of failing outright.
  • lore orphans no longer flags a Backlog subtask as orphaned when its parent task is already linked to a doc.
  • lore agents no longer renders a stale, hand-edited bridge file in the same color as a fresh write.
  • lore link / unlink --json no longer prints a success-shaped result after a failed write.
  • Corrected the documented exit code for a missing backlog binary versus one merely too old to support --json.

Changed

  • Re-running lore scaffold against an already up-to-date doc-site config is now a no-op instead of failing.
  • Harmonized error-hint wording across lore tasks, lore context, and lore link/unlink.