@fabricorg/databricks-testkit 0.7.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fixtures.ts","../src/duckdb-context.ts","../src/workspace-client.ts","../src/workspace-context.ts","../src/context.ts","../src/index.ts","../src/golden.ts","../src/assert.ts","../src/mock-client.ts","../src/live-suite.ts","../src/pollers.ts","../src/live-checks.ts","../src/lakebase-checks.ts","../src/lakebase-branch.ts","../src/databricks-http.ts","../src/platform-checks.ts","../src/volume-checks.ts","../src/autoloader-checks.ts","../src/resilience-checks.ts","../src/target-packs.ts","../src/foundation-packs.ts","../src/jobs-orchestration.ts","../src/jobs-certification-check.ts","../src/jobs-target-pack.ts","../src/advanced-workload-checks.ts","../src/advanced-target-packs.ts","../src/builtin-packs.ts"],"names":["columns","rows","resolve","token","readFile","createDuckDbContext","createWorkspaceContext","dirname","required","warehouse","path","mkdir","writeFile","LakebaseDatabaseProvider","exchangeLakebaseCredential","delay","randomUUID","basename","randomBytes","requirement","adapter","DOCS"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Declarative, engine-agnostic table seeds. The same fixture applies to a\n * local DuckDB table or a scratch Unity Catalog schema — column DDL uses the\n * portable subset (VARCHAR/STRING, BIGINT, DOUBLE, TIMESTAMP, BOOLEAN).\n */\nexport interface TableFixture {\n table: string;\n /**\n * Column DDL, e.g. `subject_id STRING, value DOUBLE, \"at\" TIMESTAMP`.\n * Optional when the table already exists in the target context.\n */\n schema?: string;\n /** Row tuples in column order, or row objects keyed by column name. */\n rows?: readonly (readonly unknown[] | Record<string, unknown>)[];\n /** Path to an NDJSON file of row objects (one JSON object per line). */\n ndjsonFile?: string;\n}\n\nexport interface FixtureColumn {\n name: string;\n type: string;\n}\n\n/** Parse `name TYPE, name TYPE(args), \"quoted\" TYPE` column DDL into columns. */\nexport function parseFixtureColumns(schema: string): FixtureColumn[] {\n const columns: FixtureColumn[] = [];\n let depth = 0;\n let current = '';\n const parts: string[] = [];\n for (const ch of schema) {\n if (ch === '(') depth++;\n if (ch === ')') depth--;\n if (ch === ',' && depth === 0) {\n parts.push(current);\n current = '';\n } else {\n current += ch;\n }\n }\n if (current.trim()) parts.push(current);\n for (const part of parts) {\n const trimmed = part.trim();\n const match = trimmed.match(/^(\"([^\"]+)\"|`([^`]+)`|(\\w+))\\s+(.+)$/s);\n if (!match) throw new Error(`Unparseable fixture column: '${trimmed}'`);\n columns.push({\n name: match[2] ?? match[3] ?? match[4] ?? '',\n type: (match[5] ?? '').trim(),\n });\n }\n if (columns.length === 0) throw new Error('Fixture schema declared no columns');\n return columns;\n}\n\n/** Resolve fixture rows (inline tuples/objects or NDJSON file) into tuples in `columns` order. */\nexport async function resolveFixtureRows(\n fixture: TableFixture,\n columns: readonly FixtureColumn[],\n): Promise<unknown[][]> {\n const raw: (readonly unknown[] | Record<string, unknown>)[] = [...(fixture.rows ?? [])];\n if (fixture.ndjsonFile) {\n const fs = await import('node:fs/promises');\n const text = await fs.readFile(fixture.ndjsonFile, 'utf8');\n for (const line of text.split('\\n')) {\n if (line.trim().length === 0) continue;\n raw.push(JSON.parse(line) as Record<string, unknown>);\n }\n }\n return raw.map((row) => {\n if (Array.isArray(row)) {\n if (row.length !== columns.length) {\n throw new Error(\n `Fixture row for ${fixture.table} has ${row.length} values, expected ${columns.length}`,\n );\n }\n return [...row];\n }\n const record = row as Record<string, unknown>;\n return columns.map((c) => (c.name in record ? record[c.name] : null));\n });\n}\n","import type { ExecutionContext } from './context.js';\nimport { type TableFixture, parseFixtureColumns, resolveFixtureRows } from './fixtures.js';\n\nexport interface DuckDbContextOptions {\n /** Database file path; ':memory:' (default) for a throwaway in-process db. */\n path?: string;\n /** Optional schema to create + qualify tables with. */\n schema?: string;\n /** Injectable for tests of this module itself. */\n connectionFactory?: (path: string) => Promise<DuckDbConnectionLike>;\n}\n\n/** Structural slice of the lazily-imported @duckdb/node-api connection. */\nexport interface DuckDbConnectionLike {\n run(sql: string, values?: unknown[]): Promise<unknown>;\n runAndReadAll(\n sql: string,\n values?: unknown[],\n ): Promise<{ getRowObjects(): Record<string, unknown>[] }>;\n closeSync(): void;\n}\n\n/**\n * Hermetic local execution context on DuckDB — the `local` profile of the\n * testing pyramid. No workspace, no credentials, sub-second.\n */\nexport async function createDuckDbContext(\n options: DuckDbContextOptions = {},\n): Promise<ExecutionContext> {\n const factory = options.connectionFactory ?? defaultConnectionFactory;\n const conn = await factory(options.path ?? ':memory:');\n const schema = options.schema;\n if (schema) await conn.run(`CREATE SCHEMA IF NOT EXISTS ${schema}`);\n const qual = (table: string) => (schema ? `${schema}.${table}` : table);\n\n return {\n profile: 'local',\n qual,\n async exec(sql, params) {\n await conn.run(sql, params ? [...params] : undefined);\n },\n async query(sql, params) {\n const reader = await conn.runAndReadAll(sql, params ? [...params] : undefined);\n return reader.getRowObjects().map(normalizeRow);\n },\n async loadFixture(fixture: TableFixture) {\n if (fixture.schema) {\n const columns = parseFixtureColumns(fixture.schema);\n const ddl = columns.map((c) => `\"${c.name}\" ${portableType(c.type)}`).join(', ');\n await conn.run(`CREATE TABLE IF NOT EXISTS ${qual(fixture.table)} (${ddl})`);\n const rows = await resolveFixtureRows(fixture, columns);\n for (const row of rows) {\n const casts = columns\n .map((c) => (isTimestamp(c.type) ? 'CAST(? AS TIMESTAMP)' : '?'))\n .join(', ');\n await conn.run(`INSERT INTO ${qual(fixture.table)} VALUES (${casts})`, row);\n }\n return;\n }\n // Table pre-exists: infer column order from the catalog.\n const described = await conn.runAndReadAll(`DESCRIBE ${qual(fixture.table)}`);\n const columns = described\n .getRowObjects()\n .map((r) => ({ name: String(r.column_name), type: String(r.column_type) }));\n const rows = await resolveFixtureRows(fixture, columns);\n for (const row of rows) {\n const casts = columns\n .map((c) => (isTimestamp(c.type) ? 'CAST(? AS TIMESTAMP)' : '?'))\n .join(', ');\n await conn.run(`INSERT INTO ${qual(fixture.table)} VALUES (${casts})`, row);\n }\n },\n async close() {\n conn.closeSync();\n },\n };\n}\n\n/** Databricks types → DuckDB types for the portable fixture subset. */\nfunction portableType(type: string): string {\n return type.replace(/\\bSTRING\\b/gi, 'VARCHAR');\n}\n\nfunction isTimestamp(type: string): boolean {\n return /TIMESTAMP/i.test(type);\n}\n\n/**\n * Normalize DuckDB values to plain JSON-ish values so assertions and golden\n * files are engine-portable: bigint→number, TIMESTAMP→`YYYY-MM-DD HH:MM:SS`\n * (UTC, microseconds trimmed), DECIMAL→number.\n */\nexport function normalizeRow(row: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(row)) {\n out[key] = normalizeValue(value);\n }\n return out;\n}\n\nfunction normalizeValue(value: unknown): unknown {\n if (typeof value === 'bigint') {\n if (value > BigInt(Number.MAX_SAFE_INTEGER) || value < BigInt(-Number.MAX_SAFE_INTEGER)) {\n return value.toString();\n }\n return Number(value);\n }\n if (value !== null && typeof value === 'object') {\n const v = value as { micros?: bigint; width?: number; scale?: number; value?: bigint };\n if (typeof v.micros === 'bigint') {\n // DuckDBTimestampValue — micros since epoch, UTC.\n const millis = Number(v.micros / 1000n);\n return new Date(millis)\n .toISOString()\n .replace('T', ' ')\n .replace(/\\.\\d+Z$/, '');\n }\n if (typeof v.scale === 'number' && typeof v.value === 'bigint') {\n // DuckDBDecimalValue.\n return Number(v.value) / 10 ** v.scale;\n }\n return String(value);\n }\n return value;\n}\n\nasync function defaultConnectionFactory(path: string): Promise<DuckDbConnectionLike> {\n const moduleName = '@duckdb/node-api';\n let mod: { DuckDBInstance: { create(path: string): Promise<{ connect(): Promise<unknown> }> } };\n try {\n mod = (await import(moduleName)) as typeof mod;\n } catch {\n throw new Error(\n 'createDuckDbContext requires the optional peer @duckdb/node-api — run: pnpm add -D @duckdb/node-api',\n );\n }\n const instance = await mod.DuckDBInstance.create(path);\n return (await instance.connect()) as DuckDbConnectionLike;\n}\n","/** Minimal request boundary used by the live Databricks certification suite. */\nexport interface WorkspaceClientLike {\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: WorkspaceRequestOptions,\n ): Promise<T>;\n}\n\nexport interface WorkspaceClientOptions {\n host: string;\n token: string | (() => string | Promise<string>);\n fetchImpl?: typeof fetch;\n maxRetries?: number;\n retryBaseDelayMs?: number;\n signal?: AbortSignal;\n}\n\nexport interface WorkspaceRequestOptions {\n retry?: 'safe' | 'always' | 'never';\n idempotencyKey?: string;\n maxRetries?: number;\n}\n\nexport interface WorkspaceWaitOptions {\n pollIntervalMs?: number;\n timeoutMs?: number;\n signal?: AbortSignal;\n}\n\n/**\n * Testkit-owned REST boundary for workspace certification endpoints.\n *\n * Harness 4 removed its generic public REST client in favor of generated,\n * capability-specific Databricks SDK clients. The testkit intentionally keeps\n * this narrow injectable transport because it certifies APIs across several\n * services and because its mock client implements the same two-method shape.\n */\nexport class WorkspaceRestClient implements WorkspaceClientLike {\n private readonly host: string;\n private readonly token: WorkspaceClientOptions['token'];\n private readonly fetchImpl: typeof fetch;\n private readonly maxRetries: number;\n private readonly retryBaseDelayMs: number;\n private readonly signal: AbortSignal | undefined;\n\n constructor(options: WorkspaceClientOptions) {\n this.host = workspaceOrigin(options.host);\n this.token = options.token;\n this.fetchImpl = options.fetchImpl ?? fetch;\n this.maxRetries = options.maxRetries ?? 3;\n this.retryBaseDelayMs = options.retryBaseDelayMs ?? 500;\n this.signal = options.signal;\n }\n\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T> {\n return this.request<T>('GET', path, undefined, query);\n }\n\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: WorkspaceRequestOptions,\n ): Promise<T> {\n return this.request<T>('POST', path, body, query, options);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n query: Record<string, string | number | boolean | undefined> = {},\n options: WorkspaceRequestOptions = {},\n ): Promise<T> {\n const url = new URL(`${this.host}${path.startsWith('/') ? path : `/${path}`}`);\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) url.searchParams.set(key, String(value));\n }\n const bodyHasIdempotencyToken =\n typeof body === 'object' &&\n body !== null &&\n typeof (body as Record<string, unknown>).idempotency_token === 'string';\n const canRetry =\n options.retry === 'always' ||\n (options.retry !== 'never' &&\n (options.retry === 'safe' ||\n method === 'GET' ||\n Boolean(options.idempotencyKey) ||\n bodyHasIdempotencyToken));\n const maxRetries = canRetry ? (options.maxRetries ?? this.maxRetries) : 0;\n\n for (let attempt = 0; ; attempt += 1) {\n const token = typeof this.token === 'function' ? await this.token() : this.token;\n let response: Response;\n try {\n response = await this.fetchImpl(url, {\n method,\n headers: {\n authorization: `Bearer ${token}`,\n ...(body !== undefined ? { 'content-type': 'application/json' } : {}),\n ...(options.idempotencyKey ? { 'idempotency-key': options.idempotencyKey } : {}),\n },\n ...(body !== undefined ? { body: JSON.stringify(body) } : {}),\n ...(this.signal ? { signal: this.signal } : {}),\n });\n } catch (error) {\n if (this.signal?.aborted || attempt >= maxRetries) throw error;\n await delay(this.retryBaseDelayMs * 2 ** attempt, this.signal);\n continue;\n }\n\n if (response.ok) {\n if (response.status === 204) return undefined as T;\n return (await response.json()) as T;\n }\n if (isRetryableStatus(response.status) && attempt < maxRetries) {\n await delay(retryDelayMs(response, attempt, this.retryBaseDelayMs), this.signal);\n continue;\n }\n\n const message = (await response.text()).split(token).join('[REDACTED]');\n throw new Error(\n `databricks: ${response.status} ${response.statusText}: ${message.slice(0, 2000)}`,\n );\n }\n }\n}\n\nexport async function waitForDatabricksRun(\n client: WorkspaceClientLike,\n runId: number,\n options: WorkspaceWaitOptions = {},\n): Promise<Record<string, unknown>> {\n const deadline = Date.now() + (options.timeoutMs ?? 600_000);\n const interval = options.pollIntervalMs ?? 5_000;\n let current = await client.get<Record<string, unknown>>('/api/2.2/jobs/runs/get', {\n run_id: runId,\n });\n while (!isTerminalRun(current) && Date.now() < deadline) {\n await delay(interval, options.signal);\n current = await client.get<Record<string, unknown>>('/api/2.2/jobs/runs/get', {\n run_id: runId,\n });\n }\n return current;\n}\n\nexport async function waitForDatabricksStatement(\n client: WorkspaceClientLike,\n statementId: string,\n options: WorkspaceWaitOptions = {},\n): Promise<Record<string, unknown>> {\n const deadline = Date.now() + (options.timeoutMs ?? 300_000);\n const interval = options.pollIntervalMs ?? 2_000;\n const path = `/api/2.0/sql/statements/${encodeURIComponent(statementId)}`;\n let current = await client.get<Record<string, unknown>>(path);\n while (!isTerminalStatement(current) && Date.now() < deadline) {\n await delay(interval, options.signal);\n current = await client.get<Record<string, unknown>>(path);\n }\n return current;\n}\n\nfunction workspaceOrigin(host: string): string {\n const value = host.trim();\n if (!value) throw new Error('databricks: workspace host cannot be empty');\n const url = new URL(value.includes('://') ? value : `https://${value}`);\n if (url.username || url.password) {\n throw new Error('databricks: workspace host must not contain credentials');\n }\n return url.origin;\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status === 499 || (status >= 500 && status <= 599);\n}\n\nfunction retryDelayMs(response: Response, attempt: number, base: number): number {\n const retryAfterHeader = response.headers.get('retry-after');\n const retryAfter = retryAfterHeader === null ? Number.NaN : Number(retryAfterHeader);\n return Number.isFinite(retryAfter) && retryAfter >= 0 ? retryAfter * 1000 : base * 2 ** attempt;\n}\n\nfunction isTerminalRun(run: Record<string, unknown>): boolean {\n const state = run.state as { life_cycle_state?: string } | undefined;\n return ['TERMINATED', 'SKIPPED', 'INTERNAL_ERROR'].includes(state?.life_cycle_state ?? '');\n}\n\nfunction isTerminalStatement(statement: Record<string, unknown>): boolean {\n const status = statement.status as { state?: string } | undefined;\n return ['SUCCEEDED', 'FAILED', 'CANCELED', 'CLOSED'].includes(status?.state ?? '');\n}\n\nfunction delay(ms: number, signal?: AbortSignal): Promise<void> {\n if (!signal) return new Promise((resolve) => setTimeout(resolve, ms));\n if (signal.aborted) {\n return Promise.reject(\n signal.reason ?? new DOMException('The operation was aborted', 'AbortError'),\n );\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(done, ms);\n signal.addEventListener('abort', aborted, { once: true });\n function done() {\n signal?.removeEventListener('abort', aborted);\n resolve();\n }\n function aborted() {\n clearTimeout(timer);\n reject(signal?.reason ?? new DOMException('The operation was aborted', 'AbortError'));\n }\n });\n}\n","import { readFile } from 'node:fs/promises';\nimport type { ExecutionContext } from './context.js';\nimport { type TableFixture, parseFixtureColumns, resolveFixtureRows } from './fixtures.js';\nimport {\n type WorkspaceClientLike,\n WorkspaceRestClient,\n waitForDatabricksStatement,\n} from './workspace-client.js';\nexport type { WorkspaceClientLike } from './workspace-client.js';\n\nexport interface WorkspaceContextOptions {\n env?: Record<string, string | undefined>;\n /** Schema within the catalog used by qual(); defaults to DBX_TEST_SCHEMA. */\n schema?: string;\n /** Injectable client for hermetic tests; defaults to the testkit workspace client. */\n client?: WorkspaceClientLike;\n /** Injectable fetch for the OAuth M2M exchange. */\n fetchImpl?: typeof fetch;\n pollIntervalMs?: number;\n timeoutMs?: number;\n /** Drop tables seeded by this context on close. Defaults to true. */\n cleanupFixtures?: boolean;\n /** Observe submitted statements for redacted failure evidence. */\n onStatement?: (statement: { sql: string; statementId?: string }) => void;\n}\n\ninterface StatementResponse {\n statement_id?: string;\n status?: { state?: string; error?: { message?: string } };\n manifest?: { schema?: { columns?: { name: string; type_name?: string; position?: number }[] } };\n result?: { data_array?: (string | null)[][] };\n}\n\n/**\n * Live execution context on a Databricks SQL warehouse via the SQL Statement\n * Execution API (/api/2.0/sql/statements). The Statement Execution API takes\n * NAMED parameter markers, so positional `?` params are rewritten to\n * `:p1..:pn` — the ExecutionContext surface stays identical to the local\n * profile.\n */\nexport async function createWorkspaceContext(\n options: WorkspaceContextOptions = {},\n): Promise<ExecutionContext> {\n const env = options.env ?? process.env;\n const warehouseId = resolveWarehouseId(env);\n const catalog = env.DBX_TEST_CATALOG;\n const schema = options.schema ?? env.DBX_TEST_SCHEMA;\n const client = options.client ?? createClientFromEnv(env, options.fetchImpl);\n const fixtureTables = new Set<string>();\n\n const qual = (table: string) =>\n [catalog, schema, table].filter((part): part is string => Boolean(part)).join('.');\n\n async function run(sql: string, params?: readonly unknown[]): Promise<StatementResponse> {\n const { statement, parameters } = toNamedParameters(sql, params ?? []);\n const submitted = await client.post<StatementResponse>('/api/2.0/sql/statements', {\n statement,\n warehouse_id: warehouseId,\n ...(catalog ? { catalog } : {}),\n ...(schema ? { schema } : {}),\n ...(parameters.length > 0 ? { parameters } : {}),\n wait_timeout: '30s',\n on_wait_timeout: 'CONTINUE',\n });\n options.onStatement?.({\n sql,\n ...(submitted.statement_id ? { statementId: submitted.statement_id } : {}),\n });\n const state = submitted.status?.state;\n let terminal = submitted;\n if (state !== 'SUCCEEDED' && state !== 'FAILED' && state !== 'CANCELED' && state !== 'CLOSED') {\n terminal = (await waitForDatabricksStatement(client, submitted.statement_id ?? '', {\n pollIntervalMs: options.pollIntervalMs,\n timeoutMs: options.timeoutMs,\n })) as StatementResponse;\n }\n if (terminal.status?.state !== 'SUCCEEDED') {\n throw new Error(\n `Databricks statement ${terminal.status?.state ?? 'UNKNOWN'}: ${\n terminal.status?.error?.message ?? sql.slice(0, 200)\n }`,\n );\n }\n return terminal;\n }\n\n return {\n profile: 'live',\n qual,\n async exec(sql, params) {\n await run(sql, params);\n },\n async query(sql, params) {\n const response = await run(sql, params);\n return parseStatementRows(response);\n },\n async loadFixture(fixture: TableFixture) {\n if (!schema) {\n throw new Error(\n 'Live fixtures require DBX_TEST_SCHEMA (or a schema option) so tests cannot replace unscoped tables',\n );\n }\n if (!fixture.schema) {\n throw new Error(\n `Live fixtures require explicit column DDL for ${fixture.table} (schema inference is local-only)`,\n );\n }\n const columns = parseFixtureColumns(fixture.schema);\n const ddl = columns.map((c) => `\\`${c.name}\\` ${c.type}`).join(', ');\n const target = qual(fixture.table);\n await run(`CREATE OR REPLACE TABLE ${target} (${ddl}) USING DELTA`);\n fixtureTables.add(target);\n const rows = await resolveFixtureRows(fixture, columns);\n for (const row of rows) {\n const placeholders = columns\n .map((c) => (/TIMESTAMP/i.test(c.type) ? 'CAST(? AS TIMESTAMP)' : '?'))\n .join(', ');\n await run(`INSERT INTO ${qual(fixture.table)} VALUES (${placeholders})`, row);\n }\n },\n async close() {\n if (options.cleanupFixtures !== false && env.DBX_TEST_KEEP_FIXTURES !== '1') {\n for (const table of [...fixtureTables].reverse()) {\n await run(`DROP TABLE IF EXISTS ${table}`);\n }\n }\n fixtureTables.clear();\n },\n };\n}\n\n/** Rewrite positional `?` markers to the named `:pN` markers the Statement Execution API requires. */\nexport function toNamedParameters(\n sql: string,\n params: readonly unknown[],\n): { statement: string; parameters: { name: string; value: string | null }[] } {\n let out = '';\n let index = 0;\n let quote: string | null = null;\n for (let i = 0; i < sql.length; i++) {\n const ch = sql[i] as string;\n if (quote) {\n out += ch;\n if (ch === quote) quote = null;\n continue;\n }\n if (ch === \"'\" || ch === '\"' || ch === '`') {\n quote = ch;\n out += ch;\n continue;\n }\n if (ch === '?') {\n index += 1;\n out += `:p${index}`;\n continue;\n }\n out += ch;\n }\n if (index !== params.length) {\n throw new Error(`SQL has ${index} placeholders but ${params.length} params were provided`);\n }\n return {\n statement: out,\n parameters: params.map((value, i) => ({\n name: `p${i + 1}`,\n value: value === null || value === undefined ? null : String(value),\n })),\n };\n}\n\n/** Map a terminal statement response to normalized row objects. */\nexport function parseStatementRows(response: StatementResponse): Record<string, unknown>[] {\n const columns = [...(response.manifest?.schema?.columns ?? [])].sort(\n (a, b) => (a.position ?? 0) - (b.position ?? 0),\n );\n const data = response.result?.data_array ?? [];\n return data.map((tuple) => {\n const row: Record<string, unknown> = {};\n columns.forEach((column, i) => {\n row[column.name] = convertValue(tuple[i] ?? null, column.type_name ?? 'STRING');\n });\n return row;\n });\n}\n\nconst NUMERIC_TYPES = /^(INT|LONG|SHORT|BYTE|FLOAT|DOUBLE|DECIMAL)/i;\n\nfunction convertValue(value: string | null, typeName: string): unknown {\n if (value === null) return null;\n if (NUMERIC_TYPES.test(typeName)) return Number(value);\n if (/^BOOLEAN/i.test(typeName)) return value === 'true';\n return value;\n}\n\nfunction resolveWarehouseId(env: Record<string, string | undefined>): string {\n if (env.DATABRICKS_WAREHOUSE_ID) return env.DATABRICKS_WAREHOUSE_ID;\n const httpPath = env.DATABRICKS_HTTP_PATH;\n const match = httpPath?.match(/\\/warehouses\\/([\\w-]+)/);\n if (match?.[1]) return match[1];\n throw new Error(\n 'Live profile requires DATABRICKS_WAREHOUSE_ID or DATABRICKS_HTTP_PATH (/sql/1.0/warehouses/<id>)',\n );\n}\n\n/**\n * Auth precedence (ADR-0006): DATABRICKS_BEARER (pre-minted, CI) →\n * explicit env/file OIDC federation → DATABRICKS_CLIENT_ID/SECRET (OAuth\n * M2M) → DATABRICKS_TOKEN (legacy PAT).\n */\nexport function createClientFromEnv(\n env: Record<string, string | undefined>,\n fetchImpl?: typeof fetch,\n): WorkspaceClientLike {\n const host = env.DATABRICKS_HOST;\n if (!host) throw new Error('Live profile requires DATABRICKS_HOST');\n return new WorkspaceRestClient({\n host,\n token: resolveTokenProvider(host, env, fetchImpl),\n ...(fetchImpl ? { fetchImpl } : {}),\n });\n}\n\nexport function resolveTokenProvider(\n host: string,\n env: Record<string, string | undefined>,\n fetchImpl: typeof fetch = fetch,\n): string | (() => Promise<string>) {\n if (env.DATABRICKS_BEARER) return env.DATABRICKS_BEARER;\n const authType = env.DATABRICKS_AUTH_TYPE;\n if (authType === 'env-oidc' || authType === 'file-oidc') {\n let cached: { token: string; expiresAt: number } | null = null;\n return async () => {\n if (cached && Date.now() < cached.expiresAt) return cached.token;\n const subjectToken = await resolveFederatedSubjectToken(authType, env);\n const params = new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:token-exchange',\n subject_token: subjectToken,\n subject_token_type: 'urn:ietf:params:oauth:token-type:jwt',\n scope: env.DATABRICKS_SCOPE ?? 'all-apis',\n });\n if (env.DATABRICKS_CLIENT_ID) params.set('client_id', env.DATABRICKS_CLIENT_ID);\n const response = await fetchImpl(`${host.replace(/\\/$/, '')}/oidc/v1/token`, {\n method: 'POST',\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\n body: params.toString(),\n });\n if (!response.ok) {\n throw new Error(`OAuth federated token exchange failed: ${response.status}`);\n }\n const body = (await response.json()) as { access_token?: unknown; expires_in?: unknown };\n if (typeof body.access_token !== 'string' || !body.access_token) {\n throw new Error('OAuth federated token exchange returned no access_token');\n }\n const expiresIn = typeof body.expires_in === 'number' ? body.expires_in : 3600;\n cached = {\n token: body.access_token,\n expiresAt: Date.now() + Math.max(1, expiresIn - 300) * 1000,\n };\n return body.access_token;\n };\n }\n const clientId = env.DATABRICKS_CLIENT_ID;\n const clientSecret = env.DATABRICKS_CLIENT_SECRET;\n if (clientId && clientSecret) {\n let cached: { token: string; expiresAt: number } | null = null;\n return async () => {\n if (cached && Date.now() < cached.expiresAt) return cached.token;\n const response = await fetchImpl(`${host.replace(/\\/$/, '')}/oidc/v1/token`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n authorization: `Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString('base64')}`,\n },\n body: new URLSearchParams({\n grant_type: 'client_credentials',\n scope: env.DATABRICKS_SCOPE ?? 'all-apis',\n }).toString(),\n });\n if (!response.ok) {\n throw new Error(`OAuth M2M token exchange failed: ${response.status}`);\n }\n const body = (await response.json()) as { access_token: string; expires_in?: number };\n cached = {\n token: body.access_token,\n expiresAt: Date.now() + ((body.expires_in ?? 3600) - 300) * 1000,\n };\n return body.access_token;\n };\n }\n if (env.DATABRICKS_TOKEN) return env.DATABRICKS_TOKEN;\n throw new Error(\n 'Live profile requires DATABRICKS_BEARER, env/file OIDC federation, DATABRICKS_CLIENT_ID/SECRET, or DATABRICKS_TOKEN',\n );\n}\n\nasync function resolveFederatedSubjectToken(\n authType: 'env-oidc' | 'file-oidc',\n env: Record<string, string | undefined>,\n): Promise<string> {\n if (authType === 'env-oidc') {\n const tokenEnv = env.DATABRICKS_OIDC_TOKEN_ENV ?? 'DATABRICKS_OIDC_TOKEN';\n const token = env[tokenEnv]?.trim();\n if (!token) throw new Error(`Federated OIDC token environment variable ${tokenEnv} is empty`);\n return token;\n }\n const path = env.DATABRICKS_OIDC_TOKEN_FILEPATH;\n if (!path) throw new Error('DATABRICKS_OIDC_TOKEN_FILEPATH is required for file-oidc');\n const token = (await readFile(path, 'utf8')).trim();\n if (!token) throw new Error(`Federated OIDC token file ${path} is empty`);\n return token;\n}\n","import type { TableFixture } from './fixtures.js';\n\nexport type TestProfile = 'local' | 'live';\n\n/**\n * One SQL surface, two engines (ADR-0006). `local` executes on DuckDB\n * in-process; `live` executes on a Databricks SQL warehouse via the SQL\n * Statement Execution API. Params are positional `?` in both profiles — the\n * workspace context transparently rewrites them to the named markers the\n * Statement Execution API requires.\n */\nexport interface ExecutionContext {\n readonly profile: TestProfile;\n /** Execute a statement, discarding any result. */\n exec(sql: string, params?: readonly unknown[]): Promise<void>;\n /** Execute a query and return normalized row objects (bigint→number, timestamps→ISO). */\n query(sql: string, params?: readonly unknown[]): Promise<Record<string, unknown>[]>;\n /** Create + seed a table from a declarative fixture. */\n loadFixture(fixture: TableFixture): Promise<void>;\n /** Qualify a bare table name for this context (schema/catalog scoping). */\n qual(table: string): string;\n close(): Promise<void>;\n}\n\nexport function resolveProfile(env: Record<string, string | undefined> = process.env): TestProfile {\n const profile = env.DBX_TEST_PROFILE ?? 'local';\n if (profile !== 'local' && profile !== 'live') {\n throw new Error(`DBX_TEST_PROFILE must be 'local' or 'live', got '${profile}'`);\n }\n if (profile === 'live' && env.DBX_TEST_LIVE !== '1') {\n throw new Error(\n 'DBX_TEST_PROFILE=live requires DBX_TEST_LIVE=1 (live suites are always gated)',\n );\n }\n return profile;\n}\n\nexport interface CreateContextOptions {\n profile?: TestProfile;\n env?: Record<string, string | undefined>;\n /** local profile: schema to create + qualify tables with. live profile: schema within the catalog. */\n schema?: string;\n /** Live profile only: observe each submitted SQL statement. */\n onStatement?: (statement: { sql: string; statementId?: string }) => void;\n}\n\n/** Profile-dispatched factory. Lazy-imports each engine so the unused one stays out of the bundle. */\nexport async function createExecutionContext(\n options: CreateContextOptions = {},\n): Promise<ExecutionContext> {\n const env = options.env ?? process.env;\n const profile = options.profile ?? resolveProfile(env);\n if (profile === 'local') {\n const { createDuckDbContext } = await import('./duckdb-context.js');\n return createDuckDbContext({ schema: options.schema });\n }\n const { createWorkspaceContext } = await import('./workspace-context.js');\n return createWorkspaceContext({\n env,\n schema: options.schema,\n ...(options.onStatement ? { onStatement: options.onStatement } : {}),\n });\n}\n","export type { ExecutionContext, TestProfile, CreateContextOptions } from './context.js';\nexport { createExecutionContext, resolveProfile } from './context.js';\nexport type { TableFixture, FixtureColumn } from './fixtures.js';\nexport { parseFixtureColumns, resolveFixtureRows } from './fixtures.js';\nexport type { DuckDbContextOptions, DuckDbConnectionLike } from './duckdb-context.js';\nexport { createDuckDbContext, normalizeRow } from './duckdb-context.js';\nexport type { WorkspaceContextOptions, WorkspaceClientLike } from './workspace-context.js';\nexport {\n createWorkspaceContext,\n createClientFromEnv,\n resolveTokenProvider,\n toNamedParameters,\n parseStatementRows,\n} from './workspace-context.js';\nexport { expectTable, expectQueryToMatchGolden } from './assert.js';\nexport { compareToGolden } from './golden.js';\nexport type { MockDatabricksClient, RecordedCall } from './mock-client.js';\nexport { createMockDatabricksClient } from './mock-client.js';\nexport type {\n LiveCheck,\n LiveCheckContext,\n LiveCheckResult,\n LiveCheckStatus,\n LiveEvidence,\n LiveSuiteRuntime,\n LiveSuiteSpec,\n DefinedLiveSuite,\n TargetPackEvidenceMetadata,\n TargetPackMaturity,\n} from './live-suite.js';\nexport { defineLiveSuite, runLiveSuite, renderJUnit } from './live-suite.js';\nexport type { DeltaColumnContract } from './live-checks.js';\nexport {\n sqlRoundTripCheck,\n restrictedPrincipalCheck,\n assertDeltaContract,\n deltaContractCheck,\n unityCatalogAccessCheck,\n jobRunCheck,\n notebookSubmitCheck,\n dbtBuildCheck,\n pipelineRefreshCheck,\n customLiveCheck,\n} from './live-checks.js';\nexport type { LakebaseCheckOptions } from './lakebase-checks.js';\nexport {\n createLakebaseTestProvider,\n lakebaseCredentialCheck,\n lakebaseRoundTripCheck,\n} from './lakebase-checks.js';\nexport type {\n EphemeralLakebaseBranch,\n LakebaseBranchOptions,\n LakebaseControlClient,\n} from './lakebase-branch.js';\nexport {\n createEphemeralLakebaseBranch,\n deleteEphemeralLakebaseBranch,\n resolveLakebaseProject,\n toLakebaseBranchId,\n} from './lakebase-branch.js';\nexport type { AppHealthCheckOptions } from './platform-checks.js';\nexport { secretScopeCheck, appHealthCheck } from './platform-checks.js';\nexport type { VolumeIOCheckOptions } from './volume-checks.js';\nexport {\n deleteVolumeFile,\n ensureVolumeDirectory,\n normalizeVolumeRoot,\n uploadVolumeFile,\n volumeIOCheck,\n} from './volume-checks.js';\nexport type { AutoLoaderCheckOptions } from './autoloader-checks.js';\nexport { autoLoaderIngestionCheck } from './autoloader-checks.js';\nexport type { PollOptions } from './pollers.js';\nexport { waitForPipelineUpdate } from './pollers.js';\nexport {\n backupRestoreCheck,\n classicComputeCheck,\n failureRecoveryCheck,\n performanceBudgetCheck,\n rollbackCheck,\n secretRotationCheck,\n serverlessComputeCheck,\n} from './resilience-checks.js';\nexport type { SecretRotationCheckOptions } from './resilience-checks.js';\nexport type {\n DefinedTargetPackRun,\n RunTargetPackOptions,\n TargetPack,\n TargetPackDoctorCheck,\n TargetPackDoctorRequirement,\n TargetPackDoctorResult,\n TargetPackRequirement,\n TargetPackSpec,\n} from './target-packs.js';\nexport {\n createTargetPackRegistry,\n defineTargetPack,\n defineTargetPackRun,\n doctorTargetPack,\n runTargetPack,\n} from './target-packs.js';\nexport {\n createAppsOperationalFoundationPack,\n createFoundationTargetPacks,\n createJobsCodeFoundationPack,\n createLakeflowFoundationPack,\n createSqlDeltaFoundationPack,\n createUnityStorageFoundationPack,\n foundationTargetPacks,\n} from './foundation-packs.js';\nexport type {\n ConditionJobTask,\n DatabricksJobTask,\n DbtJobTask,\n ForEachJobTask,\n JobsSubmitRequest,\n JobOrchestrationLiveSpec,\n JobOrchestrationRun,\n JobRepairOptions,\n JobRepairRunState,\n JobTaskBase,\n JobTaskDependency,\n JobTaskRunState,\n JobWaitOptions,\n NotebookJobTask,\n PipelineJobTask,\n PythonWheelJobTask,\n RunJobTask,\n SparkJarJobTask,\n SparkPythonJobTask,\n SparkSubmitJobTask,\n SqlJobTask,\n} from './jobs-orchestration.js';\nexport { jobsCertificationCheck } from './jobs-certification-check.js';\nexport {\n DatabricksJobsAdapter,\n jobsOrchestrationCheck,\n normalizeJobRun,\n parseJobOrchestrationLiveSpec,\n validateJobGraph,\n} from './jobs-orchestration.js';\nexport { createLakeflowJobsTargetPack } from './jobs-target-pack.js';\nexport type {\n DashboardResource,\n GenieSpaceResource,\n PipelineResource,\n RegisteredModelResource,\n ServingEndpointResource,\n VectorSearchEndpointResource,\n VectorSearchIndexResource,\n} from './advanced-workload-checks.js';\nexport type { RegionalDrCheckOptions } from './advanced-workload-checks.js';\nexport {\n DatabricksAdvancedWorkloadsAdapter,\n advancedStreamingCdcCheck,\n aiBiDashboardCheck,\n evalJudgeModelServingCheck,\n featureEngineeringServingCheck,\n federationSharingCleanRoomsCheck,\n genieCheck,\n lakeflowConnectCheck,\n mlflowLifecycleCheck,\n modelServingCheck,\n ragAgentCheck,\n regionalDrCheck,\n securityPostureCostCheck,\n vectorSearchCheck,\n} from './advanced-workload-checks.js';\nexport {\n createAdvancedStreamingTargetPack,\n createAdvancedTargetPacks,\n createAiBiGenieTargetPack,\n createFeatureEngineeringTargetPack,\n createFederationSharingTargetPack,\n createMlflowLifecycleTargetPack,\n createModelServingTargetPack,\n createSecurityCostDrTargetPack,\n createVectorRagAgentsTargetPack,\n} from './advanced-target-packs.js';\nexport { builtinTargetPacks, createBuiltinTargetPacks } from './builtin-packs.js';\nexport { waitForDatabricksRun, waitForDatabricksStatement } from './workspace-client.js';\nexport type { WorkspaceWaitOptions } from './workspace-client.js';\n","/**\n * Golden-result files: committed JSON snapshots of query results that every\n * engine and every refactor must reproduce exactly — the frozen-vector\n * pattern from @fabricorg/experiments-testkit generalized to warehouse rows.\n */\nexport async function compareToGolden(\n goldenPath: string,\n actual: readonly Record<string, unknown>[],\n label: string,\n env: Record<string, string | undefined> = process.env,\n): Promise<void> {\n const fs = await import('node:fs/promises');\n const serialized = `${JSON.stringify(actual, null, 2)}\\n`;\n if (env.DBX_TEST_UPDATE_GOLDEN === '1') {\n const { dirname } = await import('node:path');\n await fs.mkdir(dirname(goldenPath), { recursive: true });\n await fs.writeFile(goldenPath, serialized, 'utf8');\n return;\n }\n let expected: string;\n try {\n expected = await fs.readFile(goldenPath, 'utf8');\n } catch {\n throw new Error(\n `Golden file ${goldenPath} does not exist for ${label}. Run once with DBX_TEST_UPDATE_GOLDEN=1 to create it, then commit it.`,\n );\n }\n if (normalize(expected) !== normalize(serialized)) {\n throw new Error(\n `${label} diverges from golden ${goldenPath}.\\nExpected:\\n${expected}\\nActual:\\n${serialized}\\nIf the change is intentional, re-run with DBX_TEST_UPDATE_GOLDEN=1 and commit the diff.`,\n );\n }\n}\n\nfunction normalize(json: string): string {\n return JSON.stringify(JSON.parse(json));\n}\n","import type { ExecutionContext } from './context.js';\nimport { compareToGolden } from './golden.js';\n\n/**\n * Framework-free table assertions — they throw plain Errors so they work\n * under vitest, cucumber-js steps, or the live check runner alike.\n */\nexport function expectTable(ctx: ExecutionContext, table: string) {\n const target = ctx.qual(table);\n return {\n async toHaveRowCount(expected: number): Promise<void> {\n const rows = await ctx.query(`SELECT COUNT(*) AS n FROM ${target}`);\n const actual = Number(rows[0]?.n ?? Number.NaN);\n if (actual !== expected) {\n throw new Error(`Expected ${target} to have ${expected} rows, found ${actual}`);\n }\n },\n\n /** Every partial row must match at least one table row on its own keys. */\n async toContainRows(partials: readonly Record<string, unknown>[]): Promise<void> {\n const rows = await ctx.query(`SELECT * FROM ${target}`);\n for (const partial of partials) {\n const hit = rows.some((row) =>\n Object.entries(partial).every(([key, value]) => looselyEqual(row[key], value)),\n );\n if (!hit) {\n throw new Error(\n `Expected ${target} to contain a row matching ${JSON.stringify(partial)}; ` +\n `have ${rows.length} rows: ${JSON.stringify(rows.slice(0, 5))}${rows.length > 5 ? ' …' : ''}`,\n );\n }\n }\n },\n\n /**\n * Compare `SELECT * ORDER BY <orderBy>` against a committed golden JSON\n * file. Set DBX_TEST_UPDATE_GOLDEN=1 to (re)write the golden instead —\n * a reviewable, versioned event.\n */\n async toMatchGolden(goldenPath: string, options: { orderBy?: string } = {}): Promise<void> {\n const orderBy = options.orderBy ? ` ORDER BY ${options.orderBy}` : '';\n const rows = await ctx.query(`SELECT * FROM ${target}${orderBy}`);\n await compareToGolden(goldenPath, rows, `table ${target}`);\n },\n };\n}\n\n/** Compare query results (not a whole table) against a golden file. */\nexport async function expectQueryToMatchGolden(\n ctx: ExecutionContext,\n sql: string,\n params: readonly unknown[],\n goldenPath: string,\n): Promise<void> {\n const rows = await ctx.query(sql, params);\n await compareToGolden(goldenPath, rows, 'query');\n}\n\nfunction looselyEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a === 'number' && typeof b === 'number') return Math.abs(a - b) < 1e-9;\n // Timestamps normalize to 'YYYY-MM-DD HH:MM:SS'; allow ISO-style expectations.\n if (typeof a === 'string' && typeof b === 'string') {\n return (\n a.replace('T', ' ').replace(/(\\.\\d+)?Z?$/, '') ===\n b.replace('T', ' ').replace(/(\\.\\d+)?Z?$/, '')\n );\n }\n return false;\n}\n","/**\n * Framework-free fake of the Databricks REST client surface, for unit tests\n * of orchestration logic (submit → poll → terminal). Queue responses per\n * (method, path-prefix); every call is recorded for assertions. Works under\n * vitest without vi.fn so it is equally usable from cucumber-js worlds.\n */\nexport interface RecordedCall {\n method: 'GET' | 'POST' | 'DELETE';\n path: string;\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined>;\n}\n\nexport interface MockDatabricksClient {\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: unknown,\n ): Promise<T>;\n request<T>(\n method: 'GET' | 'POST' | 'DELETE',\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: unknown,\n ): Promise<T>;\n /** Queue the next response for calls whose path starts with `pathPrefix`. FIFO per prefix. */\n queue(\n method: 'GET' | 'POST' | 'DELETE',\n pathPrefix: string,\n response: unknown,\n ): MockDatabricksClient;\n /** Queue an error for the next matching call. */\n queueError(\n method: 'GET' | 'POST' | 'DELETE',\n pathPrefix: string,\n error: Error,\n ): MockDatabricksClient;\n readonly calls: readonly RecordedCall[];\n callsTo(method: 'GET' | 'POST' | 'DELETE', pathPrefix: string): RecordedCall[];\n}\n\ntype Queued = { pathPrefix: string; response?: unknown; error?: Error };\n\nexport function createMockDatabricksClient(): MockDatabricksClient {\n const queues: Record<'GET' | 'POST' | 'DELETE', Queued[]> = { GET: [], POST: [], DELETE: [] };\n const calls: RecordedCall[] = [];\n\n function take(method: 'GET' | 'POST' | 'DELETE', path: string): Queued {\n const index = queues[method].findIndex((q) => path.startsWith(q.pathPrefix));\n if (index === -1) {\n throw new Error(\n `MockDatabricksClient: no queued ${method} response for ${path}. ` +\n `Queued prefixes: ${queues[method].map((q) => q.pathPrefix).join(', ') || '(none)'}`,\n );\n }\n return queues[method].splice(index, 1)[0] as Queued;\n }\n\n const client: MockDatabricksClient = {\n async get<T>(path: string, query?: Record<string, string | number | boolean | undefined>) {\n calls.push({ method: 'GET', path, query });\n const queued = take('GET', path);\n if (queued.error) throw queued.error;\n return queued.response as T;\n },\n async post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ) {\n calls.push({ method: 'POST', path, body, query });\n const queued = take('POST', path);\n if (queued.error) throw queued.error;\n return queued.response as T;\n },\n async request<T>(\n method: 'GET' | 'POST' | 'DELETE',\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ) {\n calls.push({ method, path, body, query });\n const queued = take(method, path);\n if (queued.error) throw queued.error;\n return queued.response as T;\n },\n queue(method, pathPrefix, response) {\n queues[method].push({ pathPrefix, response });\n return client;\n },\n queueError(method, pathPrefix, error) {\n queues[method].push({ pathPrefix, error });\n return client;\n },\n calls,\n callsTo(method, pathPrefix) {\n return calls.filter((c) => c.method === method && c.path.startsWith(pathPrefix));\n },\n };\n return client;\n}\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport type { ExecutionContext } from './context.js';\nimport {\n type WorkspaceClientLike,\n createClientFromEnv,\n createWorkspaceContext,\n} from './workspace-context.js';\n\nexport type LiveCheckStatus = 'pass' | 'fail' | 'not-configured';\n\nexport interface LiveCheckContext {\n env: Record<string, string | undefined>;\n warehouse: ExecutionContext;\n client: WorkspaceClientLike;\n}\n\nexport interface LiveCheck {\n id: string;\n description: string;\n configured?: (env: Record<string, string | undefined>) => boolean;\n run(context: LiveCheckContext): Promise<unknown>;\n}\n\nexport interface LiveCheckResult {\n id: string;\n description: string;\n status: LiveCheckStatus;\n durationMs: number;\n details?: unknown;\n error?: string;\n}\n\nexport type TargetPackMaturity =\n | 'proposed'\n | 'building'\n | 'shipped'\n | 'live-gated'\n | 'certifying'\n | 'certified';\n\nexport interface TargetPackEvidenceMetadata {\n id: string;\n name: string;\n version: string;\n maturity: TargetPackMaturity;\n capabilities: string[];\n docsUrl?: string;\n certificationScopes: string[];\n target: {\n cloud?: string;\n region?: string;\n workspace?: string;\n runtime?: string;\n compute?: string;\n };\n}\n\nexport interface LiveEvidence {\n schemaVersion: 1;\n kind: 'databricks-live-suite';\n startedAt: string;\n finishedAt: string;\n success: boolean;\n required: string[];\n results: LiveCheckResult[];\n targetPack?: TargetPackEvidenceMetadata;\n}\n\nexport interface LiveSuiteSpec {\n checks: readonly LiveCheck[];\n required?: readonly string[];\n evidencePath?: string;\n junitPath?: string;\n env?: Record<string, string | undefined>;\n targetPack?: TargetPackEvidenceMetadata;\n}\n\nexport interface LiveSuiteRuntime {\n warehouse?: ExecutionContext;\n client?: WorkspaceClientLike;\n}\n\nexport interface DefinedLiveSuite {\n run(runtime?: LiveSuiteRuntime): Promise<LiveEvidence | undefined>;\n}\n\n/**\n * Define an explicitly gated live suite. Without DBX_TEST_LIVE=1, run() is a\n * silent no-op so the same command is safe in ordinary CI matrices.\n */\nexport function defineLiveSuite(spec: LiveSuiteSpec): DefinedLiveSuite {\n return { run: (runtime) => runLiveSuite(spec, runtime) };\n}\n\nexport async function runLiveSuite(\n spec: LiveSuiteSpec,\n runtime: LiveSuiteRuntime = {},\n): Promise<LiveEvidence | undefined> {\n const env = spec.env ?? process.env;\n if (env.DBX_TEST_LIVE !== '1') return undefined;\n\n const required = [...(spec.required ?? [])];\n const known = new Set(spec.checks.map((check) => check.id));\n for (const id of required) {\n if (!known.has(id)) throw new Error(`Required live check '${id}' is not defined`);\n }\n\n const startedAt = new Date().toISOString();\n const ownedWarehouse = runtime.warehouse === undefined;\n const client = runtime.client ?? createClientFromEnv(env);\n const warehouse =\n runtime.warehouse ??\n (hasWarehouseConfig(env)\n ? await createWorkspaceContext({ env, client })\n : unavailableWarehouseContext());\n const results: LiveCheckResult[] = [];\n\n try {\n for (const check of spec.checks) {\n if (check.configured && !check.configured(env)) {\n results.push({\n id: check.id,\n description: check.description,\n status: 'not-configured',\n durationMs: 0,\n });\n continue;\n }\n const before = performance.now();\n try {\n const details = await check.run({ env, warehouse, client });\n results.push({\n id: check.id,\n description: check.description,\n status: 'pass',\n durationMs: Math.round(performance.now() - before),\n ...(details === undefined ? {} : { details: redactValue(details, env) }),\n });\n } catch (error) {\n results.push({\n id: check.id,\n description: check.description,\n status: 'fail',\n durationMs: Math.round(performance.now() - before),\n error: redactText(error instanceof Error ? error.message : String(error), env),\n });\n }\n }\n } finally {\n if (ownedWarehouse) await warehouse.close();\n }\n\n const success = required.every(\n (id) => results.find((result) => result.id === id)?.status === 'pass',\n );\n const evidence: LiveEvidence = {\n schemaVersion: 1,\n kind: 'databricks-live-suite',\n startedAt,\n finishedAt: new Date().toISOString(),\n success,\n required,\n results,\n ...(spec.targetPack ? { targetPack: spec.targetPack } : {}),\n };\n\n if (spec.evidencePath)\n await writeReport(spec.evidencePath, `${JSON.stringify(evidence, null, 2)}\\n`);\n if (spec.junitPath) await writeReport(spec.junitPath, renderJUnit(evidence));\n return evidence;\n}\n\nfunction hasWarehouseConfig(env: Record<string, string | undefined>): boolean {\n return Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH);\n}\n\nfunction unavailableWarehouseContext(): ExecutionContext {\n const unavailable = async (): Promise<never> => {\n throw new Error(\n 'This live check requires DATABRICKS_WAREHOUSE_ID or DATABRICKS_HTTP_PATH; REST-only checks can run without SQL warehouse configuration',\n );\n };\n return {\n profile: 'live',\n qual: (table) => table,\n exec: unavailable,\n query: unavailable,\n loadFixture: unavailable,\n close: async () => undefined,\n };\n}\n\nasync function writeReport(path: string, contents: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, contents, 'utf8');\n}\n\nfunction redactText(text: string, env: Record<string, string | undefined>): string {\n let output = text;\n for (const [name, value] of Object.entries(env)) {\n if (!value || value.length < 6 || !/(TOKEN|SECRET|PASSWORD|BEARER|KEY)/i.test(name)) continue;\n output = output.split(value).join('[REDACTED]');\n }\n return output;\n}\n\nfunction redactValue(value: unknown, env: Record<string, string | undefined>): unknown {\n return JSON.parse(redactText(JSON.stringify(value), env)) as unknown;\n}\n\nfunction xml(value: string): string {\n return value\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&apos;');\n}\n\nexport function renderJUnit(evidence: LiveEvidence): string {\n const failures = evidence.results.filter((result) => result.status === 'fail').length;\n const skipped = evidence.results.filter((result) => result.status === 'not-configured').length;\n const seconds = evidence.results.reduce((sum, result) => sum + result.durationMs, 0) / 1000;\n const cases = evidence.results\n .map((result) => {\n const body =\n result.status === 'fail'\n ? `<failure message=\"${xml(result.error ?? 'check failed')}\"/>`\n : result.status === 'not-configured'\n ? '<skipped message=\"not configured\"/>'\n : '';\n return ` <testcase classname=\"databricks-live\" name=\"${xml(result.id)}\" time=\"${result.durationMs / 1000}\">${body}</testcase>`;\n })\n .join('\\n');\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<testsuite name=\"databricks-live\" tests=\"${evidence.results.length}\" failures=\"${failures}\" skipped=\"${skipped}\" time=\"${seconds}\">\\n${cases}\\n</testsuite>\\n`;\n}\n","import type { WorkspaceClientLike } from './workspace-context.js';\n\nexport interface PollOptions {\n pollIntervalMs?: number;\n timeoutMs?: number;\n signal?: AbortSignal;\n}\n\nconst TERMINAL_PIPELINE_STATES = new Set(['COMPLETED', 'FAILED', 'CANCELED']);\n\nexport async function waitForPipelineUpdate(\n client: WorkspaceClientLike,\n pipelineId: string,\n updateId: string,\n options: PollOptions = {},\n): Promise<Record<string, unknown>> {\n const deadline = Date.now() + (options.timeoutMs ?? 900_000);\n const interval = options.pollIntervalMs ?? 10_000;\n const path = `/api/2.0/pipelines/${encodeURIComponent(pipelineId)}/updates/${encodeURIComponent(updateId)}`;\n let update: { update?: { state?: string } } = await client.get(path);\n while (!TERMINAL_PIPELINE_STATES.has(update.update?.state ?? '') && Date.now() < deadline) {\n if (options.signal?.aborted) throw new Error(`Pipeline update ${updateId} was aborted`);\n await abortableDelay(interval, options.signal);\n update = await client.get(path);\n }\n const state = update.update?.state ?? 'UNKNOWN';\n if (state !== 'COMPLETED') {\n throw new Error(`Pipeline update ${updateId} ended in ${state} (wanted COMPLETED)`);\n }\n return update as Record<string, unknown>;\n}\n\nfunction abortableDelay(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error('Polling aborted'));\n return;\n }\n const timer = setTimeout(resolve, ms);\n signal?.addEventListener(\n 'abort',\n () => {\n clearTimeout(timer);\n reject(new Error('Polling aborted'));\n },\n { once: true },\n );\n });\n}\n","import type { LiveCheck } from './live-suite.js';\nimport { waitForPipelineUpdate } from './pollers.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\n\nexport function sqlRoundTripCheck(): LiveCheck {\n return {\n id: 'sql',\n description: 'SQL Statement Execution round-trip',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n const rows = await warehouse.query('SELECT 1 AS dbx_test_ok');\n if (Number(rows[0]?.dbx_test_ok) !== 1)\n throw new Error('SQL round-trip returned an unexpected value');\n return { rows: rows.length };\n },\n };\n}\n\n/** Fail closed if governance checks accidentally run with bootstrap or administrator credentials. */\nexport function restrictedPrincipalCheck(): LiveCheck {\n return {\n id: 'restricted-principal',\n description: 'Live checks use the designated least-privilege service principal',\n configured: (env) => Boolean(env.DBX_TEST_RESTRICTED_PRINCIPAL_ID),\n async run({ env }) {\n const expected = env.DBX_TEST_RESTRICTED_PRINCIPAL_ID?.toLowerCase();\n const actual = env.DATABRICKS_CLIENT_ID?.toLowerCase();\n if (!expected || !actual) {\n throw new Error(\n 'Restricted-principal check requires DBX_TEST_RESTRICTED_PRINCIPAL_ID and DATABRICKS_CLIENT_ID',\n );\n }\n if (actual !== expected) {\n throw new Error(`Live suite is using principal '${actual}', expected '${expected}'`);\n }\n return { principalId: actual };\n },\n };\n}\n\nexport interface DeltaColumnContract {\n name: string;\n type?: string;\n}\n\nexport function assertDeltaContract(\n table: string,\n rows: readonly Record<string, unknown>[],\n columns: readonly DeltaColumnContract[],\n): void {\n for (const expected of columns) {\n const actual = rows.find((row) => String(row.col_name ?? row.column_name) === expected.name);\n if (!actual) throw new Error(`Delta contract missing column '${expected.name}' in ${table}`);\n const actualType = String(actual.data_type ?? actual.column_type ?? '').toLowerCase();\n if (expected.type && actualType !== expected.type.toLowerCase()) {\n throw new Error(\n `Delta column ${expected.name} has type ${actualType}, expected ${expected.type}`,\n );\n }\n }\n}\n\nexport function deltaContractCheck(\n tableEnv = 'DBX_TEST_DELTA_TABLE',\n columns: readonly DeltaColumnContract[] = [],\n): LiveCheck {\n return {\n id: 'delta-contract',\n description: 'Delta table schema contract',\n configured: (env) => Boolean(env[tableEnv]),\n async run({ env, warehouse }) {\n const table = env[tableEnv] as string;\n const rows = await warehouse.query(`DESCRIBE TABLE ${table}`);\n assertDeltaContract(table, rows, columns);\n return { table, columns: rows.length };\n },\n };\n}\n\nexport function unityCatalogAccessCheck(): LiveCheck {\n return {\n id: 'uc-grants',\n description: 'Unity Catalog allow/deny access assertions',\n configured: (env) => Boolean(env.DBX_TEST_UC_ALLOWED_TABLE && env.DBX_TEST_UC_DENIED_TABLE),\n async run({ env, warehouse }) {\n await warehouse.query(`SELECT * FROM ${env.DBX_TEST_UC_ALLOWED_TABLE} LIMIT 1`);\n try {\n await warehouse.query(`SELECT * FROM ${env.DBX_TEST_UC_DENIED_TABLE} LIMIT 1`);\n } catch (error) {\n if (/permission.?denied|insufficient.?priv|403|unauthoriz/i.test(String(error))) {\n return { allowed: env.DBX_TEST_UC_ALLOWED_TABLE, denied: env.DBX_TEST_UC_DENIED_TABLE };\n }\n throw error;\n }\n throw new Error(`Expected access to ${env.DBX_TEST_UC_DENIED_TABLE} to be denied`);\n },\n };\n}\n\nexport function jobRunCheck(): LiveCheck {\n return {\n id: 'jobs',\n description: 'Databricks Job run-now reaches SUCCESS',\n configured: (env) => Boolean(env.DBX_TEST_JOB_ID),\n async run({ env, client }) {\n const jobId = Number(env.DBX_TEST_JOB_ID);\n if (!Number.isFinite(jobId)) throw new Error('DBX_TEST_JOB_ID must be numeric');\n const submitted = await client.post<{ run_id: number }>('/api/2.1/jobs/run-now', {\n job_id: jobId,\n });\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') throw new Error(`Job ${jobId} ended in ${result ?? 'UNKNOWN'}`);\n return { jobId, runId: submitted.run_id };\n },\n };\n}\n\n/** Trigger the deployed Lakeflow pipeline and require a completed update. */\nexport function pipelineRefreshCheck(): LiveCheck {\n return {\n id: 'pipeline',\n description: 'Lakeflow telemetry pipeline refresh reaches COMPLETED',\n configured: (env) => Boolean(env.DBX_TEST_PIPELINE_ID),\n async run({ env, client }) {\n const pipelineId = env.DBX_TEST_PIPELINE_ID as string;\n const submitted = await client.post<{ update_id?: string }>(\n `/api/2.0/pipelines/${encodeURIComponent(pipelineId)}/updates`,\n { full_refresh: false },\n );\n if (!submitted.update_id) {\n throw new Error(`Pipeline ${pipelineId} did not return an update_id`);\n }\n await waitForPipelineUpdate(client, pipelineId, submitted.update_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n return { pipelineId, updateId: submitted.update_id };\n },\n };\n}\n\nexport function notebookSubmitCheck(): LiveCheck {\n return {\n id: 'notebook',\n description: 'Databricks notebook submit run reaches SUCCESS',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_NOTEBOOK_PATH &&\n (env.DBX_TEST_CLUSTER_ID || env.DBX_TEST_NOTEBOOK_SERVERLESS === '1'),\n ),\n async run({ env, client }) {\n if (\n !env.DBX_TEST_NOTEBOOK_PATH ||\n (!env.DBX_TEST_CLUSTER_ID && env.DBX_TEST_NOTEBOOK_SERVERLESS !== '1')\n ) {\n throw new Error(\n 'Notebook submit requires DBX_TEST_NOTEBOOK_PATH and either DBX_TEST_CLUSTER_ID or DBX_TEST_NOTEBOOK_SERVERLESS=1',\n );\n }\n const submitted = await client.post<{ run_id?: number }>('/api/2.1/jobs/runs/submit', {\n run_name: `fabric-experiments-notebook-${Date.now()}`,\n tasks: [\n {\n task_key: 'notebook',\n ...(env.DBX_TEST_CLUSTER_ID ? { existing_cluster_id: env.DBX_TEST_CLUSTER_ID } : {}),\n notebook_task: { notebook_path: env.DBX_TEST_NOTEBOOK_PATH },\n },\n ],\n });\n if (!submitted.run_id) throw new Error('Notebook submit returned no run_id');\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') throw new Error(`Notebook run ended in ${result ?? 'UNKNOWN'}`);\n return { runId: submitted.run_id, notebookPath: env.DBX_TEST_NOTEBOOK_PATH };\n },\n };\n}\n\nexport function dbtBuildCheck(): LiveCheck {\n return {\n id: 'dbt',\n description: 'Databricks dbt task reaches SUCCESS',\n configured: (env) =>\n Boolean(\n (env.DBX_TEST_DBT_GIT_URL || env.DBX_TEST_DBT_PROJECT_DIR) && env.DATABRICKS_WAREHOUSE_ID,\n ),\n async run({ env, client }) {\n if (\n (!env.DBX_TEST_DBT_GIT_URL && !env.DBX_TEST_DBT_PROJECT_DIR) ||\n !env.DATABRICKS_WAREHOUSE_ID\n ) {\n throw new Error(\n 'dbt build requires DBX_TEST_DBT_GIT_URL or DBX_TEST_DBT_PROJECT_DIR, plus DATABRICKS_WAREHOUSE_ID',\n );\n }\n const sourceVars = JSON.stringify({\n source_catalog: env.DBX_TEST_DBT_SOURCE_CATALOG ?? env.DBX_TEST_CATALOG,\n source_schema: env.DBX_TEST_DBT_SOURCE_SCHEMA,\n });\n const serverless = env.DBX_TEST_DBT_SERVERLESS === '1';\n const request = {\n run_name: `fabric-experiments-dbt-${Date.now()}`,\n ...(env.DBX_TEST_DBT_GIT_URL\n ? {\n git_source: {\n git_url: env.DBX_TEST_DBT_GIT_URL,\n git_provider: env.DBX_TEST_DBT_GIT_PROVIDER ?? 'gitHub',\n git_branch: env.DBX_TEST_DBT_GIT_BRANCH ?? 'main',\n },\n }\n : {}),\n tasks: [\n {\n task_key: 'dbt_build',\n ...(serverless ? { environment_key: 'dbt' } : {}),\n dbt_task: {\n commands: ['dbt deps', `dbt build --vars '${sourceVars}'`],\n warehouse_id: env.DATABRICKS_WAREHOUSE_ID,\n ...(env.DBX_TEST_CATALOG ? { catalog: env.DBX_TEST_CATALOG } : {}),\n ...(env.DBX_TEST_SCHEMA ? { schema: env.DBX_TEST_SCHEMA } : {}),\n ...(env.DBX_TEST_DBT_GIT_URL ? {} : { source: 'WORKSPACE' }),\n ...(env.DBX_TEST_DBT_PROJECT_DIR\n ? { project_directory: env.DBX_TEST_DBT_PROJECT_DIR }\n : {}),\n },\n },\n ],\n ...(serverless\n ? {\n environments: [\n {\n environment_key: 'dbt',\n spec: {\n environment_version: '2',\n dependencies: ['dbt-databricks>=1.8,<2'],\n },\n },\n ],\n }\n : {}),\n };\n const submitted = await client.post<{ run_id?: number }>(\n '/api/2.1/jobs/runs/submit',\n request,\n );\n if (!submitted.run_id) throw new Error('dbt submit returned no run_id');\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') throw new Error(`dbt run ended in ${result ?? 'UNKNOWN'}`);\n return {\n runId: submitted.run_id,\n source: env.DBX_TEST_DBT_GIT_URL ?? env.DBX_TEST_DBT_PROJECT_DIR,\n };\n },\n };\n}\n\n/** Wrap product-specific checks such as Auto Loader, Lakebase, notebooks, or dbt. */\nexport function customLiveCheck(\n id: string,\n description: string,\n run: LiveCheck['run'],\n configured?: LiveCheck['configured'],\n): LiveCheck {\n return { id, description, run, ...(configured ? { configured } : {}) };\n}\n","import {\n LakebaseDatabaseProvider,\n type LakebasePoolFactory,\n exchangeLakebaseCredential,\n} from '@fabricorg/experiments-db-pool';\nimport type { LiveCheck } from './live-suite.js';\nimport { resolveTokenProvider } from './workspace-context.js';\n\nexport interface LakebaseCheckOptions {\n fetchImpl?: typeof fetch;\n poolFactory?: LakebasePoolFactory;\n}\n\nfunction required(env: Record<string, string | undefined>, name: string): string {\n const value = env[name]?.trim();\n if (!value) throw new Error(`${name} is required`);\n return value;\n}\n\nexport function createLakebaseTestProvider(\n env: Record<string, string | undefined>,\n options: LakebaseCheckOptions = {},\n): LakebaseDatabaseProvider {\n return new LakebaseDatabaseProvider({\n host: required(env, 'DBX_TEST_LAKEBASE_HOST'),\n database: required(env, 'DBX_TEST_LAKEBASE_DATABASE'),\n user: required(env, 'DBX_TEST_LAKEBASE_USER'),\n workspaceHost: required(env, 'DATABRICKS_HOST'),\n endpoint: required(env, 'DBX_TEST_LAKEBASE_ENDPOINT'),\n token: resolveTokenProvider(required(env, 'DATABRICKS_HOST'), env, options.fetchImpl),\n fetchImpl: options.fetchImpl,\n poolFactory: options.poolFactory,\n max: 1,\n });\n}\n\nasync function workspaceToken(\n env: Record<string, string | undefined>,\n fetchImpl?: typeof fetch,\n): Promise<string> {\n const host = required(env, 'DATABRICKS_HOST');\n const provider = resolveTokenProvider(host, env, fetchImpl);\n return typeof provider === 'string' ? provider : provider();\n}\n\n/** Verify the workspace identity can exchange a short-lived Lakebase credential. */\nexport function lakebaseCredentialCheck(options: LakebaseCheckOptions = {}): LiveCheck {\n return {\n id: 'lakebase-credential',\n description: 'Lakebase OAuth credential exchange',\n configured: (env) => Boolean(env.DBX_TEST_LAKEBASE_ENDPOINT),\n async run({ env }) {\n const credential = await exchangeLakebaseCredential({\n workspaceHost: required(env, 'DATABRICKS_HOST'),\n endpoint: required(env, 'DBX_TEST_LAKEBASE_ENDPOINT'),\n workspaceToken: await workspaceToken(env, options.fetchImpl),\n fetchImpl: options.fetchImpl,\n });\n if (credential.expiresAt <= Date.now()) {\n throw new Error('Lakebase credential is already expired');\n }\n return { expiresAt: new Date(credential.expiresAt).toISOString() };\n },\n };\n}\n\n/** Exercise the production provider before and after an explicit credential/pool refresh. */\nexport function lakebaseRoundTripCheck(options: LakebaseCheckOptions = {}): LiveCheck {\n return {\n id: 'lakebase',\n description: 'Lakebase provider query and credential refresh round-trip',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_LAKEBASE_ENDPOINT &&\n env.DBX_TEST_LAKEBASE_HOST &&\n env.DBX_TEST_LAKEBASE_DATABASE &&\n env.DBX_TEST_LAKEBASE_USER,\n ),\n async run({ env }) {\n const provider = createLakebaseTestProvider(env, options);\n try {\n const first = await provider\n .getPool()\n .query<{ dbx_test_ok: number }>('SELECT 1 AS dbx_test_ok');\n if (Number(first.rows[0]?.dbx_test_ok) !== 1) {\n throw new Error('Lakebase round-trip returned an unexpected value');\n }\n await provider.refreshCredentials();\n const second = await provider\n .getPool()\n .query<{ dbx_test_ok: number }>('SELECT 1 AS dbx_test_ok');\n if (Number(second.rows[0]?.dbx_test_ok) !== 1) {\n throw new Error('Lakebase post-refresh round-trip returned an unexpected value');\n }\n return { queries: 2, refreshed: true };\n } finally {\n await provider.close();\n }\n },\n };\n}\n","import { createClientFromEnv } from './workspace-context.js';\n\nexport interface LakebaseControlClient {\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ): Promise<T>;\n request<T>(\n method: 'DELETE',\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ): Promise<T>;\n}\n\nexport interface EphemeralLakebaseBranch {\n project: string;\n branch: string;\n branchId: string;\n endpoint: string;\n host: string;\n databaseResource: string;\n database: string;\n createdAt: string;\n expiresAt: string;\n}\n\nexport interface LakebaseBranchOptions {\n env?: Record<string, string | undefined>;\n client?: LakebaseControlClient;\n project?: string;\n branchId: string;\n ttlMs: number;\n pollIntervalMs?: number;\n timeoutMs?: number;\n now?: () => Date;\n}\n\ninterface Operation<T = unknown> {\n name?: string;\n done?: boolean;\n error?: { code?: number; message?: string };\n response?: T;\n}\n\ninterface Branch {\n name: string;\n branch_id?: string;\n create_time?: string;\n status?: { current_state?: string };\n}\n\ninterface Endpoint {\n name: string;\n endpoint_id?: string;\n status?: { hosts?: { host?: string }; current_state?: string };\n}\n\ninterface Database {\n name: string;\n status?: { postgres_database?: string };\n}\n\nconst DEFAULT_POLL_INTERVAL_MS = 2_000;\nconst DEFAULT_TIMEOUT_MS = 5 * 60_000;\n\nexport function resolveLakebaseProject(\n env: Record<string, string | undefined>,\n explicit?: string,\n): string {\n const project = explicit ?? env.DBX_TEST_LAKEBASE_PROJECT;\n if (!project || !/^projects\\/[a-z0-9][a-z0-9-]{0,62}$/.test(project)) {\n throw new Error(\n `Lakebase project must look like projects/fabric-experiments; got '${project ?? ''}'`,\n );\n }\n return project;\n}\n\nexport function toLakebaseBranchId(environmentName: string): string {\n const normalized = environmentName\n .toLowerCase()\n .replace(/[^a-z0-9-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n const prefixed = normalized.startsWith('fx-') ? normalized : `fx-${normalized}`;\n const trimmed = prefixed.slice(0, 63).replace(/-+$/g, '');\n if (!/^fx-[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(trimmed)) {\n throw new Error(`Cannot derive a safe Lakebase branch ID from '${environmentName}'`);\n }\n return trimmed;\n}\n\nexport async function createEphemeralLakebaseBranch(\n options: LakebaseBranchOptions,\n): Promise<EphemeralLakebaseBranch> {\n const env = options.env ?? process.env;\n const client = options.client ?? (createClientFromEnv(env) as LakebaseControlClient);\n const project = resolveLakebaseProject(env, options.project);\n const branchId = toLakebaseBranchId(options.branchId);\n const ttlSeconds = Math.max(60, Math.ceil(options.ttlMs / 1_000));\n const operation = await client.post<Operation<Branch>>(\n `/api/2.0/postgres/${project}/branches`,\n { spec: { ttl: `${ttlSeconds}s` } },\n { branch_id: branchId, replace_existing: false },\n );\n const branch = await waitForOperation(client, operation, options);\n const branchName = branch?.name ?? `${project}/branches/${branchId}`;\n const [endpointResult, databaseResult] = await Promise.all([\n client.get<{ endpoints?: Endpoint[] }>(`/api/2.0/postgres/${branchName}/endpoints`),\n client.get<{ databases?: Database[] }>(`/api/2.0/postgres/${branchName}/databases`),\n ]);\n const endpoint =\n endpointResult.endpoints?.find((item) => item.endpoint_id === 'primary') ??\n endpointResult.endpoints?.[0];\n const database = databaseResult.databases?.[0];\n const host = endpoint?.status?.hosts?.host;\n const postgresDatabase = database?.status?.postgres_database;\n if (!endpoint?.name || !host || !database?.name || !postgresDatabase) {\n throw new Error(`Lakebase branch '${branchName}' did not expose an endpoint and database`);\n }\n const createdAt = branch?.create_time ?? (options.now?.() ?? new Date()).toISOString();\n return {\n project,\n branch: branchName,\n branchId,\n endpoint: endpoint.name,\n host,\n databaseResource: database.name,\n database: postgresDatabase,\n createdAt,\n expiresAt: new Date(Date.parse(createdAt) + ttlSeconds * 1_000).toISOString(),\n };\n}\n\nexport async function deleteEphemeralLakebaseBranch(\n branch: Pick<EphemeralLakebaseBranch, 'branch'>,\n options: Omit<LakebaseBranchOptions, 'branchId' | 'ttlMs' | 'project'> = {},\n): Promise<void> {\n if (!/^projects\\/[a-z0-9-]+\\/branches\\/fx-[a-z0-9-]+$/.test(branch.branch)) {\n throw new Error(`Refusing to delete non-ephemeral Lakebase branch '${branch.branch}'`);\n }\n const env = options.env ?? process.env;\n const client = options.client ?? (createClientFromEnv(env) as LakebaseControlClient);\n const operation = await client.request<Operation>(\n 'DELETE',\n `/api/2.0/postgres/${branch.branch}`,\n undefined,\n { purge: true },\n );\n await waitForOperation(client, operation, options);\n}\n\nasync function waitForOperation<T>(\n client: LakebaseControlClient,\n initial: Operation<T>,\n options: Pick<LakebaseBranchOptions, 'pollIntervalMs' | 'timeoutMs'>,\n): Promise<T | undefined> {\n let operation = initial;\n const deadline = Date.now() + (options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n while (!operation.done) {\n if (!operation.name) throw new Error('Lakebase operation did not return an operation name');\n if (Date.now() >= deadline) throw new Error(`Lakebase operation '${operation.name}' timed out`);\n await delay(options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);\n operation = await client.get<Operation<T>>(`/api/2.0/postgres/${operation.name}`);\n }\n if (operation.error) {\n throw new Error(\n `Lakebase operation failed${operation.error.code ? ` (${operation.error.code})` : ''}: ${\n operation.error.message ?? 'unknown error'\n }`,\n );\n }\n return operation.response;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { resolveTokenProvider } from './workspace-context.js';\n\nexport async function databricksFetch(\n env: Record<string, string | undefined>,\n pathOrUrl: string,\n init: RequestInit = {},\n fetchImpl: typeof fetch = fetch,\n): Promise<Response> {\n const host = env.DATABRICKS_HOST?.replace(/\\/$/, '');\n if (!host) throw new Error('DATABRICKS_HOST is required');\n const provider = resolveTokenProvider(host, env, fetchImpl);\n const token = typeof provider === 'string' ? provider : await provider();\n const headers = new Headers(init.headers);\n headers.set('authorization', `Bearer ${token}`);\n const response = await fetchImpl(\n /^https?:\\/\\//.test(pathOrUrl) ? pathOrUrl : `${host}${pathOrUrl}`,\n {\n ...init,\n headers,\n },\n );\n if (!response.ok) {\n const body = await response.text();\n throw new Error(\n `Databricks request failed: ${response.status} ${response.statusText}: ${body.slice(0, 500)}`,\n );\n }\n return response;\n}\n","import { databricksFetch } from './databricks-http.js';\nimport type { LiveCheck } from './live-suite.js';\n\nfunction csv(value: string | undefined): string[] {\n return (value ?? '')\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n}\n\n/** Assert secret key metadata only; values are never requested. */\nexport function secretScopeCheck(): LiveCheck {\n return {\n id: 'secrets',\n description: 'Databricks secret scope contains expected keys',\n configured: (env) => Boolean(env.DBX_TEST_SECRET_SCOPE && env.DBX_TEST_SECRET_KEYS),\n async run({ env, client }) {\n const scope = env.DBX_TEST_SECRET_SCOPE as string;\n const expected = csv(env.DBX_TEST_SECRET_KEYS);\n const response = await client.get<{ secrets?: { key?: string }[] }>('/api/2.0/secrets/list', {\n scope,\n });\n const actual = new Set((response.secrets ?? []).map((secret) => secret.key).filter(Boolean));\n const missing = expected.filter((key) => !actual.has(key));\n if (missing.length > 0) {\n throw new Error(`Secret scope ${scope} is missing keys: ${missing.join(', ')}`);\n }\n return { scope, expectedKeys: expected.length };\n },\n };\n}\n\nexport interface AppHealthCheckOptions {\n fetchImpl?: typeof fetch;\n}\n\n/** Verify app state, resource bindings, and the gateway-authenticated application health route. */\nexport function appHealthCheck(options: AppHealthCheckOptions = {}): LiveCheck {\n return {\n id: 'app',\n description: 'Databricks App is running, bound, and healthy',\n configured: (env) => Boolean(env.DBX_TEST_APP_NAME),\n async run({ env, client }) {\n const name = env.DBX_TEST_APP_NAME as string;\n const app = await client.get<{\n app_status?: { state?: string };\n resources?: { name?: string }[];\n url?: string;\n app_url?: string;\n }>(`/api/2.0/apps/${encodeURIComponent(name)}`);\n if (app.app_status?.state !== 'RUNNING') {\n throw new Error(`Databricks App ${name} is ${app.app_status?.state ?? 'UNKNOWN'}`);\n }\n const expected = csv(env.DBX_TEST_APP_RESOURCES);\n const actual = new Set(\n (app.resources ?? []).map((resource) => resource.name).filter(Boolean),\n );\n const missing = expected.filter((resource) => !actual.has(resource));\n if (missing.length > 0) {\n throw new Error(\n `Databricks App ${name} is missing resource bindings: ${missing.join(', ')}`,\n );\n }\n const appUrl = env.DBX_TEST_APP_URL ?? app.url ?? app.app_url;\n if (!appUrl) throw new Error(`Databricks App ${name} returned no URL`);\n const healthUrl = new URL('/api/healthz', appUrl).toString();\n const response = await databricksFetch(env, healthUrl, {}, options.fetchImpl);\n const health = (await response.json()) as { ok?: boolean; status?: string };\n if (health.ok !== true && health.status !== 'ok') {\n throw new Error(`Databricks App ${name} health probe did not report ok`);\n }\n return { name, bindings: actual.size, health: 'ok' };\n },\n };\n}\n","import { randomUUID } from 'node:crypto';\nimport { databricksFetch } from './databricks-http.js';\nimport type { LiveCheck } from './live-suite.js';\n\nexport interface VolumeIOCheckOptions {\n fetchImpl?: typeof fetch;\n randomId?: () => string;\n}\n\nexport function normalizeVolumeRoot(value: string): string {\n const normalized = value.replace(/\\/$/, '');\n if (!/^\\/Volumes\\/[^/]+\\/[^/]+\\/[^/]+$/.test(normalized)) {\n throw new Error('DBX_TEST_VOLUME must be /Volumes/<catalog>/<schema>/<volume>');\n }\n return normalized;\n}\n\nexport async function ensureVolumeDirectory(\n env: Record<string, string | undefined>,\n directory: string,\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await databricksFetch(env, `/api/2.0/fs/directories${directory}`, { method: 'PUT' }, fetchImpl);\n}\n\nexport async function uploadVolumeFile(\n env: Record<string, string | undefined>,\n path: string,\n body: BodyInit | Uint8Array,\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await databricksFetch(\n env,\n `/api/2.0/fs/files${path}`,\n { method: 'PUT', body: body as BodyInit },\n fetchImpl,\n );\n}\n\nexport async function deleteVolumeFile(\n env: Record<string, string | undefined>,\n path: string,\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await databricksFetch(env, `/api/2.0/fs/files${path}`, { method: 'DELETE' }, fetchImpl);\n}\n\n/** Upload, download, and delete a small probe through the Databricks Files API. */\nexport function volumeIOCheck(options: VolumeIOCheckOptions = {}): LiveCheck {\n return {\n id: 'volume-io',\n description: 'Unity Catalog volume Files API round-trip',\n configured: (env) => Boolean(env.DBX_TEST_VOLUME),\n async run({ env }) {\n const root = normalizeVolumeRoot(env.DBX_TEST_VOLUME as string);\n const prefix = (env.DBX_TEST_ENV_NAME ?? 'fx-live').replace(/[^A-Za-z0-9_.-]/g, '_');\n const id = (options.randomId ?? randomUUID)();\n const directory = `${root}/${prefix}`;\n const file = `${directory}/probe-${id}.txt`;\n const filePath = `/api/2.0/fs/files${file}`;\n const body = new TextEncoder().encode(`fabric-experiments-volume-probe:${id}`);\n await ensureVolumeDirectory(env, directory, options.fetchImpl);\n try {\n await uploadVolumeFile(env, file, body, options.fetchImpl);\n const downloaded = await databricksFetch(env, filePath, {}, options.fetchImpl);\n const actual = new Uint8Array(await downloaded.arrayBuffer());\n if (actual.length !== body.length || actual.some((value, index) => value !== body[index])) {\n throw new Error('Volume round-trip returned different bytes');\n }\n return { volume: root, bytes: body.length };\n } finally {\n await deleteVolumeFile(env, file, options.fetchImpl).catch(() => undefined);\n }\n },\n };\n}\n","import { randomUUID } from 'node:crypto';\nimport { readFile } from 'node:fs/promises';\nimport { basename, resolve } from 'node:path';\nimport type { LiveCheck } from './live-suite.js';\nimport { waitForPipelineUpdate } from './pollers.js';\nimport {\n deleteVolumeFile,\n ensureVolumeDirectory,\n normalizeVolumeRoot,\n uploadVolumeFile,\n} from './volume-checks.js';\n\nexport interface AutoLoaderCheckOptions {\n fetchImpl?: typeof fetch;\n fixtureBody?: Uint8Array;\n randomId?: () => string;\n}\n\n/** Exercise Files API -> isolated Lakeflow pipeline -> Delta output. */\nexport function autoLoaderIngestionCheck(options: AutoLoaderCheckOptions = {}): LiveCheck {\n return {\n id: 'autoloader',\n description: 'Isolated Auto Loader fixture ingestion reaches Delta without rescued rows',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_AUTOLOADER_PIPELINE_ID &&\n env.DBX_TEST_AUTOLOADER_TABLE &&\n env.DBX_TEST_AUTOLOADER_FIXTURE &&\n env.DBX_TEST_VOLUME,\n ),\n async run({ env, client, warehouse }) {\n const pipelineId = env.DBX_TEST_AUTOLOADER_PIPELINE_ID as string;\n if (pipelineId === env.DBX_TEST_PIPELINE_ID) {\n throw new Error('DBX_TEST_AUTOLOADER_PIPELINE_ID must not be the production pipeline');\n }\n const root = normalizeVolumeRoot(env.DBX_TEST_VOLUME as string);\n const fixturePath = env.DBX_TEST_AUTOLOADER_FIXTURE as string;\n const body = options.fixtureBody ?? new Uint8Array(await readFile(resolve(fixturePath)));\n const id = (options.randomId ?? randomUUID)();\n const runName = (env.DBX_TEST_ENV_NAME ?? 'autoloader').replace(/[^A-Za-z0-9_.-]/g, '_');\n const directory = `${root}/exposures/${runName}/${id}`;\n const destination = `${directory}/${basename(fixturePath)}`;\n await ensureVolumeDirectory(env, directory, options.fetchImpl);\n try {\n await uploadVolumeFile(env, destination, body, options.fetchImpl);\n const submitted = await client.post<{ update_id?: string }>(\n `/api/2.0/pipelines/${encodeURIComponent(pipelineId)}/updates`,\n { full_refresh: true },\n );\n if (!submitted.update_id) throw new Error('Auto Loader pipeline returned no update_id');\n await waitForPipelineUpdate(client, pipelineId, submitted.update_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const table = env.DBX_TEST_AUTOLOADER_TABLE as string;\n const rows = await warehouse.query(\n `SELECT COUNT(*) AS n, SUM(CASE WHEN _rescued_data IS NOT NULL THEN 1 ELSE 0 END) AS rescued FROM ${table}`,\n );\n const count = Number(rows[0]?.n ?? 0);\n const rescued = Number(rows[0]?.rescued ?? 0);\n if (count < 1) throw new Error(`Auto Loader produced no rows in ${table}`);\n if (rescued !== 0)\n throw new Error(`Auto Loader produced ${rescued} rescued rows in ${table}`);\n return { pipelineId, table, rows: count, rescued };\n } finally {\n await deleteVolumeFile(env, destination, options.fetchImpl).catch(() => undefined);\n }\n },\n };\n}\n","import { randomBytes, randomUUID } from 'node:crypto';\nimport type { LiveCheck } from './live-suite.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\n\nfunction safeName(prefix: string): string {\n return `${prefix}_${randomUUID().replaceAll('-', '_')}`;\n}\n\n/** Measure the real Statement Execution path and fail when its p95 exceeds the declared budget. */\nexport function performanceBudgetCheck(): LiveCheck {\n return {\n id: 'performance',\n description: 'SQL Statement Execution p95 stays within the configured latency budget',\n configured: (env) => Boolean(env.DBX_TEST_PERFORMANCE_P95_MS),\n async run({ env, warehouse }) {\n const budgetMs = Number(env.DBX_TEST_PERFORMANCE_P95_MS);\n const runs = Number(env.DBX_TEST_PERFORMANCE_RUNS ?? 7);\n if (!Number.isFinite(budgetMs) || budgetMs <= 0) {\n throw new Error('DBX_TEST_PERFORMANCE_P95_MS must be a positive number');\n }\n if (!Number.isInteger(runs) || runs < 3 || runs > 100) {\n throw new Error('DBX_TEST_PERFORMANCE_RUNS must be an integer from 3 to 100');\n }\n await warehouse.query('SELECT 1 AS warmup');\n const durations: number[] = [];\n for (let index = 0; index < runs; index += 1) {\n const started = performance.now();\n await warehouse.query('SELECT 1 AS performance_probe');\n durations.push(performance.now() - started);\n }\n durations.sort((left, right) => left - right);\n const p95 = durations[Math.ceil(durations.length * 0.95) - 1] ?? 0;\n if (p95 > budgetMs) {\n throw new Error(`SQL p95 ${Math.round(p95)}ms exceeded ${budgetMs}ms budget`);\n }\n return {\n runs,\n p50Ms: Math.round(durations[Math.floor(durations.length * 0.5)] ?? 0),\n p95Ms: Math.round(p95),\n budgetMs,\n };\n },\n };\n}\n\n/** Prove a failed statement does not poison the session or the next workload. */\nexport function failureRecoveryCheck(): LiveCheck {\n return {\n id: 'failure-recovery',\n description: 'A failed statement is isolated and a subsequent statement recovers',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n let failedAsExpected = false;\n try {\n await warehouse.query('SELECT * FROM __fabric_experiments_expected_missing_table__');\n } catch {\n failedAsExpected = true;\n }\n if (!failedAsExpected) throw new Error('Injected failure unexpectedly succeeded');\n const rows = await warehouse.query('SELECT 1 AS recovered');\n if (Number(rows[0]?.recovered) !== 1) {\n throw new Error('Statement execution did not recover after the injected failure');\n }\n return { injectedFailure: true, recovered: true };\n },\n };\n}\n\n/** Rotate a disposable secret key and remove it. Values are never returned or written to evidence. */\nexport interface SecretRotationCheckOptions {\n randomId?: () => string;\n}\n\nexport function secretRotationCheck(options: SecretRotationCheckOptions = {}): LiveCheck {\n return {\n id: 'secret-rotation',\n description: 'Databricks secret put, overwrite, metadata verification, and cleanup',\n configured: (env) => Boolean(env.DBX_TEST_ROTATION_SECRET_SCOPE),\n async run({ env, client }) {\n const scope = env.DBX_TEST_ROTATION_SECRET_SCOPE as string;\n const key = options.randomId?.() ?? safeName('fx_rotation_probe');\n const put = async (value: string) =>\n client.post('/api/2.0/secrets/put', { scope, key, string_value: value });\n try {\n await put(randomBytes(32).toString('base64url'));\n await put(randomBytes(32).toString('base64url'));\n const listed = await client.get<{ secrets?: { key?: string }[] }>('/api/2.0/secrets/list', {\n scope,\n });\n if (!(listed.secrets ?? []).some((secret) => secret.key === key)) {\n throw new Error(`Rotated secret metadata was not visible in scope ${scope}`);\n }\n return { scope, rotated: true, cleanedUp: true };\n } finally {\n await client.post('/api/2.0/secrets/delete', { scope, key }).catch(() => undefined);\n }\n },\n };\n}\n\n/** Exercise a complete Delta backup, destructive loss, and restore cycle in the scratch schema. */\nexport function backupRestoreCheck(): LiveCheck {\n return {\n id: 'backup-restore',\n description: 'Delta DEEP CLONE backup restores a dropped scratch table',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n const source = warehouse.qual(safeName('backup_source'));\n const backup = warehouse.qual(safeName('backup_clone'));\n try {\n await warehouse.exec(`CREATE TABLE ${source} USING DELTA AS SELECT 7 AS value`);\n await warehouse.exec(`CREATE TABLE ${backup} DEEP CLONE ${source}`);\n await warehouse.exec(`DROP TABLE ${source}`);\n await warehouse.exec(`CREATE TABLE ${source} DEEP CLONE ${backup}`);\n const rows = await warehouse.query(`SELECT value FROM ${source}`);\n if (Number(rows[0]?.value) !== 7) throw new Error('Restored Delta table lost its data');\n return { restoredRows: rows.length, deepClone: true };\n } finally {\n await warehouse.exec(`DROP TABLE IF EXISTS ${source}`).catch(() => undefined);\n await warehouse.exec(`DROP TABLE IF EXISTS ${backup}`).catch(() => undefined);\n }\n },\n };\n}\n\n/** Prove Delta time-travel rollback returns a corrupted scratch table to its known-good version. */\nexport function rollbackCheck(): LiveCheck {\n return {\n id: 'rollback',\n description: 'Delta time-travel rollback restores a known-good table version',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n const table = warehouse.qual(safeName('rollback_probe'));\n try {\n await warehouse.exec(`CREATE TABLE ${table} (value INT) USING DELTA`);\n await warehouse.exec(`INSERT INTO ${table} VALUES (1)`);\n const history = await warehouse.query(`DESCRIBE HISTORY ${table} LIMIT 1`);\n const knownGoodVersion = Number(history[0]?.version);\n if (!Number.isInteger(knownGoodVersion)) {\n throw new Error('Delta history did not return a known-good version');\n }\n await warehouse.exec(`INSERT INTO ${table} VALUES (999)`);\n await warehouse.exec(`RESTORE TABLE ${table} TO VERSION AS OF ${knownGoodVersion}`);\n const rows = await warehouse.query(`SELECT value FROM ${table} ORDER BY value`);\n if (rows.length !== 1 || Number(rows[0]?.value) !== 1) {\n throw new Error('Delta rollback did not restore the known-good contents');\n }\n return { knownGoodVersion, restoredRows: rows.length };\n } finally {\n await warehouse.exec(`DROP TABLE IF EXISTS ${table}`).catch(() => undefined);\n }\n },\n };\n}\n\n/** Certify that the configured SQL warehouse is serverless and usable by the test identity. */\nexport function serverlessComputeCheck(): LiveCheck {\n return {\n id: 'azure-serverless',\n description: 'Azure Databricks serverless SQL warehouse is enabled and executes SQL',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID),\n async run({ env, client, warehouse }) {\n const id = env.DATABRICKS_WAREHOUSE_ID as string;\n const details = await client.get<{\n enable_serverless_compute?: boolean;\n state?: string;\n name?: string;\n }>(`/api/2.0/sql/warehouses/${encodeURIComponent(id)}`);\n if (details.enable_serverless_compute !== true) {\n throw new Error(`SQL warehouse ${id} is not configured for serverless compute`);\n }\n const rows = await warehouse.query('SELECT current_catalog() AS catalog');\n return { warehouseId: id, name: details.name, state: details.state, rows: rows.length };\n },\n };\n}\n\n/** Launch a disposable classic job cluster and require the shared notebook probe to succeed. */\nexport function classicComputeCheck(): LiveCheck {\n return {\n id: 'azure-classic',\n description: 'Azure Databricks classic job cluster starts and completes a notebook workload',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_CLASSIC_SPARK_VERSION &&\n env.DBX_TEST_CLASSIC_NODE_TYPE &&\n env.DBX_TEST_NOTEBOOK_PATH,\n ),\n async run({ env, client }) {\n const numWorkers = Number(env.DBX_TEST_CLASSIC_WORKERS ?? 1);\n const alternateNodeTypes = (env.DBX_TEST_CLASSIC_ALTERNATE_NODE_TYPES ?? '')\n .split(',')\n .map((value) => value.trim())\n .filter(Boolean);\n const singleNode = numWorkers === 0;\n const submitted = await client.post<{ run_id?: number }>('/api/2.1/jobs/runs/submit', {\n run_name: `fabric-experiments-classic-certification-${Date.now()}`,\n tasks: [\n {\n task_key: 'classic_notebook',\n new_cluster: {\n spark_version: env.DBX_TEST_CLASSIC_SPARK_VERSION,\n node_type_id: env.DBX_TEST_CLASSIC_NODE_TYPE,\n num_workers: numWorkers,\n data_security_mode: env.DBX_TEST_CLASSIC_SECURITY_MODE ?? 'SINGLE_USER',\n ...(env.DBX_TEST_CLASSIC_SINGLE_USER_NAME\n ? { single_user_name: env.DBX_TEST_CLASSIC_SINGLE_USER_NAME }\n : {}),\n ...(singleNode\n ? {\n spark_conf: {\n 'spark.databricks.cluster.profile': 'singleNode',\n 'spark.master': 'local[*]',\n },\n custom_tags: { ResourceClass: 'SingleNode' },\n }\n : {}),\n ...(alternateNodeTypes.length\n ? {\n worker_node_type_flexibility: {\n alternate_node_type_ids: alternateNodeTypes,\n },\n driver_node_type_flexibility: {\n alternate_node_type_ids: alternateNodeTypes,\n },\n }\n : {}),\n },\n notebook_task: { notebook_path: env.DBX_TEST_NOTEBOOK_PATH },\n },\n ],\n });\n if (!submitted.run_id) throw new Error('Classic compute submit returned no run_id');\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_CLASSIC_TIMEOUT_MS ?? 1_800_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 15_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') {\n const message = (run as { state?: { state_message?: string } }).state?.state_message;\n throw new Error(\n `Classic compute run ${submitted.run_id} ended in ${result ?? 'UNKNOWN'}${message ? `: ${message}` : ''}`,\n );\n }\n return {\n runId: submitted.run_id,\n sparkVersion: env.DBX_TEST_CLASSIC_SPARK_VERSION,\n nodeType: env.DBX_TEST_CLASSIC_NODE_TYPE,\n };\n },\n };\n}\n","import type {\n DefinedLiveSuite,\n LiveCheck,\n LiveEvidence,\n LiveSuiteRuntime,\n TargetPackEvidenceMetadata,\n TargetPackMaturity,\n} from './live-suite.js';\nimport { defineLiveSuite } from './live-suite.js';\n\nexport interface TargetPackRequirement {\n id: string;\n description: string;\n /** At least one named environment variable must be present. */\n anyOf: readonly string[];\n required?: boolean;\n secret?: boolean;\n}\n\nexport interface TargetPackSpec {\n id: string;\n name: string;\n description: string;\n version: string;\n maturity: TargetPackMaturity;\n capabilities: readonly string[];\n checks: readonly LiveCheck[] | (() => readonly LiveCheck[]);\n requiredChecks?: readonly string[];\n requirements?: readonly TargetPackRequirement[];\n docsUrl?: string;\n certificationScopes?: readonly string[];\n}\n\nexport interface TargetPack extends Omit<TargetPackSpec, 'checks'> {\n checks(): readonly LiveCheck[];\n}\n\nexport interface TargetPackDoctorRequirement {\n id: string;\n description: string;\n satisfied: boolean;\n required: boolean;\n variables: string[];\n}\n\nexport interface TargetPackDoctorCheck {\n id: string;\n description: string;\n configured: boolean;\n required: boolean;\n}\n\nexport interface TargetPackDoctorResult {\n pack: Pick<TargetPack, 'id' | 'name' | 'version' | 'maturity'>;\n ready: boolean;\n requirements: TargetPackDoctorRequirement[];\n checks: TargetPackDoctorCheck[];\n missingRequirements: string[];\n missingRequiredChecks: string[];\n}\n\nexport interface RunTargetPackOptions {\n env?: Record<string, string | undefined>;\n requiredChecks?: readonly string[];\n evidencePath?: string;\n junitPath?: string;\n}\n\nexport interface DefinedTargetPackRun {\n pack: TargetPack;\n run(runtime?: LiveSuiteRuntime): Promise<LiveEvidence | undefined>;\n}\n\nconst TARGET_PACK_ID = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;\n\nexport function defineTargetPack(spec: TargetPackSpec): TargetPack {\n if (!TARGET_PACK_ID.test(spec.id)) {\n throw new Error(`Target pack id '${spec.id}' must be lowercase kebab-case`);\n }\n if (!spec.name.trim()) throw new Error(`Target pack '${spec.id}' requires a name`);\n if (!/^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$/.test(spec.version)) {\n throw new Error(\n `Target pack '${spec.id}' version '${spec.version}' is not semantic versioning`,\n );\n }\n if (spec.capabilities.length === 0) {\n throw new Error(`Target pack '${spec.id}' must declare at least one capability`);\n }\n\n const createChecks: () => readonly LiveCheck[] =\n typeof spec.checks === 'function' ? spec.checks : () => spec.checks as readonly LiveCheck[];\n const validateChecks = (): readonly LiveCheck[] => {\n const checks = [...createChecks()];\n const ids = new Set<string>();\n for (const check of checks) {\n if (!check.id.trim())\n throw new Error(`Target pack '${spec.id}' contains a check without an id`);\n if (ids.has(check.id)) {\n throw new Error(`Target pack '${spec.id}' contains duplicate check '${check.id}'`);\n }\n ids.add(check.id);\n }\n for (const required of spec.requiredChecks ?? []) {\n if (!ids.has(required)) {\n throw new Error(`Target pack '${spec.id}' requires unknown check '${required}'`);\n }\n }\n return checks;\n };\n validateChecks();\n\n return Object.freeze({\n ...spec,\n capabilities: Object.freeze([...spec.capabilities]),\n requiredChecks: Object.freeze([...(spec.requiredChecks ?? [])]),\n requirements: Object.freeze([...(spec.requirements ?? [])]),\n certificationScopes: Object.freeze([...(spec.certificationScopes ?? [])]),\n checks: validateChecks,\n });\n}\n\nexport function createTargetPackRegistry(\n packs: readonly TargetPack[],\n): ReadonlyMap<string, TargetPack> {\n const registry = new Map<string, TargetPack>();\n for (const pack of packs) {\n if (registry.has(pack.id)) throw new Error(`Duplicate target pack '${pack.id}'`);\n registry.set(pack.id, pack);\n }\n return registry;\n}\n\nexport function doctorTargetPack(\n pack: TargetPack,\n env: Record<string, string | undefined> = process.env,\n requiredChecks: readonly string[] = pack.requiredChecks ?? [],\n): TargetPackDoctorResult {\n const requirements = (pack.requirements ?? []).map((requirement) => ({\n id: requirement.id,\n description: requirement.description,\n satisfied: requirement.anyOf.some((name) => Boolean(env[name]?.trim())),\n required: requirement.required !== false,\n variables: [...requirement.anyOf],\n }));\n const required = new Set(requiredChecks);\n const checks = pack.checks().map((check) => ({\n id: check.id,\n description: check.description,\n configured: check.configured ? check.configured(env) : true,\n required: required.has(check.id),\n }));\n const known = new Set(checks.map((check) => check.id));\n const missingRequirements = requirements\n .filter((requirement) => requirement.required && !requirement.satisfied)\n .map((requirement) => requirement.id);\n const missingRequiredChecks = [\n ...checks.filter((check) => check.required && !check.configured).map((check) => check.id),\n ...[...required].filter((id) => !known.has(id)),\n ];\n return {\n pack: {\n id: pack.id,\n name: pack.name,\n version: pack.version,\n maturity: pack.maturity,\n },\n ready: missingRequirements.length === 0 && missingRequiredChecks.length === 0,\n requirements,\n checks,\n missingRequirements,\n missingRequiredChecks,\n };\n}\n\nexport function defineTargetPackRun(\n pack: TargetPack,\n options: RunTargetPackOptions = {},\n): DefinedTargetPackRun {\n const env = options.env ?? process.env;\n const requiredChecks = [...(options.requiredChecks ?? pack.requiredChecks ?? [])];\n const doctor = doctorTargetPack(pack, env, requiredChecks);\n if (!doctor.ready) {\n const missing = [...doctor.missingRequirements, ...doctor.missingRequiredChecks].join(', ');\n throw new Error(`Target pack '${pack.id}' is not configured: ${missing}`);\n }\n const targetPack = evidenceMetadata(pack, env);\n const suite: DefinedLiveSuite = defineLiveSuite({\n checks: pack.checks(),\n required: requiredChecks,\n env,\n evidencePath: options.evidencePath,\n junitPath: options.junitPath,\n targetPack,\n });\n return { pack, run: (runtime) => suite.run(runtime) };\n}\n\nexport async function runTargetPack(\n pack: TargetPack,\n options: RunTargetPackOptions = {},\n runtime?: LiveSuiteRuntime,\n): Promise<LiveEvidence | undefined> {\n return defineTargetPackRun(pack, options).run(runtime);\n}\n\nfunction evidenceMetadata(\n pack: TargetPack,\n env: Record<string, string | undefined>,\n): TargetPackEvidenceMetadata {\n return {\n id: pack.id,\n name: pack.name,\n version: pack.version,\n maturity: pack.maturity,\n capabilities: [...pack.capabilities],\n ...(pack.docsUrl ? { docsUrl: pack.docsUrl } : {}),\n certificationScopes: [...(pack.certificationScopes ?? [])],\n target: compact({\n cloud: env.DBX_TEST_CLOUD,\n region: env.DBX_TEST_REGION,\n workspace: env.DATABRICKS_HOST,\n runtime: env.DBX_TEST_RUNTIME_VERSION,\n compute: env.DBX_TEST_COMPUTE,\n }),\n };\n}\n\nfunction compact<T extends Record<string, string | undefined>>(\n value: T,\n): {\n [K in keyof T]?: string;\n} {\n return Object.fromEntries(\n Object.entries(value).filter((entry): entry is [string, string] => Boolean(entry[1])),\n ) as { [K in keyof T]?: string };\n}\n","import { autoLoaderIngestionCheck } from './autoloader-checks.js';\nimport { lakebaseCredentialCheck, lakebaseRoundTripCheck } from './lakebase-checks.js';\nimport {\n dbtBuildCheck,\n deltaContractCheck,\n jobRunCheck,\n notebookSubmitCheck,\n pipelineRefreshCheck,\n restrictedPrincipalCheck,\n sqlRoundTripCheck,\n unityCatalogAccessCheck,\n} from './live-checks.js';\nimport { appHealthCheck, secretScopeCheck } from './platform-checks.js';\nimport {\n backupRestoreCheck,\n classicComputeCheck,\n failureRecoveryCheck,\n performanceBudgetCheck,\n rollbackCheck,\n secretRotationCheck,\n serverlessComputeCheck,\n} from './resilience-checks.js';\nimport { type TargetPack, defineTargetPack } from './target-packs.js';\nimport { volumeIOCheck } from './volume-checks.js';\n\nconst DOCS = 'https://experiments.fabric.pro/docs/testing/target-packs/';\nconst AZURE_SCOPE = 'Azure Databricks live-gated; see certification evidence for exact runtime';\n\nconst workspaceRequirement = {\n id: 'workspace',\n description: 'Databricks workspace host',\n anyOf: ['DATABRICKS_HOST'],\n} as const;\n\nconst authRequirement = {\n id: 'authentication',\n description: 'Databricks OAuth, OIDC, bearer, or PAT authentication',\n anyOf: [\n 'DATABRICKS_BEARER',\n 'DATABRICKS_TOKEN',\n 'DATABRICKS_CLIENT_ID',\n 'DATABRICKS_OIDC_TOKEN',\n 'DATABRICKS_OIDC_TOKEN_FILEPATH',\n ],\n secret: true,\n} as const;\n\nconst warehouseRequirement = {\n id: 'warehouse',\n description: 'SQL warehouse ID or HTTP path',\n anyOf: ['DATABRICKS_WAREHOUSE_ID', 'DATABRICKS_HTTP_PATH'],\n} as const;\n\nexport function createSqlDeltaFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'sql-delta',\n name: 'SQL and Delta foundation',\n description:\n 'SQL Statement Execution, Delta contracts, performance, recovery, backup and rollback.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'sql.statement-execution',\n 'delta.contract',\n 'delta.time-travel',\n 'performance.sql',\n 'recovery.sql',\n 'backup-restore.delta',\n 'rollback.delta',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n sqlRoundTripCheck(),\n deltaContractCheck(),\n serverlessComputeCheck(),\n performanceBudgetCheck(),\n failureRecoveryCheck(),\n backupRestoreCheck(),\n rollbackCheck(),\n ],\n requiredChecks: ['sql'],\n requirements: [workspaceRequirement, authRequirement, warehouseRequirement],\n docsUrl: `${DOCS}#sql-and-delta-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createLakeflowFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'lakeflow-ingestion',\n name: 'Lakeflow ingestion foundation',\n description: 'Lakeflow refresh, Volumes, Auto Loader ingestion and rescued-row evidence.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'lakeflow.refresh',\n 'autoloader.ingestion',\n 'volumes.files',\n 'delta.rescued-data',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n pipelineRefreshCheck(),\n volumeIOCheck(),\n autoLoaderIngestionCheck(),\n ],\n requiredChecks: ['pipeline'],\n requirements: [workspaceRequirement, authRequirement],\n docsUrl: `${DOCS}#lakeflow-ingestion-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createJobsCodeFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'jobs-code',\n name: 'Jobs and code foundation',\n description: 'Jobs, notebooks, dbt, serverless compute and classic compute probes.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'jobs.run-now',\n 'jobs.submit.notebook',\n 'jobs.submit.dbt',\n 'compute.serverless',\n 'compute.classic',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n jobRunCheck(),\n notebookSubmitCheck(),\n dbtBuildCheck(),\n serverlessComputeCheck(),\n classicComputeCheck(),\n ],\n requiredChecks: ['jobs'],\n requirements: [workspaceRequirement, authRequirement],\n docsUrl: `${DOCS}#jobs-and-code-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createUnityStorageFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'unity-storage',\n name: 'Unity Catalog and storage foundation',\n description: 'Unity Catalog allow/deny, Volumes, secret metadata and secret rotation.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'unity-catalog.permissions',\n 'volumes.files',\n 'secrets.metadata',\n 'secrets.rotation',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n unityCatalogAccessCheck(),\n volumeIOCheck(),\n secretScopeCheck(),\n secretRotationCheck(),\n ],\n requiredChecks: ['uc-grants'],\n requirements: [workspaceRequirement, authRequirement, warehouseRequirement],\n docsUrl: `${DOCS}#unity-catalog-and-storage-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createAppsOperationalFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'apps-operational',\n name: 'Apps and operational data foundation',\n description: 'Databricks Apps resources and health plus Lakebase OAuth and pool refresh.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'apps.health',\n 'apps.resources',\n 'lakebase.credentials',\n 'lakebase.round-trip',\n 'lakebase.pool-refresh',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n appHealthCheck(),\n lakebaseCredentialCheck(),\n lakebaseRoundTripCheck(),\n ],\n requiredChecks: ['app'],\n requirements: [workspaceRequirement, authRequirement],\n docsUrl: `${DOCS}#apps-and-operational-data-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createFoundationTargetPacks(): readonly TargetPack[] {\n return [\n createSqlDeltaFoundationPack(),\n createLakeflowFoundationPack(),\n createJobsCodeFoundationPack(),\n createUnityStorageFoundationPack(),\n createAppsOperationalFoundationPack(),\n ];\n}\n\nexport const foundationTargetPacks = createFoundationTargetPacks();\n","import type { LiveCheck } from './live-suite.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\nimport type { WorkspaceClientLike } from './workspace-context.js';\n\nexport interface JobTaskDependency {\n task_key: string;\n outcome?: string;\n}\n\nexport interface JobTaskBase {\n task_key: string;\n depends_on?: JobTaskDependency[];\n run_if?:\n | 'ALL_SUCCESS'\n | 'AT_LEAST_ONE_SUCCESS'\n | 'NONE_FAILED'\n | 'ALL_DONE'\n | 'AT_LEAST_ONE_FAILED'\n | 'ALL_FAILED';\n timeout_seconds?: number;\n max_retries?: number;\n min_retry_interval_millis?: number;\n retry_on_timeout?: boolean;\n existing_cluster_id?: string;\n job_cluster_key?: string;\n environment_key?: string;\n}\n\nexport interface NotebookJobTask extends JobTaskBase {\n notebook_task: {\n notebook_path: string;\n base_parameters?: Record<string, string>;\n source?: 'WORKSPACE' | 'GIT';\n };\n}\n\nexport interface PythonWheelJobTask extends JobTaskBase {\n python_wheel_task: {\n package_name: string;\n entry_point: string;\n parameters?: string[];\n named_parameters?: Record<string, string>;\n };\n}\n\nexport interface SparkJarJobTask extends JobTaskBase {\n spark_jar_task: { main_class_name: string; parameters?: string[] };\n}\n\nexport interface SparkPythonJobTask extends JobTaskBase {\n spark_python_task: { python_file: string; parameters?: string[]; source?: 'WORKSPACE' | 'GIT' };\n}\n\nexport interface SparkSubmitJobTask extends JobTaskBase {\n spark_submit_task: { parameters: string[] };\n}\n\nexport interface PipelineJobTask extends JobTaskBase {\n pipeline_task: { pipeline_id: string; full_refresh?: boolean };\n}\n\nexport interface SqlJobTask extends JobTaskBase {\n sql_task: Record<string, unknown> & { warehouse_id: string };\n}\n\nexport interface DbtJobTask extends JobTaskBase {\n dbt_task: Record<string, unknown> & { commands: string[] };\n}\n\nexport interface RunJobTask extends JobTaskBase {\n run_job_task: { job_id: number; job_parameters?: Record<string, string> };\n}\n\nexport interface ConditionJobTask extends JobTaskBase {\n condition_task: {\n left: string;\n op:\n | 'EQUAL_TO'\n | 'NOT_EQUAL'\n | 'GREATER_THAN'\n | 'GREATER_THAN_OR_EQUAL'\n | 'LESS_THAN'\n | 'LESS_THAN_OR_EQUAL';\n right: string;\n };\n}\n\nexport interface ForEachJobTask extends JobTaskBase {\n for_each_task: {\n inputs: string;\n concurrency?: number;\n task: Exclude<DatabricksJobTask, ForEachJobTask>;\n };\n}\n\nexport type DatabricksJobTask =\n | NotebookJobTask\n | PythonWheelJobTask\n | SparkJarJobTask\n | SparkPythonJobTask\n | SparkSubmitJobTask\n | PipelineJobTask\n | SqlJobTask\n | DbtJobTask\n | RunJobTask\n | ConditionJobTask\n | ForEachJobTask;\n\nexport interface JobsSubmitRequest {\n run_name: string;\n tasks: DatabricksJobTask[];\n parameters?: Array<{ name: string; default: string }>;\n job_clusters?: Array<Record<string, unknown> & { job_cluster_key: string }>;\n environments?: Array<Record<string, unknown> & { environment_key: string }>;\n git_source?: Record<string, unknown>;\n timeout_seconds?: number;\n idempotency_token?: string;\n}\n\nexport interface JobTaskRunState {\n taskKey: string;\n runId?: number;\n lifeCycleState: string;\n resultState: string;\n stateMessage?: string;\n attemptNumber?: number;\n}\n\nexport interface JobOrchestrationRun {\n runId: number;\n lifeCycleState: string;\n resultState: string;\n tasks: JobTaskRunState[];\n repairs: JobRepairRunState[];\n raw: Record<string, unknown>;\n}\n\nexport interface JobRepairRunState {\n repairId: number;\n type: string;\n lifeCycleState: string;\n resultState: string;\n taskRunIds: number[];\n}\n\nexport interface JobWaitOptions {\n timeoutMs?: number;\n pollIntervalMs?: number;\n}\n\nexport interface JobRepairOptions {\n rerunTasks?: string[];\n latestRepairId?: number;\n rerunDependentTasks?: boolean;\n}\n\nexport interface JobOrchestrationLiveSpec {\n request: JobsSubmitRequest;\n expectedResult?: string;\n expectedTasks?: Record<string, string>;\n repairFailedTasks?: boolean;\n cancellation?: {\n request: JobsSubmitRequest;\n expectedResult?: string;\n };\n}\n\nexport class DatabricksJobsAdapter {\n constructor(private readonly client: WorkspaceClientLike) {}\n\n async submit(request: JobsSubmitRequest): Promise<number> {\n validateJobGraph(request.tasks);\n const response = await this.client.post<{ run_id?: number }>(\n '/api/2.1/jobs/runs/submit',\n request,\n );\n if (!response.run_id) throw new Error('Databricks Jobs submit returned no run_id');\n return response.run_id;\n }\n\n async get(runId: number): Promise<JobOrchestrationRun> {\n const raw = await this.client.get<Record<string, unknown>>('/api/2.1/jobs/runs/get', {\n run_id: runId,\n include_history: true,\n include_resolved_values: true,\n });\n return normalizeJobRun(runId, raw);\n }\n\n async wait(runId: number, options: JobWaitOptions = {}): Promise<JobOrchestrationRun> {\n const raw = (await waitForDatabricksRun(this.client as never, runId, {\n timeoutMs: options.timeoutMs,\n pollIntervalMs: options.pollIntervalMs,\n })) as Record<string, unknown>;\n return normalizeJobRun(runId, raw);\n }\n\n async cancel(runId: number): Promise<void> {\n await this.client.post('/api/2.1/jobs/runs/cancel', { run_id: runId });\n }\n\n async waitUntilActive(runId: number, options: JobWaitOptions = {}): Promise<JobOrchestrationRun> {\n const timeoutMs = options.timeoutMs ?? 300_000;\n const pollIntervalMs = options.pollIntervalMs ?? 2_000;\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const run = await this.get(runId);\n if (run.lifeCycleState === 'RUNNING') return run;\n if (isTerminal(run.lifeCycleState)) {\n throw new Error(\n `Databricks run ${runId} reached ${run.lifeCycleState}/${run.resultState} before it could be canceled`,\n );\n }\n await delay(pollIntervalMs);\n }\n throw new Error(`Databricks run ${runId} did not become active within ${timeoutMs}ms`);\n }\n\n async repair(runId: number, options: JobRepairOptions = {}): Promise<number> {\n const response = await this.client.post<{ repair_id?: number }>('/api/2.1/jobs/runs/repair', {\n run_id: runId,\n ...(options.latestRepairId ? { latest_repair_id: options.latestRepairId } : {}),\n ...(options.rerunDependentTasks ? { rerun_dependent_tasks: true } : {}),\n ...(options.rerunTasks?.length\n ? { rerun_tasks: options.rerunTasks }\n : { rerun_all_failed_tasks: true }),\n });\n if (!response.repair_id) throw new Error('Databricks Jobs repair returned no repair_id');\n return response.repair_id;\n }\n\n async waitForRepair(\n runId: number,\n repairId: number,\n options: JobWaitOptions = {},\n ): Promise<JobOrchestrationRun> {\n const timeoutMs = options.timeoutMs ?? 900_000;\n const pollIntervalMs = options.pollIntervalMs ?? 5_000;\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const run = await this.get(runId);\n const repair = run.repairs.find((candidate) => candidate.repairId === repairId);\n if (repair && isTerminal(repair.lifeCycleState)) return run;\n await delay(pollIntervalMs);\n }\n throw new Error(\n `Databricks repair ${repairId} for run ${runId} timed out after ${timeoutMs}ms`,\n );\n }\n}\n\nexport function validateJobGraph(tasks: readonly DatabricksJobTask[]): void {\n if (tasks.length === 0) throw new Error('Jobs orchestration requires at least one task');\n const keys = new Set<string>();\n for (const task of tasks) {\n if (!/^[A-Za-z0-9_-]{1,100}$/.test(task.task_key)) {\n throw new Error(`Invalid task key '${task.task_key}'`);\n }\n if (keys.has(task.task_key)) throw new Error(`Duplicate task key '${task.task_key}'`);\n keys.add(task.task_key);\n }\n const edges = new Map<string, string[]>();\n for (const task of tasks) {\n const dependencies = (task.depends_on ?? []).map((dependency) => dependency.task_key);\n for (const dependency of dependencies) {\n if (!keys.has(dependency)) {\n throw new Error(`Task '${task.task_key}' depends on unknown task '${dependency}'`);\n }\n if (dependency === task.task_key) {\n throw new Error(`Task '${task.task_key}' cannot depend on itself`);\n }\n }\n edges.set(task.task_key, dependencies);\n }\n const visiting = new Set<string>();\n const visited = new Set<string>();\n const visit = (key: string): void => {\n if (visiting.has(key)) throw new Error(`Jobs task graph contains a cycle at '${key}'`);\n if (visited.has(key)) return;\n visiting.add(key);\n for (const dependency of edges.get(key) ?? []) visit(dependency);\n visiting.delete(key);\n visited.add(key);\n };\n for (const key of keys) visit(key);\n}\n\nexport function jobsOrchestrationCheck(): LiveCheck {\n return {\n id: 'jobs-orchestration',\n description: 'Lakeflow Jobs multi-task orchestration reaches expected task outcomes',\n configured: (env) => Boolean(env.DBX_TEST_JOBS_ORCHESTRATION_JSON),\n async run({ env, client }) {\n const configured = env.DBX_TEST_JOBS_ORCHESTRATION_JSON;\n if (!configured) throw new Error('DBX_TEST_JOBS_ORCHESTRATION_JSON is required');\n const spec = parseJobOrchestrationLiveSpec(configured);\n const adapter = new DatabricksJobsAdapter(client);\n const runId = await adapter.submit(spec.request);\n let run = await adapter.wait(runId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n let repairId: number | undefined;\n if (spec.repairFailedTasks && run.resultState !== 'SUCCESS') {\n const failed = run.tasks\n .filter((task) => task.resultState === 'FAILED')\n .map((task) => task.taskKey);\n repairId = await adapter.repair(runId, {\n rerunTasks: failed.length > 0 ? failed : undefined,\n rerunDependentTasks: true,\n });\n run = await adapter.waitForRepair(runId, repairId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n }\n const expectedResult = spec.expectedResult ?? 'SUCCESS';\n if (run.resultState !== expectedResult) {\n throw new Error(\n `Job orchestration run ${runId} ended in ${run.resultState}, expected ${expectedResult}`,\n );\n }\n for (const [taskKey, expected] of Object.entries(spec.expectedTasks ?? {})) {\n const task = run.tasks.find((candidate) => candidate.taskKey === taskKey);\n if (!task) throw new Error(`Job orchestration result did not include task '${taskKey}'`);\n if (task.resultState !== expected) {\n throw new Error(`Task '${taskKey}' ended in ${task.resultState}, expected ${expected}`);\n }\n }\n let cancellation: { runId: number; resultState: string } | undefined;\n if (spec.cancellation) {\n const cancellationRunId = await adapter.submit(spec.cancellation.request);\n await adapter.waitUntilActive(cancellationRunId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n await adapter.cancel(cancellationRunId);\n const canceled = await adapter.wait(cancellationRunId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const expectedCancellation = spec.cancellation.expectedResult ?? 'CANCELED';\n if (canceled.resultState !== expectedCancellation) {\n throw new Error(\n `Cancellation run ${cancellationRunId} ended in ${canceled.resultState}, expected ${expectedCancellation}`,\n );\n }\n cancellation = { runId: cancellationRunId, resultState: canceled.resultState };\n }\n return {\n runId,\n ...(repairId ? { repairId } : {}),\n resultState: run.resultState,\n tasks: run.tasks,\n ...(cancellation ? { cancellation } : {}),\n };\n },\n };\n}\n\nexport function parseJobOrchestrationLiveSpec(value: string): JobOrchestrationLiveSpec {\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n throw new Error(`DBX_TEST_JOBS_ORCHESTRATION_JSON is invalid JSON: ${String(error)}`);\n }\n if (!parsed || typeof parsed !== 'object') {\n throw new Error('Jobs orchestration spec must be an object');\n }\n const spec = parsed as Partial<JobOrchestrationLiveSpec>;\n if (!spec.request || typeof spec.request !== 'object' || !Array.isArray(spec.request.tasks)) {\n throw new Error('Jobs orchestration spec requires request.tasks');\n }\n validateJobGraph(spec.request.tasks);\n if (spec.cancellation) {\n if (\n typeof spec.cancellation !== 'object' ||\n !spec.cancellation.request ||\n !Array.isArray(spec.cancellation.request.tasks)\n ) {\n throw new Error('Jobs orchestration cancellation requires request.tasks');\n }\n validateJobGraph(spec.cancellation.request.tasks);\n }\n return spec as JobOrchestrationLiveSpec;\n}\n\nexport function normalizeJobRun(\n fallbackRunId: number,\n raw: Record<string, unknown>,\n): JobOrchestrationRun {\n const state = objectOf(raw.state);\n const repairEntries = Array.isArray(raw.repair_history)\n ? raw.repair_history.filter((repair): repair is Record<string, unknown> =>\n Boolean(repair && typeof repair === 'object'),\n )\n : [];\n const taskRunRanks = new Map<number, number>();\n for (const [rank, repair] of repairEntries.entries()) {\n for (const runId of numberArray(repair.task_run_ids)) taskRunRanks.set(runId, rank);\n }\n const taskAttempts = Array.isArray(raw.tasks)\n ? raw.tasks\n .filter((task): task is Record<string, unknown> =>\n Boolean(task && typeof task === 'object'),\n )\n .map((task) => {\n const taskState = objectOf(task.state);\n return {\n taskKey: String(task.task_key ?? 'unknown'),\n ...(Number.isFinite(Number(task.run_id)) ? { runId: Number(task.run_id) } : {}),\n lifeCycleState: String(taskState.life_cycle_state ?? 'UNKNOWN'),\n resultState: String(taskState.result_state ?? 'UNKNOWN'),\n ...(typeof taskState.state_message === 'string'\n ? { stateMessage: taskState.state_message }\n : {}),\n ...(Number.isFinite(Number(task.attempt_number))\n ? { attemptNumber: Number(task.attempt_number) }\n : {}),\n };\n })\n : [];\n const latestTasks = new Map<string, JobTaskRunState>();\n for (const task of taskAttempts) {\n const current = latestTasks.get(task.taskKey);\n const currentAttempt = current?.attemptNumber ?? -1;\n const candidateAttempt = task.attemptNumber ?? -1;\n const currentRank = current?.runId ? (taskRunRanks.get(current.runId) ?? -1) : -1;\n const candidateRank = task.runId ? (taskRunRanks.get(task.runId) ?? -1) : -1;\n if (\n !current ||\n candidateAttempt > currentAttempt ||\n (candidateAttempt === currentAttempt && candidateRank >= currentRank)\n ) {\n latestTasks.set(task.taskKey, task);\n }\n }\n const tasks = [...latestTasks.values()];\n const repairs = repairEntries.map((repair) => {\n const repairState = objectOf(repair.state);\n return {\n repairId: Number(repair.id ?? repair.repair_id ?? 0),\n type: String(repair.type ?? 'UNKNOWN'),\n lifeCycleState: String(repairState.life_cycle_state ?? 'UNKNOWN'),\n resultState: String(repairState.result_state ?? 'UNKNOWN'),\n taskRunIds: numberArray(repair.task_run_ids),\n };\n });\n return {\n runId: Number(raw.run_id ?? fallbackRunId),\n lifeCycleState: String(state.life_cycle_state ?? 'UNKNOWN'),\n resultState: String(state.result_state ?? 'UNKNOWN'),\n tasks,\n repairs,\n raw,\n };\n}\n\nfunction isTerminal(state: string): boolean {\n return ['TERMINATED', 'SKIPPED', 'INTERNAL_ERROR', 'BLOCKED'].includes(state);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction objectOf(value: unknown): Record<string, unknown> {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n}\n\nfunction numberArray(value: unknown): number[] {\n return Array.isArray(value)\n ? value.map(Number).filter((candidate) => Number.isFinite(candidate))\n : [];\n}\n","import { randomUUID } from 'node:crypto';\nimport { DatabricksJobsAdapter, type JobsSubmitRequest } from './jobs-orchestration.js';\nimport type { LiveCheck } from './live-suite.js';\nimport type { WorkspaceClientLike } from './workspace-context.js';\n\nconst NOTEBOOKS = {\n seed: `# Databricks notebook source\ndbutils.jobs.taskValues.set(key=\"branch\", value=\"run\")\ndbutils.jobs.taskValues.set(key=\"items\", value=[\"alpha\", \"beta\"])\ndbutils.notebook.exit(\"seeded\")\n`,\n process: `# Databricks notebook source\ndbutils.widgets.text(\"item\", \"\")\nitem = dbutils.widgets.get(\"item\")\nassert item, \"item parameter is required\"\ndbutils.notebook.exit(item)\n`,\n retry: `# Databricks notebook source\ndbutils.widgets.text(\"execution_count\", \"0\")\nexecution_count = int(dbutils.widgets.get(\"execution_count\"))\nif execution_count <= 1:\n raise RuntimeError(\"intentional retryable failure\")\ndbutils.notebook.exit(\"retried\")\n`,\n repair: `# Databricks notebook source\ndbutils.widgets.text(\"repair_count\", \"0\")\nrepair_count = int(dbutils.widgets.get(\"repair_count\"))\nif repair_count == 0:\n raise RuntimeError(\"intentional first-run failure\")\ndbutils.notebook.exit(\"repaired\")\n`,\n sleep: `# Databricks notebook source\nimport time\ntime.sleep(300)\n`,\n} as const;\n\nexport function jobsCertificationCheck(): LiveCheck {\n return {\n id: 'jobs-certification',\n description:\n 'Disposable Lakeflow Jobs branch, loop, failure, repair, cancellation, and cleanup certification',\n configured: (env) => env.DBX_TEST_JOBS_CERTIFY === '1',\n async run({ env, client }) {\n const root = `${env.DBX_TEST_JOBS_FIXTURE_ROOT ?? '/Workspace/Shared/fabric-experiments-target-pack'}/${randomUUID()}`;\n const paths = Object.fromEntries(\n Object.keys(NOTEBOOKS).map((name) => [name, `${root}/${name}`]),\n ) as Record<keyof typeof NOTEBOOKS, string>;\n try {\n await importNotebooks(client, paths);\n const adapter = new DatabricksJobsAdapter(client);\n const runId = await adapter.submit(certificationRequest(paths));\n const initial = await adapter.wait(runId, waitOptions(env));\n if (initial.resultState !== 'FAILED') {\n throw new Error(\n `Certification run ${runId} expected FAILED before repair, got ${initial.resultState}`,\n );\n }\n const retried = assertTask(initial.tasks, 'retry', 'SUCCESS');\n if ((retried.attemptNumber ?? 0) < 1) {\n throw new Error('Certification retry task did not record a second attempt');\n }\n assertTask(initial.tasks, 'seed', 'SUCCESS');\n assertTask(initial.tasks, 'branch', 'SUCCESS');\n assertTask(initial.tasks, 'foreach', 'SUCCESS');\n assertTask(initial.tasks, 'repair', 'FAILED');\n\n const repairId = await adapter.repair(runId, {\n rerunTasks: ['repair'],\n rerunDependentTasks: true,\n });\n const repaired = await adapter.waitForRepair(runId, repairId, waitOptions(env));\n if (repaired.resultState !== 'SUCCESS') {\n throw new Error(`Certification repair ${repairId} ended in ${repaired.resultState}`);\n }\n assertTask(repaired.tasks, 'repair', 'SUCCESS');\n\n const cancellationRunId = await adapter.submit(cancellationRequest(paths));\n await adapter.waitUntilActive(cancellationRunId, waitOptions(env));\n await adapter.cancel(cancellationRunId);\n const canceled = await adapter.wait(cancellationRunId, waitOptions(env));\n if (canceled.resultState !== 'CANCELED') {\n throw new Error(`Certification cancellation ended in ${canceled.resultState}`);\n }\n\n return {\n runId,\n repairId,\n cancellationRunId,\n taskValues: true,\n retry: true,\n condition: true,\n forEach: true,\n repair: true,\n cancellation: true,\n fixtureRoot: root,\n };\n } finally {\n await client.post('/api/2.0/workspace/delete', { path: root, recursive: true });\n }\n },\n };\n}\n\nasync function importNotebooks(\n client: WorkspaceClientLike,\n paths: Record<keyof typeof NOTEBOOKS, string>,\n): Promise<void> {\n await client.post('/api/2.0/workspace/mkdirs', {\n path: paths.seed.slice(0, paths.seed.lastIndexOf('/')),\n });\n for (const [name, source] of Object.entries(NOTEBOOKS) as Array<\n [keyof typeof NOTEBOOKS, string]\n >) {\n await client.post('/api/2.0/workspace/import', {\n path: paths[name],\n format: 'SOURCE',\n language: 'PYTHON',\n overwrite: true,\n content: Buffer.from(source).toString('base64'),\n });\n }\n}\n\nfunction certificationRequest(paths: Record<keyof typeof NOTEBOOKS, string>): JobsSubmitRequest {\n return {\n run_name: 'fabric-experiments-jobs-certification',\n tasks: [\n {\n task_key: 'retry',\n notebook_task: {\n notebook_path: paths.retry,\n base_parameters: { execution_count: '{{task.execution_count}}' },\n },\n max_retries: 1,\n },\n {\n task_key: 'seed',\n depends_on: [{ task_key: 'retry' }],\n notebook_task: { notebook_path: paths.seed },\n },\n {\n task_key: 'branch',\n depends_on: [{ task_key: 'seed' }],\n condition_task: {\n left: '{{tasks.seed.values.branch}}',\n op: 'EQUAL_TO',\n right: 'run',\n },\n },\n {\n task_key: 'foreach',\n depends_on: [{ task_key: 'branch', outcome: 'true' }],\n for_each_task: {\n inputs: '{{tasks.seed.values.items}}',\n concurrency: 2,\n task: {\n task_key: 'process_item',\n notebook_task: {\n notebook_path: paths.process,\n base_parameters: { item: '{{input}}' },\n },\n },\n },\n },\n {\n task_key: 'repair',\n depends_on: [{ task_key: 'foreach' }],\n notebook_task: {\n notebook_path: paths.repair,\n base_parameters: { repair_count: '{{job.repair_count}}' },\n },\n },\n ],\n };\n}\n\nfunction cancellationRequest(paths: Record<keyof typeof NOTEBOOKS, string>): JobsSubmitRequest {\n return {\n run_name: 'fabric-experiments-jobs-cancellation-certification',\n tasks: [{ task_key: 'sleep', notebook_task: { notebook_path: paths.sleep } }],\n };\n}\n\nfunction waitOptions(env: Record<string, string | undefined>) {\n return {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 5_000),\n };\n}\n\nfunction assertTask(\n tasks: Array<{ taskKey: string; resultState: string; attemptNumber?: number }>,\n taskKey: string,\n resultState: string,\n): { taskKey: string; resultState: string; attemptNumber?: number } {\n const task = tasks.find((candidate) => candidate.taskKey === taskKey);\n if (!task) throw new Error(`Certification result did not contain task '${taskKey}'`);\n if (task.resultState !== resultState) {\n throw new Error(\n `Certification task '${taskKey}' ended in ${task.resultState}, expected ${resultState}`,\n );\n }\n return task;\n}\n","import { jobsCertificationCheck } from './jobs-certification-check.js';\nimport { jobsOrchestrationCheck } from './jobs-orchestration.js';\nimport { jobRunCheck, restrictedPrincipalCheck } from './live-checks.js';\nimport { type TargetPack, defineTargetPack } from './target-packs.js';\n\nexport function createLakeflowJobsTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'lakeflow-jobs',\n name: 'Lakeflow Jobs orchestration',\n description:\n 'Typed multi-task DAG, branch/loop, retry, cancellation, repair and task-outcome validation.',\n version: '0.2.0',\n maturity: 'live-gated',\n capabilities: [\n 'jobs.multi-task-dag',\n 'jobs.dependencies',\n 'jobs.condition-task',\n 'jobs.for-each-task',\n 'jobs.retry',\n 'jobs.cancel',\n 'jobs.repair',\n 'jobs.task-outcomes',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n jobRunCheck(),\n jobsOrchestrationCheck(),\n jobsCertificationCheck(),\n ],\n requiredChecks: ['jobs-orchestration'],\n requirements: [\n {\n id: 'workspace',\n description: 'Databricks workspace host',\n anyOf: ['DATABRICKS_HOST'],\n },\n {\n id: 'authentication',\n description: 'Databricks OAuth, OIDC, bearer, or PAT authentication',\n anyOf: [\n 'DATABRICKS_BEARER',\n 'DATABRICKS_TOKEN',\n 'DATABRICKS_CLIENT_ID',\n 'DATABRICKS_OIDC_TOKEN',\n 'DATABRICKS_OIDC_TOKEN_FILEPATH',\n ],\n secret: true,\n },\n {\n id: 'orchestration-spec',\n description: 'JSON multi-task orchestration scenario',\n anyOf: ['DBX_TEST_JOBS_ORCHESTRATION_JSON'],\n required: false,\n },\n ],\n docsUrl:\n 'https://experiments.fabric.pro/docs/testing/target-packs/#lakeflow-jobs-orchestration',\n certificationScopes: [\n 'Azure Databricks serverless Jobs, West US, workspace OAuth, public network path',\n ],\n });\n}\n","import type { LiveCheck } from './live-suite.js';\nimport {\n type WorkspaceClientLike,\n createClientFromEnv,\n createWorkspaceContext,\n} from './workspace-context.js';\n\ntype JsonObject = Record<string, unknown>;\n\nexport interface PipelineResource extends JsonObject {\n pipeline_id?: string;\n name?: string;\n state?: string;\n spec?: JsonObject;\n}\n\nexport interface DashboardResource extends JsonObject {\n dashboard_id?: string;\n display_name?: string;\n lifecycle_state?: string;\n}\n\nexport interface PublishedDashboardResource extends JsonObject {\n display_name?: string;\n revision_create_time?: string;\n warehouse_id?: string;\n}\n\nexport interface GenieSpaceResource extends JsonObject {\n space_id?: string;\n title?: string;\n}\n\nexport interface RegisteredModelResource extends JsonObject {\n full_name?: string;\n name?: string;\n}\n\nexport interface ServingEndpointResource extends JsonObject {\n name?: string;\n state?: { ready?: string; config_update?: string };\n config?: JsonObject;\n ai_gateway?: JsonObject;\n}\n\nexport interface VectorSearchEndpointResource extends JsonObject {\n name?: string;\n endpoint_status?: { state?: string; message?: string };\n}\n\nexport interface VectorSearchIndexResource extends JsonObject {\n name?: string;\n status?: { ready?: boolean; message?: string; indexed_row_count?: number };\n}\n\n/**\n * Typed, injectable adapter for Databricks workload surfaces that are not part\n * of SQL Statement Execution. It deliberately mirrors the public REST APIs so\n * target packs can be unit tested without a workspace.\n */\nexport class DatabricksAdvancedWorkloadsAdapter {\n constructor(private readonly client: WorkspaceClientLike) {}\n\n pipeline(id: string): Promise<PipelineResource> {\n return this.client.get(`/api/2.0/pipelines/${segment(id)}`);\n }\n\n table(fullName: string): Promise<JsonObject> {\n return this.client.get(`/api/2.1/unity-catalog/tables/${segment(fullName)}`);\n }\n\n dashboard(id: string): Promise<DashboardResource> {\n return this.client.get(`/api/2.0/lakeview/dashboards/${segment(id)}`);\n }\n\n publishedDashboard(id: string): Promise<PublishedDashboardResource> {\n return this.client.get(`/api/2.0/lakeview/dashboards/${segment(id)}/published`);\n }\n\n genieSpace(id: string): Promise<GenieSpaceResource> {\n return this.client.get(`/api/2.0/genie/spaces/${segment(id)}`);\n }\n\n startGenieConversation(spaceId: string, question: string): Promise<JsonObject> {\n return this.client.post(`/api/2.0/genie/spaces/${segment(spaceId)}/start-conversation`, {\n content: question,\n });\n }\n\n experiment(id: string): Promise<JsonObject> {\n return this.client.get('/api/2.0/mlflow/experiments/get', { experiment_id: id });\n }\n\n registeredModel(fullName: string): Promise<RegisteredModelResource> {\n return this.client.get(`/api/2.1/unity-catalog/models/${segment(fullName)}`);\n }\n\n modelVersion(fullName: string, version: string): Promise<JsonObject> {\n return this.client.get(\n `/api/2.1/unity-catalog/models/${segment(fullName)}/versions/${segment(version)}`,\n );\n }\n\n onlineTable(fullName: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/online-tables/${segment(fullName)}`);\n }\n\n servingEndpoint(name: string): Promise<ServingEndpointResource> {\n return this.client.get(`/api/2.0/serving-endpoints/${segment(name)}`);\n }\n\n invokeServingEndpoint(name: string, request: unknown): Promise<JsonObject> {\n return this.client.post(`/serving-endpoints/${segment(name)}/invocations`, request);\n }\n\n vectorSearchEndpoint(name: string): Promise<VectorSearchEndpointResource> {\n return this.client.get(`/api/2.0/vector-search/endpoints/${segment(name)}`);\n }\n\n vectorSearchIndex(name: string): Promise<VectorSearchIndexResource> {\n return this.client.get(`/api/2.0/vector-search/indexes/${segment(name)}`);\n }\n\n queryVectorSearchIndex(name: string, request: unknown): Promise<JsonObject> {\n return this.client.post(`/api/2.0/vector-search/indexes/${segment(name)}/query`, request);\n }\n\n connection(name: string): Promise<JsonObject> {\n return this.client.get(`/api/2.1/unity-catalog/connections/${segment(name)}`);\n }\n\n share(name: string): Promise<JsonObject> {\n return this.client.get(`/api/2.1/unity-catalog/shares/${segment(name)}`);\n }\n\n cleanRoom(name: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/clean-rooms/${segment(name)}`);\n }\n\n ipAccessList(id: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/ip-access-lists/${segment(id)}`);\n }\n\n clusterPolicy(id: string): Promise<JsonObject> {\n return this.client.get('/api/2.0/policies/clusters/get', { policy_id: id });\n }\n\n warehouse(id: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/sql/warehouses/${segment(id)}`);\n }\n}\n\nfunction segment(value: string): string {\n return encodeURIComponent(value);\n}\n\nfunction adapter(client: WorkspaceClientLike): DatabricksAdvancedWorkloadsAdapter {\n return new DatabricksAdvancedWorkloadsAdapter(client);\n}\n\nfunction required(env: Record<string, string | undefined>, names: readonly string[]): string[] {\n return names.filter((name) => !env[name]?.trim());\n}\n\nfunction requireEnv(env: Record<string, string | undefined>, names: readonly string[]): void {\n const missing = required(env, names);\n if (missing.length > 0) throw new Error(`Missing required configuration: ${missing.join(', ')}`);\n}\n\nfunction parseJson(value: string | undefined, name: string): unknown {\n if (!value) return undefined;\n try {\n return JSON.parse(value) as unknown;\n } catch {\n throw new Error(`${name} must contain valid JSON`);\n }\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isNonNegativeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isInteger(value) && value >= 0;\n}\n\nfunction assertNotFailed(label: string, state: unknown): void {\n if (typeof state === 'string' && /FAIL|ERROR|DELET/i.test(state)) {\n throw new Error(`${label} is ${state}`);\n }\n}\n\nfunction assertReady(label: string, state: unknown, accepted: readonly string[]): void {\n if (typeof state !== 'string' || !accepted.includes(state.toUpperCase())) {\n throw new Error(`${label} is ${String(state ?? 'UNKNOWN')}; expected ${accepted.join(' or ')}`);\n }\n}\n\nasync function booleanSql(\n label: string,\n sql: string | undefined,\n query: (statement: string) => Promise<Record<string, unknown>[]>,\n): Promise<void> {\n if (!sql) return;\n const rows = await query(sql);\n const first = rows[0] ? Object.values(rows[0])[0] : undefined;\n if (!(first === true || first === 1 || first === '1' || first === 'true')) {\n throw new Error(`${label} assertion did not return a truthy first column`);\n }\n}\n\nexport function advancedStreamingCdcCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_STREAMING_PIPELINE_ID',\n 'DBX_TEST_STREAMING_TABLE',\n 'DBX_TEST_CDC_ASSERTION_SQL',\n 'DBX_TEST_STREAMING_ASSERTION_SQL',\n ] as const;\n return {\n id: 'streaming-cdc',\n description: 'Streaming pipeline, streaming table and CDC assertions are healthy',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const api = adapter(client);\n const pipeline = await api.pipeline(env.DBX_TEST_STREAMING_PIPELINE_ID as string);\n assertNotFailed('Streaming pipeline', pipeline.state);\n const table = await api.table(env.DBX_TEST_STREAMING_TABLE as string);\n const tableType = String(table.table_type ?? table.data_source_format ?? '').toUpperCase();\n if (!['STREAMING_TABLE', 'MATERIALIZED_VIEW', 'DELTA'].includes(tableType)) {\n throw new Error(`Streaming target has unsupported table type ${tableType || 'UNKNOWN'}`);\n }\n await booleanSql('CDC', env.DBX_TEST_CDC_ASSERTION_SQL, warehouse.query);\n await booleanSql(\n 'Streaming freshness',\n env.DBX_TEST_STREAMING_ASSERTION_SQL,\n warehouse.query,\n );\n return { pipelineId: pipeline.pipeline_id, table: env.DBX_TEST_STREAMING_TABLE, tableType };\n },\n };\n}\n\nexport function lakeflowConnectCheck(): LiveCheck {\n const names = ['DBX_TEST_CONNECT_PIPELINE_ID', 'DBX_TEST_CONNECT_ASSERTION_SQL'] as const;\n return {\n id: 'lakeflow-connect',\n description: 'Lakeflow Connect ingestion pipeline exists and is not failed',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const id = env.DBX_TEST_CONNECT_PIPELINE_ID as string;\n const pipeline = await adapter(client).pipeline(id);\n assertNotFailed('Lakeflow Connect pipeline', pipeline.state);\n const ingestion = pipeline.spec?.ingestion_definition as JsonObject | undefined;\n if (!ingestion || !Array.isArray(ingestion.objects) || ingestion.objects.length === 0) {\n throw new Error('Lakeflow Connect pipeline has no managed ingestion definition');\n }\n await booleanSql(\n 'Lakeflow Connect replication',\n env.DBX_TEST_CONNECT_ASSERTION_SQL,\n warehouse.query,\n );\n return {\n pipelineId: pipeline.pipeline_id ?? id,\n state: pipeline.state ?? 'IDLE',\n sourceType: ingestion.source_type ?? 'MANAGED_INGESTION',\n objects: ingestion.objects.length,\n };\n },\n };\n}\n\nexport function aiBiDashboardCheck(): LiveCheck {\n return {\n id: 'aibi-dashboard',\n description: 'Published AI/BI dashboard is accessible',\n configured: (env) => Boolean(env.DBX_TEST_DASHBOARD_ID),\n async run({ env, client }) {\n const api = adapter(client);\n const id = env.DBX_TEST_DASHBOARD_ID as string;\n const dashboard = await api.dashboard(id);\n assertNotFailed('AI/BI dashboard', dashboard.lifecycle_state);\n const published = await api.publishedDashboard(id);\n if (!published.revision_create_time) {\n throw new Error(`AI/BI dashboard ${id} has no published revision`);\n }\n return {\n dashboardId: dashboard.dashboard_id ?? id,\n name: published.display_name ?? dashboard.display_name,\n publishedAt: published.revision_create_time,\n };\n },\n };\n}\n\nexport function genieCheck(): LiveCheck {\n const names = ['DBX_TEST_GENIE_SPACE_ID', 'DBX_TEST_GENIE_QUESTION'] as const;\n return {\n id: 'genie',\n description: 'Genie space is accessible and can optionally start a grounded conversation',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const id = env.DBX_TEST_GENIE_SPACE_ID as string;\n const space = await api.genieSpace(id);\n let conversation: JsonObject | undefined;\n if (env.DBX_TEST_GENIE_QUESTION) {\n conversation = await api.startGenieConversation(id, env.DBX_TEST_GENIE_QUESTION);\n if (!conversation.conversation_id && !conversation.message_id) {\n throw new Error('Genie did not return a conversation or message identifier');\n }\n }\n return {\n spaceId: space.space_id ?? id,\n title: space.title,\n conversationStarted: Boolean(conversation),\n };\n },\n };\n}\n\nexport function mlflowLifecycleCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_MLFLOW_EXPERIMENT_ID',\n 'DBX_TEST_REGISTERED_MODEL',\n 'DBX_TEST_MODEL_VERSION',\n ] as const;\n return {\n id: 'mlflow-lifecycle',\n description: 'MLflow experiment and Unity Catalog model version are accessible',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const experiment = await api.experiment(env.DBX_TEST_MLFLOW_EXPERIMENT_ID as string);\n const model = await api.registeredModel(env.DBX_TEST_REGISTERED_MODEL as string);\n const version = await api.modelVersion(\n env.DBX_TEST_REGISTERED_MODEL as string,\n env.DBX_TEST_MODEL_VERSION as string,\n );\n assertNotFailed('Model version', version.status);\n return {\n experimentId:\n (experiment.experiment as JsonObject | undefined)?.experiment_id ??\n env.DBX_TEST_MLFLOW_EXPERIMENT_ID,\n model: model.full_name ?? model.name ?? env.DBX_TEST_REGISTERED_MODEL,\n version: version.version ?? env.DBX_TEST_MODEL_VERSION,\n };\n },\n };\n}\n\nexport function featureEngineeringServingCheck(): LiveCheck {\n return {\n id: 'feature-engineering',\n description: 'Feature table and online materialization are healthy',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_FEATURE_TABLE &&\n env.DBX_TEST_FEATURE_ASSERTION_SQL &&\n (env.DBX_TEST_ONLINE_TABLE || env.DBX_TEST_FEATURE_SERVING_PIPELINE_ID),\n ),\n async run({ env, client, warehouse }) {\n requireEnv(env, ['DBX_TEST_FEATURE_TABLE']);\n if (!env.DBX_TEST_ONLINE_TABLE && !env.DBX_TEST_FEATURE_SERVING_PIPELINE_ID) {\n throw new Error(\n 'Feature serving requires DBX_TEST_ONLINE_TABLE or DBX_TEST_FEATURE_SERVING_PIPELINE_ID',\n );\n }\n const api = adapter(client);\n const source = await api.table(env.DBX_TEST_FEATURE_TABLE as string);\n let state: unknown;\n let servingResource: string;\n if (env.DBX_TEST_ONLINE_TABLE) {\n const online = await api.onlineTable(env.DBX_TEST_ONLINE_TABLE);\n const status = online.status as JsonObject | undefined;\n state = status?.state ?? status?.detailed_state ?? online.state;\n assertReady('Online table', state, ['ONLINE', 'ACTIVE', 'READY', 'PROVISIONED']);\n servingResource = env.DBX_TEST_ONLINE_TABLE;\n } else {\n const pipelineId = env.DBX_TEST_FEATURE_SERVING_PIPELINE_ID as string;\n const pipeline = await api.pipeline(pipelineId);\n state = pipeline.state ?? 'IDLE';\n assertNotFailed('Synced Table pipeline', state);\n servingResource = pipeline.pipeline_id ?? pipelineId;\n }\n await booleanSql('Feature freshness', env.DBX_TEST_FEATURE_ASSERTION_SQL, warehouse.query);\n return {\n featureTable: source.full_name ?? env.DBX_TEST_FEATURE_TABLE,\n servingResource,\n state,\n };\n },\n };\n}\n\nexport function modelServingCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_SERVING_ENDPOINT',\n 'DBX_TEST_SERVING_REQUEST_JSON',\n 'DBX_TEST_AI_GATEWAY_REQUIRED',\n ] as const;\n return {\n id: 'model-serving',\n description: 'Model Serving endpoint is ready and can optionally serve an inference request',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n if (env.DBX_TEST_AI_GATEWAY_REQUIRED !== '1') {\n throw new Error('DBX_TEST_AI_GATEWAY_REQUIRED must be 1 for the Model Serving target pack');\n }\n const api = adapter(client);\n const name = env.DBX_TEST_SERVING_ENDPOINT as string;\n const endpoint = await api.servingEndpoint(name);\n assertReady('Serving endpoint', endpoint.state?.ready, ['READY']);\n if (env.DBX_TEST_AI_GATEWAY_REQUIRED === '1' && !endpoint.ai_gateway) {\n throw new Error(`Serving endpoint ${name} has no AI Gateway configuration`);\n }\n let response: JsonObject | undefined;\n if (env.DBX_TEST_SERVING_REQUEST_JSON) {\n response = await api.invokeServingEndpoint(\n name,\n parseJson(env.DBX_TEST_SERVING_REQUEST_JSON, 'DBX_TEST_SERVING_REQUEST_JSON'),\n );\n if (Object.keys(response).length === 0)\n throw new Error('Serving invocation returned an empty response');\n }\n return {\n endpoint: endpoint.name ?? name,\n ready: endpoint.state?.ready,\n aiGateway: Boolean(endpoint.ai_gateway),\n invoked: Boolean(response),\n };\n },\n };\n}\n\n/**\n * Live contract for the deterministic chat payload used by\n * `@fabricorg/experiments-evals/databricks`. It is separate from the generic\n * serving check because custom model endpoints may use dataframe payloads and\n * are not valid LLM judges.\n */\nexport function evalJudgeModelServingCheck(): LiveCheck {\n const names = ['DBX_TEST_EVAL_SERVING_ENDPOINT'] as const;\n return {\n id: 'model-eval-judge',\n description: 'Databricks Model Serving satisfies the deterministic evaluator chat contract',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const name = env.DBX_TEST_EVAL_SERVING_ENDPOINT as string;\n const endpoint = await api.servingEndpoint(name);\n assertReady('Evaluator serving endpoint', endpoint.state?.ready, ['READY']);\n const response = await api.invokeServingEndpoint(name, {\n messages: [\n {\n role: 'system',\n content: 'Answer on the first line with exactly \"LABEL: relevant\".',\n },\n { role: 'user', content: 'Is this response relevant to this question?' },\n ],\n temperature: 0,\n max_tokens: 32,\n });\n const choices = Array.isArray(response.choices) ? response.choices : [];\n const first = choices[0];\n const message = isObject(first) && isObject(first.message) ? first.message : undefined;\n const content = typeof message?.content === 'string' ? message.content : '';\n const usage = isObject(response.usage) ? response.usage : undefined;\n const inputTokens = usage?.prompt_tokens;\n const outputTokens = usage?.completion_tokens;\n if (!/^\\s*LABEL:\\s*relevant\\s*$/im.test(content)) {\n throw new Error('Evaluator serving endpoint did not return the requested label contract');\n }\n if (!isNonNegativeInteger(inputTokens) || !isNonNegativeInteger(outputTokens)) {\n throw new Error('Evaluator serving endpoint did not return integer token usage');\n }\n return { endpoint: endpoint.name ?? name, inputTokens, outputTokens };\n },\n };\n}\n\nexport function vectorSearchCheck(): LiveCheck {\n const names = ['DBX_TEST_VECTOR_ENDPOINT', 'DBX_TEST_VECTOR_INDEX'] as const;\n return {\n id: 'vector-search',\n description: 'Vector Search endpoint and index are online',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const endpoint = await api.vectorSearchEndpoint(env.DBX_TEST_VECTOR_ENDPOINT as string);\n assertReady('Vector Search endpoint', endpoint.endpoint_status?.state, ['ONLINE', 'READY']);\n const index = await api.vectorSearchIndex(env.DBX_TEST_VECTOR_INDEX as string);\n if (index.status?.ready !== true)\n throw new Error(`Vector Search index is not ready: ${index.status?.message ?? 'UNKNOWN'}`);\n return {\n endpoint: endpoint.name ?? env.DBX_TEST_VECTOR_ENDPOINT,\n index: index.name ?? env.DBX_TEST_VECTOR_INDEX,\n indexedRows: index.status.indexed_row_count,\n };\n },\n };\n}\n\nexport function ragAgentCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_VECTOR_INDEX',\n 'DBX_TEST_VECTOR_QUERY_JSON',\n 'DBX_TEST_AGENT_ENDPOINT',\n 'DBX_TEST_AGENT_REQUEST_JSON',\n ] as const;\n return {\n id: 'rag-agent',\n description: 'RAG retrieval and agent serving endpoint return non-empty responses',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n let retrieval: JsonObject | undefined;\n if (env.DBX_TEST_VECTOR_QUERY_JSON) {\n retrieval = await api.queryVectorSearchIndex(\n env.DBX_TEST_VECTOR_INDEX as string,\n parseJson(env.DBX_TEST_VECTOR_QUERY_JSON, 'DBX_TEST_VECTOR_QUERY_JSON'),\n );\n if (!retrieval.result && !retrieval.data_array && !retrieval.manifest) {\n throw new Error('Vector query returned no result payload');\n }\n }\n let agent: JsonObject | undefined;\n if (env.DBX_TEST_AGENT_ENDPOINT) {\n const endpoint = await api.servingEndpoint(env.DBX_TEST_AGENT_ENDPOINT);\n assertReady('Agent endpoint', endpoint.state?.ready, ['READY']);\n if (env.DBX_TEST_AGENT_REQUEST_JSON) {\n agent = await api.invokeServingEndpoint(\n env.DBX_TEST_AGENT_ENDPOINT,\n parseJson(env.DBX_TEST_AGENT_REQUEST_JSON, 'DBX_TEST_AGENT_REQUEST_JSON'),\n );\n if (Object.keys(agent).length === 0)\n throw new Error('Agent invocation returned an empty response');\n }\n }\n return {\n retrieval: Boolean(retrieval),\n agentEndpoint: env.DBX_TEST_AGENT_ENDPOINT,\n agentInvoked: Boolean(agent),\n };\n },\n };\n}\n\nexport function federationSharingCleanRoomsCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_CONNECTION',\n 'DBX_TEST_SHARE',\n 'DBX_TEST_CLEAN_ROOM',\n 'DBX_TEST_FEDERATION_ASSERTION_SQL',\n ] as const;\n return {\n id: 'federation-sharing-cleanrooms',\n description: 'Lakehouse Federation connection, Delta Share and Clean Room are accessible',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const api = adapter(client);\n const connection = await api.connection(env.DBX_TEST_CONNECTION as string);\n const share = await api.share(env.DBX_TEST_SHARE as string);\n const room = await api.cleanRoom(env.DBX_TEST_CLEAN_ROOM as string);\n await booleanSql('Federated query', env.DBX_TEST_FEDERATION_ASSERTION_SQL, warehouse.query);\n return {\n connection: connection.name ?? env.DBX_TEST_CONNECTION,\n share: share.name ?? env.DBX_TEST_SHARE,\n cleanRoom: room.name ?? env.DBX_TEST_CLEAN_ROOM,\n };\n },\n };\n}\n\nexport function securityPostureCostCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_IP_ACCESS_LIST_ID',\n 'DBX_TEST_CLUSTER_POLICY_ID',\n 'DBX_TEST_COST_ASSERTION_SQL',\n ] as const;\n return {\n id: 'security-cost',\n description: 'Network access controls, compute policy and cost guardrail are enforced',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const api = adapter(client);\n const access = await api.ipAccessList(env.DBX_TEST_IP_ACCESS_LIST_ID as string);\n if (access.enabled === false) throw new Error('Configured IP access list is disabled');\n const policy = await api.clusterPolicy(env.DBX_TEST_CLUSTER_POLICY_ID as string);\n if (!policy.policy_id && !policy.name)\n throw new Error('Cluster policy response has no identity');\n if (\n env.DBX_TEST_EXPECT_HOST_SUFFIX &&\n !env.DATABRICKS_HOST?.endsWith(env.DBX_TEST_EXPECT_HOST_SUFFIX)\n ) {\n throw new Error(`Workspace host does not end with ${env.DBX_TEST_EXPECT_HOST_SUFFIX}`);\n }\n await booleanSql('Cost guardrail', env.DBX_TEST_COST_ASSERTION_SQL, warehouse.query);\n return {\n ipAccessList: access.list_id ?? env.DBX_TEST_IP_ACCESS_LIST_ID,\n policy: policy.policy_id ?? policy.name,\n costGuardrail: 'pass',\n };\n },\n };\n}\n\nexport interface RegionalDrCheckOptions {\n clientFactory?: (env: Record<string, string | undefined>) => WorkspaceClientLike;\n}\n\nexport function regionalDrCheck(options: RegionalDrCheckOptions = {}): LiveCheck {\n const names = [\n 'DBX_TEST_DR_HOST',\n 'DBX_TEST_DR_WAREHOUSE_ID',\n 'DBX_TEST_DR_ASSERTION_SQL',\n ] as const;\n return {\n id: 'regional-dr',\n description: 'Secondary-region workspace authentication and SQL warehouse are reachable',\n configured: (env) => required(env, names).length === 0,\n async run({ env }) {\n requireEnv(env, names);\n const drEnv: Record<string, string | undefined> = {\n ...env,\n DATABRICKS_HOST: env.DBX_TEST_DR_HOST,\n DATABRICKS_WAREHOUSE_ID: env.DBX_TEST_DR_WAREHOUSE_ID,\n DATABRICKS_HTTP_PATH: undefined,\n DATABRICKS_BEARER: env.DBX_TEST_DR_BEARER,\n DATABRICKS_TOKEN: env.DBX_TEST_DR_TOKEN,\n DATABRICKS_CLIENT_ID: env.DBX_TEST_DR_CLIENT_ID ?? env.DATABRICKS_CLIENT_ID,\n DATABRICKS_CLIENT_SECRET: env.DBX_TEST_DR_CLIENT_SECRET ?? env.DATABRICKS_CLIENT_SECRET,\n };\n const client = options.clientFactory?.(drEnv) ?? createClientFromEnv(drEnv);\n const secondary = await adapter(client).warehouse(env.DBX_TEST_DR_WAREHOUSE_ID as string);\n assertReady('DR SQL warehouse', secondary.state, ['RUNNING']);\n const drWarehouse = await createWorkspaceContext({ env: drEnv, client });\n try {\n await booleanSql('Regional DR workload', env.DBX_TEST_DR_ASSERTION_SQL, drWarehouse.query);\n } finally {\n await drWarehouse.close();\n }\n return {\n secondaryWorkspace: 'reachable',\n warehouseId: secondary.id ?? env.DBX_TEST_DR_WAREHOUSE_ID,\n state: secondary.state,\n };\n },\n };\n}\n","import {\n advancedStreamingCdcCheck,\n aiBiDashboardCheck,\n featureEngineeringServingCheck,\n federationSharingCleanRoomsCheck,\n genieCheck,\n lakeflowConnectCheck,\n mlflowLifecycleCheck,\n modelServingCheck,\n ragAgentCheck,\n regionalDrCheck,\n securityPostureCostCheck,\n vectorSearchCheck,\n} from './advanced-workload-checks.js';\nimport { restrictedPrincipalCheck } from './live-checks.js';\nimport { type TargetPack, defineTargetPack } from './target-packs.js';\n\nconst DOCS = 'https://experiments.fabric.pro/docs/testing/target-packs/';\nconst AZURE_M2M_SCOPE =\n 'Azure Databricks, dedicated service principal using OAuth M2M, public network path; named managed or disposable certification fixtures';\n\nconst workspace = {\n id: 'workspace',\n description: 'Databricks workspace host',\n anyOf: ['DATABRICKS_HOST'],\n} as const;\nconst auth = {\n id: 'authentication',\n description: 'Databricks OAuth, OIDC, bearer, or PAT authentication',\n anyOf: [\n 'DATABRICKS_BEARER',\n 'DATABRICKS_TOKEN',\n 'DATABRICKS_CLIENT_ID',\n 'DATABRICKS_OIDC_TOKEN',\n 'DATABRICKS_OIDC_TOKEN_FILEPATH',\n ],\n secret: true,\n} as const;\nconst warehouse = {\n id: 'warehouse',\n description: 'SQL warehouse for data-plane assertions',\n anyOf: ['DATABRICKS_WAREHOUSE_ID', 'DATABRICKS_HTTP_PATH'],\n} as const;\nconst requirement = (id: string, description: string, ...anyOf: string[]) => ({\n id,\n description,\n anyOf,\n});\n\nexport function createAdvancedStreamingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'streaming-cdc-connect',\n name: 'Advanced streaming, CDC and Lakeflow Connect',\n description:\n 'Streaming tables, pipeline health, CDC correctness, freshness and managed connector replication.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'streaming.tables',\n 'streaming.freshness',\n 'cdc.correctness',\n 'lakeflow-connect.replication',\n ],\n checks: () => [restrictedPrincipalCheck(), advancedStreamingCdcCheck(), lakeflowConnectCheck()],\n requiredChecks: ['streaming-cdc', 'lakeflow-connect'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('streaming-pipeline', 'Streaming pipeline ID', 'DBX_TEST_STREAMING_PIPELINE_ID'),\n requirement('streaming-table', 'Streaming target table', 'DBX_TEST_STREAMING_TABLE'),\n requirement(\n 'connect-pipeline',\n 'Lakeflow Connect ingestion pipeline',\n 'DBX_TEST_CONNECT_PIPELINE_ID',\n ),\n requirement(\n 'streaming-assertion',\n 'Streaming freshness SQL',\n 'DBX_TEST_STREAMING_ASSERTION_SQL',\n ),\n requirement('cdc-assertion', 'CDC correctness SQL', 'DBX_TEST_CDC_ASSERTION_SQL'),\n requirement(\n 'connect-assertion',\n 'Lakeflow Connect replication SQL',\n 'DBX_TEST_CONNECT_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#advanced-streaming-cdc-and-lakeflow-connect`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; serverless Lakeflow pipeline AUTO CDC and query-based PostgreSQL foreign-catalog ingestion`,\n ],\n });\n}\n\nexport function createAiBiGenieTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'aibi-genie',\n name: 'AI/BI dashboards and Genie',\n description: 'Dashboard accessibility and authenticated Genie space/conversation behavior.',\n version: '0.2.0',\n maturity: 'live-gated',\n capabilities: ['aibi.dashboard', 'genie.space', 'genie.conversation'],\n checks: () => [restrictedPrincipalCheck(), aiBiDashboardCheck(), genieCheck()],\n requiredChecks: ['aibi-dashboard', 'genie'],\n requirements: [\n workspace,\n auth,\n requirement('dashboard', 'AI/BI dashboard ID', 'DBX_TEST_DASHBOARD_ID'),\n requirement('genie-space', 'Genie space ID', 'DBX_TEST_GENIE_SPACE_ID'),\n requirement(\n 'genie-question',\n 'Grounded Genie certification question',\n 'DBX_TEST_GENIE_QUESTION',\n ),\n ],\n docsUrl: `${DOCS}#aibi-dashboards-and-genie`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; published AI/BI dashboard revision and Genie conversation start`,\n ],\n });\n}\n\nexport function createMlflowLifecycleTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'mlflow-lifecycle',\n name: 'MLflow and model lifecycle',\n description:\n 'MLflow experiments plus Unity Catalog registered-model and model-version lifecycle evidence.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'mlflow.experiments',\n 'models.unity-catalog',\n 'models.versions',\n 'models.lifecycle',\n ],\n checks: () => [restrictedPrincipalCheck(), mlflowLifecycleCheck()],\n requiredChecks: ['mlflow-lifecycle'],\n requirements: [\n workspace,\n auth,\n requirement('experiment', 'MLflow experiment ID', 'DBX_TEST_MLFLOW_EXPERIMENT_ID'),\n requirement(\n 'registered-model',\n 'Unity Catalog registered model',\n 'DBX_TEST_REGISTERED_MODEL',\n ),\n requirement('model-version', 'Registered model version', 'DBX_TEST_MODEL_VERSION'),\n ],\n docsUrl: `${DOCS}#mlflow-and-model-lifecycle`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; MLflow experiment and configured Unity Catalog model version`,\n ],\n });\n}\n\nexport function createFeatureEngineeringTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'feature-engineering-serving',\n name: 'Feature engineering and serving',\n description:\n 'Unity Catalog feature tables, online materialization state and freshness assertions.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'features.tables',\n 'features.online-tables',\n 'features.freshness',\n 'features.serving',\n ],\n checks: () => [restrictedPrincipalCheck(), featureEngineeringServingCheck()],\n requiredChecks: ['feature-engineering'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('feature-table', 'Unity Catalog feature table', 'DBX_TEST_FEATURE_TABLE'),\n requirement(\n 'online-materialization',\n 'Databricks Online Table or Synced Table pipeline',\n 'DBX_TEST_ONLINE_TABLE',\n 'DBX_TEST_FEATURE_SERVING_PIPELINE_ID',\n ),\n requirement(\n 'feature-assertion',\n 'Feature freshness/correctness SQL',\n 'DBX_TEST_FEATURE_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#feature-engineering-and-serving`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Delta feature table, PostgreSQL-backed Synced Table, and SQL freshness`,\n ],\n });\n}\n\nexport function createModelServingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'model-serving-gateway',\n name: 'Model Serving and AI Gateway',\n description: 'Serving readiness, inference behavior and optional AI Gateway policy presence.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'model-serving.readiness',\n 'model-serving.inference',\n 'ai-gateway.configuration',\n ],\n checks: () => [restrictedPrincipalCheck(), modelServingCheck()],\n requiredChecks: ['model-serving'],\n requirements: [\n workspace,\n auth,\n requirement('serving-endpoint', 'Model Serving endpoint name', 'DBX_TEST_SERVING_ENDPOINT'),\n requirement(\n 'serving-request',\n 'Safe inference request JSON',\n 'DBX_TEST_SERVING_REQUEST_JSON',\n ),\n requirement(\n 'ai-gateway',\n 'AI Gateway enforcement flag set to 1',\n 'DBX_TEST_AI_GATEWAY_REQUIRED',\n ),\n ],\n docsUrl: `${DOCS}#model-serving-and-ai-gateway`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; custom-model inference and AI Gateway inference-table configuration`,\n ],\n });\n}\n\nexport function createVectorRagAgentsTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'vector-rag-agents',\n name: 'Vector Search, RAG and agents',\n description:\n 'Vector endpoint/index readiness, retrieval behavior and agent endpoint inference.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'vector-search.endpoint',\n 'vector-search.index',\n 'rag.retrieval',\n 'agents.serving',\n ],\n checks: () => [restrictedPrincipalCheck(), vectorSearchCheck(), ragAgentCheck()],\n requiredChecks: ['vector-search', 'rag-agent'],\n requirements: [\n workspace,\n auth,\n requirement('vector-endpoint', 'Vector Search endpoint', 'DBX_TEST_VECTOR_ENDPOINT'),\n requirement('vector-index', 'Vector Search index', 'DBX_TEST_VECTOR_INDEX'),\n requirement('vector-query', 'Vector retrieval request JSON', 'DBX_TEST_VECTOR_QUERY_JSON'),\n requirement('agent-endpoint', 'Agent serving endpoint', 'DBX_TEST_AGENT_ENDPOINT'),\n requirement('agent-request', 'Safe agent request JSON', 'DBX_TEST_AGENT_REQUEST_JSON'),\n ],\n docsUrl: `${DOCS}#vector-search-rag-and-agents`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Delta Sync vector retrieval and custom PyFunc agent invocation`,\n ],\n });\n}\n\nexport function createFederationSharingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'federation-sharing-cleanrooms',\n name: 'Federation, Delta Sharing and Clean Rooms',\n description:\n 'Federated connection, data-plane query, Delta Share and Clean Room governance access.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'federation.connections',\n 'federation.query',\n 'delta-sharing.shares',\n 'clean-rooms.access',\n ],\n checks: () => [restrictedPrincipalCheck(), federationSharingCleanRoomsCheck()],\n requiredChecks: ['federation-sharing-cleanrooms'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('connection', 'Lakehouse Federation connection', 'DBX_TEST_CONNECTION'),\n requirement('share', 'Delta Sharing share', 'DBX_TEST_SHARE'),\n requirement('clean-room', 'Clean Room name', 'DBX_TEST_CLEAN_ROOM'),\n requirement(\n 'federation-assertion',\n 'Federated data-plane SQL',\n 'DBX_TEST_FEDERATION_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#federation-delta-sharing-and-clean-rooms`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; managed PostgreSQL federation, Delta Sharing table, and two-metastore Clean Room`,\n ],\n });\n}\n\nexport function createSecurityCostDrTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'security-cost-dr',\n name: 'Networking, security posture, cost and regional DR',\n description:\n 'IP controls, compute policy, cost guardrail and authenticated secondary-region readiness.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'network.ip-access',\n 'security.compute-policy',\n 'cost.system-tables',\n 'dr.secondary-region',\n ],\n checks: () => [restrictedPrincipalCheck(), securityPostureCostCheck(), regionalDrCheck()],\n requiredChecks: ['security-cost', 'regional-dr'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'ip-access-list',\n 'Enabled workspace IP access list',\n 'DBX_TEST_IP_ACCESS_LIST_ID',\n ),\n requirement('cluster-policy', 'Compute policy ID', 'DBX_TEST_CLUSTER_POLICY_ID'),\n requirement('cost-assertion', 'Boolean SQL cost guardrail', 'DBX_TEST_COST_ASSERTION_SQL'),\n requirement('dr-workspace', 'Secondary workspace host', 'DBX_TEST_DR_HOST'),\n requirement('dr-warehouse', 'Running secondary-region warehouse', 'DBX_TEST_DR_WAREHOUSE_ID'),\n requirement('dr-assertion', 'Secondary-region workload SQL', 'DBX_TEST_DR_ASSERTION_SQL'),\n ],\n docsUrl: `${DOCS}#networking-security-cost-and-regional-dr`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; TEST-NET block list, bounded compute policy, billing system-table guardrail, and West US 3 serverless DR warehouse`,\n ],\n });\n}\n\nexport function createAdvancedTargetPacks(): readonly TargetPack[] {\n return [\n createAdvancedStreamingTargetPack(),\n createAiBiGenieTargetPack(),\n createMlflowLifecycleTargetPack(),\n createFeatureEngineeringTargetPack(),\n createModelServingTargetPack(),\n createVectorRagAgentsTargetPack(),\n createFederationSharingTargetPack(),\n createSecurityCostDrTargetPack(),\n ];\n}\n","import { createAdvancedTargetPacks } from './advanced-target-packs.js';\nimport { createFoundationTargetPacks } from './foundation-packs.js';\nimport { createLakeflowJobsTargetPack } from './jobs-target-pack.js';\nimport type { TargetPack } from './target-packs.js';\n\nexport function createBuiltinTargetPacks(): readonly TargetPack[] {\n return [\n ...createFoundationTargetPacks(),\n createLakeflowJobsTargetPack(),\n ...createAdvancedTargetPacks(),\n ];\n}\n\nexport const builtinTargetPacks = createBuiltinTargetPacks();\n"]}
1
+ {"version":3,"sources":["../src/fixtures.ts","../src/duckdb-context.ts","../src/workspace-client.ts","../src/workspace-context.ts","../src/context.ts","../src/index.ts","../src/golden.ts","../src/assert.ts","../src/mock-client.ts","../src/live-suite.ts","../src/pollers.ts","../src/live-checks.ts","../src/lakebase-checks.ts","../src/lakebase-branch.ts","../src/databricks-http.ts","../src/platform-checks.ts","../src/volume-checks.ts","../src/autoloader-checks.ts","../src/resilience-checks.ts","../src/target-packs.ts","../src/foundation-packs.ts","../src/jobs-orchestration.ts","../src/jobs-certification-check.ts","../src/jobs-target-pack.ts","../src/next-workload-checks.ts","../src/next-target-packs.ts","../src/advanced-workload-checks.ts","../src/advanced-target-packs.ts","../src/builtin-packs.ts"],"names":["columns","rows","resolve","token","readFile","createDuckDbContext","createWorkspaceContext","dirname","required","warehouse","path","mkdir","writeFile","LakebaseDatabaseProvider","exchangeLakebaseCredential","delay","missing","randomUUID","basename","randomBytes","requirement","adapter","DOCS","requireEnv","AZURE_M2M_SCOPE","workspace","auth"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Declarative, engine-agnostic table seeds. The same fixture applies to a\n * local DuckDB table or a scratch Unity Catalog schema — column DDL uses the\n * portable subset (VARCHAR/STRING, BIGINT, DOUBLE, TIMESTAMP, BOOLEAN).\n */\nexport interface TableFixture {\n table: string;\n /**\n * Column DDL, e.g. `subject_id STRING, value DOUBLE, \"at\" TIMESTAMP`.\n * Optional when the table already exists in the target context.\n */\n schema?: string;\n /** Row tuples in column order, or row objects keyed by column name. */\n rows?: readonly (readonly unknown[] | Record<string, unknown>)[];\n /** Path to an NDJSON file of row objects (one JSON object per line). */\n ndjsonFile?: string;\n}\n\nexport interface FixtureColumn {\n name: string;\n type: string;\n}\n\n/** Parse `name TYPE, name TYPE(args), \"quoted\" TYPE` column DDL into columns. */\nexport function parseFixtureColumns(schema: string): FixtureColumn[] {\n const columns: FixtureColumn[] = [];\n let depth = 0;\n let current = '';\n const parts: string[] = [];\n for (const ch of schema) {\n if (ch === '(') depth++;\n if (ch === ')') depth--;\n if (ch === ',' && depth === 0) {\n parts.push(current);\n current = '';\n } else {\n current += ch;\n }\n }\n if (current.trim()) parts.push(current);\n for (const part of parts) {\n const trimmed = part.trim();\n const match = trimmed.match(/^(\"([^\"]+)\"|`([^`]+)`|(\\w+))\\s+(.+)$/s);\n if (!match) throw new Error(`Unparseable fixture column: '${trimmed}'`);\n columns.push({\n name: match[2] ?? match[3] ?? match[4] ?? '',\n type: (match[5] ?? '').trim(),\n });\n }\n if (columns.length === 0) throw new Error('Fixture schema declared no columns');\n return columns;\n}\n\n/** Resolve fixture rows (inline tuples/objects or NDJSON file) into tuples in `columns` order. */\nexport async function resolveFixtureRows(\n fixture: TableFixture,\n columns: readonly FixtureColumn[],\n): Promise<unknown[][]> {\n const raw: (readonly unknown[] | Record<string, unknown>)[] = [...(fixture.rows ?? [])];\n if (fixture.ndjsonFile) {\n const fs = await import('node:fs/promises');\n const text = await fs.readFile(fixture.ndjsonFile, 'utf8');\n for (const line of text.split('\\n')) {\n if (line.trim().length === 0) continue;\n raw.push(JSON.parse(line) as Record<string, unknown>);\n }\n }\n return raw.map((row) => {\n if (Array.isArray(row)) {\n if (row.length !== columns.length) {\n throw new Error(\n `Fixture row for ${fixture.table} has ${row.length} values, expected ${columns.length}`,\n );\n }\n return [...row];\n }\n const record = row as Record<string, unknown>;\n return columns.map((c) => (c.name in record ? record[c.name] : null));\n });\n}\n","import type { ExecutionContext } from './context.js';\nimport { type TableFixture, parseFixtureColumns, resolveFixtureRows } from './fixtures.js';\n\nexport interface DuckDbContextOptions {\n /** Database file path; ':memory:' (default) for a throwaway in-process db. */\n path?: string;\n /** Optional schema to create + qualify tables with. */\n schema?: string;\n /** Injectable for tests of this module itself. */\n connectionFactory?: (path: string) => Promise<DuckDbConnectionLike>;\n}\n\n/** Structural slice of the lazily-imported @duckdb/node-api connection. */\nexport interface DuckDbConnectionLike {\n run(sql: string, values?: unknown[]): Promise<unknown>;\n runAndReadAll(\n sql: string,\n values?: unknown[],\n ): Promise<{ getRowObjects(): Record<string, unknown>[] }>;\n closeSync(): void;\n}\n\n/**\n * Hermetic local execution context on DuckDB — the `local` profile of the\n * testing pyramid. No workspace, no credentials, sub-second.\n */\nexport async function createDuckDbContext(\n options: DuckDbContextOptions = {},\n): Promise<ExecutionContext> {\n const factory = options.connectionFactory ?? defaultConnectionFactory;\n const conn = await factory(options.path ?? ':memory:');\n const schema = options.schema;\n if (schema) await conn.run(`CREATE SCHEMA IF NOT EXISTS ${schema}`);\n const qual = (table: string) => (schema ? `${schema}.${table}` : table);\n\n return {\n profile: 'local',\n qual,\n async exec(sql, params) {\n await conn.run(sql, params ? [...params] : undefined);\n },\n async query(sql, params) {\n const reader = await conn.runAndReadAll(sql, params ? [...params] : undefined);\n return reader.getRowObjects().map(normalizeRow);\n },\n async loadFixture(fixture: TableFixture) {\n if (fixture.schema) {\n const columns = parseFixtureColumns(fixture.schema);\n const ddl = columns.map((c) => `\"${c.name}\" ${portableType(c.type)}`).join(', ');\n await conn.run(`CREATE TABLE IF NOT EXISTS ${qual(fixture.table)} (${ddl})`);\n const rows = await resolveFixtureRows(fixture, columns);\n for (const row of rows) {\n const casts = columns\n .map((c) => (isTimestamp(c.type) ? 'CAST(? AS TIMESTAMP)' : '?'))\n .join(', ');\n await conn.run(`INSERT INTO ${qual(fixture.table)} VALUES (${casts})`, row);\n }\n return;\n }\n // Table pre-exists: infer column order from the catalog.\n const described = await conn.runAndReadAll(`DESCRIBE ${qual(fixture.table)}`);\n const columns = described\n .getRowObjects()\n .map((r) => ({ name: String(r.column_name), type: String(r.column_type) }));\n const rows = await resolveFixtureRows(fixture, columns);\n for (const row of rows) {\n const casts = columns\n .map((c) => (isTimestamp(c.type) ? 'CAST(? AS TIMESTAMP)' : '?'))\n .join(', ');\n await conn.run(`INSERT INTO ${qual(fixture.table)} VALUES (${casts})`, row);\n }\n },\n async close() {\n conn.closeSync();\n },\n };\n}\n\n/** Databricks types → DuckDB types for the portable fixture subset. */\nfunction portableType(type: string): string {\n return type.replace(/\\bSTRING\\b/gi, 'VARCHAR');\n}\n\nfunction isTimestamp(type: string): boolean {\n return /TIMESTAMP/i.test(type);\n}\n\n/**\n * Normalize DuckDB values to plain JSON-ish values so assertions and golden\n * files are engine-portable: bigint→number, TIMESTAMP→`YYYY-MM-DD HH:MM:SS`\n * (UTC, microseconds trimmed), DECIMAL→number.\n */\nexport function normalizeRow(row: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(row)) {\n out[key] = normalizeValue(value);\n }\n return out;\n}\n\nfunction normalizeValue(value: unknown): unknown {\n if (typeof value === 'bigint') {\n if (value > BigInt(Number.MAX_SAFE_INTEGER) || value < BigInt(-Number.MAX_SAFE_INTEGER)) {\n return value.toString();\n }\n return Number(value);\n }\n if (value !== null && typeof value === 'object') {\n const v = value as { micros?: bigint; width?: number; scale?: number; value?: bigint };\n if (typeof v.micros === 'bigint') {\n // DuckDBTimestampValue — micros since epoch, UTC.\n const millis = Number(v.micros / 1000n);\n return new Date(millis)\n .toISOString()\n .replace('T', ' ')\n .replace(/\\.\\d+Z$/, '');\n }\n if (typeof v.scale === 'number' && typeof v.value === 'bigint') {\n // DuckDBDecimalValue.\n return Number(v.value) / 10 ** v.scale;\n }\n return String(value);\n }\n return value;\n}\n\nasync function defaultConnectionFactory(path: string): Promise<DuckDbConnectionLike> {\n const moduleName = '@duckdb/node-api';\n let mod: { DuckDBInstance: { create(path: string): Promise<{ connect(): Promise<unknown> }> } };\n try {\n mod = (await import(moduleName)) as typeof mod;\n } catch {\n throw new Error(\n 'createDuckDbContext requires the optional peer @duckdb/node-api — run: pnpm add -D @duckdb/node-api',\n );\n }\n const instance = await mod.DuckDBInstance.create(path);\n return (await instance.connect()) as DuckDbConnectionLike;\n}\n","/** Minimal request boundary used by the live Databricks certification suite. */\nexport interface WorkspaceClientLike {\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: WorkspaceRequestOptions,\n ): Promise<T>;\n}\n\nexport interface WorkspaceClientOptions {\n host: string;\n token: string | (() => string | Promise<string>);\n fetchImpl?: typeof fetch;\n maxRetries?: number;\n retryBaseDelayMs?: number;\n signal?: AbortSignal;\n}\n\nexport interface WorkspaceRequestOptions {\n retry?: 'safe' | 'always' | 'never';\n idempotencyKey?: string;\n maxRetries?: number;\n}\n\nexport interface WorkspaceWaitOptions {\n pollIntervalMs?: number;\n timeoutMs?: number;\n signal?: AbortSignal;\n}\n\n/**\n * Testkit-owned REST boundary for workspace certification endpoints.\n *\n * Harness 4 removed its generic public REST client in favor of generated,\n * capability-specific Databricks SDK clients. The testkit intentionally keeps\n * this narrow injectable transport because it certifies APIs across several\n * services and because its mock client implements the same two-method shape.\n */\nexport class WorkspaceRestClient implements WorkspaceClientLike {\n private readonly host: string;\n private readonly token: WorkspaceClientOptions['token'];\n private readonly fetchImpl: typeof fetch;\n private readonly maxRetries: number;\n private readonly retryBaseDelayMs: number;\n private readonly signal: AbortSignal | undefined;\n\n constructor(options: WorkspaceClientOptions) {\n this.host = workspaceOrigin(options.host);\n this.token = options.token;\n this.fetchImpl = options.fetchImpl ?? fetch;\n this.maxRetries = options.maxRetries ?? 3;\n this.retryBaseDelayMs = options.retryBaseDelayMs ?? 500;\n this.signal = options.signal;\n }\n\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T> {\n return this.request<T>('GET', path, undefined, query);\n }\n\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: WorkspaceRequestOptions,\n ): Promise<T> {\n return this.request<T>('POST', path, body, query, options);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n query: Record<string, string | number | boolean | undefined> = {},\n options: WorkspaceRequestOptions = {},\n ): Promise<T> {\n const url = new URL(`${this.host}${path.startsWith('/') ? path : `/${path}`}`);\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) url.searchParams.set(key, String(value));\n }\n const bodyHasIdempotencyToken =\n typeof body === 'object' &&\n body !== null &&\n typeof (body as Record<string, unknown>).idempotency_token === 'string';\n const canRetry =\n options.retry === 'always' ||\n (options.retry !== 'never' &&\n (options.retry === 'safe' ||\n method === 'GET' ||\n Boolean(options.idempotencyKey) ||\n bodyHasIdempotencyToken));\n const maxRetries = canRetry ? (options.maxRetries ?? this.maxRetries) : 0;\n\n for (let attempt = 0; ; attempt += 1) {\n const token = typeof this.token === 'function' ? await this.token() : this.token;\n let response: Response;\n try {\n response = await this.fetchImpl(url, {\n method,\n headers: {\n authorization: `Bearer ${token}`,\n ...(body !== undefined ? { 'content-type': 'application/json' } : {}),\n ...(options.idempotencyKey ? { 'idempotency-key': options.idempotencyKey } : {}),\n },\n ...(body !== undefined ? { body: JSON.stringify(body) } : {}),\n ...(this.signal ? { signal: this.signal } : {}),\n });\n } catch (error) {\n if (this.signal?.aborted || attempt >= maxRetries) throw error;\n await delay(this.retryBaseDelayMs * 2 ** attempt, this.signal);\n continue;\n }\n\n if (response.ok) {\n if (response.status === 204) return undefined as T;\n return (await response.json()) as T;\n }\n if (isRetryableStatus(response.status) && attempt < maxRetries) {\n await delay(retryDelayMs(response, attempt, this.retryBaseDelayMs), this.signal);\n continue;\n }\n\n const message = (await response.text()).split(token).join('[REDACTED]');\n throw new Error(\n `databricks: ${response.status} ${response.statusText}: ${message.slice(0, 2000)}`,\n );\n }\n }\n}\n\nexport async function waitForDatabricksRun(\n client: WorkspaceClientLike,\n runId: number,\n options: WorkspaceWaitOptions = {},\n): Promise<Record<string, unknown>> {\n const deadline = Date.now() + (options.timeoutMs ?? 600_000);\n const interval = options.pollIntervalMs ?? 5_000;\n let current = await client.get<Record<string, unknown>>('/api/2.2/jobs/runs/get', {\n run_id: runId,\n });\n while (!isTerminalRun(current) && Date.now() < deadline) {\n await delay(interval, options.signal);\n current = await client.get<Record<string, unknown>>('/api/2.2/jobs/runs/get', {\n run_id: runId,\n });\n }\n return current;\n}\n\nexport async function waitForDatabricksStatement(\n client: WorkspaceClientLike,\n statementId: string,\n options: WorkspaceWaitOptions = {},\n): Promise<Record<string, unknown>> {\n const deadline = Date.now() + (options.timeoutMs ?? 300_000);\n const interval = options.pollIntervalMs ?? 2_000;\n const path = `/api/2.0/sql/statements/${encodeURIComponent(statementId)}`;\n let current = await client.get<Record<string, unknown>>(path);\n while (!isTerminalStatement(current) && Date.now() < deadline) {\n await delay(interval, options.signal);\n current = await client.get<Record<string, unknown>>(path);\n }\n return current;\n}\n\nfunction workspaceOrigin(host: string): string {\n const value = host.trim();\n if (!value) throw new Error('databricks: workspace host cannot be empty');\n const url = new URL(value.includes('://') ? value : `https://${value}`);\n if (url.username || url.password) {\n throw new Error('databricks: workspace host must not contain credentials');\n }\n return url.origin;\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status === 499 || (status >= 500 && status <= 599);\n}\n\nfunction retryDelayMs(response: Response, attempt: number, base: number): number {\n const retryAfterHeader = response.headers.get('retry-after');\n const retryAfter = retryAfterHeader === null ? Number.NaN : Number(retryAfterHeader);\n return Number.isFinite(retryAfter) && retryAfter >= 0 ? retryAfter * 1000 : base * 2 ** attempt;\n}\n\nfunction isTerminalRun(run: Record<string, unknown>): boolean {\n const state = run.state as { life_cycle_state?: string } | undefined;\n return ['TERMINATED', 'SKIPPED', 'INTERNAL_ERROR'].includes(state?.life_cycle_state ?? '');\n}\n\nfunction isTerminalStatement(statement: Record<string, unknown>): boolean {\n const status = statement.status as { state?: string } | undefined;\n return ['SUCCEEDED', 'FAILED', 'CANCELED', 'CLOSED'].includes(status?.state ?? '');\n}\n\nfunction delay(ms: number, signal?: AbortSignal): Promise<void> {\n if (!signal) return new Promise((resolve) => setTimeout(resolve, ms));\n if (signal.aborted) {\n return Promise.reject(\n signal.reason ?? new DOMException('The operation was aborted', 'AbortError'),\n );\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(done, ms);\n signal.addEventListener('abort', aborted, { once: true });\n function done() {\n signal?.removeEventListener('abort', aborted);\n resolve();\n }\n function aborted() {\n clearTimeout(timer);\n reject(signal?.reason ?? new DOMException('The operation was aborted', 'AbortError'));\n }\n });\n}\n","import { readFile } from 'node:fs/promises';\nimport type { ExecutionContext } from './context.js';\nimport { type TableFixture, parseFixtureColumns, resolveFixtureRows } from './fixtures.js';\nimport {\n type WorkspaceClientLike,\n WorkspaceRestClient,\n waitForDatabricksStatement,\n} from './workspace-client.js';\nexport type { WorkspaceClientLike } from './workspace-client.js';\n\nexport interface WorkspaceContextOptions {\n env?: Record<string, string | undefined>;\n /** Schema within the catalog used by qual(); defaults to DBX_TEST_SCHEMA. */\n schema?: string;\n /** Injectable client for hermetic tests; defaults to the testkit workspace client. */\n client?: WorkspaceClientLike;\n /** Injectable fetch for the OAuth M2M exchange. */\n fetchImpl?: typeof fetch;\n pollIntervalMs?: number;\n timeoutMs?: number;\n /** Drop tables seeded by this context on close. Defaults to true. */\n cleanupFixtures?: boolean;\n /** Observe submitted statements for redacted failure evidence. */\n onStatement?: (statement: { sql: string; statementId?: string }) => void;\n}\n\ninterface StatementResponse {\n statement_id?: string;\n status?: { state?: string; error?: { message?: string } };\n manifest?: { schema?: { columns?: { name: string; type_name?: string; position?: number }[] } };\n result?: { data_array?: (string | null)[][] };\n}\n\n/**\n * Live execution context on a Databricks SQL warehouse via the SQL Statement\n * Execution API (/api/2.0/sql/statements). The Statement Execution API takes\n * NAMED parameter markers, so positional `?` params are rewritten to\n * `:p1..:pn` — the ExecutionContext surface stays identical to the local\n * profile.\n */\nexport async function createWorkspaceContext(\n options: WorkspaceContextOptions = {},\n): Promise<ExecutionContext> {\n const env = options.env ?? process.env;\n const warehouseId = resolveWarehouseId(env);\n const catalog = env.DBX_TEST_CATALOG;\n const schema = options.schema ?? env.DBX_TEST_SCHEMA;\n const client = options.client ?? createClientFromEnv(env, options.fetchImpl);\n const fixtureTables = new Set<string>();\n\n const qual = (table: string) =>\n [catalog, schema, table].filter((part): part is string => Boolean(part)).join('.');\n\n async function run(sql: string, params?: readonly unknown[]): Promise<StatementResponse> {\n const { statement, parameters } = toNamedParameters(sql, params ?? []);\n const submitted = await client.post<StatementResponse>('/api/2.0/sql/statements', {\n statement,\n warehouse_id: warehouseId,\n ...(catalog ? { catalog } : {}),\n ...(schema ? { schema } : {}),\n ...(parameters.length > 0 ? { parameters } : {}),\n wait_timeout: '30s',\n on_wait_timeout: 'CONTINUE',\n });\n options.onStatement?.({\n sql,\n ...(submitted.statement_id ? { statementId: submitted.statement_id } : {}),\n });\n const state = submitted.status?.state;\n let terminal = submitted;\n if (state !== 'SUCCEEDED' && state !== 'FAILED' && state !== 'CANCELED' && state !== 'CLOSED') {\n terminal = (await waitForDatabricksStatement(client, submitted.statement_id ?? '', {\n pollIntervalMs: options.pollIntervalMs,\n timeoutMs: options.timeoutMs,\n })) as StatementResponse;\n }\n if (terminal.status?.state !== 'SUCCEEDED') {\n throw new Error(\n `Databricks statement ${terminal.status?.state ?? 'UNKNOWN'}: ${\n terminal.status?.error?.message ?? sql.slice(0, 200)\n }`,\n );\n }\n return terminal;\n }\n\n return {\n profile: 'live',\n qual,\n async exec(sql, params) {\n await run(sql, params);\n },\n async query(sql, params) {\n const response = await run(sql, params);\n return parseStatementRows(response);\n },\n async loadFixture(fixture: TableFixture) {\n if (!schema) {\n throw new Error(\n 'Live fixtures require DBX_TEST_SCHEMA (or a schema option) so tests cannot replace unscoped tables',\n );\n }\n if (!fixture.schema) {\n throw new Error(\n `Live fixtures require explicit column DDL for ${fixture.table} (schema inference is local-only)`,\n );\n }\n const columns = parseFixtureColumns(fixture.schema);\n const ddl = columns.map((c) => `\\`${c.name}\\` ${c.type}`).join(', ');\n const target = qual(fixture.table);\n await run(`CREATE OR REPLACE TABLE ${target} (${ddl}) USING DELTA`);\n fixtureTables.add(target);\n const rows = await resolveFixtureRows(fixture, columns);\n for (const row of rows) {\n const placeholders = columns\n .map((c) => (/TIMESTAMP/i.test(c.type) ? 'CAST(? AS TIMESTAMP)' : '?'))\n .join(', ');\n await run(`INSERT INTO ${qual(fixture.table)} VALUES (${placeholders})`, row);\n }\n },\n async close() {\n if (options.cleanupFixtures !== false && env.DBX_TEST_KEEP_FIXTURES !== '1') {\n for (const table of [...fixtureTables].reverse()) {\n await run(`DROP TABLE IF EXISTS ${table}`);\n }\n }\n fixtureTables.clear();\n },\n };\n}\n\n/** Rewrite positional `?` markers to the named `:pN` markers the Statement Execution API requires. */\nexport function toNamedParameters(\n sql: string,\n params: readonly unknown[],\n): { statement: string; parameters: { name: string; value: string | null }[] } {\n let out = '';\n let index = 0;\n let quote: string | null = null;\n for (let i = 0; i < sql.length; i++) {\n const ch = sql[i] as string;\n if (quote) {\n out += ch;\n if (ch === quote) quote = null;\n continue;\n }\n if (ch === \"'\" || ch === '\"' || ch === '`') {\n quote = ch;\n out += ch;\n continue;\n }\n if (ch === '?') {\n index += 1;\n out += `:p${index}`;\n continue;\n }\n out += ch;\n }\n if (index !== params.length) {\n throw new Error(`SQL has ${index} placeholders but ${params.length} params were provided`);\n }\n return {\n statement: out,\n parameters: params.map((value, i) => ({\n name: `p${i + 1}`,\n value: value === null || value === undefined ? null : String(value),\n })),\n };\n}\n\n/** Map a terminal statement response to normalized row objects. */\nexport function parseStatementRows(response: StatementResponse): Record<string, unknown>[] {\n const columns = [...(response.manifest?.schema?.columns ?? [])].sort(\n (a, b) => (a.position ?? 0) - (b.position ?? 0),\n );\n const data = response.result?.data_array ?? [];\n return data.map((tuple) => {\n const row: Record<string, unknown> = {};\n columns.forEach((column, i) => {\n row[column.name] = convertValue(tuple[i] ?? null, column.type_name ?? 'STRING');\n });\n return row;\n });\n}\n\nconst NUMERIC_TYPES = /^(INT|LONG|SHORT|BYTE|FLOAT|DOUBLE|DECIMAL)/i;\n\nfunction convertValue(value: string | null, typeName: string): unknown {\n if (value === null) return null;\n if (NUMERIC_TYPES.test(typeName)) return Number(value);\n if (/^BOOLEAN/i.test(typeName)) return value === 'true';\n return value;\n}\n\nfunction resolveWarehouseId(env: Record<string, string | undefined>): string {\n if (env.DATABRICKS_WAREHOUSE_ID) return env.DATABRICKS_WAREHOUSE_ID;\n const httpPath = env.DATABRICKS_HTTP_PATH;\n const match = httpPath?.match(/\\/warehouses\\/([\\w-]+)/);\n if (match?.[1]) return match[1];\n throw new Error(\n 'Live profile requires DATABRICKS_WAREHOUSE_ID or DATABRICKS_HTTP_PATH (/sql/1.0/warehouses/<id>)',\n );\n}\n\n/**\n * Auth precedence (ADR-0006): DATABRICKS_BEARER (pre-minted, CI) →\n * explicit env/file OIDC federation → DATABRICKS_CLIENT_ID/SECRET (OAuth\n * M2M) → DATABRICKS_TOKEN (legacy PAT).\n */\nexport function createClientFromEnv(\n env: Record<string, string | undefined>,\n fetchImpl?: typeof fetch,\n): WorkspaceClientLike {\n const host = env.DATABRICKS_HOST;\n if (!host) throw new Error('Live profile requires DATABRICKS_HOST');\n return new WorkspaceRestClient({\n host,\n token: resolveTokenProvider(host, env, fetchImpl),\n ...(fetchImpl ? { fetchImpl } : {}),\n });\n}\n\nexport function resolveTokenProvider(\n host: string,\n env: Record<string, string | undefined>,\n fetchImpl: typeof fetch = fetch,\n): string | (() => Promise<string>) {\n if (env.DATABRICKS_BEARER) return env.DATABRICKS_BEARER;\n const authType = env.DATABRICKS_AUTH_TYPE;\n if (authType === 'env-oidc' || authType === 'file-oidc') {\n let cached: { token: string; expiresAt: number } | null = null;\n return async () => {\n if (cached && Date.now() < cached.expiresAt) return cached.token;\n const subjectToken = await resolveFederatedSubjectToken(authType, env);\n const params = new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:token-exchange',\n subject_token: subjectToken,\n subject_token_type: 'urn:ietf:params:oauth:token-type:jwt',\n scope: env.DATABRICKS_SCOPE ?? 'all-apis',\n });\n if (env.DATABRICKS_CLIENT_ID) params.set('client_id', env.DATABRICKS_CLIENT_ID);\n const response = await fetchImpl(`${host.replace(/\\/$/, '')}/oidc/v1/token`, {\n method: 'POST',\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\n body: params.toString(),\n });\n if (!response.ok) {\n throw new Error(`OAuth federated token exchange failed: ${response.status}`);\n }\n const body = (await response.json()) as { access_token?: unknown; expires_in?: unknown };\n if (typeof body.access_token !== 'string' || !body.access_token) {\n throw new Error('OAuth federated token exchange returned no access_token');\n }\n const expiresIn = typeof body.expires_in === 'number' ? body.expires_in : 3600;\n cached = {\n token: body.access_token,\n expiresAt: Date.now() + Math.max(1, expiresIn - 300) * 1000,\n };\n return body.access_token;\n };\n }\n const clientId = env.DATABRICKS_CLIENT_ID;\n const clientSecret = env.DATABRICKS_CLIENT_SECRET;\n if (clientId && clientSecret) {\n let cached: { token: string; expiresAt: number } | null = null;\n return async () => {\n if (cached && Date.now() < cached.expiresAt) return cached.token;\n const response = await fetchImpl(`${host.replace(/\\/$/, '')}/oidc/v1/token`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n authorization: `Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString('base64')}`,\n },\n body: new URLSearchParams({\n grant_type: 'client_credentials',\n scope: env.DATABRICKS_SCOPE ?? 'all-apis',\n }).toString(),\n });\n if (!response.ok) {\n throw new Error(`OAuth M2M token exchange failed: ${response.status}`);\n }\n const body = (await response.json()) as { access_token: string; expires_in?: number };\n cached = {\n token: body.access_token,\n expiresAt: Date.now() + ((body.expires_in ?? 3600) - 300) * 1000,\n };\n return body.access_token;\n };\n }\n if (env.DATABRICKS_TOKEN) return env.DATABRICKS_TOKEN;\n throw new Error(\n 'Live profile requires DATABRICKS_BEARER, env/file OIDC federation, DATABRICKS_CLIENT_ID/SECRET, or DATABRICKS_TOKEN',\n );\n}\n\nasync function resolveFederatedSubjectToken(\n authType: 'env-oidc' | 'file-oidc',\n env: Record<string, string | undefined>,\n): Promise<string> {\n if (authType === 'env-oidc') {\n const tokenEnv = env.DATABRICKS_OIDC_TOKEN_ENV ?? 'DATABRICKS_OIDC_TOKEN';\n const token = env[tokenEnv]?.trim();\n if (!token) throw new Error(`Federated OIDC token environment variable ${tokenEnv} is empty`);\n return token;\n }\n const path = env.DATABRICKS_OIDC_TOKEN_FILEPATH;\n if (!path) throw new Error('DATABRICKS_OIDC_TOKEN_FILEPATH is required for file-oidc');\n const token = (await readFile(path, 'utf8')).trim();\n if (!token) throw new Error(`Federated OIDC token file ${path} is empty`);\n return token;\n}\n","import type { TableFixture } from './fixtures.js';\n\nexport type TestProfile = 'local' | 'live';\n\n/**\n * One SQL surface, two engines (ADR-0006). `local` executes on DuckDB\n * in-process; `live` executes on a Databricks SQL warehouse via the SQL\n * Statement Execution API. Params are positional `?` in both profiles — the\n * workspace context transparently rewrites them to the named markers the\n * Statement Execution API requires.\n */\nexport interface ExecutionContext {\n readonly profile: TestProfile;\n /** Execute a statement, discarding any result. */\n exec(sql: string, params?: readonly unknown[]): Promise<void>;\n /** Execute a query and return normalized row objects (bigint→number, timestamps→ISO). */\n query(sql: string, params?: readonly unknown[]): Promise<Record<string, unknown>[]>;\n /** Create + seed a table from a declarative fixture. */\n loadFixture(fixture: TableFixture): Promise<void>;\n /** Qualify a bare table name for this context (schema/catalog scoping). */\n qual(table: string): string;\n close(): Promise<void>;\n}\n\nexport function resolveProfile(env: Record<string, string | undefined> = process.env): TestProfile {\n const profile = env.DBX_TEST_PROFILE ?? 'local';\n if (profile !== 'local' && profile !== 'live') {\n throw new Error(`DBX_TEST_PROFILE must be 'local' or 'live', got '${profile}'`);\n }\n if (profile === 'live' && env.DBX_TEST_LIVE !== '1') {\n throw new Error(\n 'DBX_TEST_PROFILE=live requires DBX_TEST_LIVE=1 (live suites are always gated)',\n );\n }\n return profile;\n}\n\nexport interface CreateContextOptions {\n profile?: TestProfile;\n env?: Record<string, string | undefined>;\n /** local profile: schema to create + qualify tables with. live profile: schema within the catalog. */\n schema?: string;\n /** Live profile only: observe each submitted SQL statement. */\n onStatement?: (statement: { sql: string; statementId?: string }) => void;\n}\n\n/** Profile-dispatched factory. Lazy-imports each engine so the unused one stays out of the bundle. */\nexport async function createExecutionContext(\n options: CreateContextOptions = {},\n): Promise<ExecutionContext> {\n const env = options.env ?? process.env;\n const profile = options.profile ?? resolveProfile(env);\n if (profile === 'local') {\n const { createDuckDbContext } = await import('./duckdb-context.js');\n return createDuckDbContext({ schema: options.schema });\n }\n const { createWorkspaceContext } = await import('./workspace-context.js');\n return createWorkspaceContext({\n env,\n schema: options.schema,\n ...(options.onStatement ? { onStatement: options.onStatement } : {}),\n });\n}\n","export type { ExecutionContext, TestProfile, CreateContextOptions } from './context.js';\nexport { createExecutionContext, resolveProfile } from './context.js';\nexport type { TableFixture, FixtureColumn } from './fixtures.js';\nexport { parseFixtureColumns, resolveFixtureRows } from './fixtures.js';\nexport type { DuckDbContextOptions, DuckDbConnectionLike } from './duckdb-context.js';\nexport { createDuckDbContext, normalizeRow } from './duckdb-context.js';\nexport type { WorkspaceContextOptions, WorkspaceClientLike } from './workspace-context.js';\nexport {\n createWorkspaceContext,\n createClientFromEnv,\n resolveTokenProvider,\n toNamedParameters,\n parseStatementRows,\n} from './workspace-context.js';\nexport { expectTable, expectQueryToMatchGolden } from './assert.js';\nexport { compareToGolden } from './golden.js';\nexport type { MockDatabricksClient, RecordedCall } from './mock-client.js';\nexport { createMockDatabricksClient } from './mock-client.js';\nexport type {\n LiveCheck,\n LiveCheckContext,\n LiveCheckResult,\n LiveCheckStatus,\n LiveEvidence,\n LiveSuiteRuntime,\n LiveSuiteSpec,\n DefinedLiveSuite,\n TargetPackEvidenceMetadata,\n TargetPackMaturity,\n} from './live-suite.js';\nexport { defineLiveSuite, runLiveSuite, renderJUnit } from './live-suite.js';\nexport type { DeltaColumnContract } from './live-checks.js';\nexport {\n sqlRoundTripCheck,\n restrictedPrincipalCheck,\n assertDeltaContract,\n deltaContractCheck,\n unityCatalogAccessCheck,\n jobRunCheck,\n notebookSubmitCheck,\n dbtBuildCheck,\n pipelineRefreshCheck,\n customLiveCheck,\n} from './live-checks.js';\nexport type { LakebaseCheckOptions } from './lakebase-checks.js';\nexport {\n createLakebaseTestProvider,\n lakebaseCredentialCheck,\n lakebaseRoundTripCheck,\n} from './lakebase-checks.js';\nexport type {\n EphemeralLakebaseBranch,\n LakebaseBranchOptions,\n LakebaseControlClient,\n} from './lakebase-branch.js';\nexport {\n createEphemeralLakebaseBranch,\n deleteEphemeralLakebaseBranch,\n resolveLakebaseProject,\n toLakebaseBranchId,\n} from './lakebase-branch.js';\nexport type { AppHealthCheckOptions } from './platform-checks.js';\nexport { secretScopeCheck, appHealthCheck } from './platform-checks.js';\nexport type { VolumeIOCheckOptions } from './volume-checks.js';\nexport {\n deleteVolumeFile,\n ensureVolumeDirectory,\n normalizeVolumeRoot,\n uploadVolumeFile,\n volumeIOCheck,\n} from './volume-checks.js';\nexport type { AutoLoaderCheckOptions } from './autoloader-checks.js';\nexport { autoLoaderIngestionCheck } from './autoloader-checks.js';\nexport type { PollOptions } from './pollers.js';\nexport { waitForPipelineUpdate } from './pollers.js';\nexport {\n backupRestoreCheck,\n classicComputeCheck,\n failureRecoveryCheck,\n performanceBudgetCheck,\n rollbackCheck,\n secretRotationCheck,\n serverlessComputeCheck,\n} from './resilience-checks.js';\nexport type { SecretRotationCheckOptions } from './resilience-checks.js';\nexport type {\n DefinedTargetPackRun,\n RunTargetPackOptions,\n TargetPack,\n TargetPackDoctorCheck,\n TargetPackDoctorRequirement,\n TargetPackDoctorResult,\n TargetPackRequirement,\n TargetPackSpec,\n} from './target-packs.js';\nexport {\n createTargetPackRegistry,\n defineTargetPack,\n defineTargetPackRun,\n doctorTargetPack,\n runTargetPack,\n resolveRequiredChecks,\n} from './target-packs.js';\nexport {\n createAppsOperationalFoundationPack,\n createFoundationTargetPacks,\n createJobsCodeFoundationPack,\n createLakeflowFoundationPack,\n createSqlDeltaFoundationPack,\n createUnityStorageFoundationPack,\n foundationTargetPacks,\n} from './foundation-packs.js';\nexport type {\n ConditionJobTask,\n DatabricksJobTask,\n DbtJobTask,\n ForEachJobTask,\n JobsSubmitRequest,\n JobOrchestrationLiveSpec,\n JobOrchestrationRun,\n JobRepairOptions,\n JobRepairRunState,\n JobTaskBase,\n JobTaskDependency,\n JobTaskRunState,\n JobWaitOptions,\n NotebookJobTask,\n PipelineJobTask,\n PythonWheelJobTask,\n RunJobTask,\n SparkJarJobTask,\n SparkPythonJobTask,\n SparkSubmitJobTask,\n SqlJobTask,\n} from './jobs-orchestration.js';\nexport { jobsCertificationCheck } from './jobs-certification-check.js';\nexport {\n DatabricksJobsAdapter,\n jobsOrchestrationCheck,\n normalizeJobRun,\n parseJobOrchestrationLiveSpec,\n validateJobGraph,\n} from './jobs-orchestration.js';\nexport { createLakeflowJobsTargetPack } from './jobs-target-pack.js';\nexport {\n agentOrchestrationResponsesCheck,\n aiFunctionsBatchInferenceCheck,\n aiRuntimeTrainingCheck,\n declarativeBundlesCheck,\n lakebaseAutoscalingFeatureStoreCheck,\n lakehouseOptimizationCheck,\n marketplaceOpenSharingCheck,\n semanticAnalyticsCheck,\n} from './next-workload-checks.js';\nexport {\n createAgentOrchestrationTargetPack,\n createAiFunctionsBatchInferenceTargetPack,\n createAiRuntimeTrainingTargetPack,\n createDeclarativeBundlesTargetPack,\n createLakebaseAutoscalingFeatureStoreTargetPack,\n createLakehouseOptimizationTargetPack,\n createMarketplaceOpenSharingTargetPack,\n createNextTargetPacks,\n createSemanticAnalyticsTargetPack,\n} from './next-target-packs.js';\nexport type {\n DashboardResource,\n AgentServiceResource,\n GenieSpaceResource,\n PipelineResource,\n RegisteredModelResource,\n ServingEndpointResource,\n VectorSearchEndpointResource,\n VectorSearchIndexResource,\n} from './advanced-workload-checks.js';\nexport type { RegionalDrCheckOptions } from './advanced-workload-checks.js';\nexport {\n DatabricksAdvancedWorkloadsAdapter,\n agentServicesEnrollmentCheck,\n agentEvaluationPipelineCheck,\n advancedStreamingCdcCheck,\n aiBiDashboardCheck,\n dataQualityAppTelemetryCheck,\n evalJudgeModelServingCheck,\n featureEngineeringServingCheck,\n federationSharingCleanRoomsCheck,\n genieCheck,\n lakeflowConnectCheck,\n managedMcpAgentsCheck,\n mlflow3GenAiQualityCheck,\n mlflowLifecycleCheck,\n modelServingCheck,\n ragAgentCheck,\n regionalDrCheck,\n securityPostureCostCheck,\n vectorSearchCheck,\n} from './advanced-workload-checks.js';\nexport {\n createAgentServicesEnrollmentTargetPack,\n createAgentEvaluationPipelineTargetPack,\n createAdvancedStreamingTargetPack,\n createAdvancedTargetPacks,\n createAiBiGenieTargetPack,\n createDataQualityObservabilityTargetPack,\n createFeatureEngineeringTargetPack,\n createFederationSharingTargetPack,\n createMlflowLifecycleTargetPack,\n createMlflow3AgentQualityTargetPack,\n createManagedMcpAgentsTargetPack,\n createModelServingTargetPack,\n createSecurityCostDrTargetPack,\n createVectorRagAgentsTargetPack,\n} from './advanced-target-packs.js';\nexport { builtinTargetPacks, createBuiltinTargetPacks } from './builtin-packs.js';\nexport { waitForDatabricksRun, waitForDatabricksStatement } from './workspace-client.js';\nexport type { WorkspaceWaitOptions } from './workspace-client.js';\n","/**\n * Golden-result files: committed JSON snapshots of query results that every\n * engine and every refactor must reproduce exactly — the frozen-vector\n * pattern from @fabricorg/experiments-testkit generalized to warehouse rows.\n */\nexport async function compareToGolden(\n goldenPath: string,\n actual: readonly Record<string, unknown>[],\n label: string,\n env: Record<string, string | undefined> = process.env,\n): Promise<void> {\n const fs = await import('node:fs/promises');\n const serialized = `${JSON.stringify(actual, null, 2)}\\n`;\n if (env.DBX_TEST_UPDATE_GOLDEN === '1') {\n const { dirname } = await import('node:path');\n await fs.mkdir(dirname(goldenPath), { recursive: true });\n await fs.writeFile(goldenPath, serialized, 'utf8');\n return;\n }\n let expected: string;\n try {\n expected = await fs.readFile(goldenPath, 'utf8');\n } catch {\n throw new Error(\n `Golden file ${goldenPath} does not exist for ${label}. Run once with DBX_TEST_UPDATE_GOLDEN=1 to create it, then commit it.`,\n );\n }\n if (normalize(expected) !== normalize(serialized)) {\n throw new Error(\n `${label} diverges from golden ${goldenPath}.\\nExpected:\\n${expected}\\nActual:\\n${serialized}\\nIf the change is intentional, re-run with DBX_TEST_UPDATE_GOLDEN=1 and commit the diff.`,\n );\n }\n}\n\nfunction normalize(json: string): string {\n return JSON.stringify(JSON.parse(json));\n}\n","import type { ExecutionContext } from './context.js';\nimport { compareToGolden } from './golden.js';\n\n/**\n * Framework-free table assertions — they throw plain Errors so they work\n * under vitest, cucumber-js steps, or the live check runner alike.\n */\nexport function expectTable(ctx: ExecutionContext, table: string) {\n const target = ctx.qual(table);\n return {\n async toHaveRowCount(expected: number): Promise<void> {\n const rows = await ctx.query(`SELECT COUNT(*) AS n FROM ${target}`);\n const actual = Number(rows[0]?.n ?? Number.NaN);\n if (actual !== expected) {\n throw new Error(`Expected ${target} to have ${expected} rows, found ${actual}`);\n }\n },\n\n /** Every partial row must match at least one table row on its own keys. */\n async toContainRows(partials: readonly Record<string, unknown>[]): Promise<void> {\n const rows = await ctx.query(`SELECT * FROM ${target}`);\n for (const partial of partials) {\n const hit = rows.some((row) =>\n Object.entries(partial).every(([key, value]) => looselyEqual(row[key], value)),\n );\n if (!hit) {\n throw new Error(\n `Expected ${target} to contain a row matching ${JSON.stringify(partial)}; ` +\n `have ${rows.length} rows: ${JSON.stringify(rows.slice(0, 5))}${rows.length > 5 ? ' …' : ''}`,\n );\n }\n }\n },\n\n /**\n * Compare `SELECT * ORDER BY <orderBy>` against a committed golden JSON\n * file. Set DBX_TEST_UPDATE_GOLDEN=1 to (re)write the golden instead —\n * a reviewable, versioned event.\n */\n async toMatchGolden(goldenPath: string, options: { orderBy?: string } = {}): Promise<void> {\n const orderBy = options.orderBy ? ` ORDER BY ${options.orderBy}` : '';\n const rows = await ctx.query(`SELECT * FROM ${target}${orderBy}`);\n await compareToGolden(goldenPath, rows, `table ${target}`);\n },\n };\n}\n\n/** Compare query results (not a whole table) against a golden file. */\nexport async function expectQueryToMatchGolden(\n ctx: ExecutionContext,\n sql: string,\n params: readonly unknown[],\n goldenPath: string,\n): Promise<void> {\n const rows = await ctx.query(sql, params);\n await compareToGolden(goldenPath, rows, 'query');\n}\n\nfunction looselyEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a === 'number' && typeof b === 'number') return Math.abs(a - b) < 1e-9;\n // Timestamps normalize to 'YYYY-MM-DD HH:MM:SS'; allow ISO-style expectations.\n if (typeof a === 'string' && typeof b === 'string') {\n return (\n a.replace('T', ' ').replace(/(\\.\\d+)?Z?$/, '') ===\n b.replace('T', ' ').replace(/(\\.\\d+)?Z?$/, '')\n );\n }\n return false;\n}\n","/**\n * Framework-free fake of the Databricks REST client surface, for unit tests\n * of orchestration logic (submit → poll → terminal). Queue responses per\n * (method, path-prefix); every call is recorded for assertions. Works under\n * vitest without vi.fn so it is equally usable from cucumber-js worlds.\n */\nexport interface RecordedCall {\n method: 'GET' | 'POST' | 'DELETE';\n path: string;\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined>;\n}\n\nexport interface MockDatabricksClient {\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: unknown,\n ): Promise<T>;\n request<T>(\n method: 'GET' | 'POST' | 'DELETE',\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n options?: unknown,\n ): Promise<T>;\n /** Queue the next response for calls whose path starts with `pathPrefix`. FIFO per prefix. */\n queue(\n method: 'GET' | 'POST' | 'DELETE',\n pathPrefix: string,\n response: unknown,\n ): MockDatabricksClient;\n /** Queue an error for the next matching call. */\n queueError(\n method: 'GET' | 'POST' | 'DELETE',\n pathPrefix: string,\n error: Error,\n ): MockDatabricksClient;\n readonly calls: readonly RecordedCall[];\n callsTo(method: 'GET' | 'POST' | 'DELETE', pathPrefix: string): RecordedCall[];\n}\n\ntype Queued = { pathPrefix: string; response?: unknown; error?: Error };\n\nexport function createMockDatabricksClient(): MockDatabricksClient {\n const queues: Record<'GET' | 'POST' | 'DELETE', Queued[]> = { GET: [], POST: [], DELETE: [] };\n const calls: RecordedCall[] = [];\n\n function take(method: 'GET' | 'POST' | 'DELETE', path: string): Queued {\n const index = queues[method].findIndex((q) => path.startsWith(q.pathPrefix));\n if (index === -1) {\n throw new Error(\n `MockDatabricksClient: no queued ${method} response for ${path}. ` +\n `Queued prefixes: ${queues[method].map((q) => q.pathPrefix).join(', ') || '(none)'}`,\n );\n }\n return queues[method].splice(index, 1)[0] as Queued;\n }\n\n const client: MockDatabricksClient = {\n async get<T>(path: string, query?: Record<string, string | number | boolean | undefined>) {\n calls.push({ method: 'GET', path, query });\n const queued = take('GET', path);\n if (queued.error) throw queued.error;\n return queued.response as T;\n },\n async post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ) {\n calls.push({ method: 'POST', path, body, query });\n const queued = take('POST', path);\n if (queued.error) throw queued.error;\n return queued.response as T;\n },\n async request<T>(\n method: 'GET' | 'POST' | 'DELETE',\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ) {\n calls.push({ method, path, body, query });\n const queued = take(method, path);\n if (queued.error) throw queued.error;\n return queued.response as T;\n },\n queue(method, pathPrefix, response) {\n queues[method].push({ pathPrefix, response });\n return client;\n },\n queueError(method, pathPrefix, error) {\n queues[method].push({ pathPrefix, error });\n return client;\n },\n calls,\n callsTo(method, pathPrefix) {\n return calls.filter((c) => c.method === method && c.path.startsWith(pathPrefix));\n },\n };\n return client;\n}\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport type { ExecutionContext } from './context.js';\nimport {\n type WorkspaceClientLike,\n createClientFromEnv,\n createWorkspaceContext,\n} from './workspace-context.js';\n\nexport type LiveCheckStatus = 'pass' | 'fail' | 'not-configured';\n\nexport interface LiveCheckContext {\n env: Record<string, string | undefined>;\n warehouse: ExecutionContext;\n client: WorkspaceClientLike;\n}\n\nexport interface LiveCheck {\n id: string;\n description: string;\n configured?: (env: Record<string, string | undefined>) => boolean;\n run(context: LiveCheckContext): Promise<unknown>;\n}\n\nexport interface LiveCheckResult {\n id: string;\n description: string;\n status: LiveCheckStatus;\n durationMs: number;\n details?: unknown;\n error?: string;\n}\n\nexport type TargetPackMaturity =\n | 'proposed'\n | 'building'\n | 'shipped'\n | 'live-gated'\n | 'certifying'\n | 'certified';\n\nexport interface TargetPackEvidenceMetadata {\n id: string;\n name: string;\n version: string;\n maturity: TargetPackMaturity;\n capabilities: string[];\n docsUrl?: string;\n certificationScopes: string[];\n target: {\n cloud?: string;\n region?: string;\n workspace?: string;\n runtime?: string;\n compute?: string;\n };\n}\n\nexport interface LiveEvidence {\n schemaVersion: 1;\n kind: 'databricks-live-suite';\n startedAt: string;\n finishedAt: string;\n success: boolean;\n required: string[];\n results: LiveCheckResult[];\n targetPack?: TargetPackEvidenceMetadata;\n}\n\nexport interface LiveSuiteSpec {\n checks: readonly LiveCheck[];\n required?: readonly string[];\n evidencePath?: string;\n junitPath?: string;\n env?: Record<string, string | undefined>;\n targetPack?: TargetPackEvidenceMetadata;\n}\n\nexport interface LiveSuiteRuntime {\n warehouse?: ExecutionContext;\n client?: WorkspaceClientLike;\n}\n\nexport interface DefinedLiveSuite {\n run(runtime?: LiveSuiteRuntime): Promise<LiveEvidence | undefined>;\n}\n\n/**\n * Define an explicitly gated live suite. Without DBX_TEST_LIVE=1, run() is a\n * silent no-op so the same command is safe in ordinary CI matrices.\n */\nexport function defineLiveSuite(spec: LiveSuiteSpec): DefinedLiveSuite {\n return { run: (runtime) => runLiveSuite(spec, runtime) };\n}\n\nexport async function runLiveSuite(\n spec: LiveSuiteSpec,\n runtime: LiveSuiteRuntime = {},\n): Promise<LiveEvidence | undefined> {\n const env = spec.env ?? process.env;\n if (env.DBX_TEST_LIVE !== '1') return undefined;\n\n const required = [...(spec.required ?? [])];\n const known = new Set(spec.checks.map((check) => check.id));\n for (const id of required) {\n if (!known.has(id)) throw new Error(`Required live check '${id}' is not defined`);\n }\n\n const startedAt = new Date().toISOString();\n const ownedWarehouse = runtime.warehouse === undefined;\n const client = runtime.client ?? createClientFromEnv(env);\n const warehouse =\n runtime.warehouse ??\n (hasWarehouseConfig(env)\n ? await createWorkspaceContext({ env, client })\n : unavailableWarehouseContext());\n const results: LiveCheckResult[] = [];\n\n try {\n for (const check of spec.checks) {\n if (check.configured && !check.configured(env)) {\n results.push({\n id: check.id,\n description: check.description,\n status: 'not-configured',\n durationMs: 0,\n });\n continue;\n }\n const before = performance.now();\n try {\n const details = await check.run({ env, warehouse, client });\n results.push({\n id: check.id,\n description: check.description,\n status: 'pass',\n durationMs: Math.round(performance.now() - before),\n ...(details === undefined ? {} : { details: redactValue(details, env) }),\n });\n } catch (error) {\n results.push({\n id: check.id,\n description: check.description,\n status: 'fail',\n durationMs: Math.round(performance.now() - before),\n error: redactText(error instanceof Error ? error.message : String(error), env),\n });\n }\n }\n } finally {\n if (ownedWarehouse) await warehouse.close();\n }\n\n const success = required.every(\n (id) => results.find((result) => result.id === id)?.status === 'pass',\n );\n const evidence: LiveEvidence = {\n schemaVersion: 1,\n kind: 'databricks-live-suite',\n startedAt,\n finishedAt: new Date().toISOString(),\n success,\n required,\n results,\n ...(spec.targetPack ? { targetPack: spec.targetPack } : {}),\n };\n\n if (spec.evidencePath)\n await writeReport(spec.evidencePath, `${JSON.stringify(evidence, null, 2)}\\n`);\n if (spec.junitPath) await writeReport(spec.junitPath, renderJUnit(evidence));\n return evidence;\n}\n\nfunction hasWarehouseConfig(env: Record<string, string | undefined>): boolean {\n return Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH);\n}\n\nfunction unavailableWarehouseContext(): ExecutionContext {\n const unavailable = async (): Promise<never> => {\n throw new Error(\n 'This live check requires DATABRICKS_WAREHOUSE_ID or DATABRICKS_HTTP_PATH; REST-only checks can run without SQL warehouse configuration',\n );\n };\n return {\n profile: 'live',\n qual: (table) => table,\n exec: unavailable,\n query: unavailable,\n loadFixture: unavailable,\n close: async () => undefined,\n };\n}\n\nasync function writeReport(path: string, contents: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, contents, 'utf8');\n}\n\nfunction redactText(text: string, env: Record<string, string | undefined>): string {\n let output = text;\n for (const [name, value] of Object.entries(env)) {\n if (!value || value.length < 6 || !/(TOKEN|SECRET|PASSWORD|BEARER|KEY)/i.test(name)) continue;\n output = output.split(value).join('[REDACTED]');\n }\n return output;\n}\n\nfunction redactValue(value: unknown, env: Record<string, string | undefined>): unknown {\n return JSON.parse(redactText(JSON.stringify(value), env)) as unknown;\n}\n\nfunction xml(value: string): string {\n return value\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&apos;');\n}\n\nexport function renderJUnit(evidence: LiveEvidence): string {\n const failures = evidence.results.filter((result) => result.status === 'fail').length;\n const skipped = evidence.results.filter((result) => result.status === 'not-configured').length;\n const seconds = evidence.results.reduce((sum, result) => sum + result.durationMs, 0) / 1000;\n const cases = evidence.results\n .map((result) => {\n const body =\n result.status === 'fail'\n ? `<failure message=\"${xml(result.error ?? 'check failed')}\"/>`\n : result.status === 'not-configured'\n ? '<skipped message=\"not configured\"/>'\n : '';\n return ` <testcase classname=\"databricks-live\" name=\"${xml(result.id)}\" time=\"${result.durationMs / 1000}\">${body}</testcase>`;\n })\n .join('\\n');\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<testsuite name=\"databricks-live\" tests=\"${evidence.results.length}\" failures=\"${failures}\" skipped=\"${skipped}\" time=\"${seconds}\">\\n${cases}\\n</testsuite>\\n`;\n}\n","import type { WorkspaceClientLike } from './workspace-context.js';\n\nexport interface PollOptions {\n pollIntervalMs?: number;\n timeoutMs?: number;\n signal?: AbortSignal;\n}\n\nconst TERMINAL_PIPELINE_STATES = new Set(['COMPLETED', 'FAILED', 'CANCELED']);\n\nexport async function waitForPipelineUpdate(\n client: WorkspaceClientLike,\n pipelineId: string,\n updateId: string,\n options: PollOptions = {},\n): Promise<Record<string, unknown>> {\n const deadline = Date.now() + (options.timeoutMs ?? 900_000);\n const interval = options.pollIntervalMs ?? 10_000;\n const path = `/api/2.0/pipelines/${encodeURIComponent(pipelineId)}/updates/${encodeURIComponent(updateId)}`;\n let update: { update?: { state?: string } } = await client.get(path);\n while (!TERMINAL_PIPELINE_STATES.has(update.update?.state ?? '') && Date.now() < deadline) {\n if (options.signal?.aborted) throw new Error(`Pipeline update ${updateId} was aborted`);\n await abortableDelay(interval, options.signal);\n update = await client.get(path);\n }\n const state = update.update?.state ?? 'UNKNOWN';\n if (state !== 'COMPLETED') {\n throw new Error(`Pipeline update ${updateId} ended in ${state} (wanted COMPLETED)`);\n }\n return update as Record<string, unknown>;\n}\n\nfunction abortableDelay(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error('Polling aborted'));\n return;\n }\n const timer = setTimeout(resolve, ms);\n signal?.addEventListener(\n 'abort',\n () => {\n clearTimeout(timer);\n reject(new Error('Polling aborted'));\n },\n { once: true },\n );\n });\n}\n","import type { LiveCheck } from './live-suite.js';\nimport { waitForPipelineUpdate } from './pollers.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\n\nexport function sqlRoundTripCheck(): LiveCheck {\n return {\n id: 'sql',\n description: 'SQL Statement Execution round-trip',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n const rows = await warehouse.query('SELECT 1 AS dbx_test_ok');\n if (Number(rows[0]?.dbx_test_ok) !== 1)\n throw new Error('SQL round-trip returned an unexpected value');\n return { rows: rows.length };\n },\n };\n}\n\n/** Fail closed if governance checks accidentally run with bootstrap or administrator credentials. */\nexport function restrictedPrincipalCheck(): LiveCheck {\n return {\n id: 'restricted-principal',\n description: 'Live checks use the designated least-privilege service principal',\n configured: (env) => Boolean(env.DBX_TEST_RESTRICTED_PRINCIPAL_ID),\n async run({ env }) {\n const expected = env.DBX_TEST_RESTRICTED_PRINCIPAL_ID?.toLowerCase();\n const actual = env.DATABRICKS_CLIENT_ID?.toLowerCase();\n if (!expected || !actual) {\n throw new Error(\n 'Restricted-principal check requires DBX_TEST_RESTRICTED_PRINCIPAL_ID and DATABRICKS_CLIENT_ID',\n );\n }\n if (actual !== expected) {\n throw new Error(`Live suite is using principal '${actual}', expected '${expected}'`);\n }\n return { principalId: actual };\n },\n };\n}\n\nexport interface DeltaColumnContract {\n name: string;\n type?: string;\n}\n\nexport function assertDeltaContract(\n table: string,\n rows: readonly Record<string, unknown>[],\n columns: readonly DeltaColumnContract[],\n): void {\n for (const expected of columns) {\n const actual = rows.find((row) => String(row.col_name ?? row.column_name) === expected.name);\n if (!actual) throw new Error(`Delta contract missing column '${expected.name}' in ${table}`);\n const actualType = String(actual.data_type ?? actual.column_type ?? '').toLowerCase();\n if (expected.type && actualType !== expected.type.toLowerCase()) {\n throw new Error(\n `Delta column ${expected.name} has type ${actualType}, expected ${expected.type}`,\n );\n }\n }\n}\n\nexport function deltaContractCheck(\n tableEnv = 'DBX_TEST_DELTA_TABLE',\n columns: readonly DeltaColumnContract[] = [],\n): LiveCheck {\n return {\n id: 'delta-contract',\n description: 'Delta table schema contract',\n configured: (env) => Boolean(env[tableEnv]),\n async run({ env, warehouse }) {\n const table = env[tableEnv] as string;\n const rows = await warehouse.query(`DESCRIBE TABLE ${table}`);\n assertDeltaContract(table, rows, columns);\n return { table, columns: rows.length };\n },\n };\n}\n\nexport function unityCatalogAccessCheck(): LiveCheck {\n return {\n id: 'uc-grants',\n description: 'Unity Catalog allow/deny access assertions',\n configured: (env) => Boolean(env.DBX_TEST_UC_ALLOWED_TABLE && env.DBX_TEST_UC_DENIED_TABLE),\n async run({ env, warehouse }) {\n await warehouse.query(`SELECT * FROM ${env.DBX_TEST_UC_ALLOWED_TABLE} LIMIT 1`);\n try {\n await warehouse.query(`SELECT * FROM ${env.DBX_TEST_UC_DENIED_TABLE} LIMIT 1`);\n } catch (error) {\n if (/permission.?denied|insufficient.?priv|403|unauthoriz/i.test(String(error))) {\n return { allowed: env.DBX_TEST_UC_ALLOWED_TABLE, denied: env.DBX_TEST_UC_DENIED_TABLE };\n }\n throw error;\n }\n throw new Error(`Expected access to ${env.DBX_TEST_UC_DENIED_TABLE} to be denied`);\n },\n };\n}\n\nexport function jobRunCheck(): LiveCheck {\n return {\n id: 'jobs',\n description: 'Databricks Job run-now reaches SUCCESS',\n configured: (env) => Boolean(env.DBX_TEST_JOB_ID),\n async run({ env, client }) {\n const jobId = Number(env.DBX_TEST_JOB_ID);\n if (!Number.isFinite(jobId)) throw new Error('DBX_TEST_JOB_ID must be numeric');\n const submitted = await client.post<{ run_id: number }>('/api/2.1/jobs/run-now', {\n job_id: jobId,\n });\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') throw new Error(`Job ${jobId} ended in ${result ?? 'UNKNOWN'}`);\n return { jobId, runId: submitted.run_id };\n },\n };\n}\n\n/** Trigger the deployed Lakeflow pipeline and require a completed update. */\nexport function pipelineRefreshCheck(): LiveCheck {\n return {\n id: 'pipeline',\n description: 'Lakeflow telemetry pipeline refresh reaches COMPLETED',\n configured: (env) => Boolean(env.DBX_TEST_PIPELINE_ID),\n async run({ env, client }) {\n const pipelineId = env.DBX_TEST_PIPELINE_ID as string;\n const submitted = await client.post<{ update_id?: string }>(\n `/api/2.0/pipelines/${encodeURIComponent(pipelineId)}/updates`,\n { full_refresh: false },\n );\n if (!submitted.update_id) {\n throw new Error(`Pipeline ${pipelineId} did not return an update_id`);\n }\n await waitForPipelineUpdate(client, pipelineId, submitted.update_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n return { pipelineId, updateId: submitted.update_id };\n },\n };\n}\n\nexport function notebookSubmitCheck(): LiveCheck {\n return {\n id: 'notebook',\n description: 'Databricks notebook submit run reaches SUCCESS',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_NOTEBOOK_PATH &&\n (env.DBX_TEST_CLUSTER_ID || env.DBX_TEST_NOTEBOOK_SERVERLESS === '1'),\n ),\n async run({ env, client }) {\n if (\n !env.DBX_TEST_NOTEBOOK_PATH ||\n (!env.DBX_TEST_CLUSTER_ID && env.DBX_TEST_NOTEBOOK_SERVERLESS !== '1')\n ) {\n throw new Error(\n 'Notebook submit requires DBX_TEST_NOTEBOOK_PATH and either DBX_TEST_CLUSTER_ID or DBX_TEST_NOTEBOOK_SERVERLESS=1',\n );\n }\n const submitted = await client.post<{ run_id?: number }>('/api/2.1/jobs/runs/submit', {\n run_name: `fabric-experiments-notebook-${Date.now()}`,\n tasks: [\n {\n task_key: 'notebook',\n ...(env.DBX_TEST_CLUSTER_ID ? { existing_cluster_id: env.DBX_TEST_CLUSTER_ID } : {}),\n notebook_task: { notebook_path: env.DBX_TEST_NOTEBOOK_PATH },\n },\n ],\n });\n if (!submitted.run_id) throw new Error('Notebook submit returned no run_id');\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') throw new Error(`Notebook run ended in ${result ?? 'UNKNOWN'}`);\n return { runId: submitted.run_id, notebookPath: env.DBX_TEST_NOTEBOOK_PATH };\n },\n };\n}\n\nexport function dbtBuildCheck(): LiveCheck {\n return {\n id: 'dbt',\n description: 'Databricks dbt task reaches SUCCESS',\n configured: (env) =>\n Boolean(\n (env.DBX_TEST_DBT_GIT_URL || env.DBX_TEST_DBT_PROJECT_DIR) && env.DATABRICKS_WAREHOUSE_ID,\n ),\n async run({ env, client }) {\n if (\n (!env.DBX_TEST_DBT_GIT_URL && !env.DBX_TEST_DBT_PROJECT_DIR) ||\n !env.DATABRICKS_WAREHOUSE_ID\n ) {\n throw new Error(\n 'dbt build requires DBX_TEST_DBT_GIT_URL or DBX_TEST_DBT_PROJECT_DIR, plus DATABRICKS_WAREHOUSE_ID',\n );\n }\n const sourceVars = JSON.stringify({\n source_catalog: env.DBX_TEST_DBT_SOURCE_CATALOG ?? env.DBX_TEST_CATALOG,\n source_schema: env.DBX_TEST_DBT_SOURCE_SCHEMA,\n });\n const serverless = env.DBX_TEST_DBT_SERVERLESS === '1';\n const request = {\n run_name: `fabric-experiments-dbt-${Date.now()}`,\n ...(env.DBX_TEST_DBT_GIT_URL\n ? {\n git_source: {\n git_url: env.DBX_TEST_DBT_GIT_URL,\n git_provider: env.DBX_TEST_DBT_GIT_PROVIDER ?? 'gitHub',\n git_branch: env.DBX_TEST_DBT_GIT_BRANCH ?? 'main',\n },\n }\n : {}),\n tasks: [\n {\n task_key: 'dbt_build',\n ...(serverless ? { environment_key: 'dbt' } : {}),\n dbt_task: {\n commands: ['dbt deps', `dbt build --vars '${sourceVars}'`],\n warehouse_id: env.DATABRICKS_WAREHOUSE_ID,\n ...(env.DBX_TEST_CATALOG ? { catalog: env.DBX_TEST_CATALOG } : {}),\n ...(env.DBX_TEST_SCHEMA ? { schema: env.DBX_TEST_SCHEMA } : {}),\n ...(env.DBX_TEST_DBT_GIT_URL ? {} : { source: 'WORKSPACE' }),\n ...(env.DBX_TEST_DBT_PROJECT_DIR\n ? { project_directory: env.DBX_TEST_DBT_PROJECT_DIR }\n : {}),\n },\n },\n ],\n ...(serverless\n ? {\n environments: [\n {\n environment_key: 'dbt',\n spec: {\n environment_version: '2',\n dependencies: ['dbt-databricks>=1.8,<2'],\n },\n },\n ],\n }\n : {}),\n };\n const submitted = await client.post<{ run_id?: number }>(\n '/api/2.1/jobs/runs/submit',\n request,\n );\n if (!submitted.run_id) throw new Error('dbt submit returned no run_id');\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') throw new Error(`dbt run ended in ${result ?? 'UNKNOWN'}`);\n return {\n runId: submitted.run_id,\n source: env.DBX_TEST_DBT_GIT_URL ?? env.DBX_TEST_DBT_PROJECT_DIR,\n };\n },\n };\n}\n\n/** Wrap product-specific checks such as Auto Loader, Lakebase, notebooks, or dbt. */\nexport function customLiveCheck(\n id: string,\n description: string,\n run: LiveCheck['run'],\n configured?: LiveCheck['configured'],\n): LiveCheck {\n return { id, description, run, ...(configured ? { configured } : {}) };\n}\n","import {\n LakebaseDatabaseProvider,\n type LakebasePoolFactory,\n exchangeLakebaseCredential,\n} from '@fabricorg/experiments-db-pool';\nimport type { LiveCheck } from './live-suite.js';\nimport { resolveTokenProvider } from './workspace-context.js';\n\nexport interface LakebaseCheckOptions {\n fetchImpl?: typeof fetch;\n poolFactory?: LakebasePoolFactory;\n}\n\nfunction required(env: Record<string, string | undefined>, name: string): string {\n const value = env[name]?.trim();\n if (!value) throw new Error(`${name} is required`);\n return value;\n}\n\nexport function createLakebaseTestProvider(\n env: Record<string, string | undefined>,\n options: LakebaseCheckOptions = {},\n): LakebaseDatabaseProvider {\n return new LakebaseDatabaseProvider({\n host: required(env, 'DBX_TEST_LAKEBASE_HOST'),\n database: required(env, 'DBX_TEST_LAKEBASE_DATABASE'),\n user: required(env, 'DBX_TEST_LAKEBASE_USER'),\n workspaceHost: required(env, 'DATABRICKS_HOST'),\n endpoint: required(env, 'DBX_TEST_LAKEBASE_ENDPOINT'),\n token: resolveTokenProvider(required(env, 'DATABRICKS_HOST'), env, options.fetchImpl),\n fetchImpl: options.fetchImpl,\n poolFactory: options.poolFactory,\n max: 1,\n });\n}\n\nasync function workspaceToken(\n env: Record<string, string | undefined>,\n fetchImpl?: typeof fetch,\n): Promise<string> {\n const host = required(env, 'DATABRICKS_HOST');\n const provider = resolveTokenProvider(host, env, fetchImpl);\n return typeof provider === 'string' ? provider : provider();\n}\n\n/** Verify the workspace identity can exchange a short-lived Lakebase credential. */\nexport function lakebaseCredentialCheck(options: LakebaseCheckOptions = {}): LiveCheck {\n return {\n id: 'lakebase-credential',\n description: 'Lakebase OAuth credential exchange',\n configured: (env) => Boolean(env.DBX_TEST_LAKEBASE_ENDPOINT),\n async run({ env }) {\n const credential = await exchangeLakebaseCredential({\n workspaceHost: required(env, 'DATABRICKS_HOST'),\n endpoint: required(env, 'DBX_TEST_LAKEBASE_ENDPOINT'),\n workspaceToken: await workspaceToken(env, options.fetchImpl),\n fetchImpl: options.fetchImpl,\n });\n if (credential.expiresAt <= Date.now()) {\n throw new Error('Lakebase credential is already expired');\n }\n return { expiresAt: new Date(credential.expiresAt).toISOString() };\n },\n };\n}\n\n/** Exercise the production provider before and after an explicit credential/pool refresh. */\nexport function lakebaseRoundTripCheck(options: LakebaseCheckOptions = {}): LiveCheck {\n return {\n id: 'lakebase',\n description: 'Lakebase provider query and credential refresh round-trip',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_LAKEBASE_ENDPOINT &&\n env.DBX_TEST_LAKEBASE_HOST &&\n env.DBX_TEST_LAKEBASE_DATABASE &&\n env.DBX_TEST_LAKEBASE_USER,\n ),\n async run({ env }) {\n const provider = createLakebaseTestProvider(env, options);\n try {\n const first = await provider\n .getPool()\n .query<{ dbx_test_ok: number }>('SELECT 1 AS dbx_test_ok');\n if (Number(first.rows[0]?.dbx_test_ok) !== 1) {\n throw new Error('Lakebase round-trip returned an unexpected value');\n }\n await provider.refreshCredentials();\n const second = await provider\n .getPool()\n .query<{ dbx_test_ok: number }>('SELECT 1 AS dbx_test_ok');\n if (Number(second.rows[0]?.dbx_test_ok) !== 1) {\n throw new Error('Lakebase post-refresh round-trip returned an unexpected value');\n }\n return { queries: 2, refreshed: true };\n } finally {\n await provider.close();\n }\n },\n };\n}\n","import { createClientFromEnv } from './workspace-context.js';\n\nexport interface LakebaseControlClient {\n get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;\n post<T>(\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ): Promise<T>;\n request<T>(\n method: 'DELETE',\n path: string,\n body?: unknown,\n query?: Record<string, string | number | boolean | undefined>,\n ): Promise<T>;\n}\n\nexport interface EphemeralLakebaseBranch {\n project: string;\n branch: string;\n branchId: string;\n endpoint: string;\n host: string;\n databaseResource: string;\n database: string;\n createdAt: string;\n expiresAt: string;\n}\n\nexport interface LakebaseBranchOptions {\n env?: Record<string, string | undefined>;\n client?: LakebaseControlClient;\n project?: string;\n branchId: string;\n ttlMs: number;\n pollIntervalMs?: number;\n timeoutMs?: number;\n now?: () => Date;\n}\n\ninterface Operation<T = unknown> {\n name?: string;\n done?: boolean;\n error?: { code?: number; message?: string };\n response?: T;\n}\n\ninterface Branch {\n name: string;\n branch_id?: string;\n create_time?: string;\n status?: { current_state?: string };\n}\n\ninterface Endpoint {\n name: string;\n endpoint_id?: string;\n status?: { hosts?: { host?: string }; current_state?: string };\n}\n\ninterface Database {\n name: string;\n status?: { postgres_database?: string };\n}\n\nconst DEFAULT_POLL_INTERVAL_MS = 2_000;\nconst DEFAULT_TIMEOUT_MS = 5 * 60_000;\n\nexport function resolveLakebaseProject(\n env: Record<string, string | undefined>,\n explicit?: string,\n): string {\n const project = explicit ?? env.DBX_TEST_LAKEBASE_PROJECT;\n if (!project || !/^projects\\/[a-z0-9][a-z0-9-]{0,62}$/.test(project)) {\n throw new Error(\n `Lakebase project must look like projects/fabric-experiments; got '${project ?? ''}'`,\n );\n }\n return project;\n}\n\nexport function toLakebaseBranchId(environmentName: string): string {\n const normalized = environmentName\n .toLowerCase()\n .replace(/[^a-z0-9-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n const prefixed = normalized.startsWith('fx-') ? normalized : `fx-${normalized}`;\n const trimmed = prefixed.slice(0, 63).replace(/-+$/g, '');\n if (!/^fx-[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(trimmed)) {\n throw new Error(`Cannot derive a safe Lakebase branch ID from '${environmentName}'`);\n }\n return trimmed;\n}\n\nexport async function createEphemeralLakebaseBranch(\n options: LakebaseBranchOptions,\n): Promise<EphemeralLakebaseBranch> {\n const env = options.env ?? process.env;\n const client = options.client ?? (createClientFromEnv(env) as LakebaseControlClient);\n const project = resolveLakebaseProject(env, options.project);\n const branchId = toLakebaseBranchId(options.branchId);\n const ttlSeconds = Math.max(60, Math.ceil(options.ttlMs / 1_000));\n const operation = await client.post<Operation<Branch>>(\n `/api/2.0/postgres/${project}/branches`,\n { spec: { ttl: `${ttlSeconds}s` } },\n { branch_id: branchId, replace_existing: false },\n );\n const branch = await waitForOperation(client, operation, options);\n const branchName = branch?.name ?? `${project}/branches/${branchId}`;\n const [endpointResult, databaseResult] = await Promise.all([\n client.get<{ endpoints?: Endpoint[] }>(`/api/2.0/postgres/${branchName}/endpoints`),\n client.get<{ databases?: Database[] }>(`/api/2.0/postgres/${branchName}/databases`),\n ]);\n const endpoint =\n endpointResult.endpoints?.find((item) => item.endpoint_id === 'primary') ??\n endpointResult.endpoints?.[0];\n const database = databaseResult.databases?.[0];\n const host = endpoint?.status?.hosts?.host;\n const postgresDatabase = database?.status?.postgres_database;\n if (!endpoint?.name || !host || !database?.name || !postgresDatabase) {\n throw new Error(`Lakebase branch '${branchName}' did not expose an endpoint and database`);\n }\n const createdAt = branch?.create_time ?? (options.now?.() ?? new Date()).toISOString();\n return {\n project,\n branch: branchName,\n branchId,\n endpoint: endpoint.name,\n host,\n databaseResource: database.name,\n database: postgresDatabase,\n createdAt,\n expiresAt: new Date(Date.parse(createdAt) + ttlSeconds * 1_000).toISOString(),\n };\n}\n\nexport async function deleteEphemeralLakebaseBranch(\n branch: Pick<EphemeralLakebaseBranch, 'branch'>,\n options: Omit<LakebaseBranchOptions, 'branchId' | 'ttlMs' | 'project'> = {},\n): Promise<void> {\n if (!/^projects\\/[a-z0-9-]+\\/branches\\/fx-[a-z0-9-]+$/.test(branch.branch)) {\n throw new Error(`Refusing to delete non-ephemeral Lakebase branch '${branch.branch}'`);\n }\n const env = options.env ?? process.env;\n const client = options.client ?? (createClientFromEnv(env) as LakebaseControlClient);\n const operation = await client.request<Operation>(\n 'DELETE',\n `/api/2.0/postgres/${branch.branch}`,\n undefined,\n { purge: true },\n );\n await waitForOperation(client, operation, options);\n}\n\nasync function waitForOperation<T>(\n client: LakebaseControlClient,\n initial: Operation<T>,\n options: Pick<LakebaseBranchOptions, 'pollIntervalMs' | 'timeoutMs'>,\n): Promise<T | undefined> {\n let operation = initial;\n const deadline = Date.now() + (options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n while (!operation.done) {\n if (!operation.name) throw new Error('Lakebase operation did not return an operation name');\n if (Date.now() >= deadline) throw new Error(`Lakebase operation '${operation.name}' timed out`);\n await delay(options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);\n operation = await client.get<Operation<T>>(`/api/2.0/postgres/${operation.name}`);\n }\n if (operation.error) {\n throw new Error(\n `Lakebase operation failed${operation.error.code ? ` (${operation.error.code})` : ''}: ${\n operation.error.message ?? 'unknown error'\n }`,\n );\n }\n return operation.response;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { resolveTokenProvider } from './workspace-context.js';\n\nexport async function databricksFetch(\n env: Record<string, string | undefined>,\n pathOrUrl: string,\n init: RequestInit = {},\n fetchImpl: typeof fetch = fetch,\n): Promise<Response> {\n const host = env.DATABRICKS_HOST?.replace(/\\/$/, '');\n if (!host) throw new Error('DATABRICKS_HOST is required');\n const provider = resolveTokenProvider(host, env, fetchImpl);\n const token = typeof provider === 'string' ? provider : await provider();\n const headers = new Headers(init.headers);\n headers.set('authorization', `Bearer ${token}`);\n const response = await fetchImpl(\n /^https?:\\/\\//.test(pathOrUrl) ? pathOrUrl : `${host}${pathOrUrl}`,\n {\n ...init,\n headers,\n },\n );\n if (!response.ok) {\n const body = await response.text();\n throw new Error(\n `Databricks request failed: ${response.status} ${response.statusText}: ${body.slice(0, 500)}`,\n );\n }\n return response;\n}\n","import { databricksFetch } from './databricks-http.js';\nimport type { LiveCheck } from './live-suite.js';\n\nfunction csv(value: string | undefined): string[] {\n return (value ?? '')\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n}\n\n/** Assert secret key metadata only; values are never requested. */\nexport function secretScopeCheck(): LiveCheck {\n return {\n id: 'secrets',\n description: 'Databricks secret scope contains expected keys',\n configured: (env) => Boolean(env.DBX_TEST_SECRET_SCOPE && env.DBX_TEST_SECRET_KEYS),\n async run({ env, client }) {\n const scope = env.DBX_TEST_SECRET_SCOPE as string;\n const expected = csv(env.DBX_TEST_SECRET_KEYS);\n const response = await client.get<{ secrets?: { key?: string }[] }>('/api/2.0/secrets/list', {\n scope,\n });\n const actual = new Set((response.secrets ?? []).map((secret) => secret.key).filter(Boolean));\n const missing = expected.filter((key) => !actual.has(key));\n if (missing.length > 0) {\n throw new Error(`Secret scope ${scope} is missing keys: ${missing.join(', ')}`);\n }\n return { scope, expectedKeys: expected.length };\n },\n };\n}\n\nexport interface AppHealthCheckOptions {\n fetchImpl?: typeof fetch;\n}\n\n/** Verify app state, resource bindings, and the gateway-authenticated application health route. */\nexport function appHealthCheck(options: AppHealthCheckOptions = {}): LiveCheck {\n return {\n id: 'app',\n description: 'Databricks App is running, bound, and healthy',\n configured: (env) => Boolean(env.DBX_TEST_APP_NAME),\n async run({ env, client }) {\n const name = env.DBX_TEST_APP_NAME as string;\n const app = await client.get<{\n app_status?: { state?: string };\n resources?: { name?: string }[];\n url?: string;\n app_url?: string;\n }>(`/api/2.0/apps/${encodeURIComponent(name)}`);\n if (app.app_status?.state !== 'RUNNING') {\n throw new Error(`Databricks App ${name} is ${app.app_status?.state ?? 'UNKNOWN'}`);\n }\n const expected = csv(env.DBX_TEST_APP_RESOURCES);\n const actual = new Set(\n (app.resources ?? []).map((resource) => resource.name).filter(Boolean),\n );\n const missing = expected.filter((resource) => !actual.has(resource));\n if (missing.length > 0) {\n throw new Error(\n `Databricks App ${name} is missing resource bindings: ${missing.join(', ')}`,\n );\n }\n const appUrl = env.DBX_TEST_APP_URL ?? app.url ?? app.app_url;\n if (!appUrl) throw new Error(`Databricks App ${name} returned no URL`);\n const healthUrl = new URL('/api/healthz', appUrl).toString();\n const response = await databricksFetch(env, healthUrl, {}, options.fetchImpl);\n const health = (await response.json()) as { ok?: boolean; status?: string };\n if (health.ok !== true && health.status !== 'ok') {\n throw new Error(`Databricks App ${name} health probe did not report ok`);\n }\n return { name, bindings: actual.size, health: 'ok' };\n },\n };\n}\n","import { randomUUID } from 'node:crypto';\nimport { databricksFetch } from './databricks-http.js';\nimport type { LiveCheck } from './live-suite.js';\n\nexport interface VolumeIOCheckOptions {\n fetchImpl?: typeof fetch;\n randomId?: () => string;\n}\n\nexport function normalizeVolumeRoot(value: string): string {\n const normalized = value.replace(/\\/$/, '');\n if (!/^\\/Volumes\\/[^/]+\\/[^/]+\\/[^/]+$/.test(normalized)) {\n throw new Error('DBX_TEST_VOLUME must be /Volumes/<catalog>/<schema>/<volume>');\n }\n return normalized;\n}\n\nexport async function ensureVolumeDirectory(\n env: Record<string, string | undefined>,\n directory: string,\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await databricksFetch(env, `/api/2.0/fs/directories${directory}`, { method: 'PUT' }, fetchImpl);\n}\n\nexport async function uploadVolumeFile(\n env: Record<string, string | undefined>,\n path: string,\n body: BodyInit | Uint8Array,\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await databricksFetch(\n env,\n `/api/2.0/fs/files${path}`,\n { method: 'PUT', body: body as BodyInit },\n fetchImpl,\n );\n}\n\nexport async function deleteVolumeFile(\n env: Record<string, string | undefined>,\n path: string,\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await databricksFetch(env, `/api/2.0/fs/files${path}`, { method: 'DELETE' }, fetchImpl);\n}\n\n/** Upload, download, and delete a small probe through the Databricks Files API. */\nexport function volumeIOCheck(options: VolumeIOCheckOptions = {}): LiveCheck {\n return {\n id: 'volume-io',\n description: 'Unity Catalog volume Files API round-trip',\n configured: (env) => Boolean(env.DBX_TEST_VOLUME),\n async run({ env }) {\n const root = normalizeVolumeRoot(env.DBX_TEST_VOLUME as string);\n const prefix = (env.DBX_TEST_ENV_NAME ?? 'fx-live').replace(/[^A-Za-z0-9_.-]/g, '_');\n const id = (options.randomId ?? randomUUID)();\n const directory = `${root}/${prefix}`;\n const file = `${directory}/probe-${id}.txt`;\n const filePath = `/api/2.0/fs/files${file}`;\n const body = new TextEncoder().encode(`fabric-experiments-volume-probe:${id}`);\n await ensureVolumeDirectory(env, directory, options.fetchImpl);\n try {\n await uploadVolumeFile(env, file, body, options.fetchImpl);\n const downloaded = await databricksFetch(env, filePath, {}, options.fetchImpl);\n const actual = new Uint8Array(await downloaded.arrayBuffer());\n if (actual.length !== body.length || actual.some((value, index) => value !== body[index])) {\n throw new Error('Volume round-trip returned different bytes');\n }\n return { volume: root, bytes: body.length };\n } finally {\n await deleteVolumeFile(env, file, options.fetchImpl).catch(() => undefined);\n }\n },\n };\n}\n","import { randomUUID } from 'node:crypto';\nimport { readFile } from 'node:fs/promises';\nimport { basename, resolve } from 'node:path';\nimport type { LiveCheck } from './live-suite.js';\nimport { waitForPipelineUpdate } from './pollers.js';\nimport {\n deleteVolumeFile,\n ensureVolumeDirectory,\n normalizeVolumeRoot,\n uploadVolumeFile,\n} from './volume-checks.js';\n\nexport interface AutoLoaderCheckOptions {\n fetchImpl?: typeof fetch;\n fixtureBody?: Uint8Array;\n randomId?: () => string;\n}\n\n/** Exercise Files API -> isolated Lakeflow pipeline -> Delta output. */\nexport function autoLoaderIngestionCheck(options: AutoLoaderCheckOptions = {}): LiveCheck {\n return {\n id: 'autoloader',\n description: 'Isolated Auto Loader fixture ingestion reaches Delta without rescued rows',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_AUTOLOADER_PIPELINE_ID &&\n env.DBX_TEST_AUTOLOADER_TABLE &&\n env.DBX_TEST_AUTOLOADER_FIXTURE &&\n env.DBX_TEST_VOLUME,\n ),\n async run({ env, client, warehouse }) {\n const pipelineId = env.DBX_TEST_AUTOLOADER_PIPELINE_ID as string;\n if (pipelineId === env.DBX_TEST_PIPELINE_ID) {\n throw new Error('DBX_TEST_AUTOLOADER_PIPELINE_ID must not be the production pipeline');\n }\n const root = normalizeVolumeRoot(env.DBX_TEST_VOLUME as string);\n const fixturePath = env.DBX_TEST_AUTOLOADER_FIXTURE as string;\n const body = options.fixtureBody ?? new Uint8Array(await readFile(resolve(fixturePath)));\n const id = (options.randomId ?? randomUUID)();\n const runName = (env.DBX_TEST_ENV_NAME ?? 'autoloader').replace(/[^A-Za-z0-9_.-]/g, '_');\n const directory = `${root}/exposures/${runName}/${id}`;\n const destination = `${directory}/${basename(fixturePath)}`;\n await ensureVolumeDirectory(env, directory, options.fetchImpl);\n try {\n await uploadVolumeFile(env, destination, body, options.fetchImpl);\n const submitted = await client.post<{ update_id?: string }>(\n `/api/2.0/pipelines/${encodeURIComponent(pipelineId)}/updates`,\n { full_refresh: true },\n );\n if (!submitted.update_id) throw new Error('Auto Loader pipeline returned no update_id');\n await waitForPipelineUpdate(client, pipelineId, submitted.update_id, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const table = env.DBX_TEST_AUTOLOADER_TABLE as string;\n const rows = await warehouse.query(\n `SELECT COUNT(*) AS n, SUM(CASE WHEN _rescued_data IS NOT NULL THEN 1 ELSE 0 END) AS rescued FROM ${table}`,\n );\n const count = Number(rows[0]?.n ?? 0);\n const rescued = Number(rows[0]?.rescued ?? 0);\n if (count < 1) throw new Error(`Auto Loader produced no rows in ${table}`);\n if (rescued !== 0)\n throw new Error(`Auto Loader produced ${rescued} rescued rows in ${table}`);\n return { pipelineId, table, rows: count, rescued };\n } finally {\n await deleteVolumeFile(env, destination, options.fetchImpl).catch(() => undefined);\n }\n },\n };\n}\n","import { randomBytes, randomUUID } from 'node:crypto';\nimport type { LiveCheck } from './live-suite.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\n\nfunction safeName(prefix: string): string {\n return `${prefix}_${randomUUID().replaceAll('-', '_')}`;\n}\n\n/** Measure the real Statement Execution path and fail when its p95 exceeds the declared budget. */\nexport function performanceBudgetCheck(): LiveCheck {\n return {\n id: 'performance',\n description: 'SQL Statement Execution p95 stays within the configured latency budget',\n configured: (env) => Boolean(env.DBX_TEST_PERFORMANCE_P95_MS),\n async run({ env, warehouse }) {\n const budgetMs = Number(env.DBX_TEST_PERFORMANCE_P95_MS);\n const runs = Number(env.DBX_TEST_PERFORMANCE_RUNS ?? 7);\n if (!Number.isFinite(budgetMs) || budgetMs <= 0) {\n throw new Error('DBX_TEST_PERFORMANCE_P95_MS must be a positive number');\n }\n if (!Number.isInteger(runs) || runs < 3 || runs > 100) {\n throw new Error('DBX_TEST_PERFORMANCE_RUNS must be an integer from 3 to 100');\n }\n await warehouse.query('SELECT 1 AS warmup');\n const durations: number[] = [];\n for (let index = 0; index < runs; index += 1) {\n const started = performance.now();\n await warehouse.query('SELECT 1 AS performance_probe');\n durations.push(performance.now() - started);\n }\n durations.sort((left, right) => left - right);\n const p95 = durations[Math.ceil(durations.length * 0.95) - 1] ?? 0;\n if (p95 > budgetMs) {\n throw new Error(`SQL p95 ${Math.round(p95)}ms exceeded ${budgetMs}ms budget`);\n }\n return {\n runs,\n p50Ms: Math.round(durations[Math.floor(durations.length * 0.5)] ?? 0),\n p95Ms: Math.round(p95),\n budgetMs,\n };\n },\n };\n}\n\n/** Prove a failed statement does not poison the session or the next workload. */\nexport function failureRecoveryCheck(): LiveCheck {\n return {\n id: 'failure-recovery',\n description: 'A failed statement is isolated and a subsequent statement recovers',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n let failedAsExpected = false;\n try {\n await warehouse.query('SELECT * FROM __fabric_experiments_expected_missing_table__');\n } catch {\n failedAsExpected = true;\n }\n if (!failedAsExpected) throw new Error('Injected failure unexpectedly succeeded');\n const rows = await warehouse.query('SELECT 1 AS recovered');\n if (Number(rows[0]?.recovered) !== 1) {\n throw new Error('Statement execution did not recover after the injected failure');\n }\n return { injectedFailure: true, recovered: true };\n },\n };\n}\n\n/** Rotate a disposable secret key and remove it. Values are never returned or written to evidence. */\nexport interface SecretRotationCheckOptions {\n randomId?: () => string;\n}\n\nexport function secretRotationCheck(options: SecretRotationCheckOptions = {}): LiveCheck {\n return {\n id: 'secret-rotation',\n description: 'Databricks secret put, overwrite, metadata verification, and cleanup',\n configured: (env) => Boolean(env.DBX_TEST_ROTATION_SECRET_SCOPE),\n async run({ env, client }) {\n const scope = env.DBX_TEST_ROTATION_SECRET_SCOPE as string;\n const key = options.randomId?.() ?? safeName('fx_rotation_probe');\n const put = async (value: string) =>\n client.post('/api/2.0/secrets/put', { scope, key, string_value: value });\n try {\n await put(randomBytes(32).toString('base64url'));\n await put(randomBytes(32).toString('base64url'));\n const listed = await client.get<{ secrets?: { key?: string }[] }>('/api/2.0/secrets/list', {\n scope,\n });\n if (!(listed.secrets ?? []).some((secret) => secret.key === key)) {\n throw new Error(`Rotated secret metadata was not visible in scope ${scope}`);\n }\n return { scope, rotated: true, cleanedUp: true };\n } finally {\n await client.post('/api/2.0/secrets/delete', { scope, key }).catch(() => undefined);\n }\n },\n };\n}\n\n/** Exercise a complete Delta backup, destructive loss, and restore cycle in the scratch schema. */\nexport function backupRestoreCheck(): LiveCheck {\n return {\n id: 'backup-restore',\n description: 'Delta DEEP CLONE backup restores a dropped scratch table',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n const source = warehouse.qual(safeName('backup_source'));\n const backup = warehouse.qual(safeName('backup_clone'));\n try {\n await warehouse.exec(`CREATE TABLE ${source} USING DELTA AS SELECT 7 AS value`);\n await warehouse.exec(`CREATE TABLE ${backup} DEEP CLONE ${source}`);\n await warehouse.exec(`DROP TABLE ${source}`);\n await warehouse.exec(`CREATE TABLE ${source} DEEP CLONE ${backup}`);\n const rows = await warehouse.query(`SELECT value FROM ${source}`);\n if (Number(rows[0]?.value) !== 7) throw new Error('Restored Delta table lost its data');\n return { restoredRows: rows.length, deepClone: true };\n } finally {\n await warehouse.exec(`DROP TABLE IF EXISTS ${source}`).catch(() => undefined);\n await warehouse.exec(`DROP TABLE IF EXISTS ${backup}`).catch(() => undefined);\n }\n },\n };\n}\n\n/** Prove Delta time-travel rollback returns a corrupted scratch table to its known-good version. */\nexport function rollbackCheck(): LiveCheck {\n return {\n id: 'rollback',\n description: 'Delta time-travel rollback restores a known-good table version',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID || env.DATABRICKS_HTTP_PATH),\n async run({ warehouse }) {\n const table = warehouse.qual(safeName('rollback_probe'));\n try {\n await warehouse.exec(`CREATE TABLE ${table} (value INT) USING DELTA`);\n await warehouse.exec(`INSERT INTO ${table} VALUES (1)`);\n const history = await warehouse.query(`DESCRIBE HISTORY ${table} LIMIT 1`);\n const knownGoodVersion = Number(history[0]?.version);\n if (!Number.isInteger(knownGoodVersion)) {\n throw new Error('Delta history did not return a known-good version');\n }\n await warehouse.exec(`INSERT INTO ${table} VALUES (999)`);\n await warehouse.exec(`RESTORE TABLE ${table} TO VERSION AS OF ${knownGoodVersion}`);\n const rows = await warehouse.query(`SELECT value FROM ${table} ORDER BY value`);\n if (rows.length !== 1 || Number(rows[0]?.value) !== 1) {\n throw new Error('Delta rollback did not restore the known-good contents');\n }\n return { knownGoodVersion, restoredRows: rows.length };\n } finally {\n await warehouse.exec(`DROP TABLE IF EXISTS ${table}`).catch(() => undefined);\n }\n },\n };\n}\n\n/** Certify that the configured SQL warehouse is serverless and usable by the test identity. */\nexport function serverlessComputeCheck(): LiveCheck {\n return {\n id: 'azure-serverless',\n description: 'Azure Databricks serverless SQL warehouse is enabled and executes SQL',\n configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID),\n async run({ env, client, warehouse }) {\n const id = env.DATABRICKS_WAREHOUSE_ID as string;\n const details = await client.get<{\n enable_serverless_compute?: boolean;\n state?: string;\n name?: string;\n }>(`/api/2.0/sql/warehouses/${encodeURIComponent(id)}`);\n if (details.enable_serverless_compute !== true) {\n throw new Error(`SQL warehouse ${id} is not configured for serverless compute`);\n }\n const rows = await warehouse.query('SELECT current_catalog() AS catalog');\n return { warehouseId: id, name: details.name, state: details.state, rows: rows.length };\n },\n };\n}\n\n/** Launch a disposable classic job cluster and require the shared notebook probe to succeed. */\nexport function classicComputeCheck(): LiveCheck {\n return {\n id: 'azure-classic',\n description: 'Azure Databricks classic job cluster starts and completes a notebook workload',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_CLASSIC_SPARK_VERSION &&\n env.DBX_TEST_CLASSIC_NODE_TYPE &&\n env.DBX_TEST_NOTEBOOK_PATH,\n ),\n async run({ env, client }) {\n const numWorkers = Number(env.DBX_TEST_CLASSIC_WORKERS ?? 1);\n const alternateNodeTypes = (env.DBX_TEST_CLASSIC_ALTERNATE_NODE_TYPES ?? '')\n .split(',')\n .map((value) => value.trim())\n .filter(Boolean);\n const singleNode = numWorkers === 0;\n const submitted = await client.post<{ run_id?: number }>('/api/2.1/jobs/runs/submit', {\n run_name: `fabric-experiments-classic-certification-${Date.now()}`,\n tasks: [\n {\n task_key: 'classic_notebook',\n new_cluster: {\n spark_version: env.DBX_TEST_CLASSIC_SPARK_VERSION,\n node_type_id: env.DBX_TEST_CLASSIC_NODE_TYPE,\n num_workers: numWorkers,\n data_security_mode: env.DBX_TEST_CLASSIC_SECURITY_MODE ?? 'SINGLE_USER',\n ...(env.DBX_TEST_CLASSIC_SINGLE_USER_NAME\n ? { single_user_name: env.DBX_TEST_CLASSIC_SINGLE_USER_NAME }\n : {}),\n ...(singleNode\n ? {\n spark_conf: {\n 'spark.databricks.cluster.profile': 'singleNode',\n 'spark.master': 'local[*]',\n },\n custom_tags: { ResourceClass: 'SingleNode' },\n }\n : {}),\n ...(alternateNodeTypes.length\n ? {\n worker_node_type_flexibility: {\n alternate_node_type_ids: alternateNodeTypes,\n },\n driver_node_type_flexibility: {\n alternate_node_type_ids: alternateNodeTypes,\n },\n }\n : {}),\n },\n notebook_task: { notebook_path: env.DBX_TEST_NOTEBOOK_PATH },\n },\n ],\n });\n if (!submitted.run_id) throw new Error('Classic compute submit returned no run_id');\n const run = await waitForDatabricksRun(client as never, submitted.run_id, {\n timeoutMs: Number(env.DBX_TEST_CLASSIC_TIMEOUT_MS ?? 1_800_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 15_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') {\n const message = (run as { state?: { state_message?: string } }).state?.state_message;\n throw new Error(\n `Classic compute run ${submitted.run_id} ended in ${result ?? 'UNKNOWN'}${message ? `: ${message}` : ''}`,\n );\n }\n return {\n runId: submitted.run_id,\n sparkVersion: env.DBX_TEST_CLASSIC_SPARK_VERSION,\n nodeType: env.DBX_TEST_CLASSIC_NODE_TYPE,\n };\n },\n };\n}\n","import type {\n DefinedLiveSuite,\n LiveCheck,\n LiveEvidence,\n LiveSuiteRuntime,\n TargetPackEvidenceMetadata,\n TargetPackMaturity,\n} from './live-suite.js';\nimport { defineLiveSuite } from './live-suite.js';\n\nexport interface TargetPackRequirement {\n id: string;\n description: string;\n /** At least one named environment variable must be present. */\n anyOf: readonly string[];\n required?: boolean;\n secret?: boolean;\n}\n\nexport interface TargetPackSpec {\n id: string;\n name: string;\n description: string;\n version: string;\n maturity: TargetPackMaturity;\n capabilities: readonly string[];\n checks: readonly LiveCheck[] | (() => readonly LiveCheck[]);\n requiredChecks?: readonly string[];\n requirements?: readonly TargetPackRequirement[];\n docsUrl?: string;\n certificationScopes?: readonly string[];\n}\n\nexport interface TargetPack extends Omit<TargetPackSpec, 'checks'> {\n checks(): readonly LiveCheck[];\n}\n\nexport interface TargetPackDoctorRequirement {\n id: string;\n description: string;\n satisfied: boolean;\n required: boolean;\n variables: string[];\n}\n\nexport interface TargetPackDoctorCheck {\n id: string;\n description: string;\n configured: boolean;\n required: boolean;\n}\n\nexport interface TargetPackDoctorResult {\n pack: Pick<TargetPack, 'id' | 'name' | 'version' | 'maturity'>;\n ready: boolean;\n requirements: TargetPackDoctorRequirement[];\n checks: TargetPackDoctorCheck[];\n missingRequirements: string[];\n missingRequiredChecks: string[];\n}\n\nexport interface RunTargetPackOptions {\n env?: Record<string, string | undefined>;\n requiredChecks?: readonly string[];\n evidencePath?: string;\n junitPath?: string;\n}\n\nexport interface DefinedTargetPackRun {\n pack: TargetPack;\n run(runtime?: LiveSuiteRuntime): Promise<LiveEvidence | undefined>;\n}\n\nconst TARGET_PACK_ID = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;\n\nexport function defineTargetPack(spec: TargetPackSpec): TargetPack {\n if (!TARGET_PACK_ID.test(spec.id)) {\n throw new Error(`Target pack id '${spec.id}' must be lowercase kebab-case`);\n }\n if (!spec.name.trim()) throw new Error(`Target pack '${spec.id}' requires a name`);\n if (!/^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$/.test(spec.version)) {\n throw new Error(\n `Target pack '${spec.id}' version '${spec.version}' is not semantic versioning`,\n );\n }\n if (spec.capabilities.length === 0) {\n throw new Error(`Target pack '${spec.id}' must declare at least one capability`);\n }\n\n const createChecks: () => readonly LiveCheck[] =\n typeof spec.checks === 'function' ? spec.checks : () => spec.checks as readonly LiveCheck[];\n const validateChecks = (): readonly LiveCheck[] => {\n const checks = [...createChecks()];\n const ids = new Set<string>();\n for (const check of checks) {\n if (!check.id.trim())\n throw new Error(`Target pack '${spec.id}' contains a check without an id`);\n if (ids.has(check.id)) {\n throw new Error(`Target pack '${spec.id}' contains duplicate check '${check.id}'`);\n }\n ids.add(check.id);\n }\n for (const required of spec.requiredChecks ?? []) {\n if (!ids.has(required)) {\n throw new Error(`Target pack '${spec.id}' requires unknown check '${required}'`);\n }\n }\n return checks;\n };\n validateChecks();\n\n return Object.freeze({\n ...spec,\n capabilities: Object.freeze([...spec.capabilities]),\n requiredChecks: Object.freeze([...(spec.requiredChecks ?? [])]),\n requirements: Object.freeze([...(spec.requirements ?? [])]),\n certificationScopes: Object.freeze([...(spec.certificationScopes ?? [])]),\n checks: validateChecks,\n });\n}\n\nexport function createTargetPackRegistry(\n packs: readonly TargetPack[],\n): ReadonlyMap<string, TargetPack> {\n const registry = new Map<string, TargetPack>();\n for (const pack of packs) {\n if (registry.has(pack.id)) throw new Error(`Duplicate target pack '${pack.id}'`);\n registry.set(pack.id, pack);\n }\n return registry;\n}\n\nexport function doctorTargetPack(\n pack: TargetPack,\n env: Record<string, string | undefined> = process.env,\n requiredChecks: readonly string[] = [],\n): TargetPackDoctorResult {\n const requirements = (pack.requirements ?? []).map((requirement) => ({\n id: requirement.id,\n description: requirement.description,\n satisfied: requirement.anyOf.some((name) => Boolean(env[name]?.trim())),\n required: requirement.required !== false,\n variables: [...requirement.anyOf],\n }));\n const required = new Set(resolveRequiredChecks(pack, requiredChecks));\n const checks = pack.checks().map((check) => ({\n id: check.id,\n description: check.description,\n configured: check.configured ? check.configured(env) : true,\n required: required.has(check.id),\n }));\n const known = new Set(checks.map((check) => check.id));\n const missingRequirements = requirements\n .filter((requirement) => requirement.required && !requirement.satisfied)\n .map((requirement) => requirement.id);\n const missingRequiredChecks = [\n ...checks.filter((check) => check.required && !check.configured).map((check) => check.id),\n ...[...required].filter((id) => !known.has(id)),\n ];\n return {\n pack: {\n id: pack.id,\n name: pack.name,\n version: pack.version,\n maturity: pack.maturity,\n },\n ready: missingRequirements.length === 0 && missingRequiredChecks.length === 0,\n requirements,\n checks,\n missingRequirements,\n missingRequiredChecks,\n };\n}\n\nexport function defineTargetPackRun(\n pack: TargetPack,\n options: RunTargetPackOptions = {},\n): DefinedTargetPackRun {\n const env = options.env ?? process.env;\n const requiredChecks = resolveRequiredChecks(pack, options.requiredChecks);\n const doctor = doctorTargetPack(pack, env, requiredChecks);\n if (!doctor.ready) {\n const missing = [...doctor.missingRequirements, ...doctor.missingRequiredChecks].join(', ');\n throw new Error(`Target pack '${pack.id}' is not configured: ${missing}`);\n }\n const targetPack = evidenceMetadata(pack, env);\n const suite: DefinedLiveSuite = defineLiveSuite({\n checks: pack.checks(),\n required: requiredChecks,\n env,\n evidencePath: options.evidencePath,\n junitPath: options.junitPath,\n targetPack,\n });\n return { pack, run: (runtime) => suite.run(runtime) };\n}\n\n/**\n * Caller-selected checks extend a pack's immutable certification baseline.\n * They must never replace it: doing so could produce successful evidence after\n * omitting an identity, denial, quality, or cleanup control owned by the pack.\n */\nexport function resolveRequiredChecks(\n pack: Pick<TargetPack, 'requiredChecks'>,\n additional: readonly string[] = [],\n): string[] {\n return [...new Set([...(pack.requiredChecks ?? []), ...additional])];\n}\n\nexport async function runTargetPack(\n pack: TargetPack,\n options: RunTargetPackOptions = {},\n runtime?: LiveSuiteRuntime,\n): Promise<LiveEvidence | undefined> {\n return defineTargetPackRun(pack, options).run(runtime);\n}\n\nfunction evidenceMetadata(\n pack: TargetPack,\n env: Record<string, string | undefined>,\n): TargetPackEvidenceMetadata {\n return {\n id: pack.id,\n name: pack.name,\n version: pack.version,\n maturity: pack.maturity,\n capabilities: [...pack.capabilities],\n ...(pack.docsUrl ? { docsUrl: pack.docsUrl } : {}),\n certificationScopes: [...(pack.certificationScopes ?? [])],\n target: compact({\n cloud: env.DBX_TEST_CLOUD,\n region: env.DBX_TEST_REGION,\n workspace: env.DATABRICKS_HOST,\n runtime: env.DBX_TEST_RUNTIME_VERSION,\n compute: env.DBX_TEST_COMPUTE,\n }),\n };\n}\n\nfunction compact<T extends Record<string, string | undefined>>(\n value: T,\n): {\n [K in keyof T]?: string;\n} {\n return Object.fromEntries(\n Object.entries(value).filter((entry): entry is [string, string] => Boolean(entry[1])),\n ) as { [K in keyof T]?: string };\n}\n","import { autoLoaderIngestionCheck } from './autoloader-checks.js';\nimport { lakebaseCredentialCheck, lakebaseRoundTripCheck } from './lakebase-checks.js';\nimport {\n dbtBuildCheck,\n deltaContractCheck,\n jobRunCheck,\n notebookSubmitCheck,\n pipelineRefreshCheck,\n restrictedPrincipalCheck,\n sqlRoundTripCheck,\n unityCatalogAccessCheck,\n} from './live-checks.js';\nimport { appHealthCheck, secretScopeCheck } from './platform-checks.js';\nimport {\n backupRestoreCheck,\n classicComputeCheck,\n failureRecoveryCheck,\n performanceBudgetCheck,\n rollbackCheck,\n secretRotationCheck,\n serverlessComputeCheck,\n} from './resilience-checks.js';\nimport { type TargetPack, defineTargetPack } from './target-packs.js';\nimport { volumeIOCheck } from './volume-checks.js';\n\nconst DOCS = 'https://experiments.fabric.pro/docs/testing/target-packs/';\nconst AZURE_SCOPE = 'Azure Databricks live-gated; see certification evidence for exact runtime';\n\nconst workspaceRequirement = {\n id: 'workspace',\n description: 'Databricks workspace host',\n anyOf: ['DATABRICKS_HOST'],\n} as const;\n\nconst authRequirement = {\n id: 'authentication',\n description: 'Databricks OAuth, OIDC, bearer, or PAT authentication',\n anyOf: [\n 'DATABRICKS_BEARER',\n 'DATABRICKS_TOKEN',\n 'DATABRICKS_CLIENT_ID',\n 'DATABRICKS_OIDC_TOKEN',\n 'DATABRICKS_OIDC_TOKEN_FILEPATH',\n ],\n secret: true,\n} as const;\n\nconst warehouseRequirement = {\n id: 'warehouse',\n description: 'SQL warehouse ID or HTTP path',\n anyOf: ['DATABRICKS_WAREHOUSE_ID', 'DATABRICKS_HTTP_PATH'],\n} as const;\n\nexport function createSqlDeltaFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'sql-delta',\n name: 'SQL and Delta foundation',\n description:\n 'SQL Statement Execution, Delta contracts, performance, recovery, backup and rollback.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'sql.statement-execution',\n 'delta.contract',\n 'delta.time-travel',\n 'performance.sql',\n 'recovery.sql',\n 'backup-restore.delta',\n 'rollback.delta',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n sqlRoundTripCheck(),\n deltaContractCheck(),\n serverlessComputeCheck(),\n performanceBudgetCheck(),\n failureRecoveryCheck(),\n backupRestoreCheck(),\n rollbackCheck(),\n ],\n requiredChecks: ['sql'],\n requirements: [workspaceRequirement, authRequirement, warehouseRequirement],\n docsUrl: `${DOCS}#sql-and-delta-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createLakeflowFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'lakeflow-ingestion',\n name: 'Lakeflow ingestion foundation',\n description: 'Lakeflow refresh, Volumes, Auto Loader ingestion and rescued-row evidence.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'lakeflow.refresh',\n 'autoloader.ingestion',\n 'volumes.files',\n 'delta.rescued-data',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n pipelineRefreshCheck(),\n volumeIOCheck(),\n autoLoaderIngestionCheck(),\n ],\n requiredChecks: ['pipeline'],\n requirements: [workspaceRequirement, authRequirement],\n docsUrl: `${DOCS}#lakeflow-ingestion-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createJobsCodeFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'jobs-code',\n name: 'Jobs and code foundation',\n description: 'Jobs, notebooks, dbt, serverless compute and classic compute probes.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'jobs.run-now',\n 'jobs.submit.notebook',\n 'jobs.submit.dbt',\n 'compute.serverless',\n 'compute.classic',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n jobRunCheck(),\n notebookSubmitCheck(),\n dbtBuildCheck(),\n serverlessComputeCheck(),\n classicComputeCheck(),\n ],\n requiredChecks: ['jobs'],\n requirements: [workspaceRequirement, authRequirement],\n docsUrl: `${DOCS}#jobs-and-code-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createUnityStorageFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'unity-storage',\n name: 'Unity Catalog and storage foundation',\n description: 'Unity Catalog allow/deny, Volumes, secret metadata and secret rotation.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'unity-catalog.permissions',\n 'volumes.files',\n 'secrets.metadata',\n 'secrets.rotation',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n unityCatalogAccessCheck(),\n volumeIOCheck(),\n secretScopeCheck(),\n secretRotationCheck(),\n ],\n requiredChecks: ['uc-grants'],\n requirements: [workspaceRequirement, authRequirement, warehouseRequirement],\n docsUrl: `${DOCS}#unity-catalog-and-storage-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createAppsOperationalFoundationPack(): TargetPack {\n return defineTargetPack({\n id: 'apps-operational',\n name: 'Apps and operational data foundation',\n description: 'Databricks Apps resources and health plus Lakebase OAuth and pool refresh.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'apps.health',\n 'apps.resources',\n 'lakebase.credentials',\n 'lakebase.round-trip',\n 'lakebase.pool-refresh',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n appHealthCheck(),\n lakebaseCredentialCheck(),\n lakebaseRoundTripCheck(),\n ],\n requiredChecks: ['app'],\n requirements: [workspaceRequirement, authRequirement],\n docsUrl: `${DOCS}#apps-and-operational-data-foundation`,\n certificationScopes: [AZURE_SCOPE],\n });\n}\n\nexport function createFoundationTargetPacks(): readonly TargetPack[] {\n return [\n createSqlDeltaFoundationPack(),\n createLakeflowFoundationPack(),\n createJobsCodeFoundationPack(),\n createUnityStorageFoundationPack(),\n createAppsOperationalFoundationPack(),\n ];\n}\n\nexport const foundationTargetPacks = createFoundationTargetPacks();\n","import type { LiveCheck } from './live-suite.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\nimport type { WorkspaceClientLike } from './workspace-context.js';\n\nexport interface JobTaskDependency {\n task_key: string;\n outcome?: string;\n}\n\nexport interface JobTaskBase {\n task_key: string;\n depends_on?: JobTaskDependency[];\n run_if?:\n | 'ALL_SUCCESS'\n | 'AT_LEAST_ONE_SUCCESS'\n | 'NONE_FAILED'\n | 'ALL_DONE'\n | 'AT_LEAST_ONE_FAILED'\n | 'ALL_FAILED';\n timeout_seconds?: number;\n max_retries?: number;\n min_retry_interval_millis?: number;\n retry_on_timeout?: boolean;\n existing_cluster_id?: string;\n job_cluster_key?: string;\n environment_key?: string;\n}\n\nexport interface NotebookJobTask extends JobTaskBase {\n notebook_task: {\n notebook_path: string;\n base_parameters?: Record<string, string>;\n source?: 'WORKSPACE' | 'GIT';\n };\n}\n\nexport interface PythonWheelJobTask extends JobTaskBase {\n python_wheel_task: {\n package_name: string;\n entry_point: string;\n parameters?: string[];\n named_parameters?: Record<string, string>;\n };\n}\n\nexport interface SparkJarJobTask extends JobTaskBase {\n spark_jar_task: { main_class_name: string; parameters?: string[] };\n}\n\nexport interface SparkPythonJobTask extends JobTaskBase {\n spark_python_task: { python_file: string; parameters?: string[]; source?: 'WORKSPACE' | 'GIT' };\n}\n\nexport interface SparkSubmitJobTask extends JobTaskBase {\n spark_submit_task: { parameters: string[] };\n}\n\nexport interface PipelineJobTask extends JobTaskBase {\n pipeline_task: { pipeline_id: string; full_refresh?: boolean };\n}\n\nexport interface SqlJobTask extends JobTaskBase {\n sql_task: Record<string, unknown> & { warehouse_id: string };\n}\n\nexport interface DbtJobTask extends JobTaskBase {\n dbt_task: Record<string, unknown> & { commands: string[] };\n}\n\nexport interface RunJobTask extends JobTaskBase {\n run_job_task: { job_id: number; job_parameters?: Record<string, string> };\n}\n\nexport interface ConditionJobTask extends JobTaskBase {\n condition_task: {\n left: string;\n op:\n | 'EQUAL_TO'\n | 'NOT_EQUAL'\n | 'GREATER_THAN'\n | 'GREATER_THAN_OR_EQUAL'\n | 'LESS_THAN'\n | 'LESS_THAN_OR_EQUAL';\n right: string;\n };\n}\n\nexport interface ForEachJobTask extends JobTaskBase {\n for_each_task: {\n inputs: string;\n concurrency?: number;\n task: Exclude<DatabricksJobTask, ForEachJobTask>;\n };\n}\n\nexport type DatabricksJobTask =\n | NotebookJobTask\n | PythonWheelJobTask\n | SparkJarJobTask\n | SparkPythonJobTask\n | SparkSubmitJobTask\n | PipelineJobTask\n | SqlJobTask\n | DbtJobTask\n | RunJobTask\n | ConditionJobTask\n | ForEachJobTask;\n\nexport interface JobsSubmitRequest {\n run_name: string;\n tasks: DatabricksJobTask[];\n parameters?: Array<{ name: string; default: string }>;\n job_clusters?: Array<Record<string, unknown> & { job_cluster_key: string }>;\n environments?: Array<Record<string, unknown> & { environment_key: string }>;\n git_source?: Record<string, unknown>;\n timeout_seconds?: number;\n idempotency_token?: string;\n}\n\nexport interface JobTaskRunState {\n taskKey: string;\n runId?: number;\n lifeCycleState: string;\n resultState: string;\n stateMessage?: string;\n attemptNumber?: number;\n}\n\nexport interface JobOrchestrationRun {\n runId: number;\n lifeCycleState: string;\n resultState: string;\n tasks: JobTaskRunState[];\n repairs: JobRepairRunState[];\n raw: Record<string, unknown>;\n}\n\nexport interface JobRepairRunState {\n repairId: number;\n type: string;\n lifeCycleState: string;\n resultState: string;\n taskRunIds: number[];\n}\n\nexport interface JobWaitOptions {\n timeoutMs?: number;\n pollIntervalMs?: number;\n}\n\nexport interface JobRepairOptions {\n rerunTasks?: string[];\n latestRepairId?: number;\n rerunDependentTasks?: boolean;\n}\n\nexport interface JobOrchestrationLiveSpec {\n request: JobsSubmitRequest;\n expectedResult?: string;\n expectedTasks?: Record<string, string>;\n repairFailedTasks?: boolean;\n cancellation?: {\n request: JobsSubmitRequest;\n expectedResult?: string;\n };\n}\n\nexport class DatabricksJobsAdapter {\n constructor(private readonly client: WorkspaceClientLike) {}\n\n async submit(request: JobsSubmitRequest): Promise<number> {\n validateJobGraph(request.tasks);\n const response = await this.client.post<{ run_id?: number }>(\n '/api/2.1/jobs/runs/submit',\n request,\n );\n if (!response.run_id) throw new Error('Databricks Jobs submit returned no run_id');\n return response.run_id;\n }\n\n async get(runId: number): Promise<JobOrchestrationRun> {\n const raw = await this.client.get<Record<string, unknown>>('/api/2.1/jobs/runs/get', {\n run_id: runId,\n include_history: true,\n include_resolved_values: true,\n });\n return normalizeJobRun(runId, raw);\n }\n\n async wait(runId: number, options: JobWaitOptions = {}): Promise<JobOrchestrationRun> {\n const raw = (await waitForDatabricksRun(this.client as never, runId, {\n timeoutMs: options.timeoutMs,\n pollIntervalMs: options.pollIntervalMs,\n })) as Record<string, unknown>;\n return normalizeJobRun(runId, raw);\n }\n\n async cancel(runId: number): Promise<void> {\n await this.client.post('/api/2.1/jobs/runs/cancel', { run_id: runId });\n }\n\n async waitUntilActive(runId: number, options: JobWaitOptions = {}): Promise<JobOrchestrationRun> {\n const timeoutMs = options.timeoutMs ?? 300_000;\n const pollIntervalMs = options.pollIntervalMs ?? 2_000;\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const run = await this.get(runId);\n if (run.lifeCycleState === 'RUNNING') return run;\n if (isTerminal(run.lifeCycleState)) {\n throw new Error(\n `Databricks run ${runId} reached ${run.lifeCycleState}/${run.resultState} before it could be canceled`,\n );\n }\n await delay(pollIntervalMs);\n }\n throw new Error(`Databricks run ${runId} did not become active within ${timeoutMs}ms`);\n }\n\n async repair(runId: number, options: JobRepairOptions = {}): Promise<number> {\n const response = await this.client.post<{ repair_id?: number }>('/api/2.1/jobs/runs/repair', {\n run_id: runId,\n ...(options.latestRepairId ? { latest_repair_id: options.latestRepairId } : {}),\n ...(options.rerunDependentTasks ? { rerun_dependent_tasks: true } : {}),\n ...(options.rerunTasks?.length\n ? { rerun_tasks: options.rerunTasks }\n : { rerun_all_failed_tasks: true }),\n });\n if (!response.repair_id) throw new Error('Databricks Jobs repair returned no repair_id');\n return response.repair_id;\n }\n\n async waitForRepair(\n runId: number,\n repairId: number,\n options: JobWaitOptions = {},\n ): Promise<JobOrchestrationRun> {\n const timeoutMs = options.timeoutMs ?? 900_000;\n const pollIntervalMs = options.pollIntervalMs ?? 5_000;\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const run = await this.get(runId);\n const repair = run.repairs.find((candidate) => candidate.repairId === repairId);\n if (repair && isTerminal(repair.lifeCycleState)) return run;\n await delay(pollIntervalMs);\n }\n throw new Error(\n `Databricks repair ${repairId} for run ${runId} timed out after ${timeoutMs}ms`,\n );\n }\n}\n\nexport function validateJobGraph(tasks: readonly DatabricksJobTask[]): void {\n if (tasks.length === 0) throw new Error('Jobs orchestration requires at least one task');\n const keys = new Set<string>();\n for (const task of tasks) {\n if (!/^[A-Za-z0-9_-]{1,100}$/.test(task.task_key)) {\n throw new Error(`Invalid task key '${task.task_key}'`);\n }\n if (keys.has(task.task_key)) throw new Error(`Duplicate task key '${task.task_key}'`);\n keys.add(task.task_key);\n }\n const edges = new Map<string, string[]>();\n for (const task of tasks) {\n const dependencies = (task.depends_on ?? []).map((dependency) => dependency.task_key);\n for (const dependency of dependencies) {\n if (!keys.has(dependency)) {\n throw new Error(`Task '${task.task_key}' depends on unknown task '${dependency}'`);\n }\n if (dependency === task.task_key) {\n throw new Error(`Task '${task.task_key}' cannot depend on itself`);\n }\n }\n edges.set(task.task_key, dependencies);\n }\n const visiting = new Set<string>();\n const visited = new Set<string>();\n const visit = (key: string): void => {\n if (visiting.has(key)) throw new Error(`Jobs task graph contains a cycle at '${key}'`);\n if (visited.has(key)) return;\n visiting.add(key);\n for (const dependency of edges.get(key) ?? []) visit(dependency);\n visiting.delete(key);\n visited.add(key);\n };\n for (const key of keys) visit(key);\n}\n\nexport function jobsOrchestrationCheck(): LiveCheck {\n return {\n id: 'jobs-orchestration',\n description: 'Lakeflow Jobs multi-task orchestration reaches expected task outcomes',\n configured: (env) => Boolean(env.DBX_TEST_JOBS_ORCHESTRATION_JSON),\n async run({ env, client }) {\n const configured = env.DBX_TEST_JOBS_ORCHESTRATION_JSON;\n if (!configured) throw new Error('DBX_TEST_JOBS_ORCHESTRATION_JSON is required');\n const spec = parseJobOrchestrationLiveSpec(configured);\n const adapter = new DatabricksJobsAdapter(client);\n const runId = await adapter.submit(spec.request);\n let run = await adapter.wait(runId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n let repairId: number | undefined;\n if (spec.repairFailedTasks && run.resultState !== 'SUCCESS') {\n const failed = run.tasks\n .filter((task) => task.resultState === 'FAILED')\n .map((task) => task.taskKey);\n repairId = await adapter.repair(runId, {\n rerunTasks: failed.length > 0 ? failed : undefined,\n rerunDependentTasks: true,\n });\n run = await adapter.waitForRepair(runId, repairId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n }\n const expectedResult = spec.expectedResult ?? 'SUCCESS';\n if (run.resultState !== expectedResult) {\n throw new Error(\n `Job orchestration run ${runId} ended in ${run.resultState}, expected ${expectedResult}`,\n );\n }\n for (const [taskKey, expected] of Object.entries(spec.expectedTasks ?? {})) {\n const task = run.tasks.find((candidate) => candidate.taskKey === taskKey);\n if (!task) throw new Error(`Job orchestration result did not include task '${taskKey}'`);\n if (task.resultState !== expected) {\n throw new Error(`Task '${taskKey}' ended in ${task.resultState}, expected ${expected}`);\n }\n }\n let cancellation: { runId: number; resultState: string } | undefined;\n if (spec.cancellation) {\n const cancellationRunId = await adapter.submit(spec.cancellation.request);\n await adapter.waitUntilActive(cancellationRunId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n await adapter.cancel(cancellationRunId);\n const canceled = await adapter.wait(cancellationRunId, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const expectedCancellation = spec.cancellation.expectedResult ?? 'CANCELED';\n if (canceled.resultState !== expectedCancellation) {\n throw new Error(\n `Cancellation run ${cancellationRunId} ended in ${canceled.resultState}, expected ${expectedCancellation}`,\n );\n }\n cancellation = { runId: cancellationRunId, resultState: canceled.resultState };\n }\n return {\n runId,\n ...(repairId ? { repairId } : {}),\n resultState: run.resultState,\n tasks: run.tasks,\n ...(cancellation ? { cancellation } : {}),\n };\n },\n };\n}\n\nexport function parseJobOrchestrationLiveSpec(value: string): JobOrchestrationLiveSpec {\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n throw new Error(`DBX_TEST_JOBS_ORCHESTRATION_JSON is invalid JSON: ${String(error)}`);\n }\n if (!parsed || typeof parsed !== 'object') {\n throw new Error('Jobs orchestration spec must be an object');\n }\n const spec = parsed as Partial<JobOrchestrationLiveSpec>;\n if (!spec.request || typeof spec.request !== 'object' || !Array.isArray(spec.request.tasks)) {\n throw new Error('Jobs orchestration spec requires request.tasks');\n }\n validateJobGraph(spec.request.tasks);\n if (spec.cancellation) {\n if (\n typeof spec.cancellation !== 'object' ||\n !spec.cancellation.request ||\n !Array.isArray(spec.cancellation.request.tasks)\n ) {\n throw new Error('Jobs orchestration cancellation requires request.tasks');\n }\n validateJobGraph(spec.cancellation.request.tasks);\n }\n return spec as JobOrchestrationLiveSpec;\n}\n\nexport function normalizeJobRun(\n fallbackRunId: number,\n raw: Record<string, unknown>,\n): JobOrchestrationRun {\n const state = objectOf(raw.state);\n const repairEntries = Array.isArray(raw.repair_history)\n ? raw.repair_history.filter((repair): repair is Record<string, unknown> =>\n Boolean(repair && typeof repair === 'object'),\n )\n : [];\n const taskRunRanks = new Map<number, number>();\n for (const [rank, repair] of repairEntries.entries()) {\n for (const runId of numberArray(repair.task_run_ids)) taskRunRanks.set(runId, rank);\n }\n const taskAttempts = Array.isArray(raw.tasks)\n ? raw.tasks\n .filter((task): task is Record<string, unknown> =>\n Boolean(task && typeof task === 'object'),\n )\n .map((task) => {\n const taskState = objectOf(task.state);\n return {\n taskKey: String(task.task_key ?? 'unknown'),\n ...(Number.isFinite(Number(task.run_id)) ? { runId: Number(task.run_id) } : {}),\n lifeCycleState: String(taskState.life_cycle_state ?? 'UNKNOWN'),\n resultState: String(taskState.result_state ?? 'UNKNOWN'),\n ...(typeof taskState.state_message === 'string'\n ? { stateMessage: taskState.state_message }\n : {}),\n ...(Number.isFinite(Number(task.attempt_number))\n ? { attemptNumber: Number(task.attempt_number) }\n : {}),\n };\n })\n : [];\n const latestTasks = new Map<string, JobTaskRunState>();\n for (const task of taskAttempts) {\n const current = latestTasks.get(task.taskKey);\n const currentAttempt = current?.attemptNumber ?? -1;\n const candidateAttempt = task.attemptNumber ?? -1;\n const currentRank = current?.runId ? (taskRunRanks.get(current.runId) ?? -1) : -1;\n const candidateRank = task.runId ? (taskRunRanks.get(task.runId) ?? -1) : -1;\n if (\n !current ||\n candidateAttempt > currentAttempt ||\n (candidateAttempt === currentAttempt && candidateRank >= currentRank)\n ) {\n latestTasks.set(task.taskKey, task);\n }\n }\n const tasks = [...latestTasks.values()];\n const repairs = repairEntries.map((repair) => {\n const repairState = objectOf(repair.state);\n return {\n repairId: Number(repair.id ?? repair.repair_id ?? 0),\n type: String(repair.type ?? 'UNKNOWN'),\n lifeCycleState: String(repairState.life_cycle_state ?? 'UNKNOWN'),\n resultState: String(repairState.result_state ?? 'UNKNOWN'),\n taskRunIds: numberArray(repair.task_run_ids),\n };\n });\n return {\n runId: Number(raw.run_id ?? fallbackRunId),\n lifeCycleState: String(state.life_cycle_state ?? 'UNKNOWN'),\n resultState: String(state.result_state ?? 'UNKNOWN'),\n tasks,\n repairs,\n raw,\n };\n}\n\nfunction isTerminal(state: string): boolean {\n return ['TERMINATED', 'SKIPPED', 'INTERNAL_ERROR', 'BLOCKED'].includes(state);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction objectOf(value: unknown): Record<string, unknown> {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n}\n\nfunction numberArray(value: unknown): number[] {\n return Array.isArray(value)\n ? value.map(Number).filter((candidate) => Number.isFinite(candidate))\n : [];\n}\n","import { randomUUID } from 'node:crypto';\nimport { DatabricksJobsAdapter, type JobsSubmitRequest } from './jobs-orchestration.js';\nimport type { LiveCheck } from './live-suite.js';\nimport type { WorkspaceClientLike } from './workspace-context.js';\n\nconst NOTEBOOKS = {\n seed: `# Databricks notebook source\ndbutils.jobs.taskValues.set(key=\"branch\", value=\"run\")\ndbutils.jobs.taskValues.set(key=\"items\", value=[\"alpha\", \"beta\"])\ndbutils.notebook.exit(\"seeded\")\n`,\n process: `# Databricks notebook source\ndbutils.widgets.text(\"item\", \"\")\nitem = dbutils.widgets.get(\"item\")\nassert item, \"item parameter is required\"\ndbutils.notebook.exit(item)\n`,\n retry: `# Databricks notebook source\ndbutils.widgets.text(\"execution_count\", \"0\")\nexecution_count = int(dbutils.widgets.get(\"execution_count\"))\nif execution_count <= 1:\n raise RuntimeError(\"intentional retryable failure\")\ndbutils.notebook.exit(\"retried\")\n`,\n repair: `# Databricks notebook source\ndbutils.widgets.text(\"repair_count\", \"0\")\nrepair_count = int(dbutils.widgets.get(\"repair_count\"))\nif repair_count == 0:\n raise RuntimeError(\"intentional first-run failure\")\ndbutils.notebook.exit(\"repaired\")\n`,\n sleep: `# Databricks notebook source\nimport time\ntime.sleep(300)\n`,\n} as const;\n\nexport function jobsCertificationCheck(): LiveCheck {\n return {\n id: 'jobs-certification',\n description:\n 'Disposable Lakeflow Jobs branch, loop, failure, repair, cancellation, and cleanup certification',\n configured: (env) => env.DBX_TEST_JOBS_CERTIFY === '1',\n async run({ env, client }) {\n const root = `${env.DBX_TEST_JOBS_FIXTURE_ROOT ?? '/Workspace/Shared/fabric-experiments-target-pack'}/${randomUUID()}`;\n const paths = Object.fromEntries(\n Object.keys(NOTEBOOKS).map((name) => [name, `${root}/${name}`]),\n ) as Record<keyof typeof NOTEBOOKS, string>;\n try {\n await importNotebooks(client, paths);\n const adapter = new DatabricksJobsAdapter(client);\n const runId = await adapter.submit(certificationRequest(paths));\n const initial = await adapter.wait(runId, waitOptions(env));\n if (initial.resultState !== 'FAILED') {\n throw new Error(\n `Certification run ${runId} expected FAILED before repair, got ${initial.resultState}`,\n );\n }\n const retried = assertTask(initial.tasks, 'retry', 'SUCCESS');\n if ((retried.attemptNumber ?? 0) < 1) {\n throw new Error('Certification retry task did not record a second attempt');\n }\n assertTask(initial.tasks, 'seed', 'SUCCESS');\n assertTask(initial.tasks, 'branch', 'SUCCESS');\n assertTask(initial.tasks, 'foreach', 'SUCCESS');\n assertTask(initial.tasks, 'repair', 'FAILED');\n\n const repairId = await adapter.repair(runId, {\n rerunTasks: ['repair'],\n rerunDependentTasks: true,\n });\n const repaired = await adapter.waitForRepair(runId, repairId, waitOptions(env));\n if (repaired.resultState !== 'SUCCESS') {\n throw new Error(`Certification repair ${repairId} ended in ${repaired.resultState}`);\n }\n assertTask(repaired.tasks, 'repair', 'SUCCESS');\n\n const cancellationRunId = await adapter.submit(cancellationRequest(paths));\n await adapter.waitUntilActive(cancellationRunId, waitOptions(env));\n await adapter.cancel(cancellationRunId);\n const canceled = await adapter.wait(cancellationRunId, waitOptions(env));\n if (canceled.resultState !== 'CANCELED') {\n throw new Error(`Certification cancellation ended in ${canceled.resultState}`);\n }\n\n return {\n runId,\n repairId,\n cancellationRunId,\n taskValues: true,\n retry: true,\n condition: true,\n forEach: true,\n repair: true,\n cancellation: true,\n fixtureRoot: root,\n };\n } finally {\n await client.post('/api/2.0/workspace/delete', { path: root, recursive: true });\n }\n },\n };\n}\n\nasync function importNotebooks(\n client: WorkspaceClientLike,\n paths: Record<keyof typeof NOTEBOOKS, string>,\n): Promise<void> {\n await client.post('/api/2.0/workspace/mkdirs', {\n path: paths.seed.slice(0, paths.seed.lastIndexOf('/')),\n });\n for (const [name, source] of Object.entries(NOTEBOOKS) as Array<\n [keyof typeof NOTEBOOKS, string]\n >) {\n await client.post('/api/2.0/workspace/import', {\n path: paths[name],\n format: 'SOURCE',\n language: 'PYTHON',\n overwrite: true,\n content: Buffer.from(source).toString('base64'),\n });\n }\n}\n\nfunction certificationRequest(paths: Record<keyof typeof NOTEBOOKS, string>): JobsSubmitRequest {\n return {\n run_name: 'fabric-experiments-jobs-certification',\n tasks: [\n {\n task_key: 'retry',\n notebook_task: {\n notebook_path: paths.retry,\n base_parameters: { execution_count: '{{task.execution_count}}' },\n },\n max_retries: 1,\n },\n {\n task_key: 'seed',\n depends_on: [{ task_key: 'retry' }],\n notebook_task: { notebook_path: paths.seed },\n },\n {\n task_key: 'branch',\n depends_on: [{ task_key: 'seed' }],\n condition_task: {\n left: '{{tasks.seed.values.branch}}',\n op: 'EQUAL_TO',\n right: 'run',\n },\n },\n {\n task_key: 'foreach',\n depends_on: [{ task_key: 'branch', outcome: 'true' }],\n for_each_task: {\n inputs: '{{tasks.seed.values.items}}',\n concurrency: 2,\n task: {\n task_key: 'process_item',\n notebook_task: {\n notebook_path: paths.process,\n base_parameters: { item: '{{input}}' },\n },\n },\n },\n },\n {\n task_key: 'repair',\n depends_on: [{ task_key: 'foreach' }],\n notebook_task: {\n notebook_path: paths.repair,\n base_parameters: { repair_count: '{{job.repair_count}}' },\n },\n },\n ],\n };\n}\n\nfunction cancellationRequest(paths: Record<keyof typeof NOTEBOOKS, string>): JobsSubmitRequest {\n return {\n run_name: 'fabric-experiments-jobs-cancellation-certification',\n tasks: [{ task_key: 'sleep', notebook_task: { notebook_path: paths.sleep } }],\n };\n}\n\nfunction waitOptions(env: Record<string, string | undefined>) {\n return {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 5_000),\n };\n}\n\nfunction assertTask(\n tasks: Array<{ taskKey: string; resultState: string; attemptNumber?: number }>,\n taskKey: string,\n resultState: string,\n): { taskKey: string; resultState: string; attemptNumber?: number } {\n const task = tasks.find((candidate) => candidate.taskKey === taskKey);\n if (!task) throw new Error(`Certification result did not contain task '${taskKey}'`);\n if (task.resultState !== resultState) {\n throw new Error(\n `Certification task '${taskKey}' ended in ${task.resultState}, expected ${resultState}`,\n );\n }\n return task;\n}\n","import { jobsCertificationCheck } from './jobs-certification-check.js';\nimport { jobsOrchestrationCheck } from './jobs-orchestration.js';\nimport { jobRunCheck, restrictedPrincipalCheck } from './live-checks.js';\nimport { type TargetPack, defineTargetPack } from './target-packs.js';\n\nexport function createLakeflowJobsTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'lakeflow-jobs',\n name: 'Lakeflow Jobs orchestration',\n description:\n 'Typed multi-task DAG, branch/loop, retry, cancellation, repair and task-outcome validation.',\n version: '0.2.0',\n maturity: 'live-gated',\n capabilities: [\n 'jobs.multi-task-dag',\n 'jobs.dependencies',\n 'jobs.condition-task',\n 'jobs.for-each-task',\n 'jobs.retry',\n 'jobs.cancel',\n 'jobs.repair',\n 'jobs.task-outcomes',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n jobRunCheck(),\n jobsOrchestrationCheck(),\n jobsCertificationCheck(),\n ],\n requiredChecks: ['jobs-orchestration'],\n requirements: [\n {\n id: 'workspace',\n description: 'Databricks workspace host',\n anyOf: ['DATABRICKS_HOST'],\n },\n {\n id: 'authentication',\n description: 'Databricks OAuth, OIDC, bearer, or PAT authentication',\n anyOf: [\n 'DATABRICKS_BEARER',\n 'DATABRICKS_TOKEN',\n 'DATABRICKS_CLIENT_ID',\n 'DATABRICKS_OIDC_TOKEN',\n 'DATABRICKS_OIDC_TOKEN_FILEPATH',\n ],\n secret: true,\n },\n {\n id: 'orchestration-spec',\n description: 'JSON multi-task orchestration scenario',\n anyOf: ['DBX_TEST_JOBS_ORCHESTRATION_JSON'],\n required: false,\n },\n ],\n docsUrl:\n 'https://experiments.fabric.pro/docs/testing/target-packs/#lakeflow-jobs-orchestration',\n certificationScopes: [\n 'Azure Databricks serverless Jobs, West US, workspace OAuth, public network path',\n ],\n });\n}\n","import type { LiveCheck } from './live-suite.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\nimport type { WorkspaceClientLike } from './workspace-context.js';\n\ntype Env = Record<string, string | undefined>;\n\nfunction missing(env: Env, names: readonly string[]): string[] {\n return names.filter((name) => !env[name]?.trim());\n}\n\nfunction requireEnv(env: Env, names: readonly string[]): void {\n const absent = missing(env, names);\n if (absent.length > 0) throw new Error(`Missing required configuration: ${absent.join(', ')}`);\n}\n\nasync function assertBooleanSql(\n label: string,\n statement: string | undefined,\n query: (sql: string) => Promise<Record<string, unknown>[]>,\n): Promise<void> {\n if (!statement) throw new Error(`${label} assertion SQL is not configured`);\n const rows = await query(statement);\n const value = rows[0] ? Object.values(rows[0])[0] : undefined;\n if (!(value === true || value === 1 || value === '1' || value === 'true')) {\n throw new Error(`${label} assertion did not return a truthy first column`);\n }\n}\n\nasync function certificationJob(\n label: string,\n jobIdValue: string | undefined,\n env: Env,\n client: WorkspaceClientLike,\n): Promise<{ jobId: number; runId: number }> {\n const jobId = Number(jobIdValue);\n if (!Number.isSafeInteger(jobId) || jobId <= 0) {\n throw new Error(`${label} job id must be a positive integer`);\n }\n const submitted = await client.post<{ run_id?: number }>('/api/2.1/jobs/run-now', {\n job_id: jobId,\n });\n if (!Number.isSafeInteger(submitted.run_id)) {\n throw new Error(`${label} certification job returned no run_id`);\n }\n const run = await waitForDatabricksRun(client as never, submitted.run_id as number, {\n timeoutMs: Number(env.DBX_TEST_TIMEOUT_MS ?? 3_600_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') {\n throw new Error(`${label} certification job ${jobId} ended in ${result ?? 'UNKNOWN'}`);\n }\n return { jobId, runId: submitted.run_id as number };\n}\n\nfunction jobAndAssertionsCheck(spec: {\n id: string;\n description: string;\n label: string;\n job: string;\n assertions: readonly { env: string; label: string }[];\n}): LiveCheck {\n const names = [spec.job, ...spec.assertions.map(({ env }) => env)];\n return {\n id: spec.id,\n description: spec.description,\n configured: (env) => missing(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const job = await certificationJob(spec.label, env[spec.job], env, client);\n for (const assertion of spec.assertions) {\n await assertBooleanSql(assertion.label, env[assertion.env], warehouse.query);\n }\n return {\n ...job,\n assertions: Object.fromEntries(spec.assertions.map(({ label }) => [label, true])),\n };\n },\n };\n}\n\nexport function semanticAnalyticsCheck(): LiveCheck {\n return jobAndAssertionsCheck({\n id: 'semantic-analytics',\n description:\n 'Metric views, materialization, SQL alerts and query-performance evidence are healthy',\n label: 'Semantic analytics',\n job: 'DBX_TEST_SEMANTIC_ANALYTICS_JOB_ID',\n assertions: [\n { env: 'DBX_TEST_METRIC_VIEW_ASSERTION_SQL', label: 'Metric view query' },\n { env: 'DBX_TEST_METRIC_MATERIALIZATION_ASSERTION_SQL', label: 'Metric materialization' },\n { env: 'DBX_TEST_SQL_ALERT_ASSERTION_SQL', label: 'SQL alert' },\n { env: 'DBX_TEST_QUERY_PERFORMANCE_ASSERTION_SQL', label: 'Query performance' },\n ],\n });\n}\n\nexport function aiFunctionsBatchInferenceCheck(): LiveCheck {\n return jobAndAssertionsCheck({\n id: 'ai-functions-batch-inference',\n description: 'AI Functions batch and streaming inference produce governed durable output',\n label: 'AI Functions batch inference',\n job: 'DBX_TEST_AI_FUNCTIONS_JOB_ID',\n assertions: [\n { env: 'DBX_TEST_AI_FUNCTIONS_OUTPUT_ASSERTION_SQL', label: 'AI Functions output' },\n { env: 'DBX_TEST_BATCH_INFERENCE_QUALITY_ASSERTION_SQL', label: 'Batch inference quality' },\n { env: 'DBX_TEST_BATCH_INFERENCE_LINEAGE_ASSERTION_SQL', label: 'Batch inference lineage' },\n ],\n });\n}\n\nexport function agentOrchestrationResponsesCheck(): LiveCheck {\n return jobAndAssertionsCheck({\n id: 'agent-orchestration-responses',\n description:\n 'Knowledge Assistant, multi-agent orchestration and Responses API produce grounded governed evidence',\n label: 'Agent orchestration and Responses',\n job: 'DBX_TEST_AGENT_ORCHESTRATION_JOB_ID',\n assertions: [\n { env: 'DBX_TEST_KNOWLEDGE_ASSISTANT_ASSERTION_SQL', label: 'Knowledge Assistant' },\n { env: 'DBX_TEST_MULTI_AGENT_ASSERTION_SQL', label: 'Multi-agent orchestration' },\n { env: 'DBX_TEST_RESPONSES_API_ASSERTION_SQL', label: 'Responses API' },\n { env: 'DBX_TEST_AGENT_GROUNDEDNESS_ASSERTION_SQL', label: 'Agent groundedness' },\n ],\n });\n}\n\nexport function aiRuntimeTrainingCheck(): LiveCheck {\n return jobAndAssertionsCheck({\n id: 'ai-runtime-training',\n description: 'AI Runtime training or fine-tuning produces MLflow and Unity Catalog evidence',\n label: 'AI Runtime training',\n job: 'DBX_TEST_AI_RUNTIME_JOB_ID',\n assertions: [\n { env: 'DBX_TEST_AI_RUNTIME_RUN_ASSERTION_SQL', label: 'AI Runtime run' },\n { env: 'DBX_TEST_AI_RUNTIME_EVAL_ASSERTION_SQL', label: 'AI Runtime evaluation' },\n { env: 'DBX_TEST_AI_RUNTIME_MODEL_ASSERTION_SQL', label: 'AI Runtime registered model' },\n ],\n });\n}\n\nexport function lakebaseAutoscalingFeatureStoreCheck(): LiveCheck {\n return jobAndAssertionsCheck({\n id: 'lakebase-autoscaling-feature-store',\n description:\n 'Lakebase Autoscaling Online Feature Store publishes fresh features and serves lookups',\n label: 'Lakebase Autoscaling feature store',\n job: 'DBX_TEST_ONLINE_FEATURE_STORE_JOB_ID',\n assertions: [\n { env: 'DBX_TEST_ONLINE_STORE_ASSERTION_SQL', label: 'Online store publication' },\n { env: 'DBX_TEST_FEATURE_SERVING_ASSERTION_SQL', label: 'Feature Serving lookup' },\n { env: 'DBX_TEST_ONLINE_FEATURE_FRESHNESS_ASSERTION_SQL', label: 'Online feature freshness' },\n ],\n });\n}\n\nexport function declarativeBundlesCheck(): LiveCheck {\n return jobAndAssertionsCheck({\n id: 'declarative-bundles',\n description: 'A validated bundle deployment runs the exact candidate and records provenance',\n label: 'Declarative Automation Bundle',\n job: 'DBX_TEST_BUNDLE_JOB_ID',\n assertions: [\n { env: 'DBX_TEST_BUNDLE_PROVENANCE_ASSERTION_SQL', label: 'Bundle provenance' },\n { env: 'DBX_TEST_BUNDLE_CANDIDATE_ASSERTION_SQL', label: 'Bundle candidate' },\n { env: 'DBX_TEST_BUNDLE_ROLLBACK_ASSERTION_SQL', label: 'Bundle rollback' },\n ],\n });\n}\n\nexport function lakehouseOptimizationCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_PREDICTIVE_OPTIMIZATION_ASSERTION_SQL',\n 'DBX_TEST_LIQUID_CLUSTERING_ASSERTION_SQL',\n 'DBX_TEST_ICEBERG_INTEROP_ASSERTION_SQL',\n ] as const;\n return {\n id: 'lakehouse-optimization',\n description:\n 'Predictive Optimization, liquid clustering and Iceberg interoperability satisfy table contracts',\n configured: (env) => missing(env, names).length === 0,\n async run({ env, warehouse }) {\n requireEnv(env, names);\n await assertBooleanSql(\n 'Predictive Optimization',\n env.DBX_TEST_PREDICTIVE_OPTIMIZATION_ASSERTION_SQL,\n warehouse.query,\n );\n await assertBooleanSql(\n 'Liquid clustering',\n env.DBX_TEST_LIQUID_CLUSTERING_ASSERTION_SQL,\n warehouse.query,\n );\n await assertBooleanSql(\n 'Iceberg interoperability',\n env.DBX_TEST_ICEBERG_INTEROP_ASSERTION_SQL,\n warehouse.query,\n );\n return { predictiveOptimization: true, liquidClustering: true, icebergInterop: true };\n },\n };\n}\n\nexport function marketplaceOpenSharingCheck(): LiveCheck {\n return jobAndAssertionsCheck({\n id: 'marketplace-open-sharing',\n description:\n 'Marketplace provider and consumer flows preserve OpenSharing governance and asset usability',\n label: 'Marketplace and OpenSharing',\n job: 'DBX_TEST_MARKETPLACE_JOB_ID',\n assertions: [\n { env: 'DBX_TEST_MARKETPLACE_LISTING_ASSERTION_SQL', label: 'Marketplace listing' },\n { env: 'DBX_TEST_OPEN_SHARING_RECIPIENT_ASSERTION_SQL', label: 'OpenSharing recipient' },\n { env: 'DBX_TEST_MARKETPLACE_ASSET_ASSERTION_SQL', label: 'Marketplace asset' },\n ],\n });\n}\n","import { restrictedPrincipalCheck } from './live-checks.js';\nimport {\n agentOrchestrationResponsesCheck,\n aiFunctionsBatchInferenceCheck,\n aiRuntimeTrainingCheck,\n declarativeBundlesCheck,\n lakebaseAutoscalingFeatureStoreCheck,\n lakehouseOptimizationCheck,\n marketplaceOpenSharingCheck,\n semanticAnalyticsCheck,\n} from './next-workload-checks.js';\nimport { type TargetPack, defineTargetPack } from './target-packs.js';\n\nconst DOCS = 'https://experiments.fabric.pro/docs/testing/target-packs/';\nconst AZURE_M2M_SCOPE =\n 'Azure Databricks, dedicated service principal using OAuth M2M, public network path; named managed or disposable certification fixtures';\n\nconst workspace = {\n id: 'workspace',\n description: 'Databricks workspace host',\n anyOf: ['DATABRICKS_HOST'],\n} as const;\nconst auth = {\n id: 'authentication',\n description: 'Databricks OAuth M2M authentication',\n anyOf: ['DATABRICKS_CLIENT_ID'],\n secret: true,\n} as const;\nconst warehouse = {\n id: 'warehouse',\n description: 'SQL warehouse for durable evidence assertions',\n anyOf: ['DATABRICKS_WAREHOUSE_ID', 'DATABRICKS_HTTP_PATH'],\n} as const;\nconst requirement = (id: string, description: string, ...anyOf: string[]) => ({\n id,\n description,\n anyOf,\n});\nconst identityChecks = () => [restrictedPrincipalCheck()];\n\nexport function createSemanticAnalyticsTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'semantic-analytics',\n name: 'Semantic analytics and SQL operations',\n description:\n 'Unity Catalog metric views, materialization, SQL alerts and query-performance regression.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'semantics.metric-views',\n 'semantics.materialization',\n 'sql.alerts',\n 'sql.query-performance',\n ],\n checks: () => [...identityChecks(), semanticAnalyticsCheck()],\n requiredChecks: ['restricted-principal', 'semantic-analytics'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'semantic-job',\n 'Metric-view certification Job',\n 'DBX_TEST_SEMANTIC_ANALYTICS_JOB_ID',\n ),\n requirement(\n 'metric-view',\n 'Metric-view query assertion',\n 'DBX_TEST_METRIC_VIEW_ASSERTION_SQL',\n ),\n requirement(\n 'metric-materialization',\n 'Metric-view materialization assertion',\n 'DBX_TEST_METRIC_MATERIALIZATION_ASSERTION_SQL',\n ),\n requirement('sql-alert', 'SQL alert assertion', 'DBX_TEST_SQL_ALERT_ASSERTION_SQL'),\n requirement(\n 'query-performance',\n 'Query performance assertion',\n 'DBX_TEST_QUERY_PERFORMANCE_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#semantic-analytics-and-sql-operations`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; metric view, materialization, alert and query history`,\n ],\n });\n}\n\nexport function createAiFunctionsBatchInferenceTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'ai-functions-batch-inference',\n name: 'AI Functions and batch inference',\n description: 'Governed batch or streaming inference through Databricks AI Functions.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'ai-functions.inference',\n 'batch-inference.quality',\n 'streaming-inference',\n 'inference.lineage',\n ],\n checks: () => [...identityChecks(), aiFunctionsBatchInferenceCheck()],\n requiredChecks: ['restricted-principal', 'ai-functions-batch-inference'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('ai-functions-job', 'AI Functions inference Job', 'DBX_TEST_AI_FUNCTIONS_JOB_ID'),\n requirement(\n 'ai-functions-output',\n 'Inference output assertion',\n 'DBX_TEST_AI_FUNCTIONS_OUTPUT_ASSERTION_SQL',\n ),\n requirement(\n 'batch-quality',\n 'Inference quality assertion',\n 'DBX_TEST_BATCH_INFERENCE_QUALITY_ASSERTION_SQL',\n ),\n requirement(\n 'batch-lineage',\n 'Inference lineage assertion',\n 'DBX_TEST_BATCH_INFERENCE_LINEAGE_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#ai-functions-and-batch-inference`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; AI Functions Job with durable output, quality and lineage`,\n ],\n });\n}\n\nexport function createAgentOrchestrationTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'agent-orchestration-responses',\n name: 'Knowledge Assistant, multi-agent and Responses',\n description:\n 'Knowledge Assistant and multi-agent application behavior through the Responses API.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'agents.knowledge-assistant',\n 'agents.multi-agent',\n 'agents.responses-api',\n 'agents.groundedness',\n ],\n checks: () => [...identityChecks(), agentOrchestrationResponsesCheck()],\n requiredChecks: ['restricted-principal', 'agent-orchestration-responses'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'agent-orchestration-job',\n 'Agent orchestration certification Job',\n 'DBX_TEST_AGENT_ORCHESTRATION_JOB_ID',\n ),\n requirement(\n 'knowledge-assistant',\n 'Knowledge Assistant assertion',\n 'DBX_TEST_KNOWLEDGE_ASSISTANT_ASSERTION_SQL',\n ),\n requirement('multi-agent', 'Multi-agent assertion', 'DBX_TEST_MULTI_AGENT_ASSERTION_SQL'),\n requirement(\n 'responses-api',\n 'Responses API assertion',\n 'DBX_TEST_RESPONSES_API_ASSERTION_SQL',\n ),\n requirement(\n 'agent-groundedness',\n 'Groundedness assertion',\n 'DBX_TEST_AGENT_GROUNDEDNESS_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#knowledge-assistant-multi-agent-and-responses`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Databricks preview agent surfaces with durable groundedness evidence`,\n ],\n });\n}\n\nexport function createAiRuntimeTrainingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'ai-runtime-training',\n name: 'AI Runtime training and fine-tuning',\n description: 'AI Runtime training or fine-tuning with MLflow and Unity Catalog model evidence.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'ai-runtime.training',\n 'ai-runtime.fine-tuning',\n 'mlflow.training-evaluation',\n 'models.unity-catalog',\n ],\n checks: () => [...identityChecks(), aiRuntimeTrainingCheck()],\n requiredChecks: ['restricted-principal', 'ai-runtime-training'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('ai-runtime-job', 'AI Runtime certification Job', 'DBX_TEST_AI_RUNTIME_JOB_ID'),\n requirement(\n 'ai-runtime-run',\n 'Training-run assertion',\n 'DBX_TEST_AI_RUNTIME_RUN_ASSERTION_SQL',\n ),\n requirement(\n 'ai-runtime-eval',\n 'Training evaluation assertion',\n 'DBX_TEST_AI_RUNTIME_EVAL_ASSERTION_SQL',\n ),\n requirement(\n 'ai-runtime-model',\n 'Registered-model assertion',\n 'DBX_TEST_AI_RUNTIME_MODEL_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#ai-runtime-training-and-fine-tuning`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; serverless GPU AI Runtime candidate tracked in MLflow and Unity Catalog`,\n ],\n });\n}\n\nexport function createLakebaseAutoscalingFeatureStoreTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'lakebase-autoscaling-features',\n name: 'Lakebase Autoscaling Online Feature Store',\n description: 'Online feature publication, freshness and Feature Serving lookup behavior.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'lakebase.autoscaling',\n 'features.online-store',\n 'features.serving-endpoint',\n 'features.online-freshness',\n ],\n checks: () => [...identityChecks(), lakebaseAutoscalingFeatureStoreCheck()],\n requiredChecks: ['restricted-principal', 'lakebase-autoscaling-feature-store'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'online-feature-job',\n 'Online Feature Store publication Job',\n 'DBX_TEST_ONLINE_FEATURE_STORE_JOB_ID',\n ),\n requirement(\n 'online-store',\n 'Online publication assertion',\n 'DBX_TEST_ONLINE_STORE_ASSERTION_SQL',\n ),\n requirement(\n 'feature-serving',\n 'Feature Serving lookup assertion',\n 'DBX_TEST_FEATURE_SERVING_ASSERTION_SQL',\n ),\n requirement(\n 'feature-freshness',\n 'Online freshness assertion',\n 'DBX_TEST_ONLINE_FEATURE_FRESHNESS_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#lakebase-autoscaling-online-feature-store`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Lakebase Autoscaling store and Feature Serving lookup`,\n ],\n });\n}\n\nexport function createDeclarativeBundlesTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'declarative-bundles',\n name: 'Declarative Automation Bundles',\n description:\n 'Bundle validation, exact-candidate deployment, execution provenance and rollback.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'bundles.validation',\n 'bundles.deployment',\n 'bundles.provenance',\n 'bundles.rollback',\n ],\n checks: () => [...identityChecks(), declarativeBundlesCheck()],\n requiredChecks: ['restricted-principal', 'declarative-bundles'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('bundle-job', 'Bundle-managed certification Job', 'DBX_TEST_BUNDLE_JOB_ID'),\n requirement(\n 'bundle-provenance',\n 'Deployment provenance assertion',\n 'DBX_TEST_BUNDLE_PROVENANCE_ASSERTION_SQL',\n ),\n requirement(\n 'bundle-candidate',\n 'Exact-candidate assertion',\n 'DBX_TEST_BUNDLE_CANDIDATE_ASSERTION_SQL',\n ),\n requirement(\n 'bundle-rollback',\n 'Rollback assertion',\n 'DBX_TEST_BUNDLE_ROLLBACK_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#declarative-automation-bundles`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; validate/deploy/run/rollback lifecycle for an immutable bundle target`,\n ],\n });\n}\n\nexport function createLakehouseOptimizationTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'lakehouse-optimization',\n name: 'Lakehouse optimization and Iceberg interoperability',\n description:\n 'Predictive Optimization, liquid clustering and governed Iceberg interoperability.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'tables.predictive-optimization',\n 'tables.liquid-clustering',\n 'tables.iceberg',\n 'tables.interoperability',\n ],\n checks: () => [...identityChecks(), lakehouseOptimizationCheck()],\n requiredChecks: ['restricted-principal', 'lakehouse-optimization'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'predictive-optimization',\n 'Predictive Optimization assertion',\n 'DBX_TEST_PREDICTIVE_OPTIMIZATION_ASSERTION_SQL',\n ),\n requirement(\n 'liquid-clustering',\n 'Liquid clustering assertion',\n 'DBX_TEST_LIQUID_CLUSTERING_ASSERTION_SQL',\n ),\n requirement(\n 'iceberg-interop',\n 'Iceberg interoperability assertion',\n 'DBX_TEST_ICEBERG_INTEROP_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#lakehouse-optimization-and-iceberg`,\n certificationScopes: [`${AZURE_M2M_SCOPE}; Unity Catalog managed Delta and Iceberg fixtures`],\n });\n}\n\nexport function createMarketplaceOpenSharingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'marketplace-open-sharing',\n name: 'Marketplace and OpenSharing',\n description: 'Provider listing, recipient access and usable governed data or AI assets.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'marketplace.provider',\n 'marketplace.consumer',\n 'open-sharing.recipient',\n 'marketplace.ai-assets',\n ],\n checks: () => [...identityChecks(), marketplaceOpenSharingCheck()],\n requiredChecks: ['restricted-principal', 'marketplace-open-sharing'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'marketplace-job',\n 'Marketplace certification Job',\n 'DBX_TEST_MARKETPLACE_JOB_ID',\n ),\n requirement(\n 'marketplace-listing',\n 'Listing assertion',\n 'DBX_TEST_MARKETPLACE_LISTING_ASSERTION_SQL',\n ),\n requirement(\n 'open-sharing-recipient',\n 'Recipient assertion',\n 'DBX_TEST_OPEN_SHARING_RECIPIENT_ASSERTION_SQL',\n ),\n requirement(\n 'marketplace-asset',\n 'Shared asset usability assertion',\n 'DBX_TEST_MARKETPLACE_ASSET_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#marketplace-and-opensharing`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; private listing provider and recipient lifecycle with governed asset access`,\n ],\n });\n}\n\nexport function createNextTargetPacks(): readonly TargetPack[] {\n return [\n createSemanticAnalyticsTargetPack(),\n createAiFunctionsBatchInferenceTargetPack(),\n createAgentOrchestrationTargetPack(),\n createAiRuntimeTrainingTargetPack(),\n createLakebaseAutoscalingFeatureStoreTargetPack(),\n createDeclarativeBundlesTargetPack(),\n createLakehouseOptimizationTargetPack(),\n createMarketplaceOpenSharingTargetPack(),\n ];\n}\n","import type { LiveCheck } from './live-suite.js';\nimport { waitForDatabricksRun } from './workspace-client.js';\nimport {\n type WorkspaceClientLike,\n createClientFromEnv,\n createWorkspaceContext,\n} from './workspace-context.js';\n\ntype JsonObject = Record<string, unknown>;\n\nexport interface PipelineResource extends JsonObject {\n pipeline_id?: string;\n name?: string;\n state?: string;\n spec?: JsonObject;\n}\n\nexport interface DashboardResource extends JsonObject {\n dashboard_id?: string;\n display_name?: string;\n lifecycle_state?: string;\n}\n\nexport interface PublishedDashboardResource extends JsonObject {\n display_name?: string;\n revision_create_time?: string;\n warehouse_id?: string;\n}\n\nexport interface GenieSpaceResource extends JsonObject {\n space_id?: string;\n title?: string;\n}\n\nexport interface RegisteredModelResource extends JsonObject {\n full_name?: string;\n name?: string;\n}\n\nexport interface ServingEndpointResource extends JsonObject {\n name?: string;\n state?: { ready?: string; config_update?: string };\n config?: JsonObject;\n ai_gateway?: JsonObject;\n}\n\nexport interface VectorSearchEndpointResource extends JsonObject {\n name?: string;\n endpoint_status?: { state?: string; message?: string };\n}\n\nexport interface VectorSearchIndexResource extends JsonObject {\n name?: string;\n status?: { ready?: boolean; message?: string; indexed_row_count?: number };\n}\n\nexport interface AgentServiceResource extends JsonObject {\n name?: string;\n full_name?: string;\n agent_service_type?: string;\n config?: { connection?: { name?: string }; base_path?: string };\n}\n\n/**\n * Typed, injectable adapter for Databricks workload surfaces that are not part\n * of SQL Statement Execution. It deliberately mirrors the public REST APIs so\n * target packs can be unit tested without a workspace.\n */\nexport class DatabricksAdvancedWorkloadsAdapter {\n constructor(private readonly client: WorkspaceClientLike) {}\n\n pipeline(id: string): Promise<PipelineResource> {\n return this.client.get(`/api/2.0/pipelines/${segment(id)}`);\n }\n\n table(fullName: string): Promise<JsonObject> {\n return this.client.get(`/api/2.1/unity-catalog/tables/${segment(fullName)}`);\n }\n\n dashboard(id: string): Promise<DashboardResource> {\n return this.client.get(`/api/2.0/lakeview/dashboards/${segment(id)}`);\n }\n\n publishedDashboard(id: string): Promise<PublishedDashboardResource> {\n return this.client.get(`/api/2.0/lakeview/dashboards/${segment(id)}/published`);\n }\n\n genieSpace(id: string): Promise<GenieSpaceResource> {\n return this.client.get(`/api/2.0/genie/spaces/${segment(id)}`);\n }\n\n startGenieConversation(spaceId: string, question: string): Promise<JsonObject> {\n return this.client.post(`/api/2.0/genie/spaces/${segment(spaceId)}/start-conversation`, {\n content: question,\n });\n }\n\n experiment(id: string): Promise<JsonObject> {\n return this.client.get('/api/2.0/mlflow/experiments/get', { experiment_id: id });\n }\n\n registeredModel(fullName: string): Promise<RegisteredModelResource> {\n return this.client.get(`/api/2.1/unity-catalog/models/${segment(fullName)}`);\n }\n\n modelVersion(fullName: string, version: string): Promise<JsonObject> {\n return this.client.get(\n `/api/2.1/unity-catalog/models/${segment(fullName)}/versions/${segment(version)}`,\n );\n }\n\n onlineTable(fullName: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/online-tables/${segment(fullName)}`);\n }\n\n servingEndpoint(name: string): Promise<ServingEndpointResource> {\n return this.client.get(`/api/2.0/serving-endpoints/${segment(name)}`);\n }\n\n invokeServingEndpoint(name: string, request: unknown): Promise<JsonObject> {\n return this.client.post(`/serving-endpoints/${segment(name)}/invocations`, request);\n }\n\n vectorSearchEndpoint(name: string): Promise<VectorSearchEndpointResource> {\n return this.client.get(`/api/2.0/vector-search/endpoints/${segment(name)}`);\n }\n\n vectorSearchIndex(name: string): Promise<VectorSearchIndexResource> {\n return this.client.get(`/api/2.0/vector-search/indexes/${segment(name)}`);\n }\n\n queryVectorSearchIndex(name: string, request: unknown): Promise<JsonObject> {\n return this.client.post(`/api/2.0/vector-search/indexes/${segment(name)}/query`, request);\n }\n\n connection(name: string): Promise<JsonObject> {\n return this.client.get(`/api/2.1/unity-catalog/connections/${segment(name)}`);\n }\n\n share(name: string): Promise<JsonObject> {\n return this.client.get(`/api/2.1/unity-catalog/shares/${segment(name)}`);\n }\n\n cleanRoom(name: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/clean-rooms/${segment(name)}`);\n }\n\n ipAccessList(id: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/ip-access-lists/${segment(id)}`);\n }\n\n clusterPolicy(id: string): Promise<JsonObject> {\n return this.client.get('/api/2.0/policies/clusters/get', { policy_id: id });\n }\n\n warehouse(id: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/sql/warehouses/${segment(id)}`);\n }\n\n app(name: string): Promise<JsonObject> {\n return this.client.get(`/api/2.0/apps/${segment(name)}`);\n }\n\n agentService(fullName: string): Promise<AgentServiceResource> {\n return this.client.get(`/api/2.1/unity-catalog/agent-services/${segment(fullName)}`);\n }\n\n agentServicePermissions(fullName: string): Promise<JsonObject> {\n return this.client.get(`/api/2.1/unity-catalog/permissions/AGENT_SERVICE/${segment(fullName)}`);\n }\n}\n\nfunction segment(value: string): string {\n return encodeURIComponent(value);\n}\n\nfunction adapter(client: WorkspaceClientLike): DatabricksAdvancedWorkloadsAdapter {\n return new DatabricksAdvancedWorkloadsAdapter(client);\n}\n\nfunction required(env: Record<string, string | undefined>, names: readonly string[]): string[] {\n return names.filter((name) => !env[name]?.trim());\n}\n\nfunction requireEnv(env: Record<string, string | undefined>, names: readonly string[]): void {\n const missing = required(env, names);\n if (missing.length > 0) throw new Error(`Missing required configuration: ${missing.join(', ')}`);\n}\n\nfunction parseJson(value: string | undefined, name: string): unknown {\n if (!value) return undefined;\n try {\n return JSON.parse(value) as unknown;\n } catch {\n throw new Error(`${name} must contain valid JSON`);\n }\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isNonNegativeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isInteger(value) && value >= 0;\n}\n\nfunction assertNotFailed(label: string, state: unknown): void {\n if (typeof state === 'string' && /FAIL|ERROR|DELET/i.test(state)) {\n throw new Error(`${label} is ${state}`);\n }\n}\n\nfunction assertReady(label: string, state: unknown, accepted: readonly string[]): void {\n if (typeof state !== 'string' || !accepted.includes(state.toUpperCase())) {\n throw new Error(`${label} is ${String(state ?? 'UNKNOWN')}; expected ${accepted.join(' or ')}`);\n }\n}\n\nasync function booleanSql(\n label: string,\n sql: string | undefined,\n query: (statement: string) => Promise<Record<string, unknown>[]>,\n): Promise<void> {\n if (!sql) return;\n const rows = await query(sql);\n const first = rows[0] ? Object.values(rows[0])[0] : undefined;\n if (!(first === true || first === 1 || first === '1' || first === 'true')) {\n throw new Error(`${label} assertion did not return a truthy first column`);\n }\n}\n\nasync function runCertificationJob(\n label: string,\n jobIdValue: string | undefined,\n env: Record<string, string | undefined>,\n client: WorkspaceClientLike,\n options: { timeoutMs?: number } = {},\n): Promise<{ jobId: number; runId: number }> {\n const jobId = Number(jobIdValue);\n if (!Number.isSafeInteger(jobId) || jobId <= 0) {\n throw new Error(`${label} job id must be a positive integer`);\n }\n const submitted = await client.post<{ run_id?: number }>('/api/2.1/jobs/run-now', {\n job_id: jobId,\n });\n if (!Number.isSafeInteger(submitted.run_id)) {\n throw new Error(`${label} certification job returned no run_id`);\n }\n const run = await waitForDatabricksRun(client as never, submitted.run_id as number, {\n timeoutMs: options.timeoutMs ?? Number(env.DBX_TEST_TIMEOUT_MS ?? 900_000),\n pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 10_000),\n });\n const result = (run as { state?: { result_state?: string } }).state?.result_state;\n if (result !== 'SUCCESS') {\n throw new Error(`${label} certification job ${jobId} ended in ${result ?? 'UNKNOWN'}`);\n }\n return { jobId, runId: submitted.run_id as number };\n}\n\nexport function advancedStreamingCdcCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_STREAMING_PIPELINE_ID',\n 'DBX_TEST_STREAMING_TABLE',\n 'DBX_TEST_CDC_ASSERTION_SQL',\n 'DBX_TEST_STREAMING_ASSERTION_SQL',\n ] as const;\n return {\n id: 'streaming-cdc',\n description: 'Streaming pipeline, streaming table and CDC assertions are healthy',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const api = adapter(client);\n const pipeline = await api.pipeline(env.DBX_TEST_STREAMING_PIPELINE_ID as string);\n assertNotFailed('Streaming pipeline', pipeline.state);\n const table = await api.table(env.DBX_TEST_STREAMING_TABLE as string);\n const tableType = String(table.table_type ?? table.data_source_format ?? '').toUpperCase();\n if (!['STREAMING_TABLE', 'MATERIALIZED_VIEW', 'DELTA'].includes(tableType)) {\n throw new Error(`Streaming target has unsupported table type ${tableType || 'UNKNOWN'}`);\n }\n await booleanSql('CDC', env.DBX_TEST_CDC_ASSERTION_SQL, warehouse.query);\n await booleanSql(\n 'Streaming freshness',\n env.DBX_TEST_STREAMING_ASSERTION_SQL,\n warehouse.query,\n );\n return { pipelineId: pipeline.pipeline_id, table: env.DBX_TEST_STREAMING_TABLE, tableType };\n },\n };\n}\n\nexport function lakeflowConnectCheck(): LiveCheck {\n const names = ['DBX_TEST_CONNECT_PIPELINE_ID', 'DBX_TEST_CONNECT_ASSERTION_SQL'] as const;\n return {\n id: 'lakeflow-connect',\n description: 'Lakeflow Connect ingestion pipeline exists and is not failed',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const id = env.DBX_TEST_CONNECT_PIPELINE_ID as string;\n const pipeline = await adapter(client).pipeline(id);\n assertNotFailed('Lakeflow Connect pipeline', pipeline.state);\n const ingestion = pipeline.spec?.ingestion_definition as JsonObject | undefined;\n if (!ingestion || !Array.isArray(ingestion.objects) || ingestion.objects.length === 0) {\n throw new Error('Lakeflow Connect pipeline has no managed ingestion definition');\n }\n await booleanSql(\n 'Lakeflow Connect replication',\n env.DBX_TEST_CONNECT_ASSERTION_SQL,\n warehouse.query,\n );\n return {\n pipelineId: pipeline.pipeline_id ?? id,\n state: pipeline.state ?? 'IDLE',\n sourceType: ingestion.source_type ?? 'MANAGED_INGESTION',\n objects: ingestion.objects.length,\n };\n },\n };\n}\n\nexport function aiBiDashboardCheck(): LiveCheck {\n return {\n id: 'aibi-dashboard',\n description: 'Published AI/BI dashboard is accessible',\n configured: (env) => Boolean(env.DBX_TEST_DASHBOARD_ID),\n async run({ env, client }) {\n const api = adapter(client);\n const id = env.DBX_TEST_DASHBOARD_ID as string;\n const dashboard = await api.dashboard(id);\n assertNotFailed('AI/BI dashboard', dashboard.lifecycle_state);\n const published = await api.publishedDashboard(id);\n if (!published.revision_create_time) {\n throw new Error(`AI/BI dashboard ${id} has no published revision`);\n }\n return {\n dashboardId: dashboard.dashboard_id ?? id,\n name: published.display_name ?? dashboard.display_name,\n publishedAt: published.revision_create_time,\n };\n },\n };\n}\n\nexport function genieCheck(): LiveCheck {\n const names = ['DBX_TEST_GENIE_SPACE_ID', 'DBX_TEST_GENIE_QUESTION'] as const;\n return {\n id: 'genie',\n description: 'Genie space is accessible and can optionally start a grounded conversation',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const id = env.DBX_TEST_GENIE_SPACE_ID as string;\n const space = await api.genieSpace(id);\n let conversation: JsonObject | undefined;\n if (env.DBX_TEST_GENIE_QUESTION) {\n conversation = await api.startGenieConversation(id, env.DBX_TEST_GENIE_QUESTION);\n if (!conversation.conversation_id && !conversation.message_id) {\n throw new Error('Genie did not return a conversation or message identifier');\n }\n }\n return {\n spaceId: space.space_id ?? id,\n title: space.title,\n conversationStarted: Boolean(conversation),\n };\n },\n };\n}\n\nexport function mlflowLifecycleCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_MLFLOW_EXPERIMENT_ID',\n 'DBX_TEST_REGISTERED_MODEL',\n 'DBX_TEST_MODEL_VERSION',\n ] as const;\n return {\n id: 'mlflow-lifecycle',\n description: 'MLflow experiment and Unity Catalog model version are accessible',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const experiment = await api.experiment(env.DBX_TEST_MLFLOW_EXPERIMENT_ID as string);\n const model = await api.registeredModel(env.DBX_TEST_REGISTERED_MODEL as string);\n const version = await api.modelVersion(\n env.DBX_TEST_REGISTERED_MODEL as string,\n env.DBX_TEST_MODEL_VERSION as string,\n );\n assertNotFailed('Model version', version.status);\n return {\n experimentId:\n (experiment.experiment as JsonObject | undefined)?.experiment_id ??\n env.DBX_TEST_MLFLOW_EXPERIMENT_ID,\n model: model.full_name ?? model.name ?? env.DBX_TEST_REGISTERED_MODEL,\n version: version.version ?? env.DBX_TEST_MODEL_VERSION,\n };\n },\n };\n}\n\nexport function featureEngineeringServingCheck(): LiveCheck {\n return {\n id: 'feature-engineering',\n description: 'Feature table and online materialization are healthy',\n configured: (env) =>\n Boolean(\n env.DBX_TEST_FEATURE_TABLE &&\n env.DBX_TEST_FEATURE_ASSERTION_SQL &&\n (env.DBX_TEST_ONLINE_TABLE || env.DBX_TEST_FEATURE_SERVING_PIPELINE_ID),\n ),\n async run({ env, client, warehouse }) {\n requireEnv(env, ['DBX_TEST_FEATURE_TABLE']);\n if (!env.DBX_TEST_ONLINE_TABLE && !env.DBX_TEST_FEATURE_SERVING_PIPELINE_ID) {\n throw new Error(\n 'Feature serving requires DBX_TEST_ONLINE_TABLE or DBX_TEST_FEATURE_SERVING_PIPELINE_ID',\n );\n }\n const api = adapter(client);\n const source = await api.table(env.DBX_TEST_FEATURE_TABLE as string);\n let state: unknown;\n let servingResource: string;\n if (env.DBX_TEST_ONLINE_TABLE) {\n const online = await api.onlineTable(env.DBX_TEST_ONLINE_TABLE);\n const status = online.status as JsonObject | undefined;\n state = status?.state ?? status?.detailed_state ?? online.state;\n assertReady('Online table', state, ['ONLINE', 'ACTIVE', 'READY', 'PROVISIONED']);\n servingResource = env.DBX_TEST_ONLINE_TABLE;\n } else {\n const pipelineId = env.DBX_TEST_FEATURE_SERVING_PIPELINE_ID as string;\n const pipeline = await api.pipeline(pipelineId);\n state = pipeline.state ?? 'IDLE';\n assertNotFailed('Synced Table pipeline', state);\n servingResource = pipeline.pipeline_id ?? pipelineId;\n }\n await booleanSql('Feature freshness', env.DBX_TEST_FEATURE_ASSERTION_SQL, warehouse.query);\n return {\n featureTable: source.full_name ?? env.DBX_TEST_FEATURE_TABLE,\n servingResource,\n state,\n };\n },\n };\n}\n\nexport function modelServingCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_SERVING_ENDPOINT',\n 'DBX_TEST_SERVING_REQUEST_JSON',\n 'DBX_TEST_AI_GATEWAY_REQUIRED',\n ] as const;\n return {\n id: 'model-serving',\n description: 'Model Serving endpoint is ready and can optionally serve an inference request',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n if (env.DBX_TEST_AI_GATEWAY_REQUIRED !== '1') {\n throw new Error('DBX_TEST_AI_GATEWAY_REQUIRED must be 1 for the Model Serving target pack');\n }\n const api = adapter(client);\n const name = env.DBX_TEST_SERVING_ENDPOINT as string;\n const endpoint = await api.servingEndpoint(name);\n assertReady('Serving endpoint', endpoint.state?.ready, ['READY']);\n if (env.DBX_TEST_AI_GATEWAY_REQUIRED === '1' && !endpoint.ai_gateway) {\n throw new Error(`Serving endpoint ${name} has no AI Gateway configuration`);\n }\n let response: JsonObject | undefined;\n if (env.DBX_TEST_SERVING_REQUEST_JSON) {\n response = await api.invokeServingEndpoint(\n name,\n parseJson(env.DBX_TEST_SERVING_REQUEST_JSON, 'DBX_TEST_SERVING_REQUEST_JSON'),\n );\n if (Object.keys(response).length === 0)\n throw new Error('Serving invocation returned an empty response');\n }\n return {\n endpoint: endpoint.name ?? name,\n ready: endpoint.state?.ready,\n aiGateway: Boolean(endpoint.ai_gateway),\n invoked: Boolean(response),\n };\n },\n };\n}\n\n/**\n * Live contract for the deterministic chat payload used by\n * `@fabricorg/experiments-evals/databricks`. It is separate from the generic\n * serving check because custom model endpoints may use dataframe payloads and\n * are not valid LLM judges.\n */\nexport function evalJudgeModelServingCheck(): LiveCheck {\n const names = ['DBX_TEST_EVAL_SERVING_ENDPOINT'] as const;\n return {\n id: 'model-eval-judge',\n description: 'Databricks Model Serving satisfies the deterministic evaluator chat contract',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const name = env.DBX_TEST_EVAL_SERVING_ENDPOINT as string;\n const endpoint = await api.servingEndpoint(name);\n assertReady('Evaluator serving endpoint', endpoint.state?.ready, ['READY']);\n const response = await api.invokeServingEndpoint(name, {\n messages: [\n {\n role: 'system',\n content: 'Answer on the first line with exactly \"LABEL: relevant\".',\n },\n { role: 'user', content: 'Is this response relevant to this question?' },\n ],\n temperature: 0,\n max_tokens: 32,\n });\n const choices = Array.isArray(response.choices) ? response.choices : [];\n const first = choices[0];\n const message = isObject(first) && isObject(first.message) ? first.message : undefined;\n const content = typeof message?.content === 'string' ? message.content : '';\n const usage = isObject(response.usage) ? response.usage : undefined;\n const inputTokens = usage?.prompt_tokens;\n const outputTokens = usage?.completion_tokens;\n if (!/^\\s*LABEL:\\s*relevant\\s*$/im.test(content)) {\n throw new Error('Evaluator serving endpoint did not return the requested label contract');\n }\n if (!isNonNegativeInteger(inputTokens) || !isNonNegativeInteger(outputTokens)) {\n throw new Error('Evaluator serving endpoint did not return integer token usage');\n }\n return { endpoint: endpoint.name ?? name, inputTokens, outputTokens };\n },\n };\n}\n\nexport function vectorSearchCheck(): LiveCheck {\n const names = ['DBX_TEST_VECTOR_ENDPOINT', 'DBX_TEST_VECTOR_INDEX'] as const;\n return {\n id: 'vector-search',\n description: 'Vector Search endpoint and index are online',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n const endpoint = await api.vectorSearchEndpoint(env.DBX_TEST_VECTOR_ENDPOINT as string);\n assertReady('Vector Search endpoint', endpoint.endpoint_status?.state, ['ONLINE', 'READY']);\n const index = await api.vectorSearchIndex(env.DBX_TEST_VECTOR_INDEX as string);\n if (index.status?.ready !== true)\n throw new Error(`Vector Search index is not ready: ${index.status?.message ?? 'UNKNOWN'}`);\n return {\n endpoint: endpoint.name ?? env.DBX_TEST_VECTOR_ENDPOINT,\n index: index.name ?? env.DBX_TEST_VECTOR_INDEX,\n indexedRows: index.status.indexed_row_count,\n };\n },\n };\n}\n\nexport function ragAgentCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_VECTOR_INDEX',\n 'DBX_TEST_VECTOR_QUERY_JSON',\n 'DBX_TEST_AGENT_ENDPOINT',\n 'DBX_TEST_AGENT_REQUEST_JSON',\n ] as const;\n return {\n id: 'rag-agent',\n description: 'RAG retrieval and agent serving endpoint return non-empty responses',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const api = adapter(client);\n let retrieval: JsonObject | undefined;\n if (env.DBX_TEST_VECTOR_QUERY_JSON) {\n retrieval = await api.queryVectorSearchIndex(\n env.DBX_TEST_VECTOR_INDEX as string,\n parseJson(env.DBX_TEST_VECTOR_QUERY_JSON, 'DBX_TEST_VECTOR_QUERY_JSON'),\n );\n if (!retrieval.result && !retrieval.data_array && !retrieval.manifest) {\n throw new Error('Vector query returned no result payload');\n }\n }\n let agent: JsonObject | undefined;\n if (env.DBX_TEST_AGENT_ENDPOINT) {\n const endpoint = await api.servingEndpoint(env.DBX_TEST_AGENT_ENDPOINT);\n assertReady('Agent endpoint', endpoint.state?.ready, ['READY']);\n if (env.DBX_TEST_AGENT_REQUEST_JSON) {\n agent = await api.invokeServingEndpoint(\n env.DBX_TEST_AGENT_ENDPOINT,\n parseJson(env.DBX_TEST_AGENT_REQUEST_JSON, 'DBX_TEST_AGENT_REQUEST_JSON'),\n );\n if (Object.keys(agent).length === 0)\n throw new Error('Agent invocation returned an empty response');\n }\n }\n return {\n retrieval: Boolean(retrieval),\n agentEndpoint: env.DBX_TEST_AGENT_ENDPOINT,\n agentInvoked: Boolean(agent),\n };\n },\n };\n}\n\nexport function federationSharingCleanRoomsCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_CONNECTION',\n 'DBX_TEST_SHARE',\n 'DBX_TEST_CLEAN_ROOM',\n 'DBX_TEST_FEDERATION_ASSERTION_SQL',\n ] as const;\n return {\n id: 'federation-sharing-cleanrooms',\n description: 'Lakehouse Federation connection, Delta Share and Clean Room are accessible',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const api = adapter(client);\n const connection = await api.connection(env.DBX_TEST_CONNECTION as string);\n const share = await api.share(env.DBX_TEST_SHARE as string);\n const room = await api.cleanRoom(env.DBX_TEST_CLEAN_ROOM as string);\n await booleanSql('Federated query', env.DBX_TEST_FEDERATION_ASSERTION_SQL, warehouse.query);\n return {\n connection: connection.name ?? env.DBX_TEST_CONNECTION,\n share: share.name ?? env.DBX_TEST_SHARE,\n cleanRoom: room.name ?? env.DBX_TEST_CLEAN_ROOM,\n };\n },\n };\n}\n\nexport function securityPostureCostCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_IP_ACCESS_LIST_ID',\n 'DBX_TEST_CLUSTER_POLICY_ID',\n 'DBX_TEST_COST_ASSERTION_SQL',\n ] as const;\n return {\n id: 'security-cost',\n description: 'Network access controls, compute policy and cost guardrail are enforced',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const api = adapter(client);\n const access = await api.ipAccessList(env.DBX_TEST_IP_ACCESS_LIST_ID as string);\n if (access.enabled === false) throw new Error('Configured IP access list is disabled');\n const policy = await api.clusterPolicy(env.DBX_TEST_CLUSTER_POLICY_ID as string);\n if (!policy.policy_id && !policy.name)\n throw new Error('Cluster policy response has no identity');\n if (\n env.DBX_TEST_EXPECT_HOST_SUFFIX &&\n !env.DATABRICKS_HOST?.endsWith(env.DBX_TEST_EXPECT_HOST_SUFFIX)\n ) {\n throw new Error(`Workspace host does not end with ${env.DBX_TEST_EXPECT_HOST_SUFFIX}`);\n }\n await booleanSql('Cost guardrail', env.DBX_TEST_COST_ASSERTION_SQL, warehouse.query);\n return {\n ipAccessList: access.list_id ?? env.DBX_TEST_IP_ACCESS_LIST_ID,\n policy: policy.policy_id ?? policy.name,\n costGuardrail: 'pass',\n };\n },\n };\n}\n\n/**\n * MLflow 3 changes quickly and its production-scorer lifecycle is Python-first.\n * A customer-owned Databricks Job executes the native MLflow APIs while this\n * check independently verifies durable trace, evaluation, scorer and monitor\n * evidence through SQL. A successful Job without all four assertions fails.\n */\nexport function mlflow3GenAiQualityCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_MLFLOW3_JOB_ID',\n 'DBX_TEST_MLFLOW3_TRACE_ASSERTION_SQL',\n 'DBX_TEST_MLFLOW3_EVAL_ASSERTION_SQL',\n 'DBX_TEST_MLFLOW3_SCORER_ASSERTION_SQL',\n 'DBX_TEST_MLFLOW3_MONITOR_ASSERTION_SQL',\n 'DBX_TEST_AI_SEARCH_EVAL_ASSERTION_SQL',\n ] as const;\n return {\n id: 'mlflow3-genai-quality',\n description:\n 'MLflow 3 tracing, offline agent evaluation and production scorer monitoring produce durable evidence',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const job = await runCertificationJob(\n 'MLflow 3 GenAI',\n env.DBX_TEST_MLFLOW3_JOB_ID,\n env,\n client,\n { timeoutMs: Number(env.DBX_TEST_MLFLOW3_TIMEOUT_MS ?? 7_200_000) },\n );\n await booleanSql('MLflow 3 trace', env.DBX_TEST_MLFLOW3_TRACE_ASSERTION_SQL, warehouse.query);\n await booleanSql(\n 'MLflow 3 offline evaluation',\n env.DBX_TEST_MLFLOW3_EVAL_ASSERTION_SQL,\n warehouse.query,\n );\n await booleanSql(\n 'MLflow 3 production scorer lifecycle',\n env.DBX_TEST_MLFLOW3_SCORER_ASSERTION_SQL,\n warehouse.query,\n );\n await booleanSql(\n 'MLflow 3 production monitoring',\n env.DBX_TEST_MLFLOW3_MONITOR_ASSERTION_SQL,\n warehouse.query,\n );\n await booleanSql(\n 'AI Search retrieval quality',\n env.DBX_TEST_AI_SEARCH_EVAL_ASSERTION_SQL,\n warehouse.query,\n );\n return {\n ...job,\n traces: true,\n offlineEvaluation: true,\n scorerLifecycle: true,\n monitor: true,\n aiSearchEvaluation: true,\n };\n },\n };\n}\n\nexport function agentEvaluationPipelineCheck(): LiveCheck {\n const names = ['DBX_TEST_AGENT_EVAL_E2E_JOB_ID', 'DBX_TEST_AGENT_EVAL_ASSERTION_SQL'] as const;\n return {\n id: 'agent-evaluation-pipeline',\n description:\n 'Experiments API, outbox, Temporal worker, Model Serving judge, SQL score sink and Quality completion execute end to end',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const job = await runCertificationJob(\n 'Agent evaluation end-to-end',\n env.DBX_TEST_AGENT_EVAL_E2E_JOB_ID,\n env,\n client,\n );\n await booleanSql(\n 'Agent evaluation terminal Quality evidence',\n env.DBX_TEST_AGENT_EVAL_ASSERTION_SQL,\n warehouse.query,\n );\n return { ...job, api: true, outbox: true, temporal: true, judged: true, persisted: true };\n },\n };\n}\n\n/**\n * The fixture Job uses Databricks' Streamable HTTP MCP client. It must list\n * and invoke a managed server, list/invoke a UC MCP Service, and demonstrate\n * that a tool excluded by the service's UC selector is denied. SQL evidence prevents a no-op Job\n * from being accepted as certification.\n */\nexport function managedMcpAgentsCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_MCP_JOB_ID',\n 'DBX_TEST_MCP_MANAGED_ASSERTION_SQL',\n 'DBX_TEST_MCP_SERVICE_ASSERTION_SQL',\n 'DBX_TEST_MCP_DENY_ASSERTION_SQL',\n ] as const;\n return {\n id: 'managed-mcp-agents',\n description: 'Managed MCP and Unity Catalog MCP Services support list, call and deny behavior',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const job = await runCertificationJob('Databricks MCP', env.DBX_TEST_MCP_JOB_ID, env, client);\n await booleanSql(\n 'Managed MCP list/call',\n env.DBX_TEST_MCP_MANAGED_ASSERTION_SQL,\n warehouse.query,\n );\n await booleanSql(\n 'Unity Catalog MCP Service list/call',\n env.DBX_TEST_MCP_SERVICE_ASSERTION_SQL,\n warehouse.query,\n );\n await booleanSql(\n 'MCP excluded-tool denial',\n env.DBX_TEST_MCP_DENY_ASSERTION_SQL,\n warehouse.query,\n );\n return { ...job, managedServer: true, mcpService: true, denyControl: true };\n },\n };\n}\n\nexport function dataQualityAppTelemetryCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_TELEMETRY_APP_NAME',\n 'DBX_TEST_DQM_ASSERTION_SQL',\n 'DBX_TEST_APP_LOGS_ASSERTION_SQL',\n 'DBX_TEST_APP_SPANS_ASSERTION_SQL',\n 'DBX_TEST_APP_METRICS_ASSERTION_SQL',\n ] as const;\n return {\n id: 'data-quality-app-telemetry',\n description:\n 'Unity Catalog data quality monitoring and Databricks Apps logs, spans and metrics are current',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client, warehouse }) {\n requireEnv(env, names);\n const appName = env.DBX_TEST_TELEMETRY_APP_NAME as string;\n const app = await adapter(client).app(appName);\n const destinations = Array.isArray(app.telemetry_export_destinations)\n ? app.telemetry_export_destinations\n : [];\n const unityCatalog = destinations.find(\n (destination) => isObject(destination) && isObject(destination.unity_catalog),\n );\n if (!isObject(unityCatalog) || !isObject(unityCatalog.unity_catalog)) {\n throw new Error(`Databricks App ${appName} has no Unity Catalog telemetry destination`);\n }\n const tables = unityCatalog.unity_catalog;\n for (const field of ['logs_table', 'traces_table', 'metrics_table']) {\n if (typeof tables[field] !== 'string' || !tables[field]) {\n throw new Error(`Databricks App ${appName} telemetry destination has no ${field}`);\n }\n }\n await booleanSql('Data Quality Monitoring', env.DBX_TEST_DQM_ASSERTION_SQL, warehouse.query);\n await booleanSql('App logs', env.DBX_TEST_APP_LOGS_ASSERTION_SQL, warehouse.query);\n await booleanSql('App spans', env.DBX_TEST_APP_SPANS_ASSERTION_SQL, warehouse.query);\n await booleanSql('App metrics', env.DBX_TEST_APP_METRICS_ASSERTION_SQL, warehouse.query);\n return { app: appName, unityCatalogTelemetry: true, dataQualityMonitoring: true };\n },\n };\n}\n\nexport function agentServicesEnrollmentCheck(): LiveCheck {\n const names = [\n 'DBX_TEST_AGENT_SERVICE_FULL_NAME',\n 'DBX_TEST_AGENT_SERVICE_CONNECTION',\n 'DBX_TEST_AGENT_SERVICE_EXECUTE_PRINCIPAL',\n ] as const;\n return {\n id: 'agent-services-enrollment',\n description:\n 'A customer-owned Harness agent is registered as an external Unity Catalog Agent Service with governed access',\n configured: (env) => required(env, names).length === 0,\n async run({ env, client }) {\n requireEnv(env, names);\n const fullName = env.DBX_TEST_AGENT_SERVICE_FULL_NAME as string;\n const api = adapter(client);\n const service = await api.agentService(fullName);\n if (service.agent_service_type !== 'AGENT_SERVICE_TYPE_EXTERNAL') {\n throw new Error(`${fullName} is not an external Agent Service`);\n }\n const expectedConnection = env.DBX_TEST_AGENT_SERVICE_CONNECTION as string;\n const actualConnection = service.config?.connection?.name ?? '';\n if (\n actualConnection !== expectedConnection &&\n actualConnection.split('/').at(-1) !== expectedConnection\n ) {\n throw new Error(`${fullName} uses unexpected connection ${actualConnection || 'UNKNOWN'}`);\n }\n if (!service.config?.base_path?.startsWith('/')) {\n throw new Error(`${fullName} has no absolute external base path`);\n }\n const permissions = await api.agentServicePermissions(fullName);\n const assignments = Array.isArray(permissions.privilege_assignments)\n ? permissions.privilege_assignments\n : [];\n const expectedPrincipal = env.DBX_TEST_AGENT_SERVICE_EXECUTE_PRINCIPAL as string;\n const assignment = assignments.find(\n (entry) => isObject(entry) && entry.principal === expectedPrincipal,\n );\n const privileges =\n isObject(assignment) && Array.isArray(assignment.privileges) ? assignment.privileges : [];\n const canExecute = privileges.some(\n (privilege) => isObject(privilege) && privilege.privilege === 'EXECUTE',\n );\n if (!canExecute) {\n throw new Error(`${expectedPrincipal} does not have EXECUTE on ${fullName}`);\n }\n return {\n fullName: service.full_name ?? service.name ?? fullName,\n connection: actualConnection,\n executePrincipal: expectedPrincipal,\n runtimeInvocationAvailable: false,\n };\n },\n };\n}\n\nexport interface RegionalDrCheckOptions {\n clientFactory?: (env: Record<string, string | undefined>) => WorkspaceClientLike;\n}\n\nexport function regionalDrCheck(options: RegionalDrCheckOptions = {}): LiveCheck {\n const names = [\n 'DBX_TEST_DR_HOST',\n 'DBX_TEST_DR_WAREHOUSE_ID',\n 'DBX_TEST_DR_ASSERTION_SQL',\n ] as const;\n return {\n id: 'regional-dr',\n description: 'Secondary-region workspace authentication and SQL warehouse are reachable',\n configured: (env) => required(env, names).length === 0,\n async run({ env }) {\n requireEnv(env, names);\n const drEnv: Record<string, string | undefined> = {\n ...env,\n DATABRICKS_HOST: env.DBX_TEST_DR_HOST,\n DATABRICKS_WAREHOUSE_ID: env.DBX_TEST_DR_WAREHOUSE_ID,\n DATABRICKS_HTTP_PATH: undefined,\n DATABRICKS_BEARER: env.DBX_TEST_DR_BEARER,\n DATABRICKS_TOKEN: env.DBX_TEST_DR_TOKEN,\n DATABRICKS_CLIENT_ID: env.DBX_TEST_DR_CLIENT_ID ?? env.DATABRICKS_CLIENT_ID,\n DATABRICKS_CLIENT_SECRET: env.DBX_TEST_DR_CLIENT_SECRET ?? env.DATABRICKS_CLIENT_SECRET,\n };\n const client = options.clientFactory?.(drEnv) ?? createClientFromEnv(drEnv);\n const secondary = await adapter(client).warehouse(env.DBX_TEST_DR_WAREHOUSE_ID as string);\n assertReady('DR SQL warehouse', secondary.state, ['RUNNING']);\n const drWarehouse = await createWorkspaceContext({ env: drEnv, client });\n try {\n await booleanSql('Regional DR workload', env.DBX_TEST_DR_ASSERTION_SQL, drWarehouse.query);\n } finally {\n await drWarehouse.close();\n }\n return {\n secondaryWorkspace: 'reachable',\n warehouseId: secondary.id ?? env.DBX_TEST_DR_WAREHOUSE_ID,\n state: secondary.state,\n };\n },\n };\n}\n","import {\n advancedStreamingCdcCheck,\n agentEvaluationPipelineCheck,\n agentServicesEnrollmentCheck,\n aiBiDashboardCheck,\n dataQualityAppTelemetryCheck,\n evalJudgeModelServingCheck,\n featureEngineeringServingCheck,\n federationSharingCleanRoomsCheck,\n genieCheck,\n lakeflowConnectCheck,\n managedMcpAgentsCheck,\n mlflow3GenAiQualityCheck,\n mlflowLifecycleCheck,\n modelServingCheck,\n ragAgentCheck,\n regionalDrCheck,\n securityPostureCostCheck,\n vectorSearchCheck,\n} from './advanced-workload-checks.js';\nimport { restrictedPrincipalCheck } from './live-checks.js';\nimport { type TargetPack, defineTargetPack } from './target-packs.js';\n\nconst DOCS = 'https://experiments.fabric.pro/docs/testing/target-packs/';\nconst AZURE_M2M_SCOPE =\n 'Azure Databricks, dedicated service principal using OAuth M2M, public network path; named managed or disposable certification fixtures';\n\nconst workspace = {\n id: 'workspace',\n description: 'Databricks workspace host',\n anyOf: ['DATABRICKS_HOST'],\n} as const;\nconst auth = {\n id: 'authentication',\n description: 'Databricks OAuth, OIDC, bearer, or PAT authentication',\n anyOf: [\n 'DATABRICKS_BEARER',\n 'DATABRICKS_TOKEN',\n 'DATABRICKS_CLIENT_ID',\n 'DATABRICKS_OIDC_TOKEN',\n 'DATABRICKS_OIDC_TOKEN_FILEPATH',\n ],\n secret: true,\n} as const;\nconst warehouse = {\n id: 'warehouse',\n description: 'SQL warehouse for data-plane assertions',\n anyOf: ['DATABRICKS_WAREHOUSE_ID', 'DATABRICKS_HTTP_PATH'],\n} as const;\nconst requirement = (id: string, description: string, ...anyOf: string[]) => ({\n id,\n description,\n anyOf,\n});\n\nexport function createAdvancedStreamingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'streaming-cdc-connect',\n name: 'Advanced streaming, CDC and Lakeflow Connect',\n description:\n 'Streaming tables, pipeline health, CDC correctness, freshness and managed connector replication.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'streaming.tables',\n 'streaming.freshness',\n 'cdc.correctness',\n 'lakeflow-connect.replication',\n ],\n checks: () => [restrictedPrincipalCheck(), advancedStreamingCdcCheck(), lakeflowConnectCheck()],\n requiredChecks: ['restricted-principal', 'streaming-cdc', 'lakeflow-connect'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('streaming-pipeline', 'Streaming pipeline ID', 'DBX_TEST_STREAMING_PIPELINE_ID'),\n requirement('streaming-table', 'Streaming target table', 'DBX_TEST_STREAMING_TABLE'),\n requirement(\n 'connect-pipeline',\n 'Lakeflow Connect ingestion pipeline',\n 'DBX_TEST_CONNECT_PIPELINE_ID',\n ),\n requirement(\n 'streaming-assertion',\n 'Streaming freshness SQL',\n 'DBX_TEST_STREAMING_ASSERTION_SQL',\n ),\n requirement('cdc-assertion', 'CDC correctness SQL', 'DBX_TEST_CDC_ASSERTION_SQL'),\n requirement(\n 'connect-assertion',\n 'Lakeflow Connect replication SQL',\n 'DBX_TEST_CONNECT_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#advanced-streaming-cdc-and-lakeflow-connect`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; serverless Lakeflow pipeline AUTO CDC and query-based PostgreSQL foreign-catalog ingestion`,\n ],\n });\n}\n\nexport function createAiBiGenieTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'aibi-genie',\n name: 'AI/BI dashboards and Genie',\n description: 'Dashboard accessibility and authenticated Genie space/conversation behavior.',\n version: '0.2.0',\n maturity: 'live-gated',\n capabilities: ['aibi.dashboard', 'genie.space', 'genie.conversation'],\n checks: () => [restrictedPrincipalCheck(), aiBiDashboardCheck(), genieCheck()],\n requiredChecks: ['restricted-principal', 'aibi-dashboard', 'genie'],\n requirements: [\n workspace,\n auth,\n requirement('dashboard', 'AI/BI dashboard ID', 'DBX_TEST_DASHBOARD_ID'),\n requirement('genie-space', 'Genie space ID', 'DBX_TEST_GENIE_SPACE_ID'),\n requirement(\n 'genie-question',\n 'Grounded Genie certification question',\n 'DBX_TEST_GENIE_QUESTION',\n ),\n ],\n docsUrl: `${DOCS}#aibi-dashboards-and-genie`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; published AI/BI dashboard revision and Genie conversation start`,\n ],\n });\n}\n\nexport function createMlflowLifecycleTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'mlflow-lifecycle',\n name: 'MLflow and model lifecycle',\n description:\n 'MLflow experiments plus Unity Catalog registered-model and model-version lifecycle evidence.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'mlflow.experiments',\n 'models.unity-catalog',\n 'models.versions',\n 'models.lifecycle',\n ],\n checks: () => [restrictedPrincipalCheck(), mlflowLifecycleCheck()],\n requiredChecks: ['restricted-principal', 'mlflow-lifecycle'],\n requirements: [\n workspace,\n auth,\n requirement('experiment', 'MLflow experiment ID', 'DBX_TEST_MLFLOW_EXPERIMENT_ID'),\n requirement(\n 'registered-model',\n 'Unity Catalog registered model',\n 'DBX_TEST_REGISTERED_MODEL',\n ),\n requirement('model-version', 'Registered model version', 'DBX_TEST_MODEL_VERSION'),\n ],\n docsUrl: `${DOCS}#mlflow-and-model-lifecycle`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; MLflow experiment and configured Unity Catalog model version`,\n ],\n });\n}\n\nexport function createFeatureEngineeringTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'feature-engineering-serving',\n name: 'Feature engineering and serving',\n description:\n 'Unity Catalog feature tables, online materialization state and freshness assertions.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'features.tables',\n 'features.online-tables',\n 'features.freshness',\n 'features.serving',\n ],\n checks: () => [restrictedPrincipalCheck(), featureEngineeringServingCheck()],\n requiredChecks: ['restricted-principal', 'feature-engineering'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('feature-table', 'Unity Catalog feature table', 'DBX_TEST_FEATURE_TABLE'),\n requirement(\n 'online-materialization',\n 'Databricks Online Table or Synced Table pipeline',\n 'DBX_TEST_ONLINE_TABLE',\n 'DBX_TEST_FEATURE_SERVING_PIPELINE_ID',\n ),\n requirement(\n 'feature-assertion',\n 'Feature freshness/correctness SQL',\n 'DBX_TEST_FEATURE_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#feature-engineering-and-serving`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Delta feature table, PostgreSQL-backed Synced Table, and SQL freshness`,\n ],\n });\n}\n\nexport function createModelServingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'model-serving-gateway',\n name: 'Model Serving and AI Gateway',\n description: 'Serving readiness, inference behavior and optional AI Gateway policy presence.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'model-serving.readiness',\n 'model-serving.inference',\n 'ai-gateway.configuration',\n ],\n checks: () => [restrictedPrincipalCheck(), modelServingCheck()],\n requiredChecks: ['restricted-principal', 'model-serving'],\n requirements: [\n workspace,\n auth,\n requirement('serving-endpoint', 'Model Serving endpoint name', 'DBX_TEST_SERVING_ENDPOINT'),\n requirement(\n 'serving-request',\n 'Safe inference request JSON',\n 'DBX_TEST_SERVING_REQUEST_JSON',\n ),\n requirement(\n 'ai-gateway',\n 'AI Gateway enforcement flag set to 1',\n 'DBX_TEST_AI_GATEWAY_REQUIRED',\n ),\n ],\n docsUrl: `${DOCS}#model-serving-and-ai-gateway`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; custom-model inference and AI Gateway inference-table configuration`,\n ],\n });\n}\n\nexport function createVectorRagAgentsTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'vector-rag-agents',\n name: 'Vector Search, RAG and agents',\n description:\n 'Vector endpoint/index readiness, retrieval behavior and agent endpoint inference.',\n version: '0.1.0',\n maturity: 'live-gated',\n capabilities: [\n 'vector-search.endpoint',\n 'vector-search.index',\n 'rag.retrieval',\n 'agents.serving',\n ],\n checks: () => [restrictedPrincipalCheck(), vectorSearchCheck(), ragAgentCheck()],\n requiredChecks: ['restricted-principal', 'vector-search', 'rag-agent'],\n requirements: [\n workspace,\n auth,\n requirement('vector-endpoint', 'Vector Search endpoint', 'DBX_TEST_VECTOR_ENDPOINT'),\n requirement('vector-index', 'Vector Search index', 'DBX_TEST_VECTOR_INDEX'),\n requirement('vector-query', 'Vector retrieval request JSON', 'DBX_TEST_VECTOR_QUERY_JSON'),\n requirement('agent-endpoint', 'Agent serving endpoint', 'DBX_TEST_AGENT_ENDPOINT'),\n requirement('agent-request', 'Safe agent request JSON', 'DBX_TEST_AGENT_REQUEST_JSON'),\n ],\n docsUrl: `${DOCS}#vector-search-rag-and-agents`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Delta Sync vector retrieval and custom PyFunc agent invocation`,\n ],\n });\n}\n\nexport function createFederationSharingTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'federation-sharing-cleanrooms',\n name: 'Federation, Delta Sharing and Clean Rooms',\n description:\n 'Federated connection, data-plane query, Delta Share and Clean Room governance access.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'federation.connections',\n 'federation.query',\n 'delta-sharing.shares',\n 'clean-rooms.access',\n ],\n checks: () => [restrictedPrincipalCheck(), federationSharingCleanRoomsCheck()],\n requiredChecks: ['restricted-principal', 'federation-sharing-cleanrooms'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('connection', 'Lakehouse Federation connection', 'DBX_TEST_CONNECTION'),\n requirement('share', 'Delta Sharing share', 'DBX_TEST_SHARE'),\n requirement('clean-room', 'Clean Room name', 'DBX_TEST_CLEAN_ROOM'),\n requirement(\n 'federation-assertion',\n 'Federated data-plane SQL',\n 'DBX_TEST_FEDERATION_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#federation-delta-sharing-and-clean-rooms`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; managed PostgreSQL federation, Delta Sharing table, and two-metastore Clean Room`,\n ],\n });\n}\n\nexport function createSecurityCostDrTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'security-cost-dr',\n name: 'Networking, security posture, cost and regional DR',\n description:\n 'IP controls, compute policy, cost guardrail and authenticated secondary-region readiness.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'network.ip-access',\n 'security.compute-policy',\n 'cost.system-tables',\n 'dr.secondary-region',\n ],\n checks: () => [restrictedPrincipalCheck(), securityPostureCostCheck(), regionalDrCheck()],\n requiredChecks: ['restricted-principal', 'security-cost', 'regional-dr'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'ip-access-list',\n 'Enabled workspace IP access list',\n 'DBX_TEST_IP_ACCESS_LIST_ID',\n ),\n requirement('cluster-policy', 'Compute policy ID', 'DBX_TEST_CLUSTER_POLICY_ID'),\n requirement('cost-assertion', 'Boolean SQL cost guardrail', 'DBX_TEST_COST_ASSERTION_SQL'),\n requirement('dr-workspace', 'Secondary workspace host', 'DBX_TEST_DR_HOST'),\n requirement('dr-warehouse', 'Running secondary-region warehouse', 'DBX_TEST_DR_WAREHOUSE_ID'),\n requirement('dr-assertion', 'Secondary-region workload SQL', 'DBX_TEST_DR_ASSERTION_SQL'),\n ],\n docsUrl: `${DOCS}#networking-security-cost-and-regional-dr`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; TEST-NET block list, bounded compute policy, billing system-table guardrail, and West US 3 serverless DR warehouse`,\n ],\n });\n}\n\nexport function createMlflow3AgentQualityTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'mlflow3-agent-quality',\n name: 'MLflow 3 agent quality and monitoring',\n description:\n 'Native MLflow 3 traces, offline agent evaluation, production scorer lifecycle and online monitoring.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'mlflow3.tracing',\n 'mlflow3.agent-evaluation',\n 'mlflow3.production-scorers',\n 'mlflow3.production-monitoring',\n 'ai-search.retrieval-evaluation',\n ],\n checks: () => [restrictedPrincipalCheck(), mlflow3GenAiQualityCheck()],\n requiredChecks: ['restricted-principal', 'mlflow3-genai-quality'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('mlflow3-job', 'Native MLflow 3 certification Job', 'DBX_TEST_MLFLOW3_JOB_ID'),\n requirement(\n 'mlflow3-traces',\n 'Boolean SQL proving a fresh MLflow 3 trace',\n 'DBX_TEST_MLFLOW3_TRACE_ASSERTION_SQL',\n ),\n requirement(\n 'mlflow3-evaluation',\n 'Boolean SQL proving offline agent evaluation results',\n 'DBX_TEST_MLFLOW3_EVAL_ASSERTION_SQL',\n ),\n requirement(\n 'mlflow3-scorers',\n 'Boolean SQL proving production scorer lifecycle evidence',\n 'DBX_TEST_MLFLOW3_SCORER_ASSERTION_SQL',\n ),\n requirement(\n 'mlflow3-monitoring',\n 'Boolean SQL proving production monitoring output',\n 'DBX_TEST_MLFLOW3_MONITOR_ASSERTION_SQL',\n ),\n requirement(\n 'ai-search-evaluation',\n 'Boolean SQL proving AI Search retrieval-quality thresholds',\n 'DBX_TEST_AI_SEARCH_EVAL_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#mlflow-3-agent-quality-and-monitoring`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Python-native MLflow 3 trace, evaluation, complete scorer lifecycle and monitor evidence`,\n ],\n });\n}\n\nexport function createAgentEvaluationPipelineTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'agent-evaluation-pipeline',\n name: 'Agent evaluation delivery pipeline',\n description:\n 'Exact-candidate API submission, outbox dispatch, Temporal execution, Databricks judge inference, SQL score persistence and Quality completion.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'agent-evals.api-submission',\n 'agent-evals.temporal-dispatch',\n 'agent-evals.model-serving-judge',\n 'agent-evals.sql-persistence',\n 'agent-evals.quality-evidence',\n ],\n checks: () => [\n restrictedPrincipalCheck(),\n evalJudgeModelServingCheck(),\n agentEvaluationPipelineCheck(),\n ],\n requiredChecks: ['restricted-principal', 'model-eval-judge', 'agent-evaluation-pipeline'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement(\n 'eval-serving-endpoint',\n 'Databricks Model Serving endpoint satisfying the evaluator chat contract',\n 'DBX_TEST_EVAL_SERVING_ENDPOINT',\n ),\n requirement(\n 'agent-eval-job',\n 'Exact-candidate end-to-end agent evaluation certification Job',\n 'DBX_TEST_AGENT_EVAL_E2E_JOB_ID',\n ),\n requirement(\n 'agent-eval-evidence',\n 'Boolean SQL proving terminal scores and Quality evidence',\n 'DBX_TEST_AGENT_EVAL_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#agent-evaluation-delivery-pipeline`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Experiments API through customer worker and Databricks judge to SQL/Quality`,\n ],\n });\n}\n\nexport function createManagedMcpAgentsTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'managed-mcp-agents',\n name: 'Managed MCP and MCP Services',\n description:\n 'Streamable HTTP tool discovery and calls for Databricks managed MCP servers and governed Unity Catalog MCP Services, including a deny control.',\n version: '1.0.0',\n maturity: 'live-gated',\n capabilities: [\n 'mcp.managed.list-call',\n 'mcp.services.list-call',\n 'mcp.unity-catalog-governance',\n 'mcp.denial',\n ],\n checks: () => [restrictedPrincipalCheck(), managedMcpAgentsCheck()],\n requiredChecks: ['restricted-principal', 'managed-mcp-agents'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('mcp-job', 'Native Streamable HTTP MCP certification Job', 'DBX_TEST_MCP_JOB_ID'),\n requirement(\n 'managed-mcp',\n 'Boolean SQL proving managed MCP list/call behavior',\n 'DBX_TEST_MCP_MANAGED_ASSERTION_SQL',\n ),\n requirement(\n 'mcp-service',\n 'Boolean SQL proving UC MCP Service list/call behavior',\n 'DBX_TEST_MCP_SERVICE_ASSERTION_SQL',\n ),\n requirement(\n 'mcp-denial',\n 'Boolean SQL proving an MCP tool excluded by UC selectors was denied',\n 'DBX_TEST_MCP_DENY_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#managed-mcp-and-mcp-services`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; managed AI Search or SQL MCP plus a UC MCP Service over Streamable HTTP`,\n ],\n });\n}\n\nexport function createDataQualityObservabilityTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'data-quality-observability',\n name: 'Data quality and Databricks Apps observability',\n description:\n 'Unity Catalog Data Quality Monitoring plus Databricks Apps OpenTelemetry logs, spans and metrics.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'data-quality.freshness-completeness',\n 'apps.telemetry.logs',\n 'apps.telemetry.traces',\n 'apps.telemetry.metrics',\n ],\n checks: () => [restrictedPrincipalCheck(), dataQualityAppTelemetryCheck()],\n requiredChecks: ['restricted-principal', 'data-quality-app-telemetry'],\n requirements: [\n workspace,\n auth,\n warehouse,\n requirement('telemetry-app', 'App with UC telemetry export', 'DBX_TEST_TELEMETRY_APP_NAME'),\n requirement(\n 'data-quality',\n 'Boolean SQL over current Data Quality Monitoring results',\n 'DBX_TEST_DQM_ASSERTION_SQL',\n ),\n requirement(\n 'app-logs',\n 'Boolean SQL proving current app logs',\n 'DBX_TEST_APP_LOGS_ASSERTION_SQL',\n ),\n requirement(\n 'app-spans',\n 'Boolean SQL proving current app spans',\n 'DBX_TEST_APP_SPANS_ASSERTION_SQL',\n ),\n requirement(\n 'app-metrics',\n 'Boolean SQL proving current app metrics',\n 'DBX_TEST_APP_METRICS_ASSERTION_SQL',\n ),\n ],\n docsUrl: `${DOCS}#data-quality-and-databricks-apps-observability`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; system.data_quality_monitoring.table_results and UC OTel tables`,\n ],\n });\n}\n\nexport function createAgentServicesEnrollmentTargetPack(): TargetPack {\n return defineTargetPack({\n id: 'agent-services-enrollment',\n name: 'Unity Catalog Agent Services enrollment',\n description:\n 'Customer-owned Fabric Harness agents registered as external Unity Catalog Agent Services with explicit EXECUTE grants.',\n version: '1.0.0',\n maturity: 'shipped',\n capabilities: [\n 'agent-services.external-registration',\n 'agent-services.discovery',\n 'agent-services.permissions',\n 'harness.customer-worker-enrollment',\n ],\n checks: () => [restrictedPrincipalCheck(), agentServicesEnrollmentCheck()],\n requiredChecks: ['restricted-principal', 'agent-services-enrollment'],\n requirements: [\n workspace,\n auth,\n requirement(\n 'agent-service',\n 'External Unity Catalog Agent Service full name',\n 'DBX_TEST_AGENT_SERVICE_FULL_NAME',\n ),\n requirement(\n 'agent-connection',\n 'Expected Unity Catalog HTTP connection',\n 'DBX_TEST_AGENT_SERVICE_CONNECTION',\n ),\n requirement(\n 'agent-execute-principal',\n 'Principal expected to have EXECUTE',\n 'DBX_TEST_AGENT_SERVICE_EXECUTE_PRINCIPAL',\n ),\n ],\n docsUrl: `${DOCS}#unity-catalog-agent-services-enrollment`,\n certificationScopes: [\n `${AZURE_M2M_SCOPE}; Agent Services Beta registration/discovery/ACL only; runtime invocation is not claimed`,\n ],\n });\n}\n\nexport function createAdvancedTargetPacks(): readonly TargetPack[] {\n return [\n createAdvancedStreamingTargetPack(),\n createAiBiGenieTargetPack(),\n createMlflowLifecycleTargetPack(),\n createFeatureEngineeringTargetPack(),\n createModelServingTargetPack(),\n createVectorRagAgentsTargetPack(),\n createFederationSharingTargetPack(),\n createSecurityCostDrTargetPack(),\n createMlflow3AgentQualityTargetPack(),\n createManagedMcpAgentsTargetPack(),\n createDataQualityObservabilityTargetPack(),\n createAgentServicesEnrollmentTargetPack(),\n createAgentEvaluationPipelineTargetPack(),\n ];\n}\n","import { createAdvancedTargetPacks } from './advanced-target-packs.js';\nimport { createFoundationTargetPacks } from './foundation-packs.js';\nimport { createLakeflowJobsTargetPack } from './jobs-target-pack.js';\nimport { createNextTargetPacks } from './next-target-packs.js';\nimport type { TargetPack } from './target-packs.js';\n\nexport function createBuiltinTargetPacks(): readonly TargetPack[] {\n return [\n ...createFoundationTargetPacks(),\n createLakeflowJobsTargetPack(),\n ...createAdvancedTargetPacks(),\n ...createNextTargetPacks(),\n ];\n}\n\nexport const builtinTargetPacks = createBuiltinTargetPacks();\n"]}