Skip to content

Sync fork to upstream v1.6.0 — carries three fixes we reported #10

Description

@Dshuishui

Why

Upstream released v1.6.0 on 2026-08-26. It carries fixes for all three issues we reported since the last sync — each verified as an ancestor of the tag:

Our report Upstream fix Effect
#1585 — Rust: a method call on a typed field resolves to a same-named method on the wrong type #1599 self.inner.run() now resolves on the field's declared type, removing invented self-recursion (a few hundred such edges in ripgrep alone)
#1588 — Rust: methods of a generic impl are qualified by the trait, not the implementing type #1596 methods of impl<T> Source for BufSource<T> are findable under BufSource, and call edges are no longer invented out of empty impl bodies
#1610 — Erlang: same-name different-arity functions collapse into one node #1615 one node per (name, arity) with module:fun/arity identity; f/1 → f/2 becomes a real call edge instead of a self-loop

Our base is already past v1.5.0, so the actual delta is 27 commits (c6aaa20..v1.6.0). Besides the three fixes above, these are the ones in that range that affect how FM-Agent reads the graph:

  • native walkers are guarded against stack overflow and deep files are deferred to wasm — previously deeply nested C/C++ killed indexing (#1581)
  • a C++ .h whose only C++ construct is a plain struct Derived : Base is no longer classified as C (#1592)
  • untracked files inside untracked directories are detected (#1213)
  • kernel results are decoded on indexAll retry passes, and wiped rows self-heal (#1541)
  • editing codegraph.json or a .gitignore refreshes the watcher's scope without a restart (#1590)

(The WAL growth fix and first-class union nodes are not part of this delta — the pinned base already carries them.)

Plan

Per FORK.md: merge the upstream tag into main with a merge commit — never squash, so upstream stays an ancestor — re-apply the fork layer, and check nothing was dropped against the patch table.

Fork layer to preserve, 10 files:

File What
src/extraction/index.ts the only functional patch: fm_agent in DEFAULT_IGNORE_DIRS
__tests__/fm-agent-workdir-exclusion.test.ts its test
install.sh, install.ps1, src/upgrade/index.ts REPO points at this fork
package.json, package-lock.json version marker
.github/workflows/release.yml, .github/workflows/ci.yml fork release pipeline
FORK.md this policy

Base moves c6aaa20v1.6.0. Release as v1.6.0-fmagent.1, which sorts above 1.5.0-fmagent.2.

Follow-ups

  • FM-Agent's fm-agent.toml needs [codegraph].version bumped in the same round. codegraph upgrade resolves this fork's latest release while install.sh pins an exact tag, so a stale pin leaves the two disagreeing — an upgrade moves ahead of the pin and the next install.sh puts it back.
  • Re-indexing is required after upgrading: both the Rust and the Erlang identities changed.
  • Open upstream and not in this release: our #1619 (Erlang arity miscounted when an argument is a comment), plus issues #1373 and #1258.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions