Products
Crucible Continuous Runs
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
READandWRITEdata 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
{
"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
| State | Behavior |
|---|---|
running | Accepts eligible traffic and write-gap evidence. |
paused | Retains the run but stops new contender work. Eligible writes observed while paused create explicit gaps. |
completing | Stops new work and serializes endpoint selection. |
completed | Records the selected endpoint and immutable completion evidence. |
stopped | Ends without selecting an endpoint. |
failed | Records 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.