Docket.Graph.Compiler (docket v0.1.0)

Copy Markdown View Source

Public verification and runtime materialization entry point.

The compiler is the only path from the public Docket.Graph document to the internal Docket.Runtime.Graph. verify/2 and compile/2 run the same pipeline - including lowering and lowered-result validation when no blocking diagnostics were found - and differ only in what they return: verify/2 returns the annotated public graph, compile/2 returns the runtime graph.

Representable graph invalidity surfaces as Docket.Graph.Diagnostic values attached to the returned graph, never as exceptions. Stale diagnostics on the input graph are ignored; every call produces a fresh diagnostic list.

Options

  • :profile - :publish (default) or :run; both apply identical rules in v0.1
  • :max_supersteps - runtime default cycle bound used when the graph does not declare a "max_supersteps" policy

Summary

Functions

Compiles a public graph into an internal runtime graph.

Verifies that a graph is publishable/runnable.

Types

opts()

@type opts() :: keyword()

Functions

compile(graph, opts \\ [])

@spec compile(Docket.Graph.t(), opts()) ::
  {:ok, Docket.Runtime.Graph.t()} | {:error, Docket.Graph.t()}

Compiles a public graph into an internal runtime graph.

verify(graph, opts \\ [])

@spec verify(Docket.Graph.t(), opts()) ::
  {:ok, Docket.Graph.t()} | {:error, Docket.Graph.t()}

Verifies that a graph is publishable/runnable.

Returns the graph with fresh diagnostics attached. {:ok, graph} may still carry warning or info diagnostics; {:error, graph} carries at least one error diagnostic.