@fabricorg/runway-adapter-databricks
v0.4.0
Published
Databricks CLI adapter for Fabric Runway — wraps the databricks CLI for bundle validate/deploy and secrets-to-scope sync (ADR-006). Edge package: the only place subprocesses live.
Downloads
741
Readme
@fabricorg/runway-adapter-databricks
The Databricks edge for Fabric Runway. It delegates immutable artifact transport and digest
verification to Fabric Harness, delegates bundle/App lifecycle to
@fabric-harness/databricks, and consumes encrypted one-time secret commands only at the edge.
Preview deployment and teardown combine two scopes:
- a TTL-bound Lakebase copy-on-write branch, created before bundle validation and deleted with asynchronous absence polling; and
- the exact
-pr-Nsuffix for Apps, bundle roots, secret scopes, Unity Catalog, and all other non-database resources.
Configure previewBranches.project (plus an optional source branch and one-hour-to-30-day TTL).
Preview operations fail closed when it is absent, when an existing branch has another source, or
when the caller cannot manage the Lakebase project.
createDatabricksGatewayEvidenceSource() queries system.ai_gateway.usage with named Statement
Execution parameters and returns only the bounded usage projection accepted by Runway evidence
schema v2. Model requests must carry fabric_correlation_id; use
databricksGatewayRequestTags() from @fabricorg/runway. Gateway records corroborate Fabric's
policy, approval, artifact, and release evidence; they never replace it.
It also exposes probeAccess() to verify the reader before a long poll, and diagnoseMiss() to
classify why a correlation is absent (not-yet-delivered, no-access, no-recent-traffic,
untagged-traffic, correlation-tag-absent, lag-or-missing). not-yet-delivered is evaluated
first: the usage table's delivery frontier is the only reliable signal, since unrelated traffic in the
window may be untagged for reasons that say nothing about your request.
0.4.0 — breaking
Statement Execution reports SQL failures as HTTP 200 with status.state = FAILED. Earlier versions
read the result set off such a response and yielded zero rows, so a denied reader, an invisible
system schema, and ordinary delivery lag were indistinguishable. listEvidence() now throws a
classified DatabricksStatementError instead, and refuses truncated or multi-chunk result sets rather
than reporting a present correlation as missing. Callers that treated an empty array as "no evidence"
will now see an exception on failures that were previously silent.
Usage timestamps are also normalized to UTC in SQL and parsed as UTC. Previously the zone-less
event_time string was parsed as host-local time, shifting every observedAt by the host's UTC
offset on non-UTC hosts.
registerDatabricksMcpService() idempotently creates or tightens a Unity Catalog MCP Service around an
administrator-created schema-scoped HTTP connection. It requires an explicit tool selector allowlist
and grants only EXECUTE; connection credentials and USE CONNECTION are deliberately out of scope.
