Scry.Runner (scry v0.1.22)

Copy Markdown View Source

The shared driver core for mix compile.scry and mix scry: database lifecycle, manifest warm start, input sync, the souffle gate, and analysis demand.

One Roux.Database lives for the duration of a run; the manifest is the only continuity across OS processes. The manifest is written even when analyses degrade — the input syncs done this run stay warm, so error-loop editing stays incremental.

When souffle is missing, no solve is demanded at all: a memoized {:error, :souffle_not_found} would only heal when an input above it changed, so the degraded path never lets one into the manifest. The souffle version rides :env_fingerprint as the second line of defense — installing (or upgrading) souffle moves the fingerprint and invalidates anything that slipped through.

Summary

Functions

The manifest path shared by mix compile.scry and mix scry — one incremental state, whichever entry point drives it.

Runs the configured analyses against the project's compiled beams.

Functions

manifest_file()

@spec manifest_file() :: String.t()

The manifest path shared by mix compile.scry and mix scry — one incremental state, whichever entry point drives it.

run(config, opts)

@spec run(
  Scry.Config.t(),
  keyword()
) :: Scry.Runner.Result.t()

Runs the configured analyses against the project's compiled beams.

Options:

  • :manifest (required) — the manifest path for cross-run incrementality.
  • :force — skip the warm start and recompute everything (default false).