<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Verdict.RuleEngine.EntityFrameworkCore</name>
    </assembly>
    <members>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore">
            <summary>EF Core implementation of <see cref="T:Verdict.RuleEngine.Connectors.IConnectorDefinitionStore"/>. Targets are stored as plain JSON.</summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.#ctor(Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext,Verdict.RuleEngine.Abstractions.RuleEngineOptions,System.TimeProvider,Microsoft.Extensions.Logging.ILogger{Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore})">
            <summary>Initializes the store.</summary>
            <param name="db">Context.</param>
            <param name="options">Options (four-eyes).</param>
            <param name="timeProvider">Time.</param>
            <param name="logger">Logger.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.GetAsync(Verdict.RuleEngine.Connectors.ConnectorRef,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.GetLatestPublishedAsync(System.String,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.SaveDraftAsync(Verdict.RuleEngine.Connectors.ConnectorDefinition,System.String,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.UpdateDraftAsync(System.String,System.Int32,Verdict.RuleEngine.Connectors.ConnectorDefinition,System.String,System.Threading.CancellationToken)">
            <summary>
            Replaces the definition of an existing <see cref="F:Verdict.RuleEngine.Versioning.RulesetState.Draft"/> version in place (targets are
            re-protected). Non-draft versions are immutable — create a new draft instead.
            </summary>
            <param name="connectorId">Connector id (must match <paramref name="definition"/>).</param>
            <param name="version">Draft version number.</param>
            <param name="definition">New definition content.</param>
            <param name="actor">Who edited.</param>
            <param name="ct">Cancellation token.</param>
            <exception cref="T:Verdict.RuleEngine.Connectors.ConnectorException">The version does not exist.</exception>
            <exception cref="T:Verdict.RuleEngine.Versioning.InvalidStateTransitionException">The version is not a draft.</exception>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.DeleteDraftAsync(System.String,System.Int32,System.String,System.Threading.CancellationToken)">
            <summary>
            Deletes a <see cref="F:Verdict.RuleEngine.Versioning.RulesetState.Draft"/> version together with its recorded exchanges. Any other state is
            refused — retire published versions through Deprecated/Archived transitions instead. Removing the last
            version also removes the connector itself.
            </summary>
            <param name="connectorId">Connector id.</param>
            <param name="version">Draft version number.</param>
            <param name="actor">Who deleted.</param>
            <param name="ct">Cancellation token.</param>
            <exception cref="T:Verdict.RuleEngine.Connectors.ConnectorException">The version does not exist.</exception>
            <exception cref="T:Verdict.RuleEngine.Versioning.InvalidStateTransitionException">The version is not a draft.</exception>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.TransitionAsync(System.String,System.Int32,Verdict.RuleEngine.Versioning.RulesetState,Verdict.RuleEngine.Abstractions.TransitionContext,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.ListVersionsAsync(System.String,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.FindRecordedExchangeAsync(Verdict.RuleEngine.Connectors.ConnectorRef,System.String,System.String,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore.SaveRecordedExchangeAsync(Verdict.RuleEngine.Connectors.RecordedExchange,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.EfContractSchemaStore">
            <summary>EF Core implementation of <see cref="T:Verdict.RuleEngine.Abstractions.IContractSchemaStore"/> (table <c>contract_schemas</c>).</summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfContractSchemaStore.#ctor(Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext,System.TimeProvider)">
            <summary>Initializes the store.</summary>
            <param name="db">Context.</param>
            <param name="timeProvider">Time.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfContractSchemaStore.GetAsync(Verdict.RuleEngine.Dsl.ContractRef,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfContractSchemaStore.SaveAsync(Verdict.RuleEngine.Abstractions.ContractSchema,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore">
            <summary>
            EF Core implementation of <see cref="T:Verdict.RuleEngine.Abstractions.IRulesetStore"/>: versioning, lifecycle state machine, four-eyes publishing,
            validation-on-publish, canonical hashing, audit log, test runs and append-only traces.
            </summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.#ctor(Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext,Verdict.RuleEngine.Validation.RulesetValidator,Verdict.RuleEngine.Abstractions.IContractSchemaStore,Verdict.RuleEngine.Connectors.IConnectorDefinitionStore,Verdict.RuleEngine.Abstractions.RuleEngineOptions,System.TimeProvider,Microsoft.Extensions.Logging.ILogger{Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore})">
            <summary>Initializes the store.</summary>
            <param name="db">Context.</param>
            <param name="validator">Validator (re-run on Validated/Published transitions).</param>
            <param name="contracts">Contract store.</param>
            <param name="connectors">Connector definition store.</param>
            <param name="options">Options (four-eyes).</param>
            <param name="timeProvider">Time.</param>
            <param name="logger">Logger.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.GetAsync(System.String,Verdict.RuleEngine.Abstractions.VersionSelector,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.SaveDraftAsync(Verdict.RuleEngine.Dsl.RulesetDocument,System.String,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.CreateDraftFromVersionAsync(System.String,System.Int32,System.String,System.String,System.Threading.CancellationToken)">
            <summary>
            Creates a new draft version by copying the content of an existing version (the "re-publish" / rollback flow:
            published rows never change, a new row is published instead).
            </summary>
            <param name="rulesetId">Ruleset id.</param>
            <param name="sourceVersion">Version to copy.</param>
            <param name="author">Author of the new draft.</param>
            <param name="changeNotes">Change notes.</param>
            <param name="ct">Cancellation token.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.UpdateDraftAsync(System.String,System.Int32,Verdict.RuleEngine.Dsl.RulesetDocument,System.String,System.String,System.Threading.CancellationToken)">
            <summary>
            Replaces the document of an existing <see cref="F:Verdict.RuleEngine.Versioning.RulesetState.Draft"/> version in place. Published (and any
            other non-draft) versions are immutable — edit them by creating a new draft instead
            (<see cref="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.CreateDraftFromVersionAsync(System.String,System.Int32,System.String,System.String,System.Threading.CancellationToken)"/>).
            </summary>
            <param name="rulesetId">Ruleset id (must match <paramref name="doc"/>).</param>
            <param name="version">Draft version number.</param>
            <param name="doc">New document content.</param>
            <param name="actor">Who edited.</param>
            <param name="changeNotes">Optional change notes (kept unchanged when <see langword="null"/>).</param>
            <param name="ct">Cancellation token.</param>
            <exception cref="T:Verdict.RuleEngine.Abstractions.RulesetNotFoundException">The version does not exist.</exception>
            <exception cref="T:Verdict.RuleEngine.Versioning.InvalidStateTransitionException">The version is not a draft.</exception>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.DeleteDraftAsync(System.String,System.Int32,System.String,System.Threading.CancellationToken)">
            <summary>
            Deletes a <see cref="F:Verdict.RuleEngine.Versioning.RulesetState.Draft"/> version. Any other state is refused — published history is
            immutable; retire versions through Deprecated/Archived transitions instead. Removing the last version also
            removes the ruleset itself.
            </summary>
            <param name="rulesetId">Ruleset id.</param>
            <param name="version">Draft version number.</param>
            <param name="actor">Who deleted.</param>
            <param name="ct">Cancellation token.</param>
            <exception cref="T:Verdict.RuleEngine.Abstractions.RulesetNotFoundException">The version does not exist.</exception>
            <exception cref="T:Verdict.RuleEngine.Versioning.InvalidStateTransitionException">The version is not a draft.</exception>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.TransitionAsync(System.String,System.Int32,Verdict.RuleEngine.Versioning.RulesetState,Verdict.RuleEngine.Abstractions.TransitionContext,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.ListVersionsAsync(System.String,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.SaveTestRunAsync(Verdict.RuleEngine.Abstractions.RulesetTestRun,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.SaveExecutionTraceAsync(Verdict.RuleEngine.Abstractions.PersistedTrace,System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.SerializeTrace(Verdict.RuleEngine.Execution.ExecutionTrace)">
            <summary>Serializes a trace for storage (canonical JSON).</summary>
            <param name="trace">Trace.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore.DeserializeTrace(System.String)">
            <summary>Deserializes a stored trace.</summary>
            <param name="json">JSON.</param>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.IVersionedEntity">
            <summary>Lifecycle surface shared by ruleset and connector version rows (used by the shared versioning machinery).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.IVersionedEntity.State">
            <summary>State.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.IVersionedEntity.UpdatedAt">
            <summary>Updated (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.IVersionedEntity.ApprovedBy">
            <summary>Approver.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.IVersionedEntity.PublishedAt">
            <summary>Published (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.IVersionedEntity.DeprecatedAt">
            <summary>Deprecated (UTC).</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetEntity">
            <summary><c>rule_engine.rulesets</c>.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetEntity.Id">
            <summary>Ruleset id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetEntity.Name">
            <summary>Display name (from the latest saved draft).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetEntity.CreatedAt">
            <summary>Created (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetEntity.Versions">
            <summary>Versions.</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity">
            <summary><c>rule_engine.ruleset_versions</c>. Rows in state ≥ Published are immutable (enforced by interceptor).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.RulesetId">
            <summary>Ruleset id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.Version">
            <summary>Version.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.State">
            <summary>State.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.Document">
            <summary>Canonical DSL document (JSON).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.DocumentHash">
            <summary>SHA-256 hex of <see cref="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.Document"/>.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.ContractId">
            <summary>Contract id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.ContractVersion">
            <summary>Contract version.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.ChangeNotes">
            <summary>Change notes.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.Author">
            <summary>Author.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.ApprovedBy">
            <summary>Approver.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.CreatedAt">
            <summary>Created (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.UpdatedAt">
            <summary>Updated (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.PublishedAt">
            <summary>Published (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.DeprecatedAt">
            <summary>Deprecated (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.RowVersion">
            <summary>Concurrency token (SQL Server <c>rowversion</c>; ignored on PostgreSQL where <c>xmin</c> is used).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetVersionEntity.Ruleset">
            <summary>Owning ruleset.</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity">
            <summary><c>rule_engine.ruleset_test_runs</c>.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity.Id">
            <summary>Id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity.RulesetId">
            <summary>Ruleset id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity.Version">
            <summary>Version.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity.Input">
            <summary>Input (JSON).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity.Result">
            <summary>Result (JSON).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity.CreatedBy">
            <summary>Who.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RulesetTestRunEntity.CreatedAt">
            <summary>When (UTC).</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity">
            <summary><c>rule_engine.execution_traces</c>. Append-only (enforced by interceptor).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.Id">
            <summary>Id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.RulesetId">
            <summary>Ruleset id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.Version">
            <summary>Version.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.CorrelationId">
            <summary>Correlation id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.Mode">
            <summary>Mode.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.Outcome">
            <summary>Outcome.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.HardFail">
            <summary>Hard fail.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.Score">
            <summary>Score.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.Trace">
            <summary>Trace (JSON).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.ElapsedMs">
            <summary>Elapsed milliseconds.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ExecutionTraceEntity.CreatedAt">
            <summary>When (UTC).</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorEntity">
            <summary><c>rule_engine.connectors</c>.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorEntity.Id">
            <summary>Connector id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorEntity.Name">
            <summary>Name.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorEntity.Kind">
            <summary>Kind.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorEntity.CreatedAt">
            <summary>Created (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorEntity.Versions">
            <summary>Versions.</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity">
            <summary><c>rule_engine.connector_versions</c>. Targets are stored as plain JSON (kind-specific; no encryption at rest — see
            CLAUDE.md §14 #5). DB targets are never returned to API clients; API base URLs are non-secret and are returned.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.ConnectorId">
            <summary>Connector id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.Version">
            <summary>Version.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.State">
            <summary>State.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.Definition">
            <summary>Definition without targets (JSON).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.ProdTarget">
            <summary>Production target JSON, stored in plain text.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.TestTarget">
            <summary>Test target JSON, stored in plain text.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.Author">
            <summary>Author.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.ApprovedBy">
            <summary>Approver.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.CreatedAt">
            <summary>Created (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.UpdatedAt">
            <summary>Updated (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.PublishedAt">
            <summary>Published (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.DeprecatedAt">
            <summary>Deprecated (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.RowVersion">
            <summary>Concurrency token (SQL Server <c>rowversion</c>; ignored on PostgreSQL).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ConnectorVersionEntity.Connector">
            <summary>Owning connector.</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity">
            <summary><c>rule_engine.recorded_exchanges</c>.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity.ConnectorId">
            <summary>Connector id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity.Version">
            <summary>Version.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity.Operation">
            <summary>Operation.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity.ParamHash">
            <summary>Parameter hash.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity.Response">
            <summary>Response (JSON).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity.Description">
            <summary>Description.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.RecordedExchangeEntity.CreatedAt">
            <summary>Created (UTC).</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.ContractSchemaEntity">
            <summary><c>rule_engine.contract_schemas</c>.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ContractSchemaEntity.Id">
            <summary>Contract id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ContractSchemaEntity.Version">
            <summary>Version.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ContractSchemaEntity.Fields">
            <summary>Fields (JSON array).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.ContractSchemaEntity.CreatedAt">
            <summary>Created (UTC).</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity">
            <summary><c>rule_engine.audit_log</c>. Append-only.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.Id">
            <summary>Id.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.Actor">
            <summary>Actor.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.Action">
            <summary>Action (e.g. <c>SaveDraft</c>, <c>Transition</c>).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.EntityType">
            <summary>Entity type (<c>ruleset</c>, <c>connector</c>).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.EntityId">
            <summary>Entity id (<c>id@vN</c>).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.FromState">
            <summary>Source state.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.ToState">
            <summary>Target state.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.Timestamp">
            <summary>When (UTC).</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.Entities.AuditLogEntity.Details">
            <summary>Details (JSON).</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.ImmutabilityInterceptor">
            <summary>
            Enforces immutability of published versions in the database layer: once a ruleset or connector version is in
            state ≥ Published, only lifecycle fields (state, approver, published/deprecated timestamps, updated_at, concurrency
            token) may change and the row may not be deleted.
            </summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.ImmutabilityInterceptor.SavingChanges(Microsoft.EntityFrameworkCore.Diagnostics.DbContextEventData,Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult{System.Int32})">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.ImmutabilityInterceptor.SavingChangesAsync(Microsoft.EntityFrameworkCore.Diagnostics.DbContextEventData,Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult{System.Int32},System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.AppendOnlyInterceptor">
            <summary>Blocks updates/deletes on execution traces and audit, and updates to historical test-run evidence.</summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.AppendOnlyInterceptor.SavingChanges(Microsoft.EntityFrameworkCore.Diagnostics.DbContextEventData,Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult{System.Int32})">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.AppendOnlyInterceptor.SavingChangesAsync(Microsoft.EntityFrameworkCore.Diagnostics.DbContextEventData,Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult{System.Int32},System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext">
            <summary>
            EF Core context of the rule engine (schema <c>rule_engine</c>, snake_case names set explicitly so both providers
            produce identical identifiers). One provider is active at a time, selected at startup; the few provider-specific
            mappings — JSON column types (<c>jsonb</c> vs <c>nvarchar(max)</c> + <c>ISJSON</c>) and concurrency tokens
            (<c>xmin</c> vs <c>rowversion</c>) — branch on <c>Database.ProviderName</c> inside
            <see cref="M:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder)"/>. EF Core caches the model per provider (each provider gets its own internal
            service provider), so no further plumbing is needed.
            </summary>
        </member>
        <member name="F:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.Schema">
            <summary>Database schema.</summary>
        </member>
        <member name="F:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.JsonColumnAnnotation">
            <summary>Annotation marking a property as a JSON document column.</summary>
        </member>
        <member name="F:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.MigrationsHistoryTable">
            <summary>Migrations history table name.</summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.#ctor(Microsoft.EntityFrameworkCore.DbContextOptions{Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext})">
            <summary>Initializes the context.</summary>
            <param name="options">Options.</param>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.Rulesets">
            <summary>Rulesets.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.RulesetVersions">
            <summary>Ruleset versions.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.RulesetTestRuns">
            <summary>Test runs.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.ExecutionTraces">
            <summary>Execution traces.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.Connectors">
            <summary>Connectors.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.ConnectorVersions">
            <summary>Connector versions.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.RecordedExchanges">
            <summary>Recorded exchanges.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.ContractSchemas">
            <summary>Contract schemas.</summary>
        </member>
        <member name="P:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.AuditLog">
            <summary>Audit log.</summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.IsJsonColumn(Microsoft.EntityFrameworkCore.Metadata.IReadOnlyProperty)">
            <summary>Whether a property is a JSON document column.</summary>
            <param name="property">Property.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder)">
            <inheritdoc />
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.ConfigurePostgreSql(Microsoft.EntityFrameworkCore.ModelBuilder)">
            <summary>PostgreSQL: JSON columns as <c>jsonb</c>; <c>xmin</c> as concurrency token (the <c>row_version</c> column is not mapped).</summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext.ConfigureSqlServer(Microsoft.EntityFrameworkCore.ModelBuilder)">
            <summary>SQL Server: JSON columns as <c>nvarchar(max)</c> with <c>ISJSON</c> check constraints; <c>rowversion</c> concurrency tokens.</summary>
        </member>
        <member name="T:Verdict.RuleEngine.EntityFrameworkCore.VersioningStore">
            <summary>
            The versioning machinery shared by <see cref="T:Verdict.RuleEngine.EntityFrameworkCore.EfRulesetStore"/> and <see cref="T:Verdict.RuleEngine.EntityFrameworkCore.EfConnectorDefinitionStore"/>:
            draft-only guards, four-eyes enforcement, transition side effects, audit rows and the concurrency-wrapped save.
            Both aggregates follow the same lifecycle — changing a rule here changes it for both.
            </summary>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.VersioningStore.EnsureDraft(Verdict.RuleEngine.Versioning.RulesetState,System.String,System.String,System.String)">
            <summary>Refuses any operation on a non-draft version (published history is immutable).</summary>
            <param name="state">Current state.</param>
            <param name="entityLabel"><c>id@vN</c> label.</param>
            <param name="action">What was attempted (<c>edited</c> / <c>deleted</c>).</param>
            <param name="remedy">Sentence telling the caller what to do instead.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.VersioningStore.EnsureFourEyes(Verdict.RuleEngine.Versioning.RulesetState,Verdict.RuleEngine.Abstractions.RuleEngineOptions,System.String,System.String,System.String)">
            <summary>Enforces four-eyes publishing: the approver must differ from the author.</summary>
            <param name="toState">Target state.</param>
            <param name="options">Options (the check applies only when <see cref="P:Verdict.RuleEngine.Abstractions.RuleEngineOptions.RequireFourEyesPublish"/>).</param>
            <param name="actor">Actor performing the transition.</param>
            <param name="author">Author of the version.</param>
            <param name="entityDisplay">Display label, e.g. <c>Ruleset rs-x@v1</c>.</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.VersioningStore.ApplyTransition(Verdict.RuleEngine.EntityFrameworkCore.Entities.IVersionedEntity,Verdict.RuleEngine.Versioning.RulesetState,System.String,System.DateTimeOffset)">
            <summary>Applies a validated transition's side effects: state, timestamps, approver.</summary>
            <param name="entity">Version entity.</param>
            <param name="toState">Target state.</param>
            <param name="actor">Actor (recorded as approver when publishing).</param>
            <param name="now">Current time (UTC).</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.VersioningStore.Audit(Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext,System.TimeProvider,System.String,System.String,System.String,System.String,System.Nullable{Verdict.RuleEngine.Versioning.RulesetState},System.Nullable{Verdict.RuleEngine.Versioning.RulesetState},System.Text.Json.Nodes.JsonObject)">
            <summary>Adds an audit row (append-only).</summary>
            <param name="db">Context.</param>
            <param name="time">Time.</param>
            <param name="actor">Actor.</param>
            <param name="action">Action (<c>SaveDraft</c>, <c>Transition</c>, …).</param>
            <param name="entityType">Entity type (<c>ruleset</c> / <c>connector</c>).</param>
            <param name="entityId"><c>id@vN</c> label.</param>
            <param name="from">Source state.</param>
            <param name="to">Target state.</param>
            <param name="details">Extra details (JSON).</param>
        </member>
        <member name="M:Verdict.RuleEngine.EntityFrameworkCore.VersioningStore.SaveAsync(Verdict.RuleEngine.EntityFrameworkCore.RuleEngineDbContext,System.String,System.Threading.CancellationToken)">
            <summary>Saves, translating optimistic-concurrency failures into <see cref="T:Verdict.RuleEngine.Versioning.ConcurrencyConflictException"/>.</summary>
            <param name="db">Context.</param>
            <param name="conflictMessage">Message for the conflict exception.</param>
            <param name="ct">Cancellation token.</param>
        </member>
    </members>
</doc>
