Skip to content

Catch canonical up through the open language and module PRs - #278

Merged
cursor[bot] merged 59 commits into
canonicalfrom
jimmy/merge-open-prs-088a
Sep 26, 2026
Merged

cursor[bot] merged 59 commits into
canonicalfrom
jimmy/merge-open-prs-088a

Conversation

@philocalyst

@philocalyst philocalyst commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

Canonical was rewound to 5a36a6a50 (formulae fix), which dropped the Homebrew service, the slim MCP session tools, and the later integration commits. This branch puts that work back and merges every canonical PR that was still open.

What lands

Install on a Mac

The v0.2.0 bottle is the older binary. --HEAD builds this tree, including the 12-tool session list and the stronger prompt.

brew tap nudoxorg/backend https://github.com/nudoxorg/Backend.git
brew install --HEAD nudoxorg/backend/backend-mcp
brew services start backend-mcp

The service listens on http://127.0.0.1:8741/mcp. The bearer token is written to $(brew --prefix)/etc/backend-mcp.token. Add a project by calling backend.index with its absolute path. No project file is required. Daemon state stays in $(brew --prefix)/var/lib/backend-mcp.

Verification

cargo check --tests --locked --offline of the crates these PRs touch (engine, local-service, frontends, compile, execution, store, flow, semantic, runtime, mcp, qdrant) completed clean before #276 and #277. Those two merged with no overlapping files; a follow-up check of backend-engine, backend-local-service, and backend-frontend-rust covers them.

Open in Web Open in Cursor 

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

cursoragent and others added 30 commits September 26, 2026 01:07
backend.index admits a directory after the service is up. The launch
script keeps daemon state in Homebrew's var directory and no longer
refuses to start when no project file is configured.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The client list is the shelf, index, and coordinate reads. backend.index
requires an absolute path. The handshake tells the caller to add the
repository before searching it.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
backend.index adds the directory. The v0.2.0 bottle still installs, and
the launch script keeps daemon state in Homebrew's var directory.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The structural graph matched name( only inside one file, so graph and
related dropped every cross-file call when no semantic publication
existed. Import bindings from TypeScript, Rust, and Python now resolve
to the one callable they name in another indexed file.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A complete semantic image used to end the query, so a caller in another
file and a relative import lowered as a foreign package never became the
declaration they name. Every complete image is scanned, a unique project
target replaces that foreign row, and structural import edges land on the
published row even when its label is semantic.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Find-references keeps local occurrences and also follows a unique foreign package call and an imported structural call. Ambiguous targets, bare package names, and reads stay unmatched, and a semantic site is not duplicated.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A cross-file call that names its declaring type now lands on that
method in graph and references. C# emits the type and method instead
of the whole expression.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A call keyed as workout.service now joins set_note in
workout/service.py or that package's __init__.py, instead of
looking for a file named workout.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A call keyed as example.com/gymbro/workout now joins SetNote in
the .go files of that directory, using the longest matching
suffix, instead of staying an external node.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A method rust-analyzer resolves in another project-local file becomes a cargo package key of that module path. The path is owned by the fact set and dropped with the compile.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A call written as service::set_note() names the defining module and the function, so graph and references can follow it the same way they follow a method call.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A call libclang resolves into a project header or source file names that path and the callee, so graph and references can follow it. System calls stay on the system fragment.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
backend.query now points a call at the function declared in another file of the same project, and referencedBy walks back to the caller. Stable references stay external nodes.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A cross-file service::Workout lowers to the cargo module path and the name token, and the query graph joins that type reference back to the struct. Calls and field reads stay on their existing edges.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
A private module-level use had no containing declaration, so the import edge was dropped. The crate root now owns that import without reparenting the items in the file.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Move the FileStore mark-and-sweep impl out of the GC module root so candidate indexes stay next to quarantine helpers.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Move OutputLookup insert and invalidation out of the lookup type so generation helpers stay in the parent.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Move DemandGraph edge and readiness methods out of the demand type so lease tokens stay beside the inline token tests.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Move DurableManifest lookup and paging out of the manifest type so FileStore publication stays in the parent.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The GC tests reach FileStore, fs, and GcPaths through the parent module, so those imports stay behind cfg(test).

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
cursoragent and others added 29 commits September 26, 2026 14:52
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The local-service fixture follows the live retrieve, conditional put, count, and query transcript. Adversarial cases reject a short count, a swapped point id, and a rewritten coordinate, and a second activation skips the put when keys match. The loopback bench records cold, warm, and one-point delta time and bytes.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…module

The store impl now sits beside the binding type. Visibility and the directory sync helper stay where callers already use them.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The inherent impl now lives beside the process type, and the methods native.rs calls stay visible inside crate::native.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The read impl now lives in manifest/read.rs. from_test_parts stays visible to closure tests, and new_index stays visible to the sibling storage and wire modules.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The producer impl now lives in channel/produce.rs. Drop and the lease types stay in the parent, and method visibility is unchanged.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
An unchanged content hash no longer retains a source string. A sibling
edit re-reads the dropped files through the project root and refuses
the compile when those bytes no longer match the admitted hash.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
The client retrieves payload only. The bench was echoing stored vectors,
so a warm readback was the same size as the put. Payload-only readback
is now smaller than the vector put, and a warm upsert still writes nothing.

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…to jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…nto jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…' into jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…89' into jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…a89' into jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…nto jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…' into jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…nto jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
… into jimmy/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…/merge-open-prs-088a

# Conflicts:
#	apps/mcp/src/jsonrpc/tools.rs

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…my/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…y/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…my/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
…y/merge-open-prs-088a

Co-authored-by: Miles Wirht <philocalyst@users.noreply.github.com>
@cursor
cursor Bot merged commit a6da388 into canonical Sep 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants