Releases: agentic-research/mache
Release list
v0.10.0
What's Changed
- chore(release): drop vestigial ley-line FFI link — no octo-sts, no sudo, no fuse_t dep by @jamestexas in #428
- docs(plugin): add authoring-schemas + authoring-smell-rules skills by @jamestexas in #430
- feat(ingest): self-contained ASTWalker↔SitterWalker parity gate + 1:1 CI gate by @jamestexas in #429
- refactor(ingest): widen Walker via FileMeta — ASTWalker lang/pkg, drop a type-switch (S3) by @jamestexas in #431
- refactor(ingest): walker-agnostic doc-comment scope (DocScope) — ASTWalker location + doc-extended source (S3 slice 2) by @jamestexas in #432
- refactor(ingest): walker-agnostic per-scope calls (CallExtractor) — last SitterWalker type-switch (S3 slice 3) by @jamestexas in #433
- feat(smells): real find_smells locations + L1 digest (make the tool usable) by @jamestexas in #434
- docs: smell-debt baseline 2026-06-24 (Go-accurate; cross-repo blocked on Rust parsing) by @jamestexas in #435
- chore(deps): pin leyline-schema to v0.5.0 by @jamestexas in #436
- feat(version): git-derive the binary version + enforce tag==base at release by @jamestexas in #437
- feat(mcp): kind discriminator across symbol-aware tools + registry invariants (mache-7d321e) by @jamestexas in #438
- test(mcp): kind-discriminator integration test on ambiguous fixture (mache-7d321e layer 3) by @jamestexas in #441
- docs(spec): measurement contracts for mache's four blog claims by @jamestexas in #440
- feat(smell): deterministic duplicate_code rule via AST structural hashing by @jamestexas in #442
- feat(ingest): ASTWalker.ExtractFileLevelRefs — pure-Go file-level ref parity (S4 prep) by @jamestexas in #443
- chore(deps): pin leyline-schema + daemon binary to v0.5.1 by @jamestexas in #444
- docs(adr-0012): record step-4 engine mechanism (S3/S4) + SetASTWalker activation plan by @jamestexas in #446
- feat(ingest): gate Phase-1 CGO parse on backend — ASTWalker serves file-level extracts (S4) by @jamestexas in #445
- test+fix(ingest): multi-file query-parity gate + root-relative source_id keying (mache-1166aa, mache-30edfa) by @jamestexas in #447
- fix(serve): project-aware kind filter (_ast.node_kind) + MCP readOnlyHint annotations by @jamestexas in #448
- fix(serve): honest MCP annotation hints — read tools no longer leak destructive/open-world defaults by @jamestexas in #449
- fix(leyline): reap daemon process group — stop orphaning the daemon's mache child by @jamestexas in #450
- feat(leyline): surface which leyline binary mache resolved (log + get_sheaf_status) by @jamestexas in #451
- fix(lsp): speak the daemon's named enrich UDS op + spawn with --source by @jamestexas in #452
- feat(lsp): surface ley-line enrich skip reasons + bump leyline v0.5.1 → v0.5.3 by @jamestexas in #453
- chore(leyline): bump auto-download pin v0.5.3 → v0.5.4 by @jamestexas in #454
- fix(lsp): parse daemon object-row query results + bump leyline v0.5.5 — get_type_info returns real hover end-to-end by @jamestexas in #455
- chore(leyline): pin v0.5.7 — Go LSP enrichment works + README/prior-art by @jamestexas in #456
- docs(adr): ADR-0018 Appendix C — assay convergence decision by @jamestexas in #463
- feat(mcp)!: HTTP canonical transport — init registers HTTP + keepalive daemon, demote stdio (v0.10.0) by @jamestexas in #464
- fix(ci): release.yml startup failure — literal ${{ }} in a run-block comment by @jamestexas in #465
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
- docs: post-v0.8.0 hygiene — drop LLO, fix positioning, sweep factual drift by @jamestexas in #367
- docs: post-leyline-pairing refresh + frontmatter lint by @jamestexas in #368
- docs: ADR-0016 cross-language reference resolver + stack-graphs in landscape by @jamestexas in #369
- feat: in-repo apko/melange image + leyline-schema v0.2.1 consumer by @jamestexas in #370
- feat: kill ExtractActiveDB on --control, consume LLO 0.2.2 find_callees by @jamestexas in #371
- feat(udsGraph): typed daemon-response decode + leyline-schema v0.3.0 by @jamestexas in #372
- test(leyline): wire-decode microbench + benchmarking foundation by @jamestexas in #373
- chore(deps): bump github.com/mark3labs/mcp-go from 0.52.0 to 0.54.0 by @dependabot[bot] in #377
- chore(deps): bump golang.org/x/sys from 0.43.0 to 0.44.0 by @dependabot[bot] in #375
- chore(deps): bump modernc.org/sqlite from 1.50.0 to 1.50.1 by @dependabot[bot] in #376
- fix(build): schema-bug fixes + ship presets for all 28 grammars by @jamestexas in #374
- chore(deps): bump golang.org/x/text from 0.36.0 to 0.37.0 by @dependabot[bot] in #378
- docs(audit): sheaf-incremental verdict [mache-49bf9a] by @jamestexas in #379
- chore(deps): bump leyline-schema v0.3.0 → v0.4.1 [mache-8e2e92] by @jamestexas in #380
- feat(sheaf): opt SheafClient into δ⁰-driven invalidation [mache-8e59a5] by @jamestexas in #381
- test(sheaf): cross-runtime e2e against live ley-line daemon [mache-8e7794] by @jamestexas in #382
- feat(serve): wire watcher → sheaf cascade + get_sheaf_status [mache-c11848 + mache-4a0c05] by @jamestexas in #383
- trunk: evolve campaign — silent failures, observability, coverage by @jamestexas in #385
- campaign: god-file decomposition + coverage-gate + sheaf subscriber by @jamestexas in #400
- [mache-655e98] fix(graph): DefsMap SQL fallback + e2e matrix + rough-edges parity gate by @jamestexas in #401
- [mache-e1b6c8] design(adr): ADR-0018 doc-drift detection as executable specs by @jamestexas in #402
- [mache-ec1a06] feat(smell_rules): Severity+Tags schema + CLI gate flags + 3 drift_doc_* placeholder rules (ADR-0018 PR 1-3 bundle) by @jamestexas in #403
- [mache-68980e] fix(smell_rules): split dead_code OR-join into UNION arms (57s → 124ms) by @jamestexas in #404
- [mache-eb9b30] design(adr): ADR-0019 real-corpus fixture registry (2-tier, fixed-anchor baselines) by @jamestexas in #405
- [mache-eb9b30] feat(testfixtures): registry + mache-self sentinel + migrate 2 tests (ADR-0019 PR 1) by @jamestexas in #406
- [mache-eb9b30] feat(testfixtures): curation + rosary + RealCorpora + baselines (ADR-0019 PR 2 + PR 3 bundled) by @jamestexas in #407
- feat(cache): portable mache db — push/pull/verify/inspect, all 5 phases (mache-aeb262) by @jamestexas in #412
- security(smell-rules): validate ScopeColumn at load time by @jamestexas in #408
- infra: migrate elixir parser.c out of LFS to unblock CI by @jamestexas in #419
- chore(deps): bump golang.org/x/sys from 0.44.0 to 0.46.0 by @dependabot[bot] in #416
- chore(deps): bump modernc.org/sqlite from 1.50.1 to 1.52.0 by @dependabot[bot] in #417
- chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #415
- chore(deps): bump github.com/mark3labs/mcp-go from 0.54.0 to 0.55.0 by @dependabot[bot] in #413
- docs: ADR-0021 — semantic file-suggester for Claude Code fileSuggestion by @jamestexas in #420
- chore(deps): bump golang.org/x/text from 0.37.0 to 0.38.0 by @dependabot[bot] in #418
- test: skip dead_code perf gate under -race by @jamestexas in #421
- chore(deps): bump golangci/golangci-lint-action from 9.2.0 to 9.2.1 by @dependabot[bot] in #409
- ci: LFS tripwire — fail PRs that re-introduce filter=lfs by @jamestexas in #423
- chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #425
- docs(adr-0019): D.6 amendment — -race carve-out for perf gates by @jamestexas in #422
- [mache-802d2b] feat(server-json): mcpregistry + cloister groups + drift gate by @jamestexas in #424
- chore(leyline): bump daemon pin v0.4.1 → v0.4.5 by @jamestexas in #426
- refactor(version): single-source mache version (internal/buildinfo) + CI↔Taskfile parity by @jamestexas in #427
Full Changelog: v0.8.0...v0.9.0
v0.8.0 — constellation wave (paired with ley-line-open v0.2.0)
v0.8.0 — 2026-05-09
The "constellation wave" release. T2.4 wire-format alignment with
ley-line-open v0.2.0, the full ADR-0013 fidelity-poset canonical-view
landing, ADR-0014 architectural framing, and a substantial e2e harness +
perf hygiene pass.
⚠ Breaking changes
-
Substrate identity is
current_root, notgeneration. Both
.ctrl(control block) and.arenaheaders bump VERSION 1 → 2.
Pre-v2 files are rejected with a clear error rather than silently
misinterpreted. Pairs with ley-line-open v0.2.0 — these must
ship together; mixing v0.7.x mache with v0.2.0 ley-line-open (or vice versa)
fails loudly on first read. (#365, mache-1afff0)Public Go API changes:
Controller.GetGeneration() uint64→GetCurrentRoot() [32]byteController.SetArena(path, size, generation)→
SetArena(path, size)+ newSetArenaWithRoot(path, size, root)ArenaHeaderaddsDataSize uint64; readers can hash
buf[..DataSize]againstcurrent_rootwithout parsing
payload-format internals.
-
Hot-swap polling predicate is now
currentRoot != lastRoot, not
monotonic-generation comparison. Mache writers now compute
blake3.Sum256(payload)and publish viaSetArenaWithRoot.
Added
- ADR-0013 fidelity poset for refs/defs. Canonical views
v_defs/v_refswith(mention ⊑ binding ⊑ reachability)ordering;
consumer rules query producer-agnostically. Higher-fidelity producers
(LSP, future SSA) project DOWN at write time.
(#339, #340, #341, #346, #347, #348) - Capnp event-log readthrough.
${db}.bindings.capnpis now the
cross-runtime contract for binding refs;find_smellsconsumes the
capnp pass directly. SQL_lsp_refsconsumers retired in favor of
the canonical event log. (#353, #354, #356, #357, #358) find_smellsqualifier-awarefan_out_skewvia T8.7
BindingRecord.qualifier. (#358, mache-6c0d07)- e2e MCP-tool harness with per-tool latency + alloc profile,
CPU + heap pprof capture per tool, andtask profile-tools-pprof/
task flamegraphs. (#360, #361, mache-6b6da6 phases 1–2) MemoryStore.{Defs,Refs}Mapsnapshot memoization. Heap
e2e profiling identified these two as dominant allocators in
get_impact(52% heap delta),get_overview(32%), and others.
Memoized snapshots invalidated onAddDef/AddRef/
DeleteFileNodes. (#362, mache-6b6da6 phase 3)- ADR-0014 documenting mache's role in the wider ART constellation
as a structural-observation consumer/projector of ley-line-open's capnp
event-log canonical encoding (Σ-anchored). The.dbprojection is
derivative; the event log is the contract. (#364) - Falsifiability harnesses. Skip-list ablation experiment +
π_{1→0} projection round-trip. (#349, #350, #351, #352,
mache-3509aa, mache-354464)
Changed
cmd builddefaults to--backend=autowhich now prefers
ley-line when present on PATH (per ADR-0012 step 3b). The in-process
CGO tree-sitter path is still available via--backend=tree-sitter
but is on the deprecation runway. (#317, #318)- Drop suffix-then-LIKE fallback in
serve_lspnow that
_lsp_refs.referrer_node_idand_lsp_refs.ref_tokenare populated
by ley-line-open. (#348, mache-346d2b) find_smellsdead_codeskip-list precise retreat after
Falsifiability A confirmed gopls-indexed methods aren't newly
flagged. (#351)- New deps:
github.com/zeebo/blake3(pure Go, no CGO) for substrate
root publishing on the writer side.
Documentation
- ADR-0013 — refs/defs canonical schema (fidelity poset). (#339)
- ADR-0014 — mache in the constellation. (#364)
- ADR-0012 status update — steps 1–3 shipped, step 4 (CGO removal)
gated onmache-33dc5f(ley-line-open release-bundling). (#316) - README + ARCHITECTURE capture T8 canonical views + capnp event
log + e2e harness + cache memoization. (#359, #363)
Internal
- Dead-code removal pass:
ingest.GetLanguage,Inferrer.InferFromSQLiteJSON,
ArenaFlusher.LastError,SocketClient.Enrich,DetectLanguageFromExt,
formatRegistry,.query/virtual dir. (#319, #320, #321, #322,
#323, #324) - Test contract pins:
ArenaHeaderserialization,SchemaUsesTreeSitter
dispatch, validate-package public API,LoadFileIndexcache,
NewDefaultResolverchain shape,GetGitHints,BuildContext.
(#330, #331, #332, #333, #334, #335, #336, #337) - CI scheduler-tolerance fixes for arena flusher coalesce + watcher
subdirectory tests. (#325, #329) - Dependabot bumps:
mark3labs/mcp-go0.49→0.52,modernc.org/sqlite
1.49.1→1.50,fsnotify1.9→1.10.1,mvdan.cc/gofumpt0.9.2→0.10,
go-git/go-billy/v55.8→5.9. (#326, #327, #328, #342, #343, #344, #345)
Not in this release (queued for next)
- CGO tree-sitter removal (mache-36d961, ADR-0012 step 4). Gated on
mache-33dc5f(release-bundling the ley-line-openleylinebinary so mache
can hard-fail when leyline isn't available, instead of falling back
to in-process CGO). The migration inventory is filed on
mache-37ae8band is shovel-ready: 16 production sources to delete,
10 test files to delete-or-migrate, single//go:build leylinetag
to invert, BLAKE3 dep already landed. - Schema-driven read modes for
read_file(mode=signatures,
mode=map,mode=diff) — beadmache-qzsk. The current_root
primitive shipped here givesmode=diffa usable snapshot identity
to anchor on.
Coordination
This release is paired with ley-line-open v0.2.0. Old mache
reading new arenas — or vice versa — fails with a clear version-mismatch
error rather than corrupting reads. Tag together; release-note the
break in both repos.
v0.6.6
What's Changed
- feat: dig template function + BoltDB empty-root fix + skip-on-error by @jamestexas in #140
Full Changelog: v0.6.4...v0.6.6
v0.6.5
What's Changed
- feat: dig template function + BoltDB empty-root fix + skip-on-error by @jamestexas in #140
Full Changelog: v0.6.4...v0.6.5
v0.6.4
What's Changed
- refactor: unified language registry — one source of truth, zero drift by @jamestexas in #130
- chore: plugin MCP config — stdio → HTTP by @jamestexas in #131
- feat: add 10 grammars — 28 languages total by @jamestexas in #132
- feat: pluggable materializer backends — --out --format by @jamestexas in #133
- feat: string template functions for projection schemas by @jamestexas in #134
- feat: _parent context for child selector matches by @jamestexas in #135
- feat: dict/lookup/default funcs + --out .db fix + trivy-ghsa schema by @jamestexas in #136
- fix: Copilot review fixes + post-mortem P1s by @jamestexas in #138
- feat: public re-export packages for ingest and materialize by @jamestexas in #139
Full Changelog: v0.6.3...v0.6.4
v0.6.3
Bug fix
- fix: watcher FD leak — unified skip list with engine + .gitignore support (#129)
- Watcher's
shouldIgnoreDirdiverged from engine'sShouldSkipDir, didn't skiptarget/,dist/,build/ - On macOS (kqueue), watching ley-line's 11K
target/subdirs cascaded to 129K leaked FDs - Watcher now uses canonical skip list +
.gitignorerules viaWithGitignore - Exported
GitignoreMatcherinterface for cross-package use - Fixed
RegisterRefQuery("hcl")→"terraform"to matchlangForExtrename - Added
vendortoShouldSkipDir - Regression tests:
TestWatcher_TargetIgnored,TestWatcher_GitignoreSkipsDirs
- Watcher's
Also included (since v0.6.2)
- feat: exhaustive language schemas — all 18 tree-sitter grammars (#128)
- chore: AddRoot O(1) dedup, bitmap canonicity, CI path filtering (#127)
- fix: lifecycle cleanup — graceful HTTP shutdown + mount leyline teardown (#126)
- fix: bound read_file allocations — 32MB per-file cap + batch total limit (#125)
- chore: hygiene — CI gofumpt, doc counts, omitempty, dedup, dead code (#124)
- feat: serve landing page (#123)
What's Changed
- feat: serve landing page from /app/static/mache-landing.html by @jamestexas in #123
- chore: hygiene thread — CI gofumpt, doc counts, omitempty, dedup, dead code by @jamestexas in #124
- fix: bound read_file allocations — 32MB per-file cap + batch total limit by @jamestexas in #125
- fix: lifecycle cleanup — graceful HTTP shutdown + mount leyline teardown by @jamestexas in #126
- chore: AddRoot O(1) dedup, bitmap canonicity, CI path filtering by @jamestexas in #127
- feat: exhaustive language schemas — all 18 tree-sitter grammars by @jamestexas in #128
- fix: watcher FD leak — respect .gitignore + unified skip list by @jamestexas in #129
Full Changelog: v0.6.2...v0.6.3
v0.6.0
What's Changed
- feat: expose tree-sitter validation as public API by @jamestexas in #71
- feat: agent field report fixes + live graph (#72) by @jamestexas in #73
- feat: MCP project config, multi-editor install, cache scaling by @jamestexas in #78
- feat: add GraphCache — write-through MemoryStore with SQLite persistence by @jamestexas in #79
- feat: consume leyline LSP tables for hover, diagnostics, and MCP tools by @jamestexas in #80
- feat: schema-driven LSP materialization with file_sets and include by @jamestexas in #81
- feat: add lsp_defs/refs to all schemas + Rust/Terraform presets by @jamestexas in #82
- refactor: VHandler chain + Streamable HTTP transport by @jamestexas in #83
- feat: default MCP transport to Streamable HTTP by @jamestexas in #84
- feat(serve): --path flag, MCP sidecar lifecycle, loopback validation by @jamestexas in #85
- feat: expose location virtual file for source-origin orientation by @jamestexas in #87
- fix(serve): lazy ListRoots with timeout by @jamestexas in #86
- feat(serve): UDS socket client + auto-enrichment for LSP tools by @jamestexas in #88
- perf(graph): pre-compute degrees in Louvain community detection by @jamestexas in #89
- fix(serve): query LSP data from daemon via UDS by @jamestexas in #91
- build(deps): bump golang.org/x/sys from 0.41.0 to 0.42.0 by @dependabot[bot] in #90
- fix: correctness debt — 4 surgical bug fixes by @jamestexas in #92
- docs: rewrite README for humans by @jamestexas in #93
- docs(readme): ACI framing — topology is the point by @jamestexas in #94
- feat: overnight agent fixes — 27 commits across engine, lattice, writeback, vfs by @jamestexas in #95
- feat(ci): release builds fat binary from ley-line artifacts by @jamestexas in #96
- feat: BDR beads schema + generic markdown schema by @jamestexas in #97
- feat: BDR hierarchy schema for decade/thread/bead projection by @jamestexas in #98
- feat: add Elixir tree-sitter support by @jamestexas in #99
- fix: pre-release review — 7 surgical fixes by @jamestexas in #100
Full Changelog: v0.5.6...v0.6.0