IExperimentStore
AgentPrism.Abstractions.dllDefines the store for A/B experiments.
public interface IExperimentStoreMethods
Section titled “Methods”AdvanceCanaryRampAsync(string, string, IReadOnlyList<ExperimentVariant>, CancellationToken)
Section titled “ AdvanceCanaryRampAsync(string, string, IReadOnlyList<ExperimentVariant>, CancellationToken)”Applies a gradual-increase decision from the canary evaluator. The experiment remains ExperimentStatus.Running and only variant weights change. Only the canary evaluation service calls this method.
ValueTask<Experiment> AdvanceCanaryRampAsync(string tenantId, string name, IReadOnlyList<ExperimentVariant> variants, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
name string
The experiment name.
variants IReadOnlyList<ExperimentVariant>
The new variant weights. They must total 100.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The updated experiment.
DeleteAsync(string, string, CancellationToken)
Section titled “ DeleteAsync(string, string, CancellationToken)”Deletes an experiment. A running experiment must be stopped before deletion.
ValueTask<bool> DeleteAsync(string tenantId, string name, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
name string
The experiment name.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”true when deletion occurs.
GetAsync(string, string, CancellationToken)
Section titled “ GetAsync(string, string, CancellationToken)”Gets the experiment with the specified name.
ValueTask<Experiment?> GetAsync(string tenantId, string name, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
name string
The experiment name.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The experiment, or null when it does not exist.
GetRunningAsync(string, string, CancellationToken)
Section titled “ GetRunningAsync(string, string, CancellationToken)”Gets the ExperimentStatus.Running experiment for an agent. Returns null when none exists. An agent can have at most one running experiment at a time.
ValueTask<Experiment?> GetRunningAsync(string tenantId, string agentName, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
agentName string
The agent name.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The running experiment, or null when none exists.
ListAsync(string, CancellationToken)
Section titled “ ListAsync(string, CancellationToken)”Lists all experiments for a tenant by name.
ValueTask<IReadOnlyList<Experiment>> ListAsync(string tenantId, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”ValueTask<IReadOnlyList<Experiment>>
The experiments.
ListRunningWithCanaryAsync(CancellationToken)
Section titled “ ListRunningWithCanaryAsync(CancellationToken)”Lists experiments across all tenants that are ExperimentStatus.Running and define Experiment.Canary.
ValueTask<IReadOnlyList<Experiment>> ListRunningWithCanaryAsync(CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”ValueTask<IReadOnlyList<Experiment>>
The running experiments that define a canary policy.
Remarks
Section titled “Remarks”This is a maintenance operation for the canary evaluator. It scans all
tenants for the same reason as IPendingApprovalStore.ExpireAsync.
RollbackCanaryAsync(string, string, IReadOnlyList<ExperimentVariant>, string, CancellationToken)
Section titled “ RollbackCanaryAsync(string, string, IReadOnlyList<ExperimentVariant>, string, CancellationToken)”Applies an automatic rollback decision from the canary evaluator. It moves the experiment to ExperimentStatus.Stopped, restores weights to the control variant, and writes Experiment.RollbackReason.
ValueTask<Experiment> RollbackCanaryAsync(string tenantId, string name, IReadOnlyList<ExperimentVariant> variants, string reason, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
name string
The experiment name.
variants IReadOnlyList<ExperimentVariant>
The weights restored to the control variant. They must total 100.
reason string
The rollback reason.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The updated experiment.
Remarks
Section titled “Remarks”The caller, the canary evaluation service, must write the audit trail before calling this method. If that write fails, it must not call this method: a rollback that cannot be audited is not applied.
SaveAsync(Experiment, CancellationToken)
Section titled “ SaveAsync(Experiment, CancellationToken)”Creates or updates an experiment. Only an ExperimentStatus.Draft experiment can be updated. Updating a started experiment throws an AgentPrismException.
ValueTask<Experiment> SaveAsync(Experiment experiment, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”experiment Experiment
The experiment to save.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The saved experiment.
SetCanaryPolicyAsync(string, string, CanaryPolicy?, CancellationToken)
Section titled “ SetCanaryPolicyAsync(string, string, CanaryPolicy?, CancellationToken)”Defines or removes an experiment canary policy. Pass
null for policy to remove it.
ValueTask<Experiment> SetCanaryPolicyAsync(string tenantId, string name, CanaryPolicy? policy, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
name string
The experiment name.
policy CanaryPolicy?
The new policy, or null to remove it.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The updated experiment.
Remarks
Section titled “Remarks”Unlike IExperimentStore.SaveAsync, this method works regardless of experiment status, Draft or Running. A canary policy can be defined while an experiment already receives traffic.
StartAsync(string, string, CancellationToken)
Section titled “ StartAsync(string, string, CancellationToken)”Moves the experiment to ExperimentStatus.Running. Throws an AgentPrismException when another experiment runs for the same agent.
ValueTask<Experiment> StartAsync(string tenantId, string name, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
name string
The experiment name.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The updated experiment.
StopAsync(string, string, CancellationToken)
Section titled “ StopAsync(string, string, CancellationToken)”Moves the experiment to ExperimentStatus.Stopped.
ValueTask<Experiment> StopAsync(string tenantId, string name, CancellationToken cancellationToken = default)Parameters
Section titled “Parameters”tenantId string
The tenant identifier.
name string
The experiment name.
cancellationToken CancellationToken
The cancellation token.
Returns
Section titled “Returns”The updated experiment.