{"version":3,"sources":["../src/backend/capabilities/atomic-sql-program.ts","../src/backend/capabilities/atomic-mutation-program.ts"],"names":["CompilerInvariantError","ConfigurationError","supportsAtomicBatch"],"mappings":"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","file":"chunk-MRUOOAIQ.cjs","sourcesContent":["/**\n * Internal execution boundary for a closed, precompiled SQL write program.\n *\n * This is deliberately an out-of-band exact-resource capability. An author\n * registers either a root that owns the atomic boundary or an already-open\n * transaction session. Derived backends and other transaction objects do not\n * inherit the registration. A static batch is therefore never forwarded\n * through a wrapper whose behavior has not been audited for the program\n * contract.\n */\nimport { CompilerInvariantError, ConfigurationError } from \"../../errors\";\nimport type { GraphBackend, TransactionBackend } from \"../types\";\n\nexport type AtomicSqlRow = Readonly<Record<string, unknown>>;\n\n/** A transport-ready statement in the portable atomic-program protocol. */\nexport type CompiledAtomicSqlStatement = Readonly<{\n  params: readonly unknown[];\n  sql: string;\n}>;\n\n/** A native all-or-nothing dispatch for a closed statement sequence. */\nexport type AtomicSqlBatchExecutor = <TRow>(\n  statements: readonly CompiledAtomicSqlStatement[],\n) => Promise<readonly (readonly TRow[])[]>;\n\nexport type AtomicSqlProgramAdapter = Readonly<{\n  executeAtomicBatch?: AtomicSqlBatchExecutor;\n}>;\n\n/** The transport forms accepted by an atomic program author. */\nexport type AtomicSqlProgramRegistration =\n  AtomicSqlBatchExecutor | AtomicSqlProgramAdapter;\n\ntype AtomicSqlResultCardinality = \"none\" | \"one\" | \"many\";\n\n/** One closed statement and the typed decoder for its result slot. */\ntype AtomicSqlProgramSlot<TResult> = Readonly<{\n  statement: CompiledAtomicSqlStatement;\n  cardinality: AtomicSqlResultCardinality;\n  decode: (rows: readonly AtomicSqlRow[]) => TResult;\n}>;\n\n/**\n * A statically closed program. Every slot uses the same result union so a\n * heterogeneous node/edge program can still preserve a typed result at the\n * program boundary without introducing `any` into the erased executor.\n */\nexport type AtomicSqlProgram<TRowResult, TResult> = Readonly<{\n  slots: readonly AtomicSqlProgramSlot<TRowResult>[];\n  assemble: (results: readonly TRowResult[]) => TResult;\n}>;\n\nexport type AtomicSqlProgramExecutor = Readonly<{\n  execute: <TRowResult, TResult>(\n    program: AtomicSqlProgram<TRowResult, TResult>,\n  ) => Promise<TResult>;\n}>;\n\ntype RegisteredAtomicSqlProgram = Readonly<{\n  executeAtomicBatch: AtomicSqlBatchExecutor;\n  executor: AtomicSqlProgramExecutor;\n}>;\n\nconst ATOMIC_SQL_PROGRAM_EXECUTORS = new WeakMap<\n  object,\n  RegisteredAtomicSqlProgram\n>();\n\nfunction assertResultCardinality(\n  slot: Readonly<{ cardinality: AtomicSqlResultCardinality }>,\n  index: number,\n  rows: readonly AtomicSqlRow[],\n): void {\n  const valid =\n    slot.cardinality === \"none\" ? rows.length === 0\n    : slot.cardinality === \"one\" ? rows.length === 1\n    : true;\n  if (valid) return;\n  throw new CompilerInvariantError(\n    `Atomic SQL program slot ${index} returned ${rows.length} rows, ` +\n      `expected ${slot.cardinality}.`,\n    {\n      slot: index,\n      cardinality: slot.cardinality,\n      rowCount: rows.length,\n    },\n  );\n}\n\nfunction assertResultSlotCount(\n  expected: number,\n  actual: readonly (readonly AtomicSqlRow[])[],\n): void {\n  if (expected === actual.length) return;\n  throw new CompilerInvariantError(\n    `Atomic SQL program returned ${actual.length} result slots, ` +\n      `expected ${expected}.`,\n    { expected, actual: actual.length },\n  );\n}\n\nfunction isAtomicSqlResultSlots(\n  value: unknown,\n): value is readonly (readonly AtomicSqlRow[])[] {\n  return Array.isArray(value) && value.every((slot) => Array.isArray(slot));\n}\n\n/** Executes the one canonical closed-program protocol. */\nasync function executeAtomicSqlProgram<TRowResult, TResult>(\n  executeAtomicBatch: AtomicSqlBatchExecutor,\n  program: AtomicSqlProgram<TRowResult, TResult>,\n): Promise<TResult> {\n  if (program.slots.length === 0) return program.assemble([]);\n\n  const statements = program.slots.map((slot) => slot.statement);\n  const result: unknown = await executeAtomicBatch<AtomicSqlRow>(statements);\n  if (!isAtomicSqlResultSlots(result)) {\n    throw new CompilerInvariantError(\n      \"Atomic SQL program executor returned malformed result slots.\",\n      { resultType: typeof result },\n    );\n  }\n  const rows = result;\n\n  assertResultSlotCount(program.slots.length, rows);\n  const decoded = program.slots.map((slot, index) => {\n    const slotRows = rows[index];\n    if (slotRows === undefined) {\n      throw new CompilerInvariantError(\n        `Atomic SQL program result slot ${index} is missing.`,\n        { slot: index },\n      );\n    }\n    assertResultCardinality(slot, index, slotRows);\n    return slot.decode(slotRows);\n  });\n\n  return program.assemble(decoded);\n}\n\nfunction createExecutor(\n  executeAtomicBatch: AtomicSqlBatchExecutor,\n): AtomicSqlProgramExecutor {\n  return {\n    async execute<TRowResult, TResult>(\n      program: AtomicSqlProgram<TRowResult, TResult>,\n    ): Promise<TResult> {\n      return executeAtomicSqlProgram(executeAtomicBatch, program);\n    },\n  };\n}\n\n/** @internal Creates the executor shared by lowering and root registration. */\nexport function createAtomicSqlProgramExecutor(\n  adapter: AtomicSqlProgramAdapter,\n): AtomicSqlProgramExecutor | undefined {\n  const executeAtomicBatch = adapter.executeAtomicBatch;\n  return typeof executeAtomicBatch === \"function\" ?\n      createExecutor(executeAtomicBatch)\n    : undefined;\n}\n\nfunction normalizeAtomicSqlProgramRegistration(\n  registration: AtomicSqlProgramRegistration,\n): RegisteredAtomicSqlProgram | undefined {\n  const adapter: AtomicSqlProgramAdapter =\n    typeof registration === \"function\" ?\n      { executeAtomicBatch: registration }\n    : registration;\n  const executeAtomicBatch = adapter.executeAtomicBatch;\n  const executor = createAtomicSqlProgramExecutor(adapter);\n  return executeAtomicBatch === undefined || executor === undefined ?\n      undefined\n    : { executeAtomicBatch, executor };\n}\n\nfunction throwAtomicSqlProgramRegistrationMismatch(\n  target: GraphBackend | TransactionBackend,\n  registration: RegisteredAtomicSqlProgram | undefined,\n): never {\n  const declaration = target.capabilities.execution.atomicBatch;\n  throw new ConfigurationError(\n    \"An atomic SQL program requires exact-session atomic-batch authority and a usable batch executor.\",\n    {\n      code: \"ATOMIC_SQL_PROGRAM_REGISTRATION_MISMATCH\",\n      declared: declaration,\n      registered: registration !== undefined,\n    },\n    {\n      suggestion:\n        'Declare `atomicBatch: \"root\"` on an exact root executor or `\"session\"` on an already-open transaction session, then register that exact object.',\n    },\n  );\n}\n\nfunction declaredCommandSession(target: object): unknown {\n  const commands = Reflect.get(target, \"commands\") as unknown;\n  if (typeof commands !== \"object\" || commands === null) return;\n  return Reflect.get(commands, \"session\") as unknown;\n}\n\n/**\n * Registers an atomic SQL program executor for one exact backend resource.\n *\n * The declaration and executable transport are checked together so a backend\n * cannot claim atomic execution while omitting the executor, nor expose\n * an executor without declaring the session on which it is valid. The\n * registration is keyed by object identity; derived backends and other\n * transaction sessions therefore do not resolve this program.\n */\nexport function registerAtomicSqlProgram<\n  T extends GraphBackend | TransactionBackend,\n>(target: T, registration: AtomicSqlProgramRegistration): T {\n  if (ATOMIC_SQL_PROGRAM_EXECUTORS.has(target)) {\n    throw new ConfigurationError(\n      \"An atomic SQL program is already registered for this exact backend resource.\",\n      { code: \"ATOMIC_SQL_PROGRAM_ALREADY_REGISTERED\" },\n    );\n  }\n  const executor = normalizeAtomicSqlProgramRegistration(registration);\n  const declaration = target.capabilities.execution.atomicBatch;\n  const declaredSession = declaredCommandSession(target);\n  const sessionMatches =\n    (declaration === \"root\" && declaredSession === \"root\") ||\n    (declaration === \"session\" && declaredSession === \"transaction\");\n  if (declaration === \"none\" || !sessionMatches || executor === undefined) {\n    throwAtomicSqlProgramRegistrationMismatch(target, executor);\n  }\n  ATOMIC_SQL_PROGRAM_EXECUTORS.set(target, executor);\n  return target;\n}\n\n/**\n * Resolves the static program executor for an exact registered resource.\n * Other transaction sessions and derived/projected backends return `undefined`.\n */\nexport function resolveAtomicSqlProgramExecutor(\n  target: GraphBackend | TransactionBackend,\n): AtomicSqlProgramExecutor | undefined {\n  return ATOMIC_SQL_PROGRAM_EXECUTORS.get(target)?.executor;\n}\n\n/** @internal Resolves the exact batch function registered on one resource. */\nexport function resolveRegisteredAtomicSqlBatchExecutor(\n  target: GraphBackend | TransactionBackend,\n): AtomicSqlBatchExecutor | undefined {\n  return ATOMIC_SQL_PROGRAM_EXECUTORS.get(target)?.executeAtomicBatch;\n}\n\n/** Returns whether this exact object owns a registered atomic SQL transport. */\nexport function hasAtomicSqlProgramRegistration(\n  target: GraphBackend | TransactionBackend,\n): boolean {\n  return ATOMIC_SQL_PROGRAM_EXECUTORS.has(target);\n}\n","/**\n * Exact-resource execution profile for closed semantic mutation programs.\n *\n * The transport-level atomic SQL executor answers only \"can this exact resource\n * submit a closed statement sequence atomically?\" This profile is the next\n * layer up: it names the TypeGraph mutations the backend can lower onto that\n * transport. Keeping every mutation family in one exact-resource registration\n * prevents each new operation from inventing another provenance WeakMap.\n */\nimport { ConfigurationError } from \"../../errors\";\nimport type {\n  ClaimEdgeCardinalityParams,\n  EdgeConvergenceMatch,\n  EdgeRow,\n  GraphBackend,\n  InsertEdgeParams,\n  InsertNodeParams,\n  NodeInsertClaim,\n  NodeInsertProjection,\n  NodeRow,\n  SchemaWriteFenceParams,\n  TransactionBackend,\n} from \"../types\";\nimport { supportsAtomicBatch } from \"../types\";\nimport {\n  hasAtomicSqlProgramRegistration,\n  registerAtomicSqlProgram,\n  resolveRegisteredAtomicSqlBatchExecutor,\n} from \"./atomic-sql-program\";\n\n/** How a node batch member obtained the identifier stored by its program. */\nexport type AtomicNodeBatchIdSource = \"generated\" | \"caller\";\n/** Whether a node batch returns only its count or its ordered postimages. */\nexport type AtomicNodeBatchResultMode = \"count\" | \"rows\";\n\n/** Independently provable claim semantics accepted by a node mutation family. */\nexport type AtomicNodeClaimFamily = \"disjointness\" | \"uniqueness\";\n\n/** Independently provable derived-storage families in a node program. */\nexport type AtomicNodeProjectionFamily = \"embedding\" | \"fulltext\";\n\n/**\n * One complete derived-storage transition attached to a node postimage.\n *\n * Identity stays on the containing row entry so a projection cannot target a\n * different node. Embedding deletes are explicit because updates and\n * caller-id resurrection can remove a value that previously existed.\n */\nexport type AtomicNodeProjection =\n  | Extract<NodeInsertProjection, { kind: \"fulltext\" }>\n  | Readonly<{\n      kind: \"embedding\";\n      action: \"upsert\";\n      fieldPath: string;\n      embedding: readonly number[];\n      dimensions: number;\n      metric: Extract<NodeInsertProjection, { kind: \"embedding\" }>[\"metric\"];\n      indexType: Extract<\n        NodeInsertProjection,\n        { kind: \"embedding\" }\n      >[\"indexType\"];\n    }>\n  | Readonly<{\n      kind: \"embedding\";\n      action: \"delete\";\n      fieldPath: string;\n      dimensions: number;\n      metric: Extract<NodeInsertProjection, { kind: \"embedding\" }>[\"metric\"];\n      indexType: Extract<\n        NodeInsertProjection,\n        { kind: \"embedding\" }\n      >[\"indexType\"];\n    }>;\n\n/** Closed derived-storage envelope advertised by one node executor. */\nexport type AtomicNodeProjectionSupport = Readonly<{\n  families: readonly AtomicNodeProjectionFamily[];\n}>;\n\n/** Closed claim envelope advertised by one node mutation executor. */\nexport type AtomicNodeClaimSupport = Readonly<{\n  /** Independently proved claim families; an omitted family is unsupported. */\n  families: readonly AtomicNodeClaimFamily[];\n  /**\n   * Maximum compiled claim/probe bind cost one member may contribute to its\n   * write gate.\n   * Compute a member's required value with {@link atomicNodeClaimInputCost};\n   * backend implementations must not reproduce the SQL cost formula.\n   * Total batch size is deliberately absent: the executor chunks statements\n   * inside one atomic transport submission.\n   */\n  maxInputCostPerEntry: number;\n}>;\n\nfunction isAtomicNodeClaimFamily(\n  value: unknown,\n): value is AtomicNodeClaimFamily {\n  return value === \"disjointness\" || value === \"uniqueness\";\n}\n\nfunction assertAtomicNodeClaimFamilies(\n  family: keyof AtomicMutationProgramRegistration,\n  name: string,\n  value: unknown,\n): void {\n  if (\n    Array.isArray(value) &&\n    new Set(value).size === value.length &&\n    value.every((claimFamily) => isAtomicNodeClaimFamily(claimFamily))\n  ) {\n    return;\n  }\n  throw new ConfigurationError(\n    `Atomic mutation program family ${family} requires distinct ${name}.`,\n    {\n      code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n      family,\n      limit: name,\n      value,\n    },\n  );\n}\n\nfunction assertAtomicNodeClaimSupport(\n  family: \"createNodes\" | \"mutateNodes\" | \"replaceNodes\",\n  value: unknown,\n): void {\n  if (value === undefined) return;\n  if (typeof value !== \"object\" || value === null) {\n    throw new ConfigurationError(\n      `Atomic mutation program family ${family} requires claimSupport metadata.`,\n      {\n        code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n        family,\n        limit: \"claimSupport\",\n        value,\n      },\n    );\n  }\n  const support = value as Readonly<Record<PropertyKey, unknown>>;\n  assertAtomicNodeClaimFamilies(\n    family,\n    \"claimSupport.families\",\n    support[\"families\"],\n  );\n  assertNonnegativeIntegerLimit(\n    family,\n    \"claimSupport.maxInputCostPerEntry\",\n    support[\"maxInputCostPerEntry\"],\n  );\n}\n\nfunction isAtomicNodeProjectionFamily(\n  value: unknown,\n): value is AtomicNodeProjectionFamily {\n  return value === \"embedding\" || value === \"fulltext\";\n}\n\nfunction assertAtomicNodeProjectionSupport(\n  family: \"createNodes\" | \"mutateNodes\" | \"replaceNodes\" | \"updateNodes\",\n  value: unknown,\n): void {\n  if (value === undefined) return;\n  if (typeof value !== \"object\" || value === null) {\n    throw new ConfigurationError(\n      `Atomic mutation program family ${family} requires projectionSupport metadata.`,\n      {\n        code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n        family,\n        limit: \"projectionSupport\",\n        value,\n      },\n    );\n  }\n  const families = (value as Readonly<Record<PropertyKey, unknown>>)[\n    \"families\"\n  ];\n  if (\n    !Array.isArray(families) ||\n    new Set(families).size !== families.length ||\n    !families.every((projectionFamily) =>\n      isAtomicNodeProjectionFamily(projectionFamily),\n    )\n  ) {\n    throw new ConfigurationError(\n      `Atomic mutation program family ${family} requires distinct projection families.`,\n      {\n        code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n        family,\n        limit: \"projectionSupport.families\",\n        value: families,\n      },\n    );\n  }\n}\n\n/** The one owner of claim-verdict to advertised-family correlation. */\nfunction atomicNodeClaimFamily(claim: NodeInsertClaim): AtomicNodeClaimFamily {\n  return claim.verdict.kind;\n}\n\n/** Bind cost of one canonical claim row in an atomic node write gate. */\nconst ATOMIC_NODE_CANONICAL_CLAIM_INPUT_COST = 6;\n\n/** Bind cost of one legacy uniqueness compatibility probe. */\nconst ATOMIC_NODE_UNIQUENESS_PROBE_INPUT_COST = 9;\n\n/** Bind cost of one legacy disjointness compatibility probe. */\nconst ATOMIC_NODE_DISJOINTNESS_PROBE_INPUT_COST = 6;\n\n/** Exact compiled claim/probe bind cost one member contributes to its write gate. */\nexport function atomicNodeClaimInputCost(\n  claims: readonly NodeInsertClaim[],\n): number {\n  let cost = 0;\n  for (const claim of claims) {\n    cost += ATOMIC_NODE_CANONICAL_CLAIM_INPUT_COST;\n    cost +=\n      claim.verdict.kind === \"uniqueness\" ?\n        ATOMIC_NODE_UNIQUENESS_PROBE_INPUT_COST *\n        claim.verdict.probeAxes.filter((axis) => axis !== claim.axis).length\n      : ATOMIC_NODE_DISJOINTNESS_PROBE_INPUT_COST *\n        claim.verdict.conflictingKinds.length;\n  }\n  return cost;\n}\n\n/** Whether one executor explicitly accepts one member's complete claim set. */\nexport function supportsAtomicNodeClaims(\n  support: AtomicNodeClaimSupport | undefined,\n  claims: readonly NodeInsertClaim[],\n): boolean {\n  if (claims.length === 0) return true;\n  if (support === undefined) return false;\n  const families = new Set(support.families);\n  return (\n    claims.every((claim) => families.has(atomicNodeClaimFamily(claim))) &&\n    atomicNodeClaimInputCost(claims) <= support.maxInputCostPerEntry\n  );\n}\n\n/** Whether an executor can admit at least one member of a claim family. */\nexport function supportsAtomicNodeClaimFamily(\n  support: AtomicNodeClaimSupport | undefined,\n  family: AtomicNodeClaimFamily,\n): boolean {\n  return (\n    (support?.maxInputCostPerEntry ?? 0) > 0 &&\n    support?.families.includes(family) === true\n  );\n}\n\n/** Whether one executor explicitly accepts every normalized projection. */\nexport function supportsAtomicNodeProjections(\n  support: AtomicNodeProjectionSupport | undefined,\n  families: readonly AtomicNodeProjectionFamily[],\n): boolean {\n  if (families.length === 0) return true;\n  if (support === undefined) return false;\n  const advertised = new Set(support.families);\n  return families.every((family) => advertised.has(family));\n}\n\n/** One normalized node-create member supplied to a semantic executor. */\nexport type AtomicNodeBatchEntry = Readonly<{\n  idSource: AtomicNodeBatchIdSource;\n  params: InsertNodeParams;\n  /** Complete canonically ordered claims this row owes. */\n  claims?: readonly NodeInsertClaim[];\n  /** Complete derived-storage transitions owed by the written postimage. */\n  projections?: readonly AtomicNodeProjection[];\n}>;\n\n/** Complete schema-fenced input to an atomic node-create family. */\nexport type AtomicNodeBatchInput = Readonly<{\n  entries: readonly AtomicNodeBatchEntry[];\n  resultMode: AtomicNodeBatchResultMode;\n  schemaFence: SchemaWriteFenceParams;\n}>;\n\n/** Executes the complete eligible node-create family for one exact root. */\nexport interface AtomicNodeBatchExecutor {\n  /** Claim semantics this executor can prove, omitted for plain rows only. */\n  readonly claimSupport?: AtomicNodeClaimSupport;\n  /** Derived-storage families this executor carries inside its program. */\n  readonly projectionSupport?: AtomicNodeProjectionSupport;\n  (\n    input: AtomicNodeBatchInput & Readonly<{ resultMode: \"count\" }>,\n  ): Promise<number>;\n  (\n    input: AtomicNodeBatchInput & Readonly<{ resultMode: \"rows\" }>,\n  ): Promise<readonly NodeRow[]>;\n}\n\n/** One complete, preimage-free replacement supplied to a semantic executor. */\nexport type AtomicNodeReplacementEntry = Readonly<{\n  params: InsertNodeParams;\n  /** Complete canonically ordered claims the replacement postimage owes. */\n  claims?: readonly NodeInsertClaim[];\n  /** Complete derived-storage transitions owed by the replacement postimage. */\n  projections?: readonly AtomicNodeProjection[];\n}>;\n\n/** Any node entry whose complete postimage drives projections/assertions. */\nexport type AtomicNodePostimageEntry =\n  AtomicNodeBatchEntry | AtomicNodeReplacementEntry;\n\n/** Executes complete blind node replacements for one exact resource. */\nexport interface AtomicNodeReplacementBatchExecutor {\n  /** Maximum members accepted by one atomic submission, including internal chunks. */\n  readonly maxEntries: Readonly<{ plain: number; claimed: number }>;\n  /** Exact no-SQL admission proof for the prepared replacement work. */\n  readonly accepts?: (\n    entries: readonly AtomicNodeReplacementEntry[],\n  ) => boolean;\n  /** Claim semantics this executor can prove, omitted for plain rows only. */\n  readonly claimSupport?: AtomicNodeClaimSupport;\n  /** Claim families whose earlier owner rows this program releases. */\n  readonly releasedClaimFamilies?: readonly AtomicNodeClaimFamily[];\n  /** Derived-storage families this executor carries inside its program. */\n  readonly projectionSupport?: AtomicNodeProjectionSupport;\n  (\n    input: Readonly<{\n      entries: readonly AtomicNodeReplacementEntry[];\n      /** Whether earlier owner claims must be released before acquisition. */\n      releaseClaims: boolean;\n      schemaFence: SchemaWriteFenceParams;\n    }>,\n  ): Promise<readonly NodeRow[]>;\n}\n\n/** Count-returning input to an atomic direct edge-create family. */\nexport type AtomicEdgeBatchCountInput = Readonly<{\n  claims: readonly ClaimEdgeCardinalityParams[];\n  params: readonly InsertEdgeParams[];\n  resultMode: \"count\";\n  schemaFence: SchemaWriteFenceParams;\n}>;\n\n/** Postimage-returning input to an atomic direct edge-create family. */\nexport type AtomicEdgeBatchRowsInput = Readonly<{\n  claims: readonly ClaimEdgeCardinalityParams[];\n  params: readonly InsertEdgeParams[];\n  resultMode: \"rows\";\n  schemaFence: SchemaWriteFenceParams;\n}>;\n\n/** Executes complete eligible direct edge creates for one exact root. */\nexport interface AtomicEdgeBatchExecutor {\n  (input: AtomicEdgeBatchCountInput): Promise<number>;\n  (input: AtomicEdgeBatchRowsInput): Promise<readonly EdgeRow[]>;\n}\n\n/** One normalized durable edge-convergence member. */\nexport type AtomicEdgeConvergenceEntry = Readonly<{\n  params: InsertEdgeParams;\n  match: EdgeConvergenceMatch;\n}>;\n\n/** Authoritative row and outcome returned by durable convergence. */\nexport type AtomicEdgeConvergenceResult = Readonly<{\n  row: EdgeRow;\n  outcome: \"created\" | \"found\";\n}>;\n\n/** Complete schema-fenced durable edge-convergence input. */\nexport type AtomicEdgeConvergenceInput = Readonly<{\n  kind: \"durable-convergence\";\n  entries: readonly AtomicEdgeConvergenceEntry[];\n  schemaFence: SchemaWriteFenceParams;\n}>;\n\n/** Complete schema-fenced direct edge-delete input. */\nexport type AtomicEdgeDeleteBatchInput = Readonly<{\n  graphId: string;\n  expectedKind: string;\n  ids: readonly string[];\n  schemaFence: SchemaWriteFenceParams;\n}>;\n\n/** Delete count plus explicit evidence that the schema fence matched. */\nexport type AtomicDeleteBatchResult = Readonly<{\n  affectedCount: number;\n  schemaFenceMatched: boolean;\n}>;\n\n/** Executes complete eligible direct edge deletes for one exact root. */\nexport type AtomicEdgeDeleteBatchExecutor = (\n  input: AtomicEdgeDeleteBatchInput,\n) => Promise<AtomicDeleteBatchResult>;\n\n/** Complete schema-fenced direct node-delete input. */\nexport type AtomicNodeDeleteBatchInput = Readonly<{\n  graphId: string;\n  kind: string;\n  ids: readonly string[];\n  schemaFence: SchemaWriteFenceParams;\n}>;\n\n/**\n * Executes complete eligible direct node deletes for one exact root.\n *\n * Keep the callable as a function type intersected with its metadata. The API\n * compatibility inventory follows function aliases into their input types;\n * changing this to a callable interface would hide that contravariant edge.\n */\nexport type AtomicNodeDeleteBatchExecutor = Readonly<{\n  /** Claim families whose owned sidecars this program releases. */\n  releasedClaimFamilies?: readonly AtomicNodeClaimFamily[];\n}> &\n  ((input: AtomicNodeDeleteBatchInput) => Promise<AtomicDeleteBatchResult>);\n\n/** One authoritative node preimage and replacement used by a resolved set. */\nexport type AtomicNodeResolvedUpdateEntry = Readonly<{\n  graphId: string;\n  kind: string;\n  id: string;\n  props: Readonly<Record<string, unknown>>;\n  expectedVersion: number;\n  /** Complete derived-storage transitions owed by the written postimage. */\n  projections?: readonly AtomicNodeProjection[];\n}>;\n\n/** Executes a complete eligible resolved node update set. */\nexport interface AtomicNodeResolvedUpdateBatchExecutor {\n  /** Maximum members accepted by one atomic submission, including internal chunks. */\n  readonly maxEntries: number;\n  /** Derived-storage families this executor carries inside its program. */\n  readonly projectionSupport?: AtomicNodeProjectionSupport;\n  (\n    input: Readonly<{\n      entries: readonly AtomicNodeResolvedUpdateEntry[];\n      schemaFence: SchemaWriteFenceParams;\n    }>,\n  ): Promise<readonly NodeRow[]>;\n}\n\n/** One authoritative edge preimage and replacement used by a resolved set. */\nexport type AtomicEdgeResolvedUpdateEntry = Readonly<{\n  existing: EdgeRow;\n  props: Readonly<Record<string, unknown>>;\n}>;\n\n/** Executes a complete eligible resolved edge update set. */\nexport interface AtomicEdgeResolvedUpdateBatchExecutor {\n  /** Maximum members accepted by one atomic submission, including internal chunks. */\n  readonly maxEntries: number;\n  (\n    input: Readonly<{\n      entries: readonly AtomicEdgeResolvedUpdateEntry[];\n      schemaFence: SchemaWriteFenceParams;\n    }>,\n  ): Promise<readonly EdgeRow[]>;\n}\n\n/** Ordered node postimages returned by a mixed resolved mutation set. */\nexport type AtomicNodeResolvedMutationSetResult = Readonly<{\n  created: readonly NodeRow[];\n  updated: readonly NodeRow[];\n}>;\n\n/** Executes a complete eligible mixed node create/update set. */\nexport interface AtomicNodeResolvedMutationSetExecutor {\n  /** Maximum total members accepted across the program's terminal assertions. */\n  readonly maxEntries: number;\n  /** Derived-storage families this executor carries inside its program. */\n  readonly projectionSupport?: AtomicNodeProjectionSupport;\n  (\n    input: Readonly<{\n      creates: readonly AtomicNodeBatchEntry[];\n      updates: readonly AtomicNodeResolvedUpdateEntry[];\n      schemaFence: SchemaWriteFenceParams;\n    }>,\n  ): Promise<AtomicNodeResolvedMutationSetResult>;\n}\n\n/** Ordered edge postimages returned by a mixed resolved mutation set. */\nexport type AtomicEdgeResolvedMutationSetResult = Readonly<{\n  created: readonly EdgeRow[];\n  updated: readonly EdgeRow[];\n}>;\n\n/** Complete schema-fenced input to a mixed resolved edge mutation set. */\nexport type AtomicEdgeResolvedMutationSetInput = Readonly<{\n  kind: \"resolved-set\";\n  creates: readonly InsertEdgeParams[];\n  updates: readonly AtomicEdgeResolvedUpdateEntry[];\n  schemaFence: SchemaWriteFenceParams;\n}>;\n\n/** Executes resolved edge sets and durable convergence for one exact root. */\nexport interface AtomicEdgeMutationProgramExecutor {\n  readonly maxEntries: Readonly<{\n    resolvedSet: number;\n    durableConvergence: number;\n  }>;\n  (\n    input: AtomicEdgeResolvedMutationSetInput,\n  ): Promise<AtomicEdgeResolvedMutationSetResult>;\n  (\n    input: AtomicEdgeConvergenceInput,\n  ): Promise<readonly AtomicEdgeConvergenceResult[]>;\n}\n\n/** Internal proof that the closed SQL program rejected a missing endpoint. */\nexport class AtomicEdgeBatchEndpointRefusalError extends Error {\n  constructor(cause: unknown) {\n    super(\"Atomic edge batch endpoint validation failed\", { cause });\n    this.name = \"AtomicEdgeBatchEndpointRefusalError\";\n  }\n}\n\n/** Internal proof that the closed SQL program refused a cardinality claim. */\nexport class AtomicEdgeBatchCardinalityRefusalError extends Error {\n  constructor(cause: unknown) {\n    super(\"Atomic edge batch cardinality validation failed\", { cause });\n    this.name = \"AtomicEdgeBatchCardinalityRefusalError\";\n  }\n}\n\n/** Internal proof that native convergence encountered a tombstoned winner. */\nexport class AtomicEdgeConvergenceTombstoneRefusalError extends Error {\n  constructor(cause: unknown) {\n    super(\"Atomic edge convergence requires portable resurrection\", { cause });\n    this.name = \"AtomicEdgeConvergenceTombstoneRefusalError\";\n  }\n}\n\n/** Internal proof that an edge-delete input belongs to another collection. */\nexport class AtomicEdgeDeleteIdentityRefusalError extends Error {\n  constructor(cause: unknown) {\n    super(\"Atomic edge delete batch identity validation failed\", { cause });\n    this.name = \"AtomicEdgeDeleteIdentityRefusalError\";\n  }\n}\n\n/** Internal proof that a restricted node still has a live connected edge. */\nexport class AtomicNodeDeleteRestrictedRefusalError extends Error {\n  constructor(cause: unknown) {\n    super(\"Atomic node delete batch restriction validation failed\", { cause });\n    this.name = \"AtomicNodeDeleteRestrictedRefusalError\";\n  }\n}\n\n/**\n * The semantic mutation families one exact bundled root can lower today.\n * New families extend this profile instead of adding another root registry.\n */\nexport type AtomicMutationProgramExecutor = Readonly<{\n  createNodes?: AtomicNodeBatchExecutor;\n  replaceNodes?: AtomicNodeReplacementBatchExecutor;\n  createEdges?: AtomicEdgeBatchExecutor;\n  deleteNodes?: AtomicNodeDeleteBatchExecutor;\n  deleteEdges?: AtomicEdgeDeleteBatchExecutor;\n  updateNodes?: AtomicNodeResolvedUpdateBatchExecutor;\n  updateEdges?: AtomicEdgeResolvedUpdateBatchExecutor;\n  mutateNodes?: AtomicNodeResolvedMutationSetExecutor;\n  mutateEdges?: AtomicEdgeMutationProgramExecutor;\n}>;\n\n/** Every independently enabled semantic variant in a mutation profile. */\nexport const ATOMIC_MUTATION_PROGRAM_VARIANTS = [\n  \"createNodes\",\n  \"replaceNodes\",\n  \"createEdges\",\n  \"deleteNodes\",\n  \"deleteEdges\",\n  \"updateNodes\",\n  \"updateEdges\",\n  \"mutateNodes\",\n  \"mutateEdges.resolvedSet\",\n  \"mutateEdges.durableConvergence\",\n] as const;\n\n/** One independently enabled semantic variant in a mutation profile. */\nexport type AtomicMutationProgramVariant =\n  (typeof ATOMIC_MUTATION_PROGRAM_VARIANTS)[number];\n\n/** One owner for the overloaded edge-mutation input/variant correlation. */\nexport const ATOMIC_EDGE_MUTATION_VARIANT_BY_KIND = {\n  \"durable-convergence\": \"mutateEdges.durableConvergence\",\n  \"resolved-set\": \"mutateEdges.resolvedSet\",\n} as const satisfies Readonly<\n  Record<\n    | AtomicEdgeConvergenceInput[\"kind\"]\n    | AtomicEdgeResolvedMutationSetInput[\"kind\"],\n    Extract<AtomicMutationProgramVariant, `mutateEdges.${string}`>\n  >\n>;\n\n/**\n * Owns which semantic variants a normalized profile can reach independently.\n *\n * A zero limit is an honest opt-out. Singleton updates reach the update-only\n * families directly on every exact root. Mixed resolved sets move their\n * collection-level read/partition/write unit into an interactive transaction;\n * an interactive root therefore cannot reach them, while an exact registered\n * `atomicBatch: \"session\"` target can. Conformance consumes this owner instead\n * of inferring session reachability from transaction availability.\n */\nexport function reachableAtomicMutationProgramVariants(\n  profile: AtomicMutationProgramExecutor,\n  execution: Pick<\n    GraphBackend[\"capabilities\"][\"execution\"],\n    \"atomicBatch\" | \"interactiveTransactions\"\n  >,\n): readonly AtomicMutationProgramVariant[] {\n  const variants: AtomicMutationProgramVariant[] = [];\n  const resolvedMutationSetsReachable =\n    !execution.interactiveTransactions || execution.atomicBatch === \"session\";\n  if (profile.createNodes !== undefined) variants.push(\"createNodes\");\n  if (\n    (profile.replaceNodes?.maxEntries.plain ?? 0) > 0 ||\n    (profile.replaceNodes?.maxEntries.claimed ?? 0) > 0\n  ) {\n    variants.push(\"replaceNodes\");\n  }\n  if (profile.createEdges !== undefined) variants.push(\"createEdges\");\n  if (profile.deleteNodes !== undefined) variants.push(\"deleteNodes\");\n  if (profile.deleteEdges !== undefined) variants.push(\"deleteEdges\");\n  if ((profile.updateNodes?.maxEntries ?? 0) > 0) {\n    variants.push(\"updateNodes\");\n  }\n  if ((profile.updateEdges?.maxEntries ?? 0) > 0) {\n    variants.push(\"updateEdges\");\n  }\n  if (\n    resolvedMutationSetsReachable &&\n    (profile.mutateNodes?.maxEntries ?? 0) > 0\n  ) {\n    variants.push(\"mutateNodes\");\n  }\n  if (\n    resolvedMutationSetsReachable &&\n    (profile.mutateEdges?.maxEntries.resolvedSet ?? 0) > 0\n  ) {\n    variants.push(\"mutateEdges.resolvedSet\");\n  }\n  if ((profile.mutateEdges?.maxEntries.durableConvergence ?? 0) > 0) {\n    variants.push(\"mutateEdges.durableConvergence\");\n  }\n  return variants;\n}\n\n/**\n * Semantic mutation families implemented by one exact backend root.\n *\n * Registering this profile is an explicit claim about TypeGraph write\n * semantics, not merely transport mechanics. Each optional member authorizes\n * only that family; omitted families retain the complete portable path.\n */\nexport type AtomicMutationProgramRegistration = Readonly<{\n  createNodes?: AtomicNodeBatchExecutor | undefined;\n  replaceNodes?: AtomicNodeReplacementBatchExecutor | undefined;\n  createEdges?: AtomicEdgeBatchExecutor | undefined;\n  deleteNodes?: AtomicNodeDeleteBatchExecutor | undefined;\n  deleteEdges?: AtomicEdgeDeleteBatchExecutor | undefined;\n  updateNodes?: AtomicNodeResolvedUpdateBatchExecutor | undefined;\n  updateEdges?: AtomicEdgeResolvedUpdateBatchExecutor | undefined;\n  mutateNodes?: AtomicNodeResolvedMutationSetExecutor | undefined;\n  mutateEdges?: AtomicEdgeMutationProgramExecutor | undefined;\n}>;\n\nconst ATOMIC_MUTATION_PROGRAM_EXECUTORS = new WeakMap<\n  object,\n  AtomicMutationProgramExecutor\n>();\n\ntype AtomicMutationProgramDispatchObserver = (\n  variant: AtomicMutationProgramVariant,\n) => void;\n\nconst ATOMIC_MUTATION_PROGRAM_DISPATCH_OBSERVERS = new WeakMap<\n  object,\n  AtomicMutationProgramDispatchObserver\n>();\nconst INSTRUMENTED_ATOMIC_MUTATION_EXECUTOR_TARGETS = new WeakMap<\n  object,\n  object\n>();\n\nfunction reportAtomicMutationProgramDispatch(\n  target: object,\n  variant: AtomicMutationProgramVariant,\n): void {\n  ATOMIC_MUTATION_PROGRAM_DISPATCH_OBSERVERS.get(target)?.(variant);\n}\n\nfunction instrumentAtomicMutationProgramExecutors(\n  target: object,\n  profile: AtomicMutationProgramRegistration,\n): AtomicMutationProgramExecutor {\n  type Descriptor = Readonly<{\n    variant: (input: unknown) => AtomicMutationProgramVariant;\n  }>;\n  const descriptors = {\n    createEdges: { variant: () => \"createEdges\" },\n    createNodes: { variant: () => \"createNodes\" },\n    replaceNodes: { variant: () => \"replaceNodes\" },\n    deleteEdges: { variant: () => \"deleteEdges\" },\n    deleteNodes: { variant: () => \"deleteNodes\" },\n    mutateEdges: {\n      variant: (input: unknown) =>\n        ATOMIC_EDGE_MUTATION_VARIANT_BY_KIND[\n          (\n            input as\n              AtomicEdgeConvergenceInput | AtomicEdgeResolvedMutationSetInput\n          ).kind\n        ],\n    },\n    mutateNodes: { variant: () => \"mutateNodes\" },\n    updateEdges: { variant: () => \"updateEdges\" },\n    updateNodes: { variant: () => \"updateNodes\" },\n  } as const satisfies Record<\n    keyof AtomicMutationProgramRegistration,\n    Descriptor\n  >;\n\n  function instrument<TExecutor extends object>(\n    source: TExecutor,\n    descriptor: Descriptor,\n  ): TExecutor {\n    if (INSTRUMENTED_ATOMIC_MUTATION_EXECUTOR_TARGETS.get(source) === target) {\n      return source;\n    }\n    const callable = source as unknown as (\n      ...arguments_: readonly unknown[]\n    ) => unknown;\n    const instrumented = new Proxy(callable, {\n      apply(sourceExecutor, thisArgument, argumentsList) {\n        reportAtomicMutationProgramDispatch(\n          target,\n          descriptor.variant(argumentsList[0]),\n        );\n        return Reflect.apply(sourceExecutor, thisArgument, argumentsList);\n      },\n    });\n    INSTRUMENTED_ATOMIC_MUTATION_EXECUTOR_TARGETS.set(instrumented, target);\n    return instrumented as unknown as TExecutor;\n  }\n\n  const entries = ATOMIC_MUTATION_PROGRAM_FAMILIES.flatMap((family) => {\n    const executor = profile[family];\n    return executor === undefined ?\n        []\n      : [[family, instrument(executor, descriptors[family])] as const];\n  });\n  return Object.freeze(\n    Object.fromEntries(entries) as AtomicMutationProgramExecutor,\n  );\n}\n\n/** @internal Runs work while observing dispatches from this exact resource. */\nexport async function withAtomicMutationProgramDispatchObserver<TResult>(\n  target: object,\n  observer: AtomicMutationProgramDispatchObserver,\n  run: () => TResult | PromiseLike<TResult>,\n): Promise<TResult> {\n  if (ATOMIC_MUTATION_PROGRAM_DISPATCH_OBSERVERS.has(target)) {\n    throw new ConfigurationError(\n      \"Atomic mutation program dispatch observation is already active for this exact resource.\",\n      { code: \"ATOMIC_MUTATION_PROGRAM_OBSERVER_ALREADY_ACTIVE\" },\n    );\n  }\n  ATOMIC_MUTATION_PROGRAM_DISPATCH_OBSERVERS.set(target, observer);\n  try {\n    return await run();\n  } finally {\n    ATOMIC_MUTATION_PROGRAM_DISPATCH_OBSERVERS.delete(target);\n  }\n}\n\nconst ATOMIC_MUTATION_PROGRAM_FAMILIES = [\n  \"createNodes\",\n  \"replaceNodes\",\n  \"createEdges\",\n  \"deleteNodes\",\n  \"deleteEdges\",\n  \"updateNodes\",\n  \"updateEdges\",\n  \"mutateNodes\",\n  \"mutateEdges\",\n] as const satisfies readonly (keyof AtomicMutationProgramRegistration)[];\n\nfunction assertNonnegativeIntegerLimit(\n  family: keyof AtomicMutationProgramRegistration,\n  name: string,\n  value: unknown,\n): void {\n  if (typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0) {\n    return;\n  }\n  throw new ConfigurationError(\n    `Atomic mutation program family ${family} requires a nonnegative integer ${name}.`,\n    {\n      code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n      family,\n      limit: name,\n      value,\n    },\n  );\n}\n\nfunction assertAtomicMutationProgramLimits(\n  family: keyof AtomicMutationProgramRegistration,\n  executor: AtomicMutationProgramRegistration[typeof family],\n): void {\n  if (executor === undefined) return;\n  if (family === \"createNodes\" || family === \"replaceNodes\") {\n    const nodeExecutor = executor as\n      AtomicNodeBatchExecutor | AtomicNodeReplacementBatchExecutor;\n    assertAtomicNodeClaimSupport(family, nodeExecutor.claimSupport);\n    assertAtomicNodeProjectionSupport(family, nodeExecutor.projectionSupport);\n    if (family === \"replaceNodes\") {\n      const replacementExecutor =\n        nodeExecutor as AtomicNodeReplacementBatchExecutor;\n      const releasedClaimFamilies = replacementExecutor.releasedClaimFamilies;\n      if (releasedClaimFamilies !== undefined) {\n        assertAtomicNodeClaimFamilies(\n          family,\n          \"releasedClaimFamilies\",\n          releasedClaimFamilies,\n        );\n      }\n      const maxEntries = (\n        replacementExecutor as unknown as Readonly<Record<string, unknown>>\n      )[\"maxEntries\"];\n      if (typeof maxEntries !== \"object\" || maxEntries === null) {\n        throw new ConfigurationError(\n          \"Atomic mutation program family replaceNodes requires maxEntries metadata.\",\n          {\n            code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n            family,\n            limit: \"maxEntries\",\n            value: maxEntries,\n          },\n        );\n      }\n      const limits = maxEntries as Readonly<Record<string, unknown>>;\n      assertNonnegativeIntegerLimit(\n        family,\n        \"maxEntries.plain\",\n        limits[\"plain\"],\n      );\n      assertNonnegativeIntegerLimit(\n        family,\n        \"maxEntries.claimed\",\n        limits[\"claimed\"],\n      );\n      const accepts = (executor as AtomicNodeReplacementBatchExecutor).accepts;\n      if (accepts !== undefined && typeof accepts !== \"function\") {\n        throw new ConfigurationError(\n          \"Atomic mutation program family replaceNodes requires a callable accepts predicate.\",\n          {\n            code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n            family,\n            limit: \"accepts\",\n            value: accepts,\n          },\n        );\n      }\n    }\n    return;\n  }\n  if (family === \"deleteNodes\") {\n    const releasedClaimFamilies: unknown = (\n      executor as AtomicNodeDeleteBatchExecutor\n    ).releasedClaimFamilies;\n    if (releasedClaimFamilies !== undefined) {\n      assertAtomicNodeClaimFamilies(\n        family,\n        \"releasedClaimFamilies\",\n        releasedClaimFamilies,\n      );\n    }\n    return;\n  }\n  if (\n    family === \"updateNodes\" ||\n    family === \"updateEdges\" ||\n    family === \"mutateNodes\"\n  ) {\n    assertNonnegativeIntegerLimit(\n      family,\n      \"maxEntries\",\n      (executor as Readonly<{ maxEntries: unknown }>).maxEntries,\n    );\n    if (family === \"updateNodes\" || family === \"mutateNodes\") {\n      assertAtomicNodeProjectionSupport(\n        family,\n        (\n          executor as\n            | AtomicNodeResolvedMutationSetExecutor\n            | AtomicNodeResolvedUpdateBatchExecutor\n        ).projectionSupport,\n      );\n    }\n    return;\n  }\n  if (family === \"mutateEdges\") {\n    const limits: unknown = (executor as AtomicEdgeMutationProgramExecutor)\n      .maxEntries;\n    if (typeof limits !== \"object\" || limits === null) {\n      throw new ConfigurationError(\n        \"Atomic mutation program family mutateEdges requires maxEntries limits.\",\n        {\n          code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n          family,\n          limit: \"maxEntries\",\n          value: limits,\n        },\n      );\n    }\n    const edgeLimits = limits as Readonly<Record<PropertyKey, unknown>>;\n    assertNonnegativeIntegerLimit(\n      family,\n      \"maxEntries.resolvedSet\",\n      edgeLimits[\"resolvedSet\"],\n    );\n    assertNonnegativeIntegerLimit(\n      family,\n      \"maxEntries.durableConvergence\",\n      edgeLimits[\"durableConvergence\"],\n    );\n  }\n}\n\nfunction normalizeAtomicMutationProgramRegistration(\n  registration: AtomicMutationProgramRegistration,\n): AtomicMutationProgramExecutor {\n  const uncheckedRegistration: unknown = registration;\n  if (\n    typeof uncheckedRegistration !== \"object\" ||\n    uncheckedRegistration === null\n  ) {\n    throw new ConfigurationError(\n      \"An atomic mutation program registration must be an object.\",\n      { code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\" },\n    );\n  }\n  const entries: [\n    keyof AtomicMutationProgramRegistration,\n    NonNullable<\n      AtomicMutationProgramRegistration[keyof AtomicMutationProgramRegistration]\n    >,\n  ][] = [];\n  for (const family of ATOMIC_MUTATION_PROGRAM_FAMILIES) {\n    const executor = registration[family];\n    if (executor === undefined) continue;\n    if (typeof executor !== \"function\") {\n      throw new ConfigurationError(\n        `Atomic mutation program family ${family} must be callable.`,\n        {\n          code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n          family,\n        },\n      );\n    }\n    assertAtomicMutationProgramLimits(family, executor);\n    entries.push([family, executor]);\n  }\n  if (entries.length === 0) {\n    throw new ConfigurationError(\n      \"An atomic mutation program registration must implement at least one semantic family.\",\n      { code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\" },\n    );\n  }\n  return Object.freeze(\n    Object.fromEntries(entries) as AtomicMutationProgramExecutor,\n  );\n}\n\nfunction throwAtomicMutationProgramRegistrationMismatch(\n  target: GraphBackend | TransactionBackend,\n): never {\n  throw new ConfigurationError(\n    \"Atomic mutation programs require an exact backend session with a registered atomic SQL transport.\",\n    {\n      code: \"ATOMIC_MUTATION_PROGRAM_REGISTRATION_MISMATCH\",\n      atomicBatch: target.capabilities.execution.atomicBatch,\n      transportRegistered: hasAtomicSqlProgramRegistration(target),\n    },\n    {\n      suggestion:\n        \"Register and validate the exact-session atomic SQL transport before registering only the TypeGraph mutation families this backend implements.\",\n    },\n  );\n}\n\n/**\n * Registers TypeGraph semantic mutation programs for one exact backend resource.\n *\n * Transport registration proves atomic statement dispatch only. This second,\n * explicit profile declares which graph mutation families preserve their\n * complete schema-fence, validation, side-effect, refusal, and result-ordering\n * contracts. Object-identity registration prevents derived, projected, and\n * other transaction sessions from inheriting execution evidence.\n */\nexport function registerAtomicMutationPrograms<\n  T extends GraphBackend | TransactionBackend,\n>(target: T, registration: AtomicMutationProgramRegistration): T {\n  if (\n    !supportsAtomicBatch(target) ||\n    !hasAtomicSqlProgramRegistration(target)\n  ) {\n    throwAtomicMutationProgramRegistrationMismatch(target);\n  }\n  if (ATOMIC_MUTATION_PROGRAM_EXECUTORS.has(target)) {\n    throw new ConfigurationError(\n      \"Atomic mutation programs are already registered for this exact backend resource.\",\n      { code: \"ATOMIC_MUTATION_PROGRAM_ALREADY_REGISTERED\" },\n    );\n  }\n  ATOMIC_MUTATION_PROGRAM_EXECUTORS.set(\n    target,\n    instrumentAtomicMutationProgramExecutors(\n      target,\n      normalizeAtomicMutationProgramRegistration(registration),\n    ),\n  );\n  return target;\n}\n\n/** Returns whether this exact resource owns a semantic program profile. */\nexport function hasAtomicMutationProgramRegistration(\n  target: GraphBackend | TransactionBackend,\n): boolean {\n  return ATOMIC_MUTATION_PROGRAM_EXECUTORS.has(target);\n}\n\n/** Resolves semantic mutation programs only for their exact registered resource. */\nexport function resolveAtomicMutationPrograms(\n  target: GraphBackend | TransactionBackend,\n): AtomicMutationProgramExecutor | undefined {\n  return ATOMIC_MUTATION_PROGRAM_EXECUTORS.get(target);\n}\n\n/**\n * Re-registers exact-session evidence on a transparent transaction wrapper.\n *\n * Session authority is never inherited implicitly: the wrapper seam calls\n * this only after deriving a backend that forwards to the same pinned command\n * session. Root registrations remain non-transferable.\n *\n * @internal\n */\nexport function carryAtomicMutationSessionRegistration<\n  T extends TransactionBackend,\n>(base: TransactionBackend, derived: T): T {\n  if (\n    base.capabilities.execution.atomicBatch !== \"session\" ||\n    derived.capabilities.execution.atomicBatch !== \"session\"\n  ) {\n    return derived;\n  }\n  const executeAtomicBatch = resolveRegisteredAtomicSqlBatchExecutor(base);\n  const profile = resolveAtomicMutationPrograms(base);\n  if (executeAtomicBatch === undefined || profile === undefined) return derived;\n  registerAtomicSqlProgram(derived, executeAtomicBatch);\n  registerAtomicMutationPrograms(derived, profile);\n  return derived;\n}\n\n/**\n * @internal Test-only compatibility seam.\n *\n * Production factories must use registerAtomicMutationPrograms() so transport,\n * declaration, shape, and duplicate-registration validation cannot be skipped.\n */\nexport function markBundledRootAtomicMutationPrograms<T extends object>(\n  target: T,\n  executor: Readonly<{\n    createNodes?: AtomicNodeBatchExecutor | undefined;\n    replaceNodes?: AtomicNodeReplacementBatchExecutor | undefined;\n    createEdges?: AtomicEdgeBatchExecutor | undefined;\n    deleteNodes?: AtomicNodeDeleteBatchExecutor | undefined;\n    deleteEdges?: AtomicEdgeDeleteBatchExecutor | undefined;\n    updateNodes?: AtomicNodeResolvedUpdateBatchExecutor | undefined;\n    updateEdges?: AtomicEdgeResolvedUpdateBatchExecutor | undefined;\n    mutateNodes?: AtomicNodeResolvedMutationSetExecutor | undefined;\n    mutateEdges?: AtomicEdgeMutationProgramExecutor | undefined;\n  }>,\n): T {\n  ATOMIC_MUTATION_PROGRAM_EXECUTORS.set(\n    target,\n    instrumentAtomicMutationProgramExecutors(target, executor),\n  );\n  return target;\n}\n\n/** @internal Compatibility seam for bundled-factory and backend tests. */\nexport function resolveBundledRootAtomicMutationPrograms(\n  target: GraphBackend | TransactionBackend,\n): AtomicMutationProgramExecutor | undefined {\n  return resolveAtomicMutationPrograms(target);\n}\n\n/** @internal Narrow test seam over the single mutation-program registry. */\nexport function markBundledRootAtomicNodeBatch<T extends object>(\n  target: T,\n  executor: AtomicNodeBatchExecutor,\n): T {\n  const existing = ATOMIC_MUTATION_PROGRAM_EXECUTORS.get(target);\n  return markBundledRootAtomicMutationPrograms(target, {\n    ...existing,\n    createNodes: executor,\n  });\n}\n\n/** @internal Narrow test seam over the single mutation-program registry. */\nexport function markBundledRootAtomicEdgeBatch<T extends object>(\n  target: T,\n  executor: AtomicEdgeBatchExecutor,\n): T {\n  const existing = ATOMIC_MUTATION_PROGRAM_EXECUTORS.get(target);\n  return markBundledRootAtomicMutationPrograms(target, {\n    ...existing,\n    createEdges: executor,\n  });\n}\n\n/** @internal Narrow test seam over the single mutation-program registry. */\nexport function resolveBundledRootAtomicNodeBatch(\n  target: GraphBackend | TransactionBackend,\n): AtomicNodeBatchExecutor | undefined {\n  return resolveAtomicMutationPrograms(target)?.createNodes;\n}\n\n/** @internal Narrow test seam over the single mutation-program registry. */\nexport function resolveBundledRootAtomicEdgeBatch(\n  target: GraphBackend | TransactionBackend,\n): AtomicEdgeBatchExecutor | undefined {\n  return resolveAtomicMutationPrograms(target)?.createEdges;\n}\n"]}