Forge.Measurement.Orchestrator (Forge v0.1.1)

View Source

Orchestrates measurement computation with support for:

  • Idempotency via deterministic measurement IDs
  • Async execution with Task.Supervisor
  • Batch processing for vectorized measurements
  • Measurement dependencies and execution ordering
  • Version tracking and cache invalidation
  • Telemetry integration

Usage

# Compute single measurement
{:ok, :computed, value} = Orchestrator.measure_sample(sample_id, MyMeasurement, [])

# Batch processing
results = Orchestrator.measure_batch(sample_ids, MyMeasurement, [])

# Async execution
task = Orchestrator.measure_async(sample_ids, MyMeasurement, [])
results = Task.await(task)

# With dependencies
{:ok, :computed, value} = Orchestrator.measure_with_dependencies(
  sample_id,
  MeasurementWithDeps,
  []
)

Summary

Functions

Retrieves a measurement from storage.

Computes measurements asynchronously using Task.Supervisor.

Computes measurements for multiple samples.

Computes or retrieves a measurement for a single sample.

Computes a measurement after ensuring all dependencies are computed.

Functions

get_measurement(sample_id, measurement_key, opts \\ [])

Retrieves a measurement from storage.

Options:

  • :version - Specific version to retrieve (default: latest)

measure_async(sample_ids, measurement_module, opts \\ [])

Computes measurements asynchronously using Task.Supervisor.

Returns a Task that can be awaited for results.

measure_batch(sample_ids, measurement_module, opts \\ [])

Computes measurements for multiple samples.

Respects batch_capable? and batch_size settings for efficient processing.

Returns a list of results in the same order as sample_ids:

  • {:ok, :computed, value} - Measurement was computed
  • {:ok, :cached, value} - Measurement was cached
  • {:error, reason} - Computation failed

measure_sample(sample_id, measurement_module, opts \\ [])

Computes or retrieves a measurement for a single sample.

Returns:

  • {:ok, :computed, value} - Measurement was computed and stored
  • {:ok, :cached, value} - Measurement was retrieved from cache
  • {:error, reason} - Computation failed

measure_with_dependencies(sample_id, measurement_module, opts \\ [])

Computes a measurement after ensuring all dependencies are computed.

Performs topological sort of dependencies and computes them in order.

Returns same result format as measure_sample/3.