[seg3-databricks] starting mock Unity Catalog on :8600 and JWKS on :8601

$ pip show odgs-databricks-bridge | grep -E "Name|Version"
Name: odgs-databricks-bridge
Version: 0.4.0

$ python3 sync_from_databricks.py
==========================================================================
Connecting to Databricks Unity Catalog: http://localhost:8600
Catalog:  production
  Schema: finance
  Schema: information_schema
INFO    odgs_databricks.client | Fetched 2 tables from production.finance
INFO    odgs_databricks.client | Total: 2 tables from catalog 'production'

Unity Catalog tables in 'production':
  [ MANAGED] production.finance.transactions    6 cols (5 NOT NULL)  owner=finance_data_eng@acme.demo
  [ MANAGED] production.finance.customers       4 cols (3 NOT NULL)  owner=finance_data_eng@acme.demo
==========================================================================

>>> bridge.sync(catalog='production', output_type='metrics')
INFO    odgs_databricks.client | Fetched 2 tables from production.finance
INFO    odgs_databricks.client | Total: 2 tables from catalog 'production'
INFO    odgs_databricks.bridge | Transforming 2 Unity Catalog tables → ODGS metrics
WARNING odgs_databricks.transformer | [ODGS Bridge] ⚠️ Compiling unsigned rules for ODGS Community Edition. Get Certified Sovereign Packs at https://platform.metricprovenance.com
INFO    odgs_databricks.bridge | ✅ Written ODGS schema: /home/claude/work/odgs-video/seg3-databricks/schemas/custom/databricks_acme_finance_production_metrics.json (2 tables → 2 metrics)

>>> bridge.sync(catalog='production', output_type='rules', severity='HARD_STOP')
INFO    odgs_databricks.client | Fetched 2 tables from production.finance
INFO    odgs_databricks.client | Total: 2 tables from catalog 'production'
INFO    odgs_databricks.bridge | Transforming 2 Unity Catalog tables → ODGS rules
WARNING odgs_databricks.transformer | [ODGS Bridge] ⚠️ Compiling unsigned rules for ODGS Community Edition. Get Certified Sovereign Packs at https://platform.metricprovenance.com
INFO    odgs_databricks.bridge | ✅ Written ODGS schema: /home/claude/work/odgs-video/seg3-databricks/schemas/custom/databricks_acme_finance_production_rules.json (2 tables → 18 rules)

Generated ODGS schemas:
  metrics: /home/claude/work/odgs-video/seg3-databricks/schemas/custom/databricks_acme_finance_production_metrics.json
  rules:   /home/claude/work/odgs-video/seg3-databricks/schemas/custom/databricks_acme_finance_production_rules.json

$ python3 build_and_enforce.py rows/transactions_ok.json
[compile] 18 rules generated by odgs-databricks-bridge
[compile] binding 5 NOT_NULL HARD_STOP rules for 'production.finance.transactions':
  - transactions_transaction_id_not_null: transaction_id != None  [HARD_STOP]
  - transactions_customer_id_not_null: customer_id != None  [HARD_STOP]
  - transactions_amount_not_null: amount != None  [HARD_STOP]
  - transactions_currency_not_null: currency != None  [HARD_STOP]
  - transactions_created_at_not_null: created_at != None  [HARD_STOP]

[sign] Rule pack canonical SHA-256: c209f2d68c34611ed2837e83d7bf2fe4fbb67335aebcd23ef2c790c6ee3f1fc3
[sign] JWS (ES256, kid=databricks-gov-2026-01, iss=did:web:governance.databricks-acme.demo): eyJhbGciOiJFUzI1NiIsImtpZCI6ImRhdGFicmlja3MtZ292LTIwMjYtMDEiLCJ0eXAiOi...

==========================================================================
ODGS ENFORCEMENT  |  process: urn:odgs:process:databricks:write_transactions_row
row (transactions_ok.json): {"transaction_id": "TXN-0001", "customer_id": "CUST-77", "amount": 320.5, "currency": "USD", "created_at": "2026-07-21T10:00:00Z"}
--------------------------------------------------------------------------
rule pack signature : VERIFIED (did:web:governance.databricks-acme.demo, key databricks-gov-2026-01)
active rules loaded : 5

VERDICT: APPROVED — all NOT NULL constraints satisfied
--------------------------------------------------------------------------
AUDIT RECORD (engine-generated, tri-partite binding)
  event_id        : f5fa3b3f-2b6c-44b5-9288-7ca005953632
  verdict         : APPROVED
  payload_hash    : 9a32531b99f5644c49e24a25f530055d8ad2e43706306b787f266ac5a4c9dcfa
  definition_hash : 770bb74a14578dc82aca4a99c6d3756b0ab935c674438667a2ade4ecc13450b8
AUDIT SEAL (Ed25519, verified)  signature=52e7f5be843b2000ec7b597188a11192...
  sealed log      : /home/claude/work/odgs-video/seg3-databricks/audit/signed_audit.jsonl
==========================================================================

$ python3 build_and_enforce.py rows/transactions_bad.json
[compile] 18 rules generated by odgs-databricks-bridge
[compile] binding 5 NOT_NULL HARD_STOP rules for 'production.finance.transactions':
  - transactions_transaction_id_not_null: transaction_id != None  [HARD_STOP]
  - transactions_customer_id_not_null: customer_id != None  [HARD_STOP]
  - transactions_amount_not_null: amount != None  [HARD_STOP]
  - transactions_currency_not_null: currency != None  [HARD_STOP]
  - transactions_created_at_not_null: created_at != None  [HARD_STOP]

[sign] Rule pack canonical SHA-256: c209f2d68c34611ed2837e83d7bf2fe4fbb67335aebcd23ef2c790c6ee3f1fc3
[sign] JWS (ES256, kid=databricks-gov-2026-01, iss=did:web:governance.databricks-acme.demo): eyJhbGciOiJFUzI1NiIsImtpZCI6ImRhdGFicmlja3MtZ292LTIwMjYtMDEiLCJ0eXAiOi...

==========================================================================
ODGS ENFORCEMENT  |  process: urn:odgs:process:databricks:write_transactions_row
row (transactions_bad.json): {"transaction_id": "TXN-0002", "customer_id": "CUST-77", "amount": 90.0, "currency": null, "created_at": "2026-07-21T10:05:00Z"}
--------------------------------------------------------------------------
rule pack signature : VERIFIED (did:web:governance.databricks-acme.demo, key databricks-gov-2026-01)
active rules loaded : 5

VERDICT: BLOCKED — HARD STOP — Governance Failure: ['Rule transactions_currency_not_null Failed: transactions.currency NOT NULL']
--------------------------------------------------------------------------
AUDIT RECORD (engine-generated, tri-partite binding)
  event_id        : db62e1c4-fdb7-4eaf-863b-c98668a6c1c9
  verdict         : BLOCKED
  payload_hash    : 87920bfc04c6d1e3483f87fe02b0eaa9f90f1532a214509f61ffc2e8b64242d9
  definition_hash : 4ebdc9a22d4f23ea3f6535aec760335627ce441d2326c0f7794883473079109a
  violation       : Rule transactions_currency_not_null Failed: transactions.currency NOT NULL
AUDIT SEAL (Ed25519, verified)  signature=a2c9f942d3fe7d25cf31143bb987d898...
  sealed log      : /home/claude/work/odgs-video/seg3-databricks/audit/signed_audit.jsonl
==========================================================================
(exit 1 — NULL currency hard-stopped, as intended)

[seg3-databricks] done.
