Products

Crucible Continuous Runs

Source

A Crucible arena is a reusable comparison definition. A run is an immutable execution snapshot that can remain active indefinitely.

Before You Create An Arena

The source interlay must be running against a direct endpoint. Every contender must:

  • Belong to the same organization.
  • They must match the serving endpoint kind.
  • Use direct routing.
  • Be reachable through a compiled Crucible protocol adapter.
  • Grant the operator shared READ and WRITE data permission.
  • Already contain production-ready data.

Personal ELS credentials do not authorize background comparison work because the dispatcher cannot inherit a user's database session. An interlay with an active Exodus migration is rejected. Legacy Mirror Mode targets cannot overlap the active Crucible contender set.

Arena Configuration

json
{
  "id": "production-head-to-head",
  "description": "Compare production-ready endpoints",
  "interlay_uuid": "11111111-1111-1111-1111-111111111111",
  "contender_endpoint_uuids": [
    "22222222-2222-2222-2222-222222222222",
    "33333333-3333-3333-3333-333333333333"
  ],
  "sample_ratio": 1.0,
  "target_timeout_ms": 5000,
  "max_queue_delay_ms": 10,
  "max_queued_comparisons": 1024,
  "correctness_tier": "mirroring",
  "response_policy": "primary_only",
  "telemetry_retention_days": 30
}

sample_ratio must be greater than zero and at most one. An arena accepts 2 to 16 unique contenders. Queue, timeout, and concurrency values must be positive. Detailed retention is 1 to 365 days. Arena updates require expected_revision and are blocked while a run is active.

Immutable Run Snapshot

Starting a run stores the arena configuration plus:

  • Source and contender endpoint kinds.
  • Protocol family.
  • Adapter ID and version.
  • comparison_scope: "homogeneous".
  • Comparison semantics.
  • Identity dispatch-plan kind and version.

These fields make old evidence interpretable after adapter changes and reserve an explicit version boundary for future translated grouped comparisons.

Lifecycle

StateBehavior
runningAccepts eligible traffic and write-gap evidence.
pausedRetains the run but stops new contender work. Eligible writes observed while paused create explicit gaps.
completingStops new work and serializes endpoint selection.
completedRecords the selected endpoint and immutable completion evidence.
stoppedEnds without selecting an endpoint.
failedRecords invalid persisted state or an unrecoverable runtime attachment failure.

Only one active run may use an arena or interlay. Running and paused runs are hydrated after Eden restarts. An interrupted completing state is reconciled against the durable interlay endpoint: an applied selection completes, an untouched selection resumes its prior state, and an ambiguous state fails for review. Transient endpoint failures are observations and do not end the run.

The normal interlay API may still update metadata and governance settings during a run, but it cannot replace the serving endpoint. Use Crucible completion for endpoint selection.

Nonblocking Backpressure

The application never waits for Crucible capacity. The serving path reads prehydrated state, classifies eligibility, clones immutable governed input, and attempts one bounded nonblocking handoff.

Workers acquire contender permits all-or-none and dispatch concurrently. Protocol safety exclusions, sampling, and pause state become expected skip counters. A full queue, stale queue item, saturated target, or unavailable analytics sink becomes a drop, delivery-gap, or lag counter. None of these conditions becomes application latency.

Reads And Writes

Each adapter decides whether a request is safe and classifies it as read, write, or other. Eligible writes are attempted on every contender, but delivery is explicitly best effort. Review these fields before completion:

  • Per-target read and write attempts and successes.
  • Expected read and write skips caused by protocol safety, sampling, or pause state.
  • Known read comparison gaps and write-delivery gaps.
  • Queue-dropped writes.
  • Incomplete target observations.

Crucible does not provide replication or synchronization guarantees.

Help improve Eden Docs

Find something unclear or incomplete? Review the source and propose an update.

View on GitLab Updated August 2, 2026