You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
Pull & Remote File Read Interleaved LSP Notification Handling (crates/prod-code-mcp):
Updated pull_remote_files (sync/pull.rs) and read_remote_file (remote_fs/mod.rs) to ignore asynchronous WireMessage::LspPayload (window/logMessage) and WireMessage::Pong frames with fixed timeout_at deadlines while awaiting HandshakeResponse and ReadFileResponse, preventing prod-code pull from aborting with unexpected message reading file (#1078).
External Toolchain Source Path & Remote Mirror Resolution (crates/prod-code-mcp):
Fixed resolve_file_path (tools/compile_gate.rs) to preserve existing absolute external paths (such as Rust toolchain library sources under .rustup/toolchains/.../library/core/src/error.rs) and map remote workspace mirror paths via workspace_relative_path, while updating resolve_symbol (tools/symbols/resolve.rs) to match relative path hints and award the checkout ranking bonus to remote mirror paths (#1079).
Concurrent Placement Discovery & Resilient MCP Server Startup (crates/prod-code-mcp, crates/prod-code-client):
Updated discover_nodes_with_paths (cluster/discover.rs) to stop after the first responsive seed's cluster_view and probe unverified remembered placements concurrently via join_all, matched "closed the connection" in is_retryable_connection_error (server/failover.rs), and allowed Commands::Mcp (client/src/main.rs) to fall back to the first configured seed on transient startup discovery failures (#1080).
Deep Nested Swift Subproject Routing & Declaration Discovery (crates/prod-code-mcp):
Raised MAX_SEARCH_DEPTH from 6 to 10 in nested_projects.rs, routed nested subproject queries through route_for_path in execute_lsp_query (tools/compile_gate.rs) and across_projects.rs, separated the declarations_in query deadline from the initial Swift sync deadline, and added Swift extension and typealias keywords to declared_at (#1081).
Sticky Build-Node Sessions & Disk-Authoritative Placement Cache (crates/prod-code-mcp):
Updated handle_cluster_rebalance_tick (server/rebalance.rs) to keep active MCP sessions pinned to their current node while status.host.pressure().is_none() and the node fits the workspace, delayed the initial rebalance timer tick by 30 seconds (server/transport.rs), recorded remember_placement on ExecExit (exec/runner.rs), and made load_placement (cluster/placement.rs) read disk-authoritative state so external placement rewrites and removals take effect immediately (#1082).
Nested Git Worktree Exclusion & Component Reference Discovery (crates/prod-code-mcp):
Excluded nested git worktree directories (child directories containing .git, such as .prod/worktrees/*) from source_files, workspace/symbol, and add_locations; added tools/references/lexical.rs and extended caller_migration/mask.rs to resolve relative and multi-line imports, preserve template string interpolations (${...}), Python f-strings (f"...{...}..."), Vue directive expressions (v-*, :, @, #), and JS/TS regex literals (/pattern/flags), while filtering shadowed bindings, comments, and unverified text matches (#1071).
Single-File Outline Readiness & Worktree Base Placement Keys (crates/prod-code-protocol, crates/prod-code-mcp):
Removed "textDocument/documentSymbol" from needs_index (readiness/types.rs) so single-file outlines do not block on workspace-wide indexing, and normalized engine-specific placement keys in session/pool.rs and session/connection.rs to ws_identity.base.as_deref().unwrap_or(&ws_identity.name) (#1083).
Same-Type Rust Inherent Method Moves (crates/prod-code-mcp):
Added move_inherent_method (move_item/item.rs, move_item/execute.rs) to move a Rust inherent method into an existing, verified same-owner impl block in another module of the same crate while promoting private visibility to pub(crate) and validating caller files (#1084).
Rust code_change_signature Fallback Rewrites & Typed-Local Coercion Safety (crates/prod-code-mcp):
Added rewrite_file_calls and apply_fallback_rewrites (signature/rewrite.rs, called from signature/change.rs) with signature/util.rs helpers to rewrite call sites directly from analyzer reference positions when SSR cannot parse a default expression or omits associated-function calls (#1085, #1086), and recorded typed_locals in signature/types.rs, signature/call_sites.rs, and signature/effects/hazards.rs so local bindings whose explicit reference type matches a removed parameter type are classified safely (#1089).
Pinned pull Handshake Redirects & pull/exec CLI Routing (crates/prod-code-mcp, crates/prod-code-gateway, crates/prod-code-client):
Set redirects: false in pull_remote_files (sync/pull.rs) and skipped check_cluster_redirects for client_name == "prod-code-pull" (crates/prod-code-gateway/src/session/handshake.rs), and excluded Commands::Pull and Commands::Exec arguments from command_path_tokens (crates/prod-code-client/src/cli/candidate.rs) so pull and exec route to the workspace's primary placement without language-hint overrides (#1087, #1088).
Proven Pure-Borrow Re-Acquisition in Rust code_extract_function (crates/prod-code-mcp):
Added reacquire_conflicting_borrows and conflicting_borrow_captures (extract_function/borrows.rs, extract_function/tokens.rs), wired into extract_function/execute.rs and extract_function/duplicates/validate.rs, to re-acquire proven pure field borrows (&<param>.<field> and verified standard Option::as_ref() projections) inside extracted helpers when the binding is not used after the selection, or report E0502 when it remains live (#1090).
Swift Subclass override Symbol Supplementation (crates/prod-code-mcp):
Updated declarations_in and files_naming (tools/symbols/across_projects.rs) to scan a bounded set of relevant .swift files and supplement workspace/symbol results with documentSymbol declarations omitted by sourcekit-lsp (#1091).
External-Checkout code_search Routing (crates/prod-code-mcp):
Updated handle_search (tools/analysis_handlers.rs) to validate explicit path arguments, detect canonical paths outside workspace_root via other_checkout, and route searches to the external repository's root and placement (#1092).
Go code_safe_delete Non-Go Artifact & Bundle Symlink Filtering (crates/prod-code-mcp):
Updated refuse_linked_sources (safe_delete_go/directives.rs) to skip build/framework artifact directories (.build, *.framework, *.xcframework) and only refuse directory symlinks whose targets contain .go files (#1094).
Manifest-Scoped Nested Engine Detection for Package Subdirectories (crates/prod-code-mcp):
Added manifest_engine_at (sync/engine/detect.rs) and updated engine_project and expected_engine (sync/engine/project.rs), engine_for_path (cluster/routing.rs), and representative_source_file (tools/symbols/nested_projects.rs) so package subdirectories containing embedded auxiliary files (schema.sql, .proto, .sh, Dockerfile) alongside primary language sources remain with their enclosing project's engine while preserving Vue/Svelte component detection (#1097).
Serialized Workspace Sync & Manifest-First Batch Ordering (crates/prod-code-mcp, crates/prod-code-gateway):
Added per-(workspace, node) client serialization via workspace_sync_lock (sync/cache.rs, sync/push.rs) and per-request gateway serialization via server_workspace_sync_lock (crates/prod-code-gateway/src/sync/apply.rs, sync/sync_fs.rs), sorted project manifests (go.mod, Cargo.toml, Package.swift, pyproject.toml, package.json, etc.) ahead of other files in sync_batches (sync/entry.rs), avoided creating .prod-code-last-used prematurely during apply_sync_probe on fresh unseeded workspaces with missing files, and required a full-manifest upload before accepting workspace_was_fresh in push_sync_round (#1098).