Go call-graph resolution: list each package once, identical edges

Merged
AF
7d ago
+679-17

Accepted agent delivery; branch-keyed search descriptor included.


Summary by cubic

Memoize Go package resolution per resolver pass so each package directory is listed once and symbol targets match the scan exactly.

  • Caches sorted package membership and unique or ambiguous local and exported symbol targets in a shared 8 MiB memo.
  • Falls back to the scan for oversized packages and for views that record filesystem facts.
  • Marks oversized packages so a failed build is attempted only once per pass.
  • Adds parity, work-count, eviction, and oversized-marker tests across disk, memory, and lazy adapters.

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; no new actionable issues remain.

Summary

Adds bounded Go package caching for each resolver pass.

  • Go call-graph lookups reuse package files and symbol targets.

Both earlier unnumbered findings are addressed: oversized builds are not retried, and the comparison no longer shares cached membership. No new actionable issues were found. Tests were inspected but not run.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Go target lookup] --> B{Package already cached?}
  B -->|Yes| C[Use cached target]
  B -->|No| D{Package marked oversized or marker budget full?}
  D -->|Yes| E[Scan package directly]
  D -->|No| F[Build package index]
  F --> G{Within size limit?}
  G -->|Yes| H[Cache whole package]
  H --> C
  G -->|No| I[Remember oversized package]
  I --> E

Reviews (2) · Last reviewed commit: "mason: remember oversized Go packages an..." · Reviewed by Greptile