Topic
coding agents
2026-10-02 · notes
Outside any functionIn a mixed Go/JavaScript checkout, impact analysis reported zero changed functions and claimed every edit fell outside all functions. Why root manifests blind polyglot analyzers, how arrow functions hide from LSP kinds, and why missing symbols must be a gap rather than a verdict.
2 min
2026-10-02 · notes
Sharing rust-analyzer across Git worktrees: in-memory overlay architecture and concurrency lessonsIn a multi-agent coding fleet, running separate rust-analyzer instances for every Git worktree multiplies memory consumption. Here is how an in-memory VFS overlay shares a single analysis database across worktrees, the Salsa concurrency traps we encountered, and our proposal to upstream.
4 min
2026-10-01 · design note
Language detection: what sixty test cases proveprod-code v0.3.19 expands workspace detection, but a detected language is not proof of semantic support. The marker matrix and release artifacts show what the version provides.
4 min
2026-10-01 · notes
One field, three spellingsCross-language schema rename needs semantic edits for identifiers and separate text edits for wire names. A polyglot fixture shows how prod-code plans the change, validates it, and reports what remains.
6 min
2026-09-30 · notes
The refactor no tool ownsRename is everywhere; changing what a function takes is nowhere. Building it meant letting the declaration write the rule, checking the result against the analyzer's own reference list, and refusing to write anything that does not compile.
5 min
2026-09-30 · notes
204 Code Clones and Two Self-Loops: Dissecting Bevy's 97-Crate Engine with 67 AST ToolsWe benchmarked all 67 prod-code AST tools against bevyengine/bevy: 661K lines of Rust, 97 crates, 204 exact code clones, 2 dev-dependency loops, and Bug #739 discovered and fixed in fast-sync.
9 min
2026-09-30 · notes
347 Code Clones and a Self-Loop: Breaking Down uv's 74-Crate Workspace with 67 AST ToolsWe benchmarked all 67 prod-code AST tools against astral-sh/uv: 559K lines of Rust, 74 crates, 347 duplicated test clones, a self-referential cycle in uv-preview, and Issue #738 resolved in fast-sync.
10 min
2026-09-30 · design note
Half a Million Lines of Arrow: What 67 AST Analyzers Found Inside Polars' Query EngineWe pointed all 67 tools of prod-code at pola-rs/polars on an idle 32-core cluster node. 526K lines of Rust across 33 crates, 4 circular DAG paths, catching a UTF-8 non-char-boundary tokenizer panic, in-memory RAM validation, and 36-test remote execution.
14 min
2026-09-29 · notes
Hover lies by omissionA struct with eleven fields shows ten, so any test value built from that answer is missing one and nothing says so until a build. What it takes to generate a fixture you can trust: read the declaration rather than the summary, and type-check the result before handing it over.
6 min
2026-09-29 · design note
7,156 Cyclic Module Paths: Stress-Testing Tantivy's Search Engine with 67 AST ToolsWe subjected quickwit-oss/tantivy to all 67 prod-code tools on an idle 32-core cluster node. Full results across 7,156 module cycles, 18-file AST renames, clone detection in JIT expressions, and safe-delete invariants.
14 min
2026-09-29 · design note
Can 67 AST Tools Break Ripgrep? Stress-Testing Rust's Fastest Grep on an Idle Cluster NodeWe pointed the full 67-tool matrix of prod-code at BurntSushi/ripgrep on an idle 32-core cluster node. Sub-millisecond sync, AST slicing, 30 refactorings, in-memory pre-flight validation, and resolving Issue #735.
21 min
2026-09-29 · design note
Six Circular Dependencies in Tokio: What 67 AST Analyzers Found Inside Rust's Async EngineWe pointed all 67 tools of prod-code at tokio-rs/tokio on an idle 32-core cluster node. From 6 circular crate cycles and silent Deref evaluation ordering traps to an unhandled sysroot crash on Box—here is what happened.
16 min
2026-09-28 · notes
The files are not the answerAn agent asked to change one function opens three files and spends most of its context on code that has nothing to do with the task. A slice is the other shape of the same question: the declarations the function depends on, and nothing that merely lives beside them.
6 min
2026-09-27 · notes
Both bugs said no matchesA structural rewrite that found nothing, twice, for two unrelated reasons in two different layers. What it takes to tell an empty answer from a broken one, and why the fix was tracing rather than thinking harder.
5 min
2026-09-26 · design note
Your comments are the search indexAn agent that knows what it wants but not what it is called has nothing to ask. We gave it a question box, then measured what decides whether the answer is any good: not the ranking, the prose your team did or did not write above each function.
6 min
2026-09-25 · design note
Stop letting agents test in your working treeEvery agent harness runs the same loop: write a candidate fix into your checkout, run the tests, revert, try the next one. We moved that loop into overlay shadows of the mirrored workspace, mounted at the workspace's own path, and it got faster, not just cleaner.
6 min
2026-09-23 · design note
The analyzer already knows your patch is brokenAn agent writes a file, runs a build, reads the errors and tries again. The database that answered its last hover could have told it in 100 ms, without writing anything. What that takes, and the one error class rust-analyzer stays silent about.
5 min
2026-09-22 · design note
Never grep for a line number againLSP is positional: to ask who calls a function you must first know its file, line and column. Agents get that by grepping, and grep does not know what a symbol is. We made every tool take the name instead.
4 min
2026-09-22 · design note
A mirror, not a mountThe analyzer runs on a node across the LAN and needs your code there. Not over a network filesystem, and not by uploading the tree every time: a manifest of hashes, a watermark per node, and a watcher that syncs only when something changed.
5 min
2026-09-21 · design note
Salsa has no branchesTwo agents on two worktrees of one repository, sharing one analyzer database, answer each other's questions. A benchmark that forks four worktrees and asserts what each should see, and why we stopped trying to share anything writable.
5 min
2026-09-21 · design note
Your laptop is the wrong place for rust-analyzerTen coding agents in ten worktrees means ten analyzers and ten cargo builds on one machine. We moved the analyzer, the builds and the tests to Linux nodes on the LAN, mirror the checkout there by content hash, and let the laptop do the one thing it is good at: editing.
6 min
2026-09-19 · fleet ops
The answer that used to be trueAn agent taking over acts on a fact someone else wrote. Overwriting memory hands back a stale answer with nothing on it that says so.
4 min
2026-09-14 · fleet ops
Why every delegated task gets its own worktreeA delegated task is a scope, a worktree and an acceptance command. The worktree is the part we will not trade away, and the reason is whatever the resident agent happens to be doing at the same moment.
5 min























