{
  "$schema": "sql-compatibility.schema.json",
  "manifest_version": 1,
  "dialect": "CSharpDB SQL",
  "title": "CSharpDB SQL Compatibility",
  "description": "Feature-level compatibility for the CSharpDB SQL dialect in CSharpDB 4.1.0. This released snapshot separates current availability from roadmap intent and does not imply compatibility with another vendor dialect.",
  "verified_against": {
    "commit": "d2cad70e202b1792a4fc313e5b5576849104a3ad",
    "package_version": "4.1.0",
    "generated_at": "2026-07-18T03:51:39Z",
    "state": "released"
  },
  "proofs": [
    {
      "id": "parser.create_table.basic",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_CreateTable",
      "ci_executed": true
    },
    {
      "id": "parser.select.basic",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_Select_Star",
      "ci_executed": true
    },
    {
      "id": "parser.join.inner",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_InnerJoin",
      "ci_executed": true
    },
    {
      "id": "parser.cte.non_recursive",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_SingleCte",
      "ci_executed": true
    },
    {
      "id": "parser.union.distinct",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_Union",
      "ci_executed": true
    },
    {
      "id": "parser.fk.column",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_CreateTable_WithForeignKeyClause",
      "ci_executed": true
    },
    {
      "id": "parser.fk.table_composite",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_CreateTable_TableLevelCompositeForeignKey",
      "ci_executed": true
    },
    {
      "id": "parser.fk.on_update.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_CreateTable_OnlyOnDeleteCascadeIsSupported",
      "ci_executed": true
    },
    {
      "id": "parser.alter.add",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_AlterTable_AddColumn",
      "ci_executed": true
    },
    {
      "id": "parser.alter.drop",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_AlterTable_DropColumn",
      "ci_executed": true
    },
    {
      "id": "parser.alter.rename_table",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_AlterTable_RenameTable",
      "ci_executed": true
    },
    {
      "id": "parser.alter.rename_column",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_AlterTable_RenameColumn",
      "ci_executed": true
    },
    {
      "id": "parser.explain.estimate",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_ExplainEstimateSelect",
      "ci_executed": true
    },
    {
      "id": "parser.explain.mutation.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_ExplainEstimateRejectsMutationTarget",
      "ci_executed": true
    },
    {
      "id": "parser.analyze",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_AnalyzeSingleTable",
      "ci_executed": true
    },
    {
      "id": "engine.create_and_query",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "CreateTable_And_Query",
      "ci_executed": true
    },
    {
      "id": "engine.persistence.reopen",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "Persistence_AcrossReopen",
      "ci_executed": true
    },
    {
      "id": "engine.join.inner",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "InnerJoin",
      "ci_executed": true
    },
    {
      "id": "engine.cte.non_recursive",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "Cte_SingleBasic",
      "ci_executed": true
    },
    {
      "id": "engine.union.distinct",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "Union_RemovesDuplicates_AndAppliesOuterOrderBy",
      "ci_executed": true
    },
    {
      "id": "engine.fk.enforcement",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ForeignKeyIntegrationTests.cs",
      "test": "ForeignKeys_InsertRejectsMissingParent_AndAllowsNullChildValue",
      "ci_executed": true
    },
    {
      "id": "engine.fk.restrict",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ForeignKeyIntegrationTests.cs",
      "test": "ForeignKeys_DeleteRestrictPreventsDeletingReferencedParent",
      "ci_executed": true
    },
    {
      "id": "engine.fk.cascade",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ForeignKeyIntegrationTests.cs",
      "test": "ForeignKeys_DeleteCascadeDeletesDependentRows",
      "ci_executed": true
    },
    {
      "id": "engine.fk.drop_constraint",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ForeignKeyIntegrationTests.cs",
      "test": "ForeignKeys_DropConstraint_RemovesEnforcement_AndSupportIndex",
      "ci_executed": true
    },
    {
      "id": "engine.fk.drop_missing.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ForeignKeyIntegrationTests.cs",
      "test": "ForeignKeys_DropConstraint_MissingConstraintIsRejected",
      "ci_executed": true
    },
    {
      "id": "engine.fk.composite",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "CompositeForeignKey_EnforcesMatchSimple_CascadesAndSurvivesReopen",
      "ci_executed": true
    },
    {
      "id": "schema.fk.composite_reopen",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "CompositeForeignKey_EnforcesMatchSimple_CascadesAndSurvivesReopen",
      "ci_executed": true
    },
    {
      "id": "schema.fk.composite_vacuum",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DatabaseMaintenanceTests.cs",
      "test": "VacuumAsync_PreservesOrderedCompositeForeignKeys",
      "ci_executed": true
    },
    {
      "id": "catalog.fk.composite_pairs",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "CompositeForeignKey_EnforcesMatchSimple_CascadesAndSurvivesReopen",
      "ci_executed": true
    },
    {
      "id": "engine.fk.composite_dependencies",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "CompositeForeignKey_RenamesAllParticipatingColumnsAndBlocksDrops",
      "ci_executed": true
    },
    {
      "id": "engine.fk.composite_validation",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "CompositeForeignKey_RequiresOrderedCandidateKeyMatchingTypesAndCollations",
      "ci_executed": true
    },
    {
      "id": "schema.fk.serialization",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SchemaSerializerCompatibilityTests.cs",
      "test": "SerializeDeserialize_TableSchema_RoundTripsForeignKeys",
      "ci_executed": true
    },
    {
      "id": "parser.key.composite",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "Parser_TableLevelPrimaryAndUniqueKeys_PreserveNamesKindsAndColumnOrder",
      "ci_executed": true
    },
    {
      "id": "schema.key.serialization",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "Serializer_LogicalKeys_RoundTripWithoutInferringCompositeIdentity",
      "ci_executed": true
    },
    {
      "id": "engine.key.composite_primary",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "CompositePrimaryKey_IsNotIdentityAndRejectsNullsAndDuplicates",
      "ci_executed": true
    },
    {
      "id": "engine.key.composite_unique",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "CompositeUnique_AllowsNullTuplesAndRejectsCompleteDuplicates",
      "ci_executed": true
    },
    {
      "id": "catalog.key_constraints",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/LogicalKeyConstraintTests.cs",
      "test": "LogicalKeys_SurviveReopenAndAppearInSystemMetadata",
      "ci_executed": true
    },
    {
      "id": "engine.alter.add.reopen",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "AlterTable_AddColumn_Persistence",
      "ci_executed": true
    },
    {
      "id": "engine.alter.drop",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "AlterTable_DropColumn",
      "ci_executed": true
    },
    {
      "id": "engine.alter.drop_indexed.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "AlterTable_DropIndexedColumn_Fails",
      "ci_executed": true
    },
    {
      "id": "engine.alter.rename_table.reopen",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "AlterTable_RenameTable_Persistence",
      "ci_executed": true
    },
    {
      "id": "engine.alter.rename_column",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "AlterTable_RenameColumn",
      "ci_executed": true
    },
    {
      "id": "engine.alter.rename_old.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "AlterTable_RenameColumn_OldNameFails",
      "ci_executed": true
    },
    {
      "id": "engine.alter.rewrite_drop",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "DropColumn_UsesShadowRootAndPreservesRowsIndexesAndReopen",
      "ci_executed": true
    },
    {
      "id": "engine.alter.add_default_backfill",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "AddColumn_WithDefault_RewritesAndBackfillsExistingRows",
      "ci_executed": true
    },
    {
      "id": "engine.alter.rewrite_rollback",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "FailedRewrite_LeavesOriginalTableAndAbortsExplicitTransaction",
      "ci_executed": true
    },
    {
      "id": "engine.alter.dependency_preflight",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "DropColumn_ReferencedByTransitiveView_FailsBeforeRewriteAndPreservesViewAfterReopen",
      "ci_executed": true
    },
    {
      "id": "engine.alter.rename_dependency_preflight",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "RenameTable_WithTriggerOrValidationRule_IsRejected",
      "ci_executed": true
    },
    {
      "id": "engine.alter.rename_column_dependency_preflight",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "RenameColumn_WithTriggerOrValidationRule_IsRejected",
      "ci_executed": true
    },
    {
      "id": "engine.alter.drop_stored_dependency_preflight",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "DropColumn_WithStoredCrossDependency_IsRejected",
      "ci_executed": true
    },
    {
      "id": "engine.alter.public_write_rollback",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/AlterTableRewriteTests.cs",
      "test": "FailedRewrite_PublicWriteTransaction_IsRollbackOnly",
      "ci_executed": true
    },
    {
      "id": "parser.alter.column_metadata",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_AlterTable_ColumnMetadataActions",
      "ci_executed": true
    },
    {
      "id": "engine.alter.column_default",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "AlterColumn_DefaultMetadataAppliesToFutureRowsAndSurvivesReopen",
      "ci_executed": true
    },
    {
      "id": "engine.alter.column_default_runtime",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "AlterColumn_DefaultMetadataAppliesToFutureRowsAndSurvivesReopen",
      "ci_executed": true
    },
    {
      "id": "engine.alter.column_not_null",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "AlterColumn_NotNullValidatesExistingRowsBeforeChangingMetadata",
      "ci_executed": true
    },
    {
      "id": "engine.alter.named_check",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "AlterTable_NamedCheckIsValidatedAgainstExistingRowsAndCanBeDropped",
      "ci_executed": true
    },
    {
      "id": "catalog.core",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SystemCatalogTests.cs",
      "test": "SystemCatalog_ExposesTablesColumnsAndIndexes",
      "ci_executed": true
    },
    {
      "id": "engine.catalog.core",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SystemCatalogTests.cs",
      "test": "SystemCatalog_ExposesTablesColumnsAndIndexes",
      "ci_executed": true
    },
    {
      "id": "catalog.functions",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/BuiltInFunctionCatalogTests.cs",
      "test": "SystemFunctions_ExposesBuiltInsAliasesAndUserCallbacksWithMetadata",
      "ci_executed": true
    },
    {
      "id": "engine.functions.catalog_query",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/BuiltInFunctionCatalogTests.cs",
      "test": "SystemFunctions_ExposesBuiltInsAliasesAndUserCallbacksWithMetadata",
      "ci_executed": true
    },
    {
      "id": "catalog.fk",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SystemCatalogTests.cs",
      "test": "SystemCatalog_ExposesForeignKeys_AndHidesSupportIndexes",
      "ci_executed": true
    },
    {
      "id": "catalog.analyze.reopen",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SystemCatalogTests.cs",
      "test": "SystemCatalog_ColumnStats_PersistAcrossReopen",
      "ci_executed": true
    },
    {
      "id": "catalog.analyze.results",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SystemCatalogTests.cs",
      "test": "SystemCatalog_ColumnStats_ExposeAnalyzeResultsAndUnderscoredAlias",
      "ci_executed": true
    },
    {
      "id": "engine.analyze.execution",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SystemCatalogTests.cs",
      "test": "SystemCatalog_ColumnStats_ExposeAnalyzeResultsAndUnderscoredAlias",
      "ci_executed": true
    },
    {
      "id": "engine.explain.estimate",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/PlannerStatisticsTests.cs",
      "test": "ExplainEstimate_ReportsHistogramHeavyHitterAndCompositePrefixSources",
      "ci_executed": true
    },
    {
      "id": "engine.explain.read_only_transaction",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/InMemoryDatabaseTests.cs",
      "test": "FailedExplainEstimate_DoesNotPoisonExplicitTransaction",
      "ci_executed": true
    },
    {
      "id": "engine.explain.reader_session",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WalTests.cs",
      "test": "ReaderSession_ExplainEstimate_UsesReadOnlySnapshotRouting",
      "ci_executed": true
    },
    {
      "id": "ado.explain.prepared_parameters",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/CommandTests.cs",
      "test": "Prepare_ExplainEstimate_DiscoversAndRebindsTargetParameters",
      "ci_executed": true
    },
    {
      "id": "direct.explain.estimate",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ClientSqlExecutionTests.cs",
      "test": "ExecuteSqlAsync_PublicPlannerDiagnostics_WorkThroughDirectClient",
      "ci_executed": true
    },
    {
      "id": "ado.crud",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/CommandTests.cs",
      "test": "ExecuteNonQueryAsync_Insert_ReturnsRowsAffected",
      "ci_executed": true
    },
    {
      "id": "ado.schema.core",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/ConnectionTests.cs",
      "test": "GetSchema_Columns_ReturnsColumnMetadata",
      "ci_executed": true
    },
    {
      "id": "ado.schema.fk",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/ConnectionTests.cs",
      "test": "GetSchema_ForeignKeys_ReturnsConstraintMetadata",
      "ci_executed": true
    },
    {
      "id": "ado.schema.defaults_checks_keys",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/ConnectionTests.cs",
      "test": "GetSchema_ConstraintCollections_ReturnDefaultsChecksAndOrderedLogicalKeys",
      "ci_executed": true
    },
    {
      "id": "ado.schema.restrictions",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/ConnectionTests.cs",
      "test": "GetSchema_Restrictions_DescribesSupportedFilters",
      "ci_executed": true
    },
    {
      "id": "ado.reader.schema.basic",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/DataReaderTests.cs",
      "test": "GetSchemaTable_ReturnsColumnMetadata",
      "ci_executed": true
    },
    {
      "id": "ado.reader.schema.lineage_limited",
      "kind": "negative",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/DataReaderTests.cs",
      "test": "GetSchemaTable_DoesNotInventUnavailableBaseLineage",
      "ci_executed": true
    },
    {
      "id": "grpc.ado.schema.defaults_checks_keys",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/RemoteGrpcConnectionTests.cs",
      "test": "GetSchema_RemoteGrpcConnection_PreservesDefaultsChecksAndLogicalKeys",
      "ci_executed": true
    },
    {
      "id": "direct.schema.constraints",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/EngineTransportClientTests.cs",
      "test": "GetTableSchemaAsync_MapsDefaultsChecksAndLogicalKeys",
      "ci_executed": true
    },
    {
      "id": "rest.schema.constraints",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Api.Tests/CSharpDB.Api.Tests.csproj",
      "source": "tests/CSharpDB.Api.Tests/HttpTransportClientTests.cs",
      "test": "HttpTransport_MapsDefaultsChecksAndLogicalKeys",
      "ci_executed": true
    },
    {
      "id": "grpc.schema.constraints",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Daemon.Tests/CSharpDB.Daemon.Tests.csproj",
      "source": "tests/CSharpDB.Daemon.Tests/GrpcClientTests.cs",
      "test": "GrpcClient_MapsDefaultsChecksAndLogicalKeys",
      "ci_executed": true
    },
    {
      "id": "archive.schema.constraints",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/TableArchiveTests.cs",
      "test": "Archive_RoundtripsSchemaAndRows",
      "ci_executed": true
    },
    {
      "id": "direct.fk.composite_metadata",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/EngineTransportClientTests.cs",
      "test": "GetTableSchemaAsync_MapsOrderedCompositeForeignKeyColumns",
      "ci_executed": true
    },
    {
      "id": "rest.fk.composite_metadata",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Api.Tests/CSharpDB.Api.Tests.csproj",
      "source": "tests/CSharpDB.Api.Tests/HttpTransportClientTests.cs",
      "test": "HttpTransport_MapsOrderedCompositeForeignKeyMetadata",
      "ci_executed": true
    },
    {
      "id": "grpc.fk.composite_metadata",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Daemon.Tests/CSharpDB.Daemon.Tests.csproj",
      "source": "tests/CSharpDB.Daemon.Tests/GrpcClientTests.cs",
      "test": "GrpcClient_MapsOrderedCompositeForeignKeyMetadata",
      "ci_executed": true
    },
    {
      "id": "ado.fk.composite_metadata",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/ConnectionTests.cs",
      "test": "GetSchema_ForeignKeys_ReturnsOrderedCompositeColumnPairs",
      "ci_executed": true
    },
    {
      "id": "devops.fk.composite_metadata",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.DevOps.Tests/CSharpDB.DevOps.Tests.csproj",
      "source": "tests/CSharpDB.DevOps.Tests/SchemaComparisonServiceTests.cs",
      "test": "CompareAndRender_PreserveOrderedCompositeForeignKeyColumns",
      "ci_executed": true
    },
    {
      "id": "rest.sql",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Api.Tests/CSharpDB.Api.Tests.csproj",
      "source": "tests/CSharpDB.Api.Tests/HttpTransportClientTests.cs",
      "test": "HttpTransport_SupportsTransactionsCollectionsSavedQueriesAndCheckpoint",
      "ci_executed": true
    },
    {
      "id": "rest.session",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Api.Tests/CSharpDB.Api.Tests.csproj",
      "source": "tests/CSharpDB.Api.Tests/HttpTransportClientTests.cs",
      "test": "HttpTransport_RejectsStatelessTempCommandsButSupportsTransactionTempWorkflow",
      "ci_executed": true
    },
    {
      "id": "rest.explain",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Api.Tests/CSharpDB.Api.Tests.csproj",
      "source": "tests/CSharpDB.Api.Tests/HttpTransportClientTests.cs",
      "test": "HttpTransport_ExecutesPublicPlannerDiagnostics",
      "ci_executed": true
    },
    {
      "id": "grpc.sql",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Daemon.Tests/CSharpDB.Daemon.Tests.csproj",
      "source": "tests/CSharpDB.Daemon.Tests/GrpcClientTests.cs",
      "test": "Daemon_RestAndGrpcClients_ShareHostedDatabaseState",
      "ci_executed": true
    },
    {
      "id": "grpc.session",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj",
      "source": "tests/CSharpDB.Data.Tests/RemoteGrpcConnectionTests.cs",
      "test": "Transactions_CommitAndRollback_OverGrpcDaemon",
      "ci_executed": true
    },
    {
      "id": "grpc.fk.metadata",
      "kind": "positive",
      "dimension": "transport",
      "project": "tests/CSharpDB.Daemon.Tests/CSharpDB.Daemon.Tests.csproj",
      "source": "tests/CSharpDB.Daemon.Tests/GrpcClientTests.cs",
      "test": "GrpcClient_MapsForeignKeyMetadata",
      "ci_executed": true
    },
    {
      "id": "ef.crud",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbRuntimeTests.cs",
      "test": "EnsureCreated_FileBackedCrudAndTypeRoundTrip_Succeeds",
      "ci_executed": true
    },
    {
      "id": "ef.schema.literal_defaults_checks",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbRuntimeTests.cs",
      "test": "LiteralDefaultsAndCreateTableChecks_AreApplied",
      "ci_executed": true
    },
    {
      "id": "ef.insert.default_values",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbRuntimeTests.cs",
      "test": "IdentityOnlyEntity_UsesDefaultValuesAndReturnsGeneratedKey",
      "ci_executed": true
    },
    {
      "id": "ef.migration.basic",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbMigrationsTests.cs",
      "test": "DatabaseMigrate_AppliesCompiledMigrations_AndCanBeReRun",
      "ci_executed": true
    },
    {
      "id": "ef.schema.composite_keys",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbMigrationsTests.cs",
      "test": "MigrationsSqlGenerator_EmitsCompositePrimaryKeyAndIndexes",
      "ci_executed": true
    },
    {
      "id": "ef.runtime.composite_keys",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbRuntimeTests.cs",
      "test": "CompositeKeyEntity_SupportsCrudIndexesAndDuplicateRejection",
      "ci_executed": true
    },
    {
      "id": "ef.composite_fk.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbMigrationsTests.cs",
      "test": "MigrationsSqlGenerator_KeepsCompositeForeignKeysAndStandaloneKeyChangesRejected",
      "ci_executed": true
    },
    {
      "id": "ef.migration.idempotent.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbMigrationsTests.cs",
      "test": "Migrator_GenerateIdempotentScript_ThrowsClearly",
      "ci_executed": true
    },
    {
      "id": "ef.fk.standalone.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbMigrationsTests.cs",
      "test": "MigrationsSqlGenerator_RejectsStandaloneForeignKeyChanges",
      "ci_executed": true
    },
    {
      "id": "parser.identifier.quoted",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/TokenizerTests.cs",
      "test": "Tokenize_QuotedIdentifier_PreservesReservedWordsAndEscapedQuotes",
      "ci_executed": true
    },
    {
      "id": "parser.identifier.quoted_unterminated",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/TokenizerTests.cs",
      "test": "Tokenize_QuotedIdentifier_RejectsUnterminatedInput",
      "ci_executed": true
    },
    {
      "id": "parser.identifier.max_length",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/TokenizerTests.cs",
      "test": "Tokenize_Identifier_EnforcesMaximumLength",
      "ci_executed": true
    },
    {
      "id": "engine.identifier.quoted_reserved",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/QuotedIdentifierIntegrationTests.cs",
      "test": "QuotedReservedAndWhitespaceIdentifiers_RoundTrip",
      "ci_executed": true
    },
    {
      "id": "engine.identifier.quoted_escape",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/QuotedIdentifierIntegrationTests.cs",
      "test": "QuotedIdentifiers_PreserveEscapedDoubleQuotes",
      "ci_executed": true
    },
    {
      "id": "ef.identifier.quoted_helper",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj",
      "source": "tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDbMigrationsTests.cs",
      "test": "SqlGenerationHelper_QuotesAndEscapesIdentifiers",
      "ci_executed": true
    },
    {
      "id": "parser.union.all",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_UnionAll",
      "ci_executed": true
    },
    {
      "id": "parser.union.all.contextual",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_UnionAll_IsContextualAndCaseInsensitive",
      "ci_executed": true
    },
    {
      "id": "parser.union.all.non_union_rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_AllIsOnlySupportedForUnion",
      "ci_executed": true
    },
    {
      "id": "engine.union_all.duplicates",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "UnionAll_PreservesDuplicatesNullsAndFirstBranchColumnName",
      "ci_executed": true
    },
    {
      "id": "engine.union_all.numeric_promotion",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "UnionAll_PromotesNumericBranchesToTheCommonType",
      "ci_executed": true
    },
    {
      "id": "engine.union_all.incompatible_types",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "UnionAll_RejectsIncompatibleBranchTypesBeforeEnumeration",
      "ci_executed": true
    },
    {
      "id": "engine.union_all.parenthesized",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "UnionAll_ParenthesizedOperandKeepsLocalOrderAndLimit",
      "ci_executed": true
    },
    {
      "id": "engine.union_all.view",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/IntegrationTests.cs",
      "test": "CompoundView_RoundTripsParenthesizedUnionAll",
      "ci_executed": true
    },
    {
      "id": "operator.union_all.outer_limit",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/CompoundQueryOperatorTests.cs",
      "test": "OuterLimit_DoesNotOpenRightUnionAllBranch",
      "ci_executed": true
    },
    {
      "id": "operator.union_all.cancellation",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/CompoundQueryOperatorTests.cs",
      "test": "Cancellation_DisposesBothUnionAllBranches",
      "ci_executed": true
    },
    {
      "id": "admin.union_all.paging",
      "kind": "positive",
      "dimension": "provider",
      "project": "tests/CSharpDB.Admin.Forms.Tests/CSharpDB.Admin.Forms.Tests.csproj",
      "source": "tests/CSharpDB.Admin.Forms.Tests/Helpers/QueryPagingSqlBuilderTests.cs",
      "test": "UnionAll_PreservesQuantifierInPageAndCountSql",
      "ci_executed": true
    },
    {
      "id": "parser.default_check.create",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_CreateTable_WithDefaultsAndChecks",
      "ci_executed": true
    },
    {
      "id": "parser.insert.default_values",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_InsertDefaultValues",
      "ci_executed": true
    },
    {
      "id": "parser.insert.default_markers",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/ParserTests.cs",
      "test": "Parse_InsertDefaultMarkers",
      "ci_executed": true
    },
    {
      "id": "schema.default_check.serialization",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SchemaSerializerCompatibilityTests.cs",
      "test": "SerializeDeserialize_TableSchema_RoundTripsDefaultsAndChecks",
      "ci_executed": true
    },
    {
      "id": "engine.default.apply",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "Defaults_DistinguishOmittedExplicitNullAndDefaultMarker",
      "ci_executed": true
    },
    {
      "id": "engine.check.enforcement",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "NotNullAndChecks_RejectWritesWithSqlThreeValuedLogic",
      "ci_executed": true
    },
    {
      "id": "engine.check.update_atomic",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "Update_PrevalidatesAllRowsBeforeMutating",
      "ci_executed": true
    },
    {
      "id": "engine.default_check.reopen",
      "kind": "positive",
      "dimension": "persistence",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "DefaultsAndChecks_SurviveReopenAndAppearInCatalogs",
      "ci_executed": true
    },
    {
      "id": "catalog.default_check",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "DefaultsAndChecks_SurviveReopenAndAppearInCatalogs",
      "ci_executed": true
    },
    {
      "id": "engine.not_null.direct_batch",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "DirectInsertBatch_UsesSharedNotNullValidation",
      "ci_executed": true
    },
    {
      "id": "engine.default_check.rename",
      "kind": "positive",
      "dimension": "catalog",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "RenamePreservesAndRewritesDefaultAndCheckMetadata",
      "ci_executed": true
    },
    {
      "id": "parser.default_check.unsupported",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "UnsupportedDefaultAndCheckExpressions_AreRejected",
      "ci_executed": true
    },
    {
      "id": "engine.not_null.rejected",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/DefaultCheckConstraintTests.cs",
      "test": "NotNullAndChecks_RejectWritesWithSqlThreeValuedLogic",
      "ci_executed": true
    },
    {
      "id": "parser.three_valued.expressions",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SqlThreeValuedLogicTests.cs",
      "test": "UnknownExpressions_ReturnNull",
      "ci_executed": true
    },
    {
      "id": "engine.three_valued.truth_tables",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SqlThreeValuedLogicTests.cs",
      "test": "LogicalOperators_ApplySqlThreeValuedTruthTables",
      "ci_executed": true
    },
    {
      "id": "engine.three_valued.unknown_cases",
      "kind": "negative",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/SqlThreeValuedLogicTests.cs",
      "test": "UnknownExpressions_ReturnNull",
      "ci_executed": true
    },
    {
      "id": "parser.window.experimental",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WindowFunctionTests.cs",
      "test": "Parse_RankingWindow_WithPartitionOrderAndAlias",
      "ci_executed": true
    },
    {
      "id": "engine.window.ranking",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WindowFunctionTests.cs",
      "test": "RankingWindows_HandlePartitionsPeersAndNulls",
      "ci_executed": true
    },
    {
      "id": "engine.window.aggregate_default_frames",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WindowFunctionTests.cs",
      "test": "OrderedAggregateWindows_UsePeerAwareDefaultFrame",
      "ci_executed": true
    },
    {
      "id": "parser.window.mixed_star_projection",
      "kind": "positive",
      "dimension": "parser",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WindowFunctionTests.cs",
      "test": "Parse_WindowAndProjectionStar_PreserveSelectItemOrder",
      "ci_executed": true
    },
    {
      "id": "engine.window.star_projection",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WindowFunctionTests.cs",
      "test": "MixedExpressionsAndStar_PreserveProjectionOrderAndValues",
      "ci_executed": true
    },
    {
      "id": "engine.window.cancellation",
      "kind": "positive",
      "dimension": "execution",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WindowFunctionTests.cs",
      "test": "WindowOperator_CancellationDuringLargePeerLoop_DisposesItsSource",
      "ci_executed": true
    },
    {
      "id": "engine.window.experimental_rejections",
      "kind": "negative",
      "dimension": "rejection",
      "project": "tests/CSharpDB.Tests/CSharpDB.Tests.csproj",
      "source": "tests/CSharpDB.Tests/WindowFunctionTests.cs",
      "test": "InvalidWindowPlacementOrUnsupportedCombination_IsRejected",
      "ci_executed": true
    }
  ],
  "features": [
    {
      "id": "identifiers.unquoted_simple",
      "category": "Dialect foundation",
      "feature": "Unquoted simple identifiers",
      "syntax": "CREATE TABLE customer_orders (order_id INTEGER PRIMARY KEY)",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "supported", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["An unquoted name must begin with a letter recognized by .NET or underscore and continue with letters, decimal digits, or underscores. Reserved keywords require quoting, NUL is rejected, and the maximum length is 128 characters."],
      "deviations": ["Name resolution is ordinal case-insensitive on current catalog paths."],
      "documentation_anchor": "sql-reference.html#identifiers",
      "positive_proof_ids": ["parser.create_table.basic", "engine.create_and_query", "engine.persistence.reopen", "catalog.core", "ado.crud", "rest.sql", "rest.session", "grpc.sql", "grpc.session", "ef.crud", "ef.migration.basic"],
      "negative_proof_ids": ["parser.identifier.max_length"]
    },
    {
      "id": "identifiers.quoted",
      "category": "Dialect foundation",
      "feature": "Double-quoted identifiers",
      "syntax": "CREATE TABLE \"order details\" (\"order id\" INTEGER)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "partial", "catalog": "partial", "embedded_ado_net": "partial", "rest_stateless": "partial", "rest_session": "partial", "grpc_unary": "partial", "grpc_session": "partial", "ef_query": "partial", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["Core SQL tests cover reserved words, whitespace, and doubled-quote escapes through CREATE, INSERT, and SELECT. Names are limited to 128 characters and cannot contain NUL. A dedicated reopen/catalog proof and feature-specific ADO.NET, REST, gRPC, and EF query/migration round trips are not yet linked; the EF proof covers identifier generation only."],
      "deviations": ["Double quotes delimit identifiers and a doubled double quote escapes a quote. Name resolution remains ordinal case-insensitive rather than introducing case-sensitive quoted names."],
      "documentation_anchor": "sql-reference.html#identifiers",
      "positive_proof_ids": ["parser.identifier.quoted", "engine.identifier.quoted_reserved", "engine.identifier.quoted_escape", "ef.identifier.quoted_helper"],
      "negative_proof_ids": ["parser.identifier.quoted_unterminated"]
    },
    {
      "id": "ddl.create_table.basic",
      "category": "Data definition",
      "feature": "Create a basic durable table",
      "syntax": "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL)",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["This row covers primitive columns, nullability, and a single-column primary key; defaults, checks, and composite primary keys are separate rows."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.create_table.basic", "engine.create_and_query", "engine.persistence.reopen", "catalog.core", "ado.crud", "rest.sql", "rest.session", "grpc.sql", "grpc.session", "ef.migration.basic"],
      "negative_proof_ids": []
    },
    {
      "id": "query.select.basic",
      "category": "Queries",
      "feature": "Basic SELECT with projection and filter",
      "syntax": "SELECT id, name FROM users WHERE id = @id",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "supported", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["Advanced expressions and generated provider shapes are qualified separately."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#select",
      "positive_proof_ids": ["parser.select.basic", "engine.create_and_query", "ado.crud", "rest.sql", "rest.session", "grpc.sql", "grpc.session", "ef.crud"],
      "negative_proof_ids": []
    },
    {
      "id": "query.join.inner_handwritten",
      "category": "Queries",
      "feature": "Hand-written INNER JOIN with an equality predicate",
      "syntax": "SELECT o.id, c.name FROM orders o JOIN customers c ON o.customer_id = c.id",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["This row does not qualify every join type, predicate shape, or EF-generated join."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#select",
      "positive_proof_ids": ["parser.join.inner", "engine.join.inner", "ado.crud", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": []
    },
    {
      "id": "query.cte.non_recursive_handwritten",
      "category": "Queries",
      "feature": "Hand-written non-recursive common table expression",
      "syntax": "WITH active AS (SELECT id FROM users WHERE enabled = 1) SELECT * FROM active",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["Recursive evaluation is not claimed by this row."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#common-table-expressions-ctes",
      "positive_proof_ids": ["parser.cte.non_recursive", "engine.cte.non_recursive", "ado.crud", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": []
    },
    {
      "id": "query.set.union_distinct_handwritten",
      "category": "Set operations",
      "feature": "Hand-written UNION with distinct semantics",
      "syntax": "SELECT id FROM current_users UNION SELECT id FROM archived_users",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["Current execution materializes both inputs before duplicate elimination."],
      "deviations": ["UNION removes duplicates; duplicate-preserving UNION ALL is qualified separately."],
      "documentation_anchor": "sql-reference.html#set-operations",
      "positive_proof_ids": ["parser.union.distinct", "engine.union.distinct", "ado.crud", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": []
    },
    {
      "id": "query.set.union_all",
      "category": "Set operations",
      "feature": "UNION ALL duplicate-preserving append",
      "syntax": "SELECT id FROM current_users UNION ALL SELECT id FROM archived_users",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "partial", "rest_stateless": "partial", "rest_session": "partial", "grpc_unary": "partial", "grpc_session": "partial", "ef_query": "partial", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.1.0",
      "limitations": ["Core tests cover duplicate and NULL preservation, first-branch column names, numeric promotion, incompatible-type rejection, parenthesized operands, view serialization, outer LIMIT short-circuiting, and cancellation cleanup. Feature-specific ADO.NET, REST, gRPC, and EF query proofs are not yet linked; INTERSECT ALL and EXCEPT ALL remain unsupported."],
      "deviations": ["Branch types must match or have a supported numeric common type; incompatible branches fail before enumeration."],
      "documentation_anchor": "sql-reference.html#set-operations",
      "positive_proof_ids": ["parser.union.all", "parser.union.all.contextual", "engine.union_all.duplicates", "engine.union_all.numeric_promotion", "engine.union_all.parenthesized", "engine.union_all.view", "operator.union_all.outer_limit", "operator.union_all.cancellation", "admin.union_all.paging"],
      "negative_proof_ids": ["parser.union.all.non_union_rejected", "engine.union_all.incompatible_types"]
    },
    {
      "id": "query.window.row_number",
      "category": "Window functions",
      "feature": "Experimental ranking and aggregate window slice",
      "syntax": "ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query"],
      "facets": {"parser": "supported", "execution": "partial", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "unsupported", "rest_stateless": "unsupported", "rest_session": "unsupported", "grpc_unary": "unsupported", "grpc_session": "unsupported", "ef_query": "unsupported", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.1.0",
      "limitations": ["Experimental in-memory slice only: one compatible window specification per SELECT; ROW_NUMBER, RANK, DENSE_RANK, and non-DISTINCT COUNT, SUM, AVG, MIN, and MAX over direct source rows. Star and mixed-expression projections preserve public SELECT-list order and hide internal window slots. Explicit frames, named windows, nested windows, mixed ordinary aggregation/grouping, incompatible specifications, navigation functions, and spill-to-disk are rejected. Large inputs remain bounded only by available process memory, although long sort/evaluation loops poll cancellation."],
      "deviations": ["Default frames are SQL-consistent: an unordered window covers the whole partition, while an ordered aggregate window uses peer-aware unbounded-preceding through current-row semantics."],
      "documentation_anchor": "sql-reference.html#limitations",
      "positive_proof_ids": ["parser.window.experimental", "parser.window.mixed_star_projection", "engine.window.ranking", "engine.window.aggregate_default_frames", "engine.window.star_projection", "engine.window.cancellation"],
      "negative_proof_ids": ["engine.window.experimental_rejections"]
    },
    {
      "id": "schema.default.column",
      "category": "Defaults and constraints",
      "feature": "Persisted literal column DEFAULT",
      "syntax": "status TEXT DEFAULT 'new'",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["The first slice accepts typed literal and NULL defaults only. Column references, parameters, functions including CURRENT_TIMESTAMP, subqueries, computed expressions, and EF DefaultValueSql remain rejected. Core SQL, ADO.NET metadata, direct/REST/gRPC schema transport, archive round trips, and EF create-table literal defaults have focused coverage."],
      "deviations": ["Omitted columns and explicit DEFAULT apply the persisted literal; explicit NULL remains NULL and is checked independently against nullability."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.default_check.create", "schema.default_check.serialization", "engine.default.apply", "engine.default_check.reopen", "catalog.default_check", "engine.default_check.rename", "ado.schema.defaults_checks_keys", "grpc.ado.schema.defaults_checks_keys", "direct.schema.constraints", "rest.schema.constraints", "grpc.schema.constraints", "archive.schema.constraints", "ef.schema.literal_defaults_checks"],
      "negative_proof_ids": ["parser.default_check.unsupported"]
    },
    {
      "id": "dml.insert.default_keyword",
      "category": "Defaults and constraints",
      "feature": "DEFAULT markers and DEFAULT VALUES in INSERT",
      "syntax": "INSERT INTO orders (status) VALUES (DEFAULT)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "partial", "rest_stateless": "partial", "rest_session": "partial", "grpc_unary": "partial", "grpc_session": "partial", "ef_query": "partial", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.1.0",
      "limitations": ["Core SQL covers INSERT DEFAULT VALUES and DEFAULT markers in value tuples against literal column defaults. Feature-specific ADO.NET, REST, gRPC, and EF query paths are not yet linked, and the available default expression shapes are limited by the literal-only column DEFAULT row."],
      "deviations": ["An explicit NULL does not request a default; it remains NULL."],
      "documentation_anchor": "sql-reference.html#insert",
      "positive_proof_ids": ["parser.insert.default_values", "parser.insert.default_markers", "engine.default.apply", "ef.insert.default_values"],
      "negative_proof_ids": ["parser.default_check.unsupported"]
    },
    {
      "id": "schema.check.table",
      "category": "Defaults and constraints",
      "feature": "Table CHECK constraint",
      "syntax": "CONSTRAINT ck_total CHECK (total >= 0)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["Checks must be deterministic and row-local. Parameters, functions, subqueries, and qualified references are rejected. Core SQL covers enforcement, persistence, catalog exposure, rename dependency repair, named ALTER add/drop, ADO.NET metadata, direct/REST/gRPC schema transport, archive round trips, and EF create-table checks."],
      "deviations": ["A false result rejects the write, while NULL/UNKNOWN passes in accordance with SQL CHECK semantics. Enforcement is immediate."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.default_check.create", "schema.default_check.serialization", "engine.check.enforcement", "engine.check.update_atomic", "engine.default_check.reopen", "catalog.default_check", "engine.default_check.rename", "engine.alter.named_check", "engine.three_valued.truth_tables", "ado.schema.defaults_checks_keys", "direct.schema.constraints", "rest.schema.constraints", "grpc.schema.constraints", "ef.schema.literal_defaults_checks"],
      "negative_proof_ids": ["parser.default_check.unsupported"]
    },
    {
      "id": "schema.check.column",
      "category": "Defaults and constraints",
      "feature": "Column CHECK constraint",
      "syntax": "amount INTEGER CONSTRAINT ck_amount CHECK (amount >= 0)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["A column-scoped CHECK may reference only its own column and otherwise follows the deterministic row-local expression limits of table CHECK. Core SQL covers enforcement, persistence, catalog exposure, column/table rename repair, ADO.NET metadata, direct/REST/gRPC schema transport, archive round trips, and EF create-table checks."],
      "deviations": ["A false result rejects the write, while NULL/UNKNOWN passes. Dropping a column with a CHECK dependency is rejected."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.default_check.create", "schema.default_check.serialization", "engine.check.enforcement", "engine.check.update_atomic", "engine.default_check.reopen", "catalog.default_check", "engine.default_check.rename", "engine.three_valued.truth_tables", "ado.schema.defaults_checks_keys", "direct.schema.constraints", "rest.schema.constraints", "grpc.schema.constraints", "ef.schema.literal_defaults_checks"],
      "negative_proof_ids": ["parser.default_check.unsupported"]
    },
    {
      "id": "schema.key.composite_primary",
      "category": "Defaults and constraints",
      "feature": "Composite table-level primary key",
      "syntax": "CONSTRAINT pk_order_lines PRIMARY KEY (order_id, line_no)",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "supported", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["This row covers PRIMARY KEY declarations inside CREATE TABLE. A composite key is a logical constraint and does not infer integer identity behavior; standalone ADD/DROP PRIMARY KEY remains outside this feature."],
      "deviations": ["One primary key is allowed per table and every participating value must be non-NULL."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.key.composite", "schema.key.serialization", "engine.key.composite_primary", "catalog.key_constraints", "ado.schema.defaults_checks_keys", "direct.schema.constraints", "rest.schema.constraints", "grpc.schema.constraints", "archive.schema.constraints", "ef.schema.composite_keys", "ef.runtime.composite_keys"],
      "negative_proof_ids": []
    },
    {
      "id": "schema.key.composite_unique",
      "category": "Defaults and constraints",
      "feature": "Composite table-level unique key",
      "syntax": "CONSTRAINT uq_tenant_email UNIQUE (tenant_id, email)",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["This row covers UNIQUE declarations inside CREATE TABLE. Standalone ADD UNIQUE remains outside this feature; named UNIQUE constraints can be removed with DROP CONSTRAINT when no foreign key depends on them."],
      "deviations": ["Rows containing NULL in any participating column do not collide with one another."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.key.composite", "schema.key.serialization", "engine.key.composite_unique", "catalog.key_constraints", "ado.schema.defaults_checks_keys", "direct.schema.constraints", "rest.schema.constraints", "grpc.schema.constraints", "archive.schema.constraints"],
      "negative_proof_ids": []
    },
    {
      "id": "schema.not_null.enforcement",
      "category": "Defaults and constraints",
      "feature": "NOT NULL write enforcement",
      "syntax": "name TEXT NOT NULL",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "partial", "catalog": "supported", "embedded_ado_net": "partial", "rest_stateless": "partial", "rest_session": "partial", "grpc_unary": "partial", "grpc_session": "partial", "ef_query": "not_applicable", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["Core tests cover SQL INSERT rejection, shared direct InsertBatch validation, and sys.columns nullability. A narrow reopen proof and feature-specific ADO.NET, REST, and gRPC write tests are not yet linked."],
      "deviations": ["NOT NULL is enforced independently from CHECK; CHECK may accept UNKNOWN while NOT NULL still rejects NULL."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.create_table.basic", "engine.check.enforcement", "engine.not_null.direct_batch", "catalog.core", "ef.migration.basic"],
      "negative_proof_ids": ["engine.not_null.rejected"]
    },
    {
      "id": "expressions.three_valued_logic",
      "category": "Expressions",
      "feature": "SQL three-valued comparison and logical semantics",
      "syntax": "NULL = 1; 1 AND NULL; 0 OR NULL",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_query"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "partial", "rest_stateless": "partial", "rest_session": "partial", "grpc_unary": "partial", "grpc_session": "partial", "ef_query": "partial", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.1.0",
      "limitations": ["Direct evaluator tests cover NULL comparisons, NOT NULL, and the AND/OR truth-table cases exercised by CHECK enforcement. This row does not yet qualify every WHERE, JOIN, IN/NOT IN, aggregate, transport, ADO.NET, or EF-generated expression shape."],
      "deviations": ["UNKNOWN is represented as NULL; logical operators short-circuit to FALSE or TRUE where SQL truth tables permit a determinate result."],
      "documentation_anchor": "sql-reference.html#logical",
      "positive_proof_ids": ["parser.three_valued.expressions", "engine.three_valued.truth_tables"],
      "negative_proof_ids": ["engine.three_valued.unknown_cases"]
    },
    {
      "id": "schema.foreign_key.column_single",
      "category": "Foreign keys",
      "feature": "Single-column column-level foreign key",
      "syntax": "parent_id INTEGER REFERENCES parents(id)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["The referenced column must be an ordered primary or unique candidate key with a compatible type and collation. EF supports inline single-column create-table relationships but rejects standalone foreign-key changes."],
      "deviations": ["Enforcement is immediate; deferred validation is not supported."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.fk.column", "engine.fk.enforcement", "schema.fk.serialization", "catalog.fk", "ado.schema.fk", "direct.fk.composite_metadata", "rest.sql", "rest.session", "grpc.fk.metadata", "grpc.session"],
      "negative_proof_ids": ["ef.fk.standalone.rejected"]
    },
    {
      "id": "schema.foreign_key.on_delete_restrict",
      "category": "Foreign keys",
      "feature": "Immediate ON DELETE RESTRICT behavior",
      "syntax": "parent_id INTEGER REFERENCES parents(id)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["RESTRICT is immediate for scalar and composite keys. Deferred constraints and standalone EF foreign-key changes are not supported."],
      "deviations": ["Omitting ON DELETE selects immediate RESTRICT."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.fk.column", "parser.fk.table_composite", "engine.fk.restrict", "engine.fk.composite", "schema.fk.composite_reopen", "catalog.fk.composite_pairs", "ado.fk.composite_metadata", "rest.sql", "rest.session", "grpc.fk.composite_metadata", "grpc.session"],
      "negative_proof_ids": ["ef.fk.standalone.rejected"]
    },
    {
      "id": "schema.foreign_key.on_delete_cascade",
      "category": "Foreign keys",
      "feature": "Immediate ON DELETE CASCADE behavior",
      "syntax": "parent_id INTEGER REFERENCES parents(id) ON DELETE CASCADE",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["CASCADE is immediate for scalar and composite keys. Deferred constraints and standalone EF foreign-key changes are not supported."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.fk.column", "parser.fk.table_composite", "engine.fk.cascade", "engine.fk.composite", "schema.fk.composite_reopen", "catalog.fk.composite_pairs", "ado.fk.composite_metadata", "rest.fk.composite_metadata", "rest.session", "grpc.fk.composite_metadata", "grpc.session"],
      "negative_proof_ids": ["ef.fk.standalone.rejected"]
    },
    {
      "id": "schema.foreign_key.table_level",
      "category": "Foreign keys",
      "feature": "Table-level FOREIGN KEY clause",
      "syntax": "FOREIGN KEY (parent_id) REFERENCES parents(id)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "partial"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["SQL supports table-level scalar and composite declarations. The EF provider generates inline scalar relationships but still rejects composite and standalone foreign-key operations."],
      "deviations": ["Constraint validation is immediate and uses MATCH SIMPLE for nullable composite child keys."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.fk.table_composite", "engine.fk.composite", "schema.fk.composite_reopen", "catalog.fk.composite_pairs", "ado.fk.composite_metadata", "direct.fk.composite_metadata", "rest.fk.composite_metadata", "grpc.fk.composite_metadata"],
      "negative_proof_ids": ["ef.composite_fk.rejected"]
    },
    {
      "id": "schema.foreign_key.composite",
      "category": "Foreign keys",
      "feature": "Composite foreign key",
      "syntax": "FOREIGN KEY (order_id, line_no) REFERENCES lines(order_id, line_no)",
      "availability": "partial",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "unsupported"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["The referenced columns must exactly match the order, types, and collations of a primary or unique candidate key. MATCH FULL, MATCH PARTIAL, deferred validation, ON UPDATE actions, and EF composite-FK generation are not supported."],
      "deviations": ["MATCH SIMPLE is used: any NULL child component suppresses the parent lookup."],
      "documentation_anchor": "sql-reference.html#create-table",
      "positive_proof_ids": ["parser.fk.table_composite", "engine.fk.composite", "schema.fk.composite_reopen", "schema.fk.composite_vacuum", "catalog.fk.composite_pairs", "engine.fk.composite_dependencies", "ado.fk.composite_metadata", "direct.fk.composite_metadata", "rest.fk.composite_metadata", "grpc.fk.composite_metadata", "archive.schema.constraints", "devops.fk.composite_metadata"],
      "negative_proof_ids": ["engine.fk.composite_validation", "ef.composite_fk.rejected"]
    },
    {
      "id": "schema.foreign_key.on_update_cascade",
      "category": "Foreign keys",
      "feature": "ON UPDATE CASCADE",
      "syntax": "REFERENCES parents(id) ON UPDATE CASCADE",
      "availability": "unsupported",
      "roadmap": "planned",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "unsupported", "execution": "unsupported", "persistence": "unsupported", "catalog": "unsupported", "embedded_ado_net": "unsupported", "rest_stateless": "unsupported", "rest_session": "unsupported", "grpc_unary": "unsupported", "grpc_session": "unsupported", "ef_query": "not_applicable", "ef_migration": "unsupported"},
      "persistent_ddl": true,
      "limitations": ["Every ON UPDATE action is rejected."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#limitations",
      "positive_proof_ids": [],
      "negative_proof_ids": ["parser.fk.on_update.rejected"]
    },
    {
      "id": "alter.add_column.nullable",
      "category": "ALTER TABLE",
      "feature": "Add a nullable column without a default",
      "syntax": "ALTER TABLE users ADD COLUMN nickname TEXT",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["Computed values are not supported. Literal-default backfill and selected ALTER COLUMN metadata actions are qualified in separate rows."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.add", "engine.create_and_query", "engine.alter.add.reopen", "catalog.core", "ado.schema.core", "rest.sql", "rest.session", "grpc.sql", "grpc.session", "ef.migration.basic"],
      "negative_proof_ids": []
    },
    {
      "id": "alter.add_column.defaulted",
      "category": "ALTER TABLE",
      "feature": "Add a column with a literal default and backfill existing rows",
      "syntax": "ALTER TABLE users ADD COLUMN status TEXT NOT NULL DEFAULT 'new'",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["The default must be one of the supported typed literal or NULL forms. Adding a required column without a value for existing rows is rejected. A failed rewrite makes either explicit transaction API rollback-only."],
      "deviations": ["Existing rows are streamed through a shadow table root and receive the persisted default before the catalog root is swapped."],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.add", "engine.alter.add_default_backfill", "engine.alter.rewrite_rollback", "engine.alter.public_write_rollback", "engine.alter.add.reopen", "catalog.default_check", "ado.schema.defaults_checks_keys", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": ["parser.default_check.unsupported"]
    },
    {
      "id": "alter.drop_column.unconstrained",
      "category": "ALTER TABLE",
      "feature": "Drop an unconstrained, non-indexed column",
      "syntax": "ALTER TABLE users DROP COLUMN obsolete_value",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["Indexed, constrained, trigger-, validation-rule-, or stored-view-dependent, primary-key, and last-column drops are rejected. Stored-view preflight is deliberately table-conservative and follows direct/transitive view chains rather than attempting column-level SQL rewriting. Deterministic fault-injection and process-interruption coverage remain follow-on work."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.drop", "engine.alter.drop", "engine.alter.rewrite_drop", "engine.alter.rewrite_rollback", "engine.alter.public_write_rollback", "catalog.core", "ado.schema.core", "rest.sql", "rest.session", "grpc.sql", "grpc.session", "ef.migration.basic"],
      "negative_proof_ids": ["engine.alter.drop_indexed.rejected", "engine.alter.dependency_preflight", "engine.alter.drop_stored_dependency_preflight"]
    },
    {
      "id": "alter.column.default",
      "category": "ALTER TABLE",
      "feature": "Set or drop a literal column default",
      "syntax": "ALTER TABLE users ALTER COLUMN status SET DEFAULT 'new'",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["SET DEFAULT accepts only the literal default forms supported by CREATE TABLE; it changes future writes and does not rewrite existing values."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.column_metadata", "engine.alter.column_default", "engine.alter.column_default_runtime", "catalog.default_check", "ado.schema.defaults_checks_keys", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": ["parser.default_check.unsupported"]
    },
    {
      "id": "alter.column.not_null",
      "category": "ALTER TABLE",
      "feature": "Set or drop column NOT NULL metadata",
      "syntax": "ALTER TABLE users ALTER COLUMN email SET NOT NULL",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["SET NOT NULL scans existing rows and refuses the metadata change if any value is NULL. Type and collation changes are not part of this feature."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.column_metadata", "engine.alter.column_not_null", "engine.alter.add.reopen", "catalog.core", "ado.schema.core", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": []
    },
    {
      "id": "alter.constraint.check",
      "category": "ALTER TABLE",
      "feature": "Add or drop a named CHECK constraint",
      "syntax": "ALTER TABLE orders ADD CONSTRAINT ck_total CHECK (total >= 0)",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": true,
      "first_supported_version": "4.1.0",
      "limitations": ["Only named row-local deterministic CHECK expressions are accepted. Adding a constraint validates every existing row before the catalog is changed."],
      "deviations": ["A CHECK expression that evaluates to UNKNOWN passes, matching CREATE TABLE CHECK behavior."],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.column_metadata", "engine.alter.named_check", "schema.default_check.serialization", "catalog.default_check", "ado.schema.defaults_checks_keys", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": ["parser.default_check.unsupported"]
    },
    {
      "id": "alter.rename_table.standalone",
      "category": "ALTER TABLE",
      "feature": "Rename a durable table",
      "syntax": "ALTER TABLE users RENAME TO customers",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["This row does not claim arbitrary vendor-specific rename syntax. Renames reject stored-view, trigger, and validation-rule dependencies until those definitions can be rewritten atomically."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.rename_table", "engine.create_and_query", "engine.alter.rename_table.reopen", "catalog.core", "ado.schema.core", "rest.sql", "rest.session", "grpc.sql", "grpc.session", "ef.migration.basic"],
      "negative_proof_ids": ["engine.alter.rename_dependency_preflight"]
    },
    {
      "id": "alter.rename_column",
      "category": "ALTER TABLE",
      "feature": "Rename a column",
      "syntax": "ALTER TABLE users RENAME COLUMN old_name TO new_name",
      "availability": "partial",
      "roadmap": "planned",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "partial", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "supported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["Dependency repair is implemented for current indexes, keys, checks, and foreign keys. Stored-view, trigger, and applicable validation-rule dependencies are rejected until their definitions can be rewritten atomically; a dedicated successful-rename reopen proof is not yet linked in the 4.1.0 release snapshot."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.rename_column", "engine.alter.rename_column", "catalog.core", "ado.schema.core", "rest.sql", "rest.session", "grpc.sql", "grpc.session", "ef.migration.basic"],
      "negative_proof_ids": ["engine.alter.rename_old.rejected", "engine.alter.rename_column_dependency_preflight"]
    },
    {
      "id": "alter.drop_constraint.foreign_key",
      "category": "ALTER TABLE",
      "feature": "Drop a foreign-key constraint by name",
      "syntax": "ALTER TABLE children DROP CONSTRAINT fk_children_parent",
      "availability": "partial",
      "roadmap": "planned",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session", "ef_migration"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "partial", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "unsupported"},
      "persistent_ddl": true,
      "first_supported_version": "4.0.4",
      "limitations": ["Only existing foreign-key constraints are handled. Other constraint kinds do not yet exist, and the EF provider rejects standalone foreign-key changes."],
      "deviations": [],
      "documentation_anchor": "sql-reference.html#alter-table",
      "positive_proof_ids": ["parser.alter.drop", "engine.fk.drop_constraint", "catalog.fk", "ado.schema.fk", "rest.sql", "rest.session", "grpc.fk.metadata", "grpc.session"],
      "negative_proof_ids": ["engine.fk.drop_missing.rejected", "ef.fk.standalone.rejected"]
    },
    {
      "id": "metadata.catalog.core",
      "category": "Metadata",
      "feature": "Core sys tables, columns, indexes, views, and triggers catalogs",
      "syntax": "SELECT * FROM sys.columns",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["This row covers the existing core catalogs, not information_schema or future generalized constraint catalogs."],
      "deviations": ["CSharpDB uses sys.* virtual catalogs and selected underscored aliases."],
      "documentation_anchor": "sql.html",
      "positive_proof_ids": ["parser.select.basic", "engine.catalog.core", "catalog.core", "ado.crud", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": []
    },
    {
      "id": "metadata.catalog.functions",
      "category": "Metadata",
      "feature": "Normalized built-in and callback function catalog",
      "syntax": "SELECT * FROM sys.functions",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.1.0",
      "limitations": ["The registry centralizes names, aliases, kinds, arity, return metadata, determinism, and registered callbacks. Rich binder type signatures, generated documentation tables, and a broader conformance corpus remain follow-on work."],
      "deviations": ["CSharpDB exposes this metadata through sys.functions and the sys_functions alias."],
      "documentation_anchor": "sql.html",
      "positive_proof_ids": ["catalog.functions", "engine.functions.catalog_query", "rest.sql", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": []
    },
    {
      "id": "metadata.ado_getschema.core",
      "category": "Metadata",
      "feature": "ADO.NET GetSchema core collections",
      "syntax": "connection.GetSchema(\"Columns\")",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["embedded_ado_net", "grpc_unary"],
      "facets": {"parser": "not_applicable", "execution": "not_applicable", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "supported", "rest_stateless": "not_applicable", "rest_session": "not_applicable", "grpc_unary": "supported", "grpc_session": "not_applicable", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["Supported collections are MetaDataCollections, Restrictions, Tables, Columns, Indexes, ForeignKeys, Views, CheckConstraints, KeyConstraints, and KeyColumns. Collection-specific restrictions are documented by the Restrictions collection."],
      "deviations": [],
      "documentation_anchor": "api-reference.html",
      "positive_proof_ids": ["ado.schema.core", "ado.schema.fk", "ado.schema.defaults_checks_keys", "ado.schema.restrictions", "grpc.ado.schema.defaults_checks_keys"],
      "negative_proof_ids": []
    },
    {
      "id": "metadata.reader.schema_provenance",
      "category": "Metadata",
      "feature": "DbDataReader.GetSchemaTable provenance and constraint detail",
      "syntax": "reader.GetSchemaTable()",
      "availability": "partial",
      "roadmap": "planned",
      "applies_to": ["embedded_ado_net"],
      "facets": {"parser": "not_applicable", "execution": "not_applicable", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "partial", "rest_stateless": "not_applicable", "rest_session": "not_applicable", "grpc_unary": "not_applicable", "grpc_session": "not_applicable", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["The schema table reports intrinsic result metadata including ordinal, CLR/provider types, nullability, sizes, key/unique/identity flags when known, and expression shape. The current binder does not carry reliable source lineage for every projected expression, so unavailable base catalog, table, and column names are deliberately returned as NULL instead of being invented."],
      "deviations": [],
      "documentation_anchor": "api-reference.html",
      "positive_proof_ids": ["ado.reader.schema.basic"],
      "negative_proof_ids": ["ado.reader.schema.lineage_limited"]
    },
    {
      "id": "provider.ef_query.crud",
      "category": "Generated SQL",
      "feature": "EF Core embedded CRUD and basic query translation",
      "syntax": "db.Users.Where(u => u.Id == id).ToListAsync()",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["ef_query"],
      "facets": {"parser": "not_applicable", "execution": "not_applicable", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "not_applicable", "rest_stateless": "not_applicable", "rest_session": "not_applicable", "grpc_unary": "not_applicable", "grpc_session": "not_applicable", "ef_query": "supported", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["The first-party provider is embedded/direct only and supports a deliberately bounded EF Core 10 relational subset."],
      "deviations": [],
      "documentation_anchor": "entity-framework-core.html#supported-surface",
      "positive_proof_ids": ["ef.crud"],
      "negative_proof_ids": []
    },
    {
      "id": "provider.ef_migration.basic",
      "category": "Generated SQL",
      "feature": "Basic EF Core migrations",
      "syntax": "dotnet ef database update",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["ef_migration"],
      "facets": {"parser": "not_applicable", "execution": "not_applicable", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "not_applicable", "rest_stateless": "not_applicable", "rest_session": "not_applicable", "grpc_unary": "not_applicable", "grpc_session": "not_applicable", "ef_query": "not_applicable", "ef_migration": "supported"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["The supported operation set is create/drop table, add/drop/rename column, rename table, and create/drop index within the provider's schema restrictions."],
      "deviations": [],
      "documentation_anchor": "entity-framework-core.html#migrations",
      "positive_proof_ids": ["ef.migration.basic"],
      "negative_proof_ids": []
    },
    {
      "id": "provider.ef_migration.idempotent",
      "category": "Generated SQL",
      "feature": "Idempotent EF migration scripts",
      "syntax": "IMigrator.GenerateScript(options: Idempotent)",
      "availability": "unsupported",
      "roadmap": "out_of_scope",
      "applies_to": ["ef_migration"],
      "facets": {"parser": "not_applicable", "execution": "not_applicable", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "not_applicable", "rest_stateless": "not_applicable", "rest_session": "not_applicable", "grpc_unary": "not_applicable", "grpc_session": "not_applicable", "ef_query": "not_applicable", "ef_migration": "unsupported"},
      "persistent_ddl": false,
      "limitations": ["The provider throws a clear NotSupportedException for idempotent scripts; a migration-history and locking design is not part of the first compatibility release."],
      "deviations": [],
      "documentation_anchor": "entity-framework-core.html#limitations",
      "positive_proof_ids": [],
      "negative_proof_ids": ["ef.migration.idempotent.rejected"]
    },
    {
      "id": "diagnostics.analyze.statistics",
      "category": "Query diagnostics",
      "feature": "ANALYZE statistics collection",
      "syntax": "ANALYZE orders",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "persistence", "catalog", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "supported", "catalog": "supported", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["Temporary tables are excluded in the current version."],
      "deviations": ["ANALYZE collects planner statistics; it does not show or execute a query plan."],
      "documentation_anchor": "sql-reference.html#analyze",
      "positive_proof_ids": ["parser.analyze", "engine.analyze.execution", "catalog.analyze.results", "catalog.analyze.reopen", "ado.crud", "direct.explain.estimate", "rest.explain", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": []
    },
    {
      "id": "diagnostics.explain.estimate",
      "category": "Query diagnostics",
      "feature": "Estimate-input diagnostics",
      "syntax": "EXPLAIN ESTIMATE FOR SELECT * FROM orders WHERE customer_id = 42",
      "availability": "supported",
      "roadmap": "shipped",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "supported", "execution": "supported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "supported", "rest_stateless": "supported", "rest_session": "supported", "grpc_unary": "supported", "grpc_session": "supported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "first_supported_version": "4.0.4",
      "limitations": ["Output describes estimate inputs and planner decisions. It follows read-only transaction routing and prepared commands discover/rebind parameters inside the target. It is not a complete physical operator tree and reports no actual execution metrics."],
      "deviations": ["The target query is not executed; mutation targets are rejected."],
      "documentation_anchor": "query-execution-pipeline.html#cardinality-estimation",
      "positive_proof_ids": ["parser.explain.estimate", "engine.explain.estimate", "engine.explain.read_only_transaction", "engine.explain.reader_session", "direct.explain.estimate", "ado.crud", "ado.explain.prepared_parameters", "rest.explain", "rest.session", "grpc.sql", "grpc.session"],
      "negative_proof_ids": ["parser.explain.mutation.rejected"]
    },
    {
      "id": "diagnostics.explain.physical",
      "category": "Query diagnostics",
      "feature": "Physical EXPLAIN plan",
      "syntax": "EXPLAIN SELECT * FROM orders WHERE customer_id = 42",
      "availability": "unsupported",
      "roadmap": "planned",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "unsupported", "execution": "unsupported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "unsupported", "rest_stateless": "unsupported", "rest_session": "unsupported", "grpc_unary": "unsupported", "grpc_session": "unsupported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "limitations": ["The runtime does not yet expose one shared physical-plan descriptor for every execution path."],
      "deviations": [],
      "documentation_anchor": "query-execution-pipeline.html#query-execution-pipeline",
      "positive_proof_ids": [],
      "negative_proof_ids": []
    },
    {
      "id": "diagnostics.explain.analyze_read_only",
      "category": "Query diagnostics",
      "feature": "EXPLAIN ANALYZE for read-only queries",
      "syntax": "EXPLAIN ANALYZE SELECT * FROM orders",
      "availability": "unsupported",
      "roadmap": "planned",
      "applies_to": ["parser", "execution", "embedded_ado_net", "rest_stateless", "rest_session", "grpc_unary", "grpc_session"],
      "facets": {"parser": "unsupported", "execution": "unsupported", "persistence": "not_applicable", "catalog": "not_applicable", "embedded_ado_net": "unsupported", "rest_stateless": "unsupported", "rest_session": "unsupported", "grpc_unary": "unsupported", "grpc_session": "unsupported", "ef_query": "not_applicable", "ef_migration": "not_applicable"},
      "persistent_ddl": false,
      "limitations": ["Per-operator actual rows, loops, timings, memory, and stop states are not instrumented or exposed."],
      "deviations": [],
      "documentation_anchor": "query-execution-pipeline.html#query-execution-pipeline",
      "positive_proof_ids": [],
      "negative_proof_ids": []
    }
  ]
}
