Ragex.Git.Enricher (Ragex v0.18.1)

View Source

Background enrichment of knowledge graph nodes with git metadata.

After a directory analysis completes, the Enricher walks all file nodes in the graph and attaches git information:

  • :last_author -- who last modified the file
  • :last_modified -- when it was last modified
  • :commit_count -- total commits touching the file
  • :pr_origin -- the PR number that introduced the file (if indexed)

For function nodes, the enrichment includes:

  • :last_author -- who last modified the function
  • :git_age_days -- days since last modification

The enrichment runs asynchronously via Task.async_stream/3 with a concurrency limit to avoid overwhelming the git backend.

Edge types added to the knowledge graph

  • :authored_by -- from file/function node to an author identifier
  • :introduced_in_pr -- from file node to a PR number
  • :co_changes_with -- from file node to another file node (via CoChange)

Summary

Functions

Returns a specification to start this module under a supervisor.

Trigger enrichment for all file nodes in the knowledge graph.

Trigger enrichment synchronously. Blocks until complete.

Returns the status of the last enrichment run.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

enrich(path)

@spec enrich(String.t()) :: :ok

Trigger enrichment for all file nodes in the knowledge graph.

Runs asynchronously. Returns immediately with :ok.

enrich_sync(path)

@spec enrich_sync(String.t()) :: {:ok, map()} | {:error, term()}

Trigger enrichment synchronously. Blocks until complete.

Returns {:ok, stats} with enrichment statistics.

start_link(opts \\ [])

status()

@spec status() :: map()

Returns the status of the last enrichment run.