Repository navigation
Releases: grloper/plumbgraph
Releases · grloper/plumbgraph
Release list
v1.1.0
Breaking changes
- Verify report schema is now 2. Consumers must read the separate outcomes: pass, findings failure, incomplete analysis, and non-certifying baseline maintenance.
--update-baselinenow exits 1: it is maintenance, not a passing verification.--fail-onapplies only to dead code that is explicitly opted in; dead code is advisory by default.- MCP baseline writes require
--allow-baseline-update(baseline-write authority is separate from execution).
Changed
- Verify schema 2 separates pass, findings failure, incomplete analysis, and non-certifying baseline maintenance. Required failures and invalid Git bases no longer pass.
- Independent per-check enforcement; dead code is advisory by default. CLI/MCP library mode and policy agree; baseline-write authority is separate from execution.
- Pinned Git baseline mode, atomic maintenance, explicit baseline read errors, preserved unobserved provider entries, complete totals and coverage caveats.
- Provider exit/output failure handling and an offline gate regression corpus.
- Init checks actual Git worktree status rather than any ancestor named
.git. - See migration details before upgrading gate consumers.
Limits (honest)
- No native Windows or macOS validation of 1.1.0; only Linux was verified for this release (see README for what was tested earlier on Windows).
- Trusted verification mode has documented limits: see docs/VERIFY.md. Tier-0 analysis is name-based; a pass covers only the selected checks.
- The attached binary is linux-x64, built locally with
cargo build --release --locked(not CI-built). Verify withsha256sum -c SHA256SUMS.txt.
Plumbgraph v1.0.3
Fixes for false positives and install problems found by running 1.0.2 on a real Unity project (Assets/UYF).
Fixed
- Unity: message methods (
LateUpdate,FixedUpdate,OnDisable, ...) on apartialclass are entry points when any part declares a Unity base (MonoBehaviour,ScriptableObject,NetworkBehaviour,EditorWindow, ...), even when the base is declared in another file. Parts are merged per type within oneAssets/root; the other parts of the type are then live too. Indirect bases (Hero : CharacterBase : MonoBehaviour) are resolved through classes in the index.dead-code --verboseprintsunity-message@partial-merged ...for every suppressed message. - Unity: a message-named method on a class whose Unity base cannot be decided (base type not in the index) under
Assets/is now reported as MEDIUM at most, with the reasonunity-message-name-but-host-type-unresolved, instead of being silently live (partial classes) or HIGH. A class whose bases all resolve to non-Unity classes (DerivedState : PlainBase) is no longer treated as a component, so itsUpdate(float dt)stays reportable. - Unity:
ScriptableWizardis an editor base;OnWizardCreate,OnWizardUpdate,OnWizardOtherButtonare messages.
Added
dead-codeprints two notes when C# files underAssets/are indexed (Unity pack active; do not mass-delete HIGH findings) and--helplinks the Unity pack limitations.docs/PACKS.mddocuments the Unity gaps (scenes/prefabs/UnityEvents, string-based invocation, animation events, Addressables/Resources, scip-dotnet, multiple asmdefs).plumb mcpstartup line on stderr includes the version and pid.plumb doctorwarns (Windows) when it cannot overwrite its own executable, e.g. because an MCP host still runsplumb mcp.- Docs: stop MCP hosts before
cargo installon Windows (or use--root);plumb mcp --rootshould point at the workspace you are working on.
Changed
- Index schema 4 / extractor 9 (new
unitycolumn on symbols): existing indexes are rebuilt once. DeadCodeResult(JSON) has an optionalnotesarray.
Already correct in 1.0.2 (regression tests added only)
- A plain class with
Update(float dt)and no base class is not an engine callback; ordinary methods that merely contain "Update" are not entry points; same-fileMonoBehaviour.Updateis suppressed; a private unreferenced helper on a MonoBehaviour is reported;[MenuItem],[InitializeOnLoad],[InitializeOnLoadMethod],[RuntimeInitializeOnLoadMethod],EditorandEditorWindowhandling; MCPinitializealready carriedserverInfo.version(now asserted).
Plumbgraph v1.0.2
- Docs only: README now matches the released version, the tested Windows scope, supported weakening languages and known limits.
Plumbgraph v1.0.1
Fixes for problems found by using v1.0.0 on real projects (Windows, Unity). Not released; the crate version is still 1.0.0.
Fixed
- Windows:
plumb doctor(andenrich, rule-engine detection inverify --run) reported every provider as missing because lookup used the bare name (cargo), nevercargo.exe/tsc.cmd. Bare names are now tried with thePATHEXTextensions thatstd::process::Commandcan start (.com,.exe,.bat,.cmd); Unix lookup is unchanged. plumb initprinted a Codexconfig.tomlsnippet with a\\?\C:\...path inside a TOML basic string, which does not parse. The verbatim prefix is stripped (\\?\UNC\becomes\\) and the path is written as a TOML literal string, or an escaped basic string when it contains'or control characters. Report paths no longer show\\?\either.plumb map --budget Nwas rejected;--budgetis now a visible alias of--tokens.plumb initand.gitignore:--dry-runshows the lines it would add; it writes.plumbgraph/*+!.plumbgraph/allow.toml(the previous.plumbgraph/made the committed allow-list impossible to commit); any existing rule mentioning.plumbgraph(including!.plumbgraph/) is respected; it works in a subdirectory of a repository; CRLF files keep CRLF; a.gitignorethat is not UTF-8 (for example UTF-16 from PowerShell 5) is no longer read as empty and overwritten.
Added
- C# / Unity dead-code entry points: MonoBehaviour/ScriptableObject/NetworkBehaviour/StateMachineBehaviour/UIBehaviour messages (
Awake,Start,Update,OnTriggerEnter2D, ...), Unity attributes ([RuntimeInitializeOnLoadMethod],[MenuItem],[InitializeOnLoad], ...), and Unity callback interfaces (ISerializationCallbackReceiver,IHasCustomMenu, UI EventSystem handlers). Public methods of Unity classes stay findings with a 0.25 penalty and a UnityEvent / Animation Event fp_risk. Rules and limits:docs/PACKS.md. On Unity's open-project-1 scripts (commit 608eac9) dead-code findings went from 371 to 166 (medium 97 to 28); on Newtonsoft.Json (52fa3ae) they are identical before and after (204). plumb init --no-gitignore.- README: Windows install and PATH setup, and exactly what was tested on Windows.
Changed
- Index schema 3 / extractor 8 (new
framework_riskcolumn): existing indexes are rebuilt once.
Plumbgraph v1.0.0
Plumbgraph v1.0.0
Source-only GitHub release. Not published to crates.io.
Know your code. Verify the change. Plumbgraph is a local code-intelligence and pre-submit verification tool for AI coding agents (CLI plumb, MCP server over stdio).
Highlights
plumb verify: one verdict over dead code, hallucinated/undeclared dependencies, test weakening, diagnostics, semgrep and ast-grep, diffed againstplumb-baseline.jsonso only new findings fail. External tools run only with--run.plumb map(PageRank-ranked, hard token budget) andplumb impact(transitive callers, tests to run).- Languages: Python, JavaScript, TypeScript/TSX, Rust, Go, Java, C# (tier-0, tree-sitter); SCIP overlay for compiler-grade references where you have an index.
- MCP: 13 tools and 3 resources; tested with the official TypeScript SDK and the MCP inspector CLI.
- Provider orchestration (
plumb doctor,plumb enrich),plumb initfor agent config. - Every finding carries
sourceandconfidence; deps allow-list entries require a written reason.
Since the v1.0 candidate (this release PR)
- Version 1.0.0 everywhere (
plumb --version). - Dead-code false-positive fixes found by hand review of chi and gson: Rust
{NAME}format captures, Javamain/C#Main, Java serialization hooks, annotation-driven framework methods; app-mode hint to use--libfor libraries. The index cache rebuilds automatically on upgrade. [[deps_allow]]in.plumbgraph/allow.toml(path glob, optional package, mandatory reason).plumb verify .on plumbgraph itself now passes.plumb verify --fail-on nonereportsREPORT-ONLYinstead ofFAIL.- New logo, social preview, README, demo recordings generated from real runs, architecture and MCP docs.
Validated end to end (see docs/VALIDATION.md)
- Real repos: requests, express, ripgrep, cobra, gson, Newtonsoft.Json, kubernetes (13,558 of 31,421 tracked files were source files and got indexed, in 41 s, no OOM), vscode (14.6k files; 60 s), Wraith, classroom-archiver.
- Fixed from that testing: large-repo memory and speed, weakening detection for Go/Java/C#, alias-import false positives, bounded
check-deps/verifyoutput, MCP map token cost, closed-pipe crashes. - Seeded weakening recall 12/12 on Python, JS, Rust, Go and C#; Java skips and deletions 4/4 each, loosened assertions untested.
Known limitations (read before relying on it)
- Name-based analysis without a SCIP index; dead-code precision on libraries in app mode was 1/40 on chi (use
--lib); recall on real code is unmeasured. See docs/EVALUATION.md. - scip-go/scip-java/scip-dotnet/rust-analyzer SCIP were not run; no Windows testing; MCP agent hosts not tested; no prompts capability.
- Distribution is source-only: no binaries, no crate.
Full changelog: CHANGELOG.md.