Skip to content

Latest commit

 

History

History
58 lines (48 loc) · 3.9 KB

File metadata and controls

58 lines (48 loc) · 3.9 KB

Maintenance fork

FM-Agent's maintenance fork of colbymchenry/codegraph.

Pinned base: upstream v1.6.0 (2026-08-26) — a tagged release, as the policy below prefers. It carries fixes for the three issues reported upstream from this project since the previous base: Rust field-receiver resolution (#1585), generic impl ownership (#1588) and Erlang per-arity identity (#1610). The previous base was c6aaa20 (upstream main, 2026-08-07), 27 commits behind this tag; see issue #10 for the full rationale of this sync.

Upstream shipped the C macro-attribute extraction fix (issue #1211, PR #1311) in v1.5.0, so the base carries it natively; the fork no longer needs its own patch for it.

Patches: two, listed below. Apart from them the tree matches the pinned base, so the fork stays cheap to re-sync. Every patch lives as a merged pull request here and must be re-applied on each upstream sync — if a merge drops one, this list is what catches it.

File Patch
src/extraction/index.ts fm_agent added to DEFAULT_IGNORE_DIRS. FM-Agent writes its work directory into the project it analyses, holding one copy of every function it extracts plus the scripts staged to produce them, so indexing it lists each function twice and mixes tool code in with project code. Upstream deliberately keeps names that could be real source out of that list, so this stays fork-only; a project that does own an fm_agent/ directory opts back in with a .gitignore negation (!fm_agent/).
__tests__/fm-agent-workdir-exclusion.test.ts Regression cover for the patch above, so a sync that drops or widens it fails npm test instead of shipping. Pins four things: the exclusion applies at the root and at any depth; it is a whole-name match, so fm_agent_data/ and my_fm_agent/ stay indexed; a .gitignore negation takes the directory back; and none of it depends on git.

A sync brings new upstream test files in on its own — they are separate files, so git takes them without asking. The case to watch for is upstream moving the test tree or changing how the runner discovers it: our file would stay where it is, quietly stop being collected, and nothing would fail. Check the suite's file count after a sync, not just that it is green.

Version marker: codegraph --version1.6.0-fmagent.N identifies a build from this fork. Note this is a SemVer pre-release of 1.6.0, so it sorts below plain 1.6.0; the updater must therefore point at this fork (see below), never upstream, or it would advertise a "downgrade to upstream" as an upgrade.

All install/upgrade entry points point at this fork, so a fork install never silently escapes back to upstream: install.sh / install.ps1 (REPO / $repo) and the built-in updater (src/upgrade/index.ts REPO) all resolve releases and installers from fmagent-project/codegraph.

Releases: tagged vX.Y.Z-fmagent.N, each carrying self-contained per-OS bundles (darwin/linux/windows, arm64/x64) with the native Rust extraction kernel. FM-Agent's install.sh pins one via CODEGRAPH_VERSION.

Policy: pin to a base, don't chase upstream — update only when we need something a newer upstream state carries. Prefer a tagged release; an untagged main commit is fair game when what we need is not released yet, and then the commit id is the base (record it above, and verify the build ourselves — nothing upstream has vetted it). Base updates land via a pull request that merges that upstream point into main (so upstream stays an ancestor — blame, audits and future syncs follow upstream history) and re-applies this fork layer; merge such PRs with a merge commit, not a squash. Upstream is tracked via the upstream git remote.