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-refsreads 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 checkreports anagent-profile-capacityfinding for an agent profile whose declared sources cannot fit itsmax_tokensbudget, naming the sources that cannot fit — a warning for one release, then an error.
Changed
- Breaking:
lorenow refuses to drive aquestthat 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 initdetects 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, thenquest init), and--install-tracker/--no-install-trackerare accepted as no-ops for one release. - Breaking:
lore checknow fails on the error-tierquote-safetyfindingslore validatealready reports — an unquoted YAML 1.1 boolean likeyesoron, a value that starts with a YAML indicator character, or a value containing a colon followed by a space. Runlore validateto 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 --inpattern now descends into dot-directories instead of matching nothing. lore readnow renders the markdown body — headings, emphasis, lists, quotes, code and tables — when stdout is a terminal; piped output,--plainand--jsonstay byte-for-byte unchanged.lorenow 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 andlore 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 constitutionscaffolds a Constitution (principles, governance, and an amendment log), andlore new constantsscaffolds a Constants catalogue of named values, each checkable against the file it names as its source of truth. lore agent contextpins 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 checknow fails on the same frontmatter and required-section errorslore validatealready reported for every type — a missing required section or an invalid field no longer passes silently.
Fixed
lore unlinkno 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 agentsinstead of being updated.
0.9.3 — 2026-09-25
Added
- Every
lore agent contextpack 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 exits0with a warning and a degraded pack, instead of failing with exit3.
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 querythenlore read— instead of browsing the whole docs tree; a newlore instructions retrievaltopic covers single-repository search. - The generated Claude Code skill file is now produced by the same builder as the
opum-loreplugin’s own copy, so the two can no longer drift apart.
0.9.1 — 2026-09-23
Fixed
lore new storyscaffolds intodocs/stories/again, while still writing the canonicalArctype underneath.
0.9.0 — 2026-09-22
Added
- Committed JSON Schemas now carry a generator stamp, and
lore checkgains 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, with
lore schema exportemitting a matching schema file for each alias.
Changed
- Breaking: the built-in
Storytype is renamedArc;Storykeeps working as a deprecated alias until1.0.0.
Fixed
lore schema exportno 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 newalready supported.
0.8.0 — 2026-09-18
Added
lore typesprints the active profile’s full type vocabulary — every declared type with its slug, required sections, and field table.profile.strict_typesmakes an unknown document type an error instead of a warning, for projects that don’t want tolerated producer extensions.
Changed
lore checknow 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 newscaffolds every section a type declares as required, instead of producing a file its own validator immediately rejects.lore link/lore unlinkno 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 fromlore context, which assembles a neighbourhood and is lossy by design.- Typed authored relationships: a new reserved
relationsfrontmatter list records that one documentrequires,refutes, is analternativeto,supersedesor issuperseded_byanother, optionally pinned to a statement and a version.claim_outcome,claim_evidence_levelandclaim_versionare a third axis beside status, never derived from it and never written by lore.--proof-onlyonlore graph/path/impactselects just the proof-bearing kinds;lore checkreportsrelation-version-driftas a warning, plusbroken-relationandunknown-relation-kind; andlore graph --jsoncarries aversionStateon every relation edge. A bundle that adopts none of it serializes and exports byte-identically. lore sync --fail-on-droprefuses the run with exit6, before any write, when regeneratingdocs/log.mdwould drop unrecognized content. Opt-in: without it, sync still warns, proceeds and exits0.lore help --jsonflag entries may now carryrequired: true, so an agent can build a valid invocation from the manifest alone.
Changed
lore context --max-tokensis 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, anddata.omittedalways names what was dropped — present even when nothing was. A budget too small to hold the target’s identity is refused with exit6. Omitting the flag still applies no cap.lore graph,query,context,pathandimpactnow report which retrieval backend served the request:--jsoncarriesbackendas"indexed"or"reference"on every successful response.- The projection export schema is now
1.1: task records carry adependenciesarray and the stream a newdependencyedge kind.lore export --schema-version 1.0is refused; a barelore exportis unaffected, and projections retained under1.0are still read.
Fixed
lore path,lore impactandlore exportnow see tracker dependency edges, which run dependent → prerequisite and are selectable with--edge dependency; an unresolvable prerequisite is reported asdanglingrather 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 inlore help --json— five acrosslore impactandlore path, two more onlore provenance— andlore provenanceno 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 syncnow tells you when it is about to drop content fromdocs/log.md— naming the count and sampling the text — and reportsN added, N carried forward, N droppedon 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 syncno longer destroysdocs/log.mdentries 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-backlogaccepts--preserve-source-ids --source-family <PREFIX>, threading Quest’s own fix for the unrecoverableAlias collision(exit5) a dotted Backlog.md subtask could trigger during migration.- A new
--antigravityagent bridge writes a project-localGEMINI.mdfor Google Antigravity and Gemini CLI, offered in the wizard whenever thegeminibinary is onPATH.
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.mdoption’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.backlogand the internal legacy Backlog-check helper are removed.trackerCheckis now the only tracker-capability fieldlore init --jsonemits, naming whichever backend was actually probed.
Added
- A new
lore instructions agentstopic documents howlore agents/lore agents --checkdecide which agent bridge (Claude, Codex, or both) to check or write.
Fixed
lore exportand 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 checkno 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 checkno longer throw when a Story links a task Quest has paused to itsBlockedstatus; the tracker adapter now classifies it as active instead of failing reconciliation.
0.4.5 — 2026-09-07
Fixed
lore agents --checkno longer labels a SKILL.md sourced from theopum-loreplugin 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 contextno 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_sourceconfig key andlore init --skill-source repo|pluginflag. Opting intoplugintellslore agentsthat.claude/skills/lore/SKILL.mdis owned by theopum-loremarketplace plugin, not the repository, so a barelore agentsrun 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-loreClaude Code plugin, shipping theloreskill 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, andlore renameno 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>.jsonpath) 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 checkandlore validatenow flag a concept whose body opens with a second, parseable frontmatter fence as an error, not just atlore newscaffold time.
Added
lore orphans --jsonseparatespendingLinks(a tracker task with recorded documentation but no linkage yet) fromorphanTasks(documented nowhere at all).
Fixed
lore orphansno 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 questnow evaluates that gate before persisting the choice instead of committing to a backend that then refuses every command.
Added
lore initdetects 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 exportand workspace commands now launch from an isolated empty directory while retaining their logical project root throughBACKLOG_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 adoptprovides deterministic, digest-guarded Backlog knowledge adoption. Itspreview,apply,status, androllbackoperations 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 checkno longer reads the machine clock for OKF 0.2 stale-content rules;--as-of YYYY-MM-DDpins date-sensitive checks explicitly, and otherwise they use HEAD’s recorded commit date, keeping unchanged repository state byte-stable across runs.lore checknow 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|jiraselects 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.mdcommit subjects containing MDX-sensitive characters are now wrapped in collision-safe code spans, so a successfullore synccan no longer makelore check --strictfail. lore initnow distinguishes an uninitialized Backlog project from a genuinely non-JSON-capable Backlog binary and recommendsbacklog initinstead 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
--repositoryunder 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-scriptsflag 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
--repositoryunder an explicit workspace now fails with a clear validation error forgraph,query,context,path, andimpact, instead of proceeding silently. lore link,lore unlink, andlore check --strictnow agree on which concept types support Backlog task coupling.lore synccorrectly regenerates a Story’s managed task table when its last linked task is unlinked;lore check --strictflags the same drift if a sync is skipped.lore check(and--strict) now catches unknown concept types the same waylore validate --strictalready did.
0.1.0 — 2026-08-03
Added
lore initscaffolds 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/--codexset up each coding agent deterministically, without the wizard.lore checkis the read-only CI gate: status drift, stale managed blocks, broken links and anchors, and a portability lint, aggregated into one exit code.lore syncis the write counterpart — it reconciles a Story’s status against its linked Backlog tasks and regenerates the managed task table.lore link/lore unlinkcouple a concept’stasks: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 orphansreports Backlog tasks with no linked doc, and doc links pointing at tasks that no longer exist.lore queryfull-text searches the bundle with frontmatter filters;lore graphemits its cross-link graph;lore contextassembles a token-budgeted context pack for a concept.lore rename,lore supersede, andlore replaceperform a graph-aware rename, record a supersession, and do a managed-region-safe find-and-replace.lore schema exportmaterializes the current profile’s editor JSON Schemas.lore scaffold mkdocs/docusaurus/obsidiangenerate a ready-to-build doc-site config alongside the OKF bundle.lore agentsgenerates and refreshes the Claude Code agent bridge (a generatedSKILL.mdplus a managed pointer inCLAUDE.md).lore helpprints the full command reference, and carries a machine-readable--jsoncapability manifest for agents.lore exportemits 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 orphansno longer flags a Backlog subtask as orphaned when its parent task is already linked to a doc.lore agentsno longer renders a stale, hand-edited bridge file in the same color as a fresh write.lore link/unlink --jsonno longer prints a success-shaped result after a failed write.- Corrected the documented exit code for a missing
backlogbinary versus one merely too old to support--json.
Changed
- Re-running
lore scaffoldagainst 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, andlore link/unlink.