Skip to content

framework/contracts

Storage must not import Prometheus types. Telemetry must not import processing runners. When two layers need the same shape — a saturation snapshot, a probe metric row, a worker metric delta — it lives here as a plain DTO: no I/O, no prometheus_client.

Examples:

  • SaturationSlice — registry window stats that telemetry only emits (saturation).
  • ProbeBindings / ProbeRow — opaque candidate payload + metrics; the step decides the winner (probe).
  • WorkerMetricDelta — what multi-worker drivers merge before emit.
File Holds
saturation_slices.py saturation / homogeneity slices
dataset_metric_rows.py dataset snapshot/final and corpus-growth metric rows
worker_metric_delta.py multi-worker metric deltas
mapping_build.py mapping build result and stats
reduce_merge.py reduce/merge result and stats
embed_train_stats.py embed-train runtime statistics + as_public_dict()
embed_train_metric_catalog.py live/final embed-train gauge name catalog
probe.py opaque probe bindings and metric rows (no winner field)

New cross-layer structures go here — not copied into storage/ or telemetry/.