Skip to content

v0.22.0

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Oct 20:55
Immutable release. Only release title and notes can be modified.
f34ab5c

What's Changed

  • Adopt leyline v0.15.1 + fix shared-daemon session routing (mache-6ec106) by @jamestexas in #604
  • graph.Open facade: fix LookupDef/QueryRefs when loading a .db as a library (mache-04972b) by @jamestexas in #605
  • graph.Build facade: producing a .db no longer requires the mache CLI (mache-3edd21) by @jamestexas in #606
  • internal/resolve: GoModResolver + ADR-0016's first implementation bead, ADR-0025 (mache-e6d582) by @jamestexas in #607
  • resolve_ref mounts sub-graphs + gomod scheme; public resolve/ facade by @jamestexas in #608
  • Invalidate the shared arena on config change; make serve-mode capability forwarding provable by @jamestexas in #610
  • Adopt ley-line-open v0.18.0: source-blobs CDC target, and a --reset-arena that works by @jamestexas in #611
  • Make graph/resolve public, name the capability interfaces, and give nodes a source location by @jamestexas in #612
  • [mache-9ba2ed] fix(release): create a draft, attach assets, then publish by @jamestexas in #617
  • [mache-cb8fb9] fix(graph): resolve callees from the container edge, not from a "source" child that leyline never writes by @jamestexas in #616
  • fix: recover caller and graph-availability correctness by @jamestexas in #618
  • fix(leyline): pin v0.18.2 Terraform refs by @jamestexas in #619
  • chore(deps): bump docker/login-action from 4.5.2 to 4.6.0 by @dependabot[bot] in #613
  • feat(refs): expose Go imports as gomod subgraph refs by @jamestexas in #620
  • chore(deps): bump github.com/ohler55/ojg from 1.28.2 to 1.28.3 by @dependabot[bot] in #615
  • chore(deps): bump modernc.org/sqlite from 1.55.0 to 1.56.0 by @dependabot[bot] in #614
  • fix(ingest/ingest.go): export other schema-projection commands by @jamestexas in #621
  • fix: preserve nested refs and expose schema build API by @jamestexas in #622
  • [mache-b37cff] chore(beads): record restriction-first task 1 progress by @jamestexas in #624
  • [mache-40faff] docs(adr): one startup path with ablatable capability axes by @jamestexas in #625
  • [mache-4ae285] feat(doctor): report daemon, arena, and registration health by @jamestexas in #626
  • [mache-b094fa] feat(graph): public ref resolution — RefRange and a classified RefTarget by @jamestexas in #627
  • [mache-b094fa] Lock Open's laziness, and close the ids-vs-nodes asymmetry by @jamestexas in #628
  • chore(deps): bump docker/setup-buildx-action from 4.2.0 to 4.3.0 by @dependabot[bot] in #632
  • chore(deps): bump golang.org/x/text from 0.40.0 to 0.41.0 by @dependabot[bot] in #629
  • chore(deps): bump github.com/mark3labs/mcp-go from 0.57.0 to 0.58.0 by @dependabot[bot] in #630
  • [mache-bc6ca3] Write and probe a GENERATED parent_id by @jamestexas in #633
  • chore(deps): bump github.com/ohler55/ojg from 1.28.3 to 1.28.4 by @dependabot[bot] in #623
  • chore(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.1 by @dependabot[bot] in #631
  • [mache-cc1a70][mache-cc631a] Validate against an LLO candidate, and check the artifact not just the producer by @jamestexas in #634
  • [mache-bc6ca3] Pin leyline v0.19.0 and adopt projection-v4 by @jamestexas in #635
  • [mache-2b1ea7] Say when find_smells truncated the result by @jamestexas in #636
  • [mache-4421f7][mache-69dd78] Native daemon control, and stop telling users about failures that aren't happening by @jamestexas in #637
  • [mache-4421f7] Install via mache install, not cp over a live binary by @jamestexas in #638
  • [mache-233902] Adopt-path drift detection, usable community detection, and the v0.19.1 pin by @jamestexas in #639
  • [mache-a4eeb0] Community detection over fs cells — file/dir granularity + path scope by @jamestexas in #640
  • [mache-706d8f] Reload the launchd job instead of kickstarting — the kernel was killing every new binary by @jamestexas in #641
  • [mache-96465d] Lifecycle conformance table — states × verbs, with a generalized lie detector by @jamestexas in #642
  • [mache-96465d] Hermetic real-launchd lifecycle E2E — and the bootout drain race it caught by @jamestexas in #643
  • [mache-96c378] Stage 1: extract internal/testutil (cmd decomposition) by @jamestexas in #644
  • [mache-96c378] Stage 2: extract internal/projcfg (first prod-file move) by @jamestexas in #648
  • [mache-96c378] Stage 3: extract internal/mountmeta (the cmd↔mcpserve cycle breaker) by @jamestexas in #649
  • [mache-96c378] Stage 4: extract internal/smells (engine + embedded assets + hook #1) by @jamestexas in #650
  • [mache-96c378] Stage 5: extract internal/leylinegraph (R3 re-home) by @jamestexas in #651
  • [mache-96c378] Stage 6: extract internal/schemainfer by @jamestexas in #652
  • [mache-96c378] Stage 7: extract internal/buildcache (identity injection + hook #2) by @jamestexas in #653
  • [mache-96c378] Stage 8: extract internal/mcpserve — the spine cut by @jamestexas in #654
  • [mache-3e78d2] Tests can no longer write the real ~/.mache — hermeticity guard at the seam by @jamestexas in #655
  • [mache-6c9e1d] Staleness detects deleted and renamed files — the drift the mtime walk cannot see by @jamestexas in #656
  • [mache-956488] Crash-loop circuit breaker — the respawn storm now ends by @jamestexas in #657
  • [mache-956488] doctor readiness check — liveness could not see a wedged daemon by @jamestexas in #658
  • [mache-f06138] Budget the large-tier E2E per backend, not per sum by @jamestexas in #659
  • [mache-4a92cf] Collapse the legacy LSP defs/refs clone — the largest production duplicate by @jamestexas in #660
  • [mache-f41b43] Vendored fixtures no longer judged, nor counted in the mean by @jamestexas in #661
  • [mache-f41b43] Exclude vendored corpus from every rule that reported it by @jamestexas in #662
  • chore(deps): bump modernc.org/sqlite from 1.56.0 to 1.57.0 by @dependabot[bot] in #647
  • [mache-20f03f] Make the debounce test deterministic instead of widening its window again by @jamestexas in #664
  • [mache-3ec977] doctor: version-skew stops recommending the command that fails by @jamestexas in #665
  • chore(deps): bump github.com/go-task/task/v3 from 3.52.0 to 3.53.1 by @dependabot[bot] in #646
  • chore(deps): bump github.com/ohler55/ojg from 1.28.4 to 1.28.5 by @dependabot[bot] in #645
  • bench: land cost-quality baseline with reliable result capture by @jamestexas in #601
  • [mache-77e389] Flamegraph failures fail, instead of rendering reassurance by @jamestexas in #663
  • fix(smells): ratchet keys on node content hash — debt no longer laundered by a file move by @jamestexas in #666
  • fix(smells): absolute thresholds — a file's verdict is its own by @jamestexas in #667
  • fix(smells): a skipped rule is no longer indistinguishable from a clean one by @jamestexas in #670
  • chore(deps): bump softprops/action-gh-release from 3.0.2 to 3.0.3 by @dependabot[bot] in #668
  • fix(graph): strip engine sentinels from consumer-facing refs by @jamestexas in #671
  • fix(schema): rust implementations is an index, not a 12KB blob by @jamestexas in #672
  • chore(deps): bump mvdan.cc/sh/v3 from 3.13.2-0.20260817215856-d6550df7ed8d to 3.14.0 by @dependabot[bot] in #669
  • fix(build): fail first, and legibly, on a go.work/go.mod directive mismatch by @jamestexas in #673
  • [mache-c0537f] test(ingest): growth-class gate — ExtractCalls must not issue more SQL as files grow by @jamestexas in #674
  • [mache-088304] fix(ingest): DeleteFileNodes indexed by node_id — no more per-file full scan of node_refs/node_defs by @jamestexas in #675
  • [mache-95a33d] fix(ingest): evict walker caches per file, stop reading source bytes — 1.7 GB → 1.05 GB peak by @jamestexas in #676
  • [mache-c0537f] test(fixtures): golden projection-parity gate — byte-identity is now a failing test by @jamestexas in #677
  • [mache-40ce82] perf(ingest): project a file from its db section — 3 statements per Go file, not 55 by @jamestexas in #678
  • [mache-91d903] fix(ingest): selector field labels now constrain captures — no more phantom paramtype.method nodes by @jamestexas in #679
  • [mache-c777ef] fix(schema): rust methods are receiver-qualified — functions/ holds free functions only by @jamestexas in #680
  • [mache-94f571] fix(ingest): a rendered name is one node-ID segment — slashed imports are reachable again by @jamestexas in #686
  • [mache-2de6c0] feat(bench): task bench:cold — the cold-path budget, measured by @jamestexas in #687
  • [mache-51571b] fix(schema): go methods on generic receivers are methods again by @jamestexas in #688
  • [mache-34c926] fix(schema): C# and Ruby methods say which type declares them by @jamestexas in #689
  • [mache-399c25] fix(ingest): a re-ingested file keeps its node IDs and leaves no husks by @jamestexas in #690
  • [mache-daacc3] fix(schema): C# records are projected, positional parameters included by @jamestexas in #691
  • [mache-80a851] perf(ingest): persistent parse cache — a rebuild reuses the parse instead of redoing it by @jamestexas in #692
  • [mache-7a7919] fix(ingest): an incremental re-index cannot overwrite a skipped file's construct by @jamestexas in #693
  • [mache-31abc0] fix(ingest): an incremental re-index reaps a deleted file's constructs by @jamestexas in #694
  • [mache-e7d9d0] perf(build): reuse the previous projection — a rebuild is 2.35s, not 21.4s by @jamestexas in #695
  • [mache-0fd9aa] fix(gitutil): a developer's global git hooks no longer run in mache's test repos by @jamestexas in #696
  • [mache-4fdbfd] chore(changelog): one heading per type, and the 19 PRs that shipped with no entry by @jamestexas in #698
  • [mache-2d261e] chore(deps): land the five open dependabot bumps in one branch by @jamestexas in #697
  • [mache-7bc00f] fix(gitignore): four untracked paths dirtied a clean checkout by @jamestexas in #699
  • [mache-3a2a8b] fix(graph): wait for the arena flush instead of sleeping a guess at it by @jamestexas in #700
  • [mache-117c0a] chore(beads): trunk refresh — 15 record(s) by @jamestexas in #701
  • [mache-1e2caa] chore(deps): land the six overnight dependabot bumps in one branch by @jamestexas in #708
  • [mache-55faa4] feat(lint): gate a merge on a changelog entry, with an explicit opt-out by @jamestexas in #709
  • [mache-8bf5fa] chore(deps): land the mcp-go 1.1.0 and hcl 2.25.0 bumps in one branch by @jamestexas in #712
  • [mache-be17ce] refactor(smells): read LLO's schema through views, not column names by @jamestexas in #713
  • [mache-8178a5] fix(disk): bound the parse cache and reap orphaned temp dbs by @jamestexas in #714
  • [mache-8178a5] fix(disk): reap sidecars whose db is already gone by @jamestexas in #718
  • [mache-be17ce] refactor(ingest): one definition of the canonical views, not two by @jamestexas in #720
  • [mache-3dbaad] chore(deps): land the ojg, sqlite and mcp-go bumps in one branch by @jamestexas in #719
  • [mache-be17ce] refactor(lloschema): the LLO schema boundary is its own package by @jamestexas in #721
  • [mache-be17ce] test(fixturedb): the projection-v6 schema mirror, derived and verified by @jamestexas in #722
  • [mache-3063fb] perf(graph): compile each read statement once, not once per call by @jamestexas in #726
  • [mache-21c210] fix(build): publish the output db in one rename, not in place by @jamestexas in #727
  • [mache-be17ce] refactor(fixturedb): each producer owns its table shape through a dialect by @jamestexas in #728
  • [mache-d446a4] fix(leyline): judge a daemon by its binary_version, not its schema version by @jamestexas in #730
  • [mache-5ea00b] feat(release): a parity gate that checks behavior against the last release by @jamestexas in #731
  • [mache-3dbaad] chore(deps): land the go-task and go-billy bumps in one branch by @jamestexas in #729
  • [mache-538c51] fix(ingest): report the files a newly created directory already contains by @jamestexas in #732
  • [mache-25f49e] fix: stopping mache no longer orphans its leyline daemon by @jamestexas in #734
  • [mache-5ea00b] fix(release): a leak in the base release is a note, not a failure by @jamestexas in #735
  • [mache-73d5c6] test(leyline): the spawn-argv fake binds its own socket, no 2s deadline by @jamestexas in #736
  • [mache-be17ce] test(fixturedb): a projection-v6 producer, read through the same vocabulary as v4 by @jamestexas in #737
  • [mache-bc65f8] fix(nfsmount): continue a split write instead of zero-filling it by @jamestexas in #738
  • [mache-90cb9f] feat(lloschema): address projection-v6 nodes by path without v_node_path by @jamestexas in #739
  • [mache-90cb9f] feat(graph): the nodes-table reader reads projection-v6 by @jamestexas in #740
  • [mache-90cb9f] feat(ingest): the AST walker reads projection-v6 by @jamestexas in #741
  • [mache-90cb9f] feat(graph): definitions, references and callees read projection-v6 by @jamestexas in #742
  • [mache-90cb9f] feat(smells): find_smells reads projection-v6, and refuses rules that would lie on it by @jamestexas in #743
  • [mache-90cb9f] fix(buildcache): refuse a projection-v6 push, naming why by @jamestexas in #744
  • [mache-2dc105] fix(smells): every built-in rule reads node ids as opaque, and agrees on projection-v6 by @jamestexas in #745
  • [mache-90cb9f] feat: the last readers onto projection-v6, found by running the real v0.20.3 binary by @jamestexas in #746
  • [mache-3451a1] feat: pin leyline v0.20.3 and speak control block v3 by @jamestexas in #747
  • [mache-b1f7b8] fix(lsp): get_type_info, get_diagnostics and the _lsp_defs fallback read projection-v6 by @jamestexas in #748
  • [mache-abaf17] fix(serve): callers/ and _schema.json answer at runtime from either projection by @jamestexas in #749
  • [mache-0a5e4c] fix(v6): name injected-language occurrences as LLO's wire does instead of dropping them by @jamestexas in #750
  • [mache-4eadcc] fix(control): publish lock for the control block, with the leyline v0.20.5 pin by @jamestexas in #751
  • [mache-658325] fix(install): never bootout a daemon this install cannot bootstrap back by @jamestexas in #752
  • [mache-95e11c] chore(release): v0.22.0 by @jamestexas in #733

Full Changelog: v0.21.1...v0.22.0