Repository navigation
Releases
v1.4.0
v1.4.0 — Deploy from Git in the Databricks Apps UI
✨ New
- Deploy from Git in the Apps UI. You need no notebook, no CLI and no tools on your laptop. Create a custom app, point it at this repo and a release tag, with source code path
app, and click Deploy. The Apps runtime builds the frontend during the deploy (#124, closes #123). - Upgrades keep your history and settings. To upgrade, click Deploy → Deploy using a different source → From Git and enter the new tag. Only the code changes. The app's resources, its Lakebase history and its service principal stay the same.
- Grant helper.
/api/setup/grantsshows the Unity Catalog GRANT SQL with your app's service principal ID filled in. - Health fields in
/api/config:warehouse_configuredandhistory_ready.
🐛 Fixes
- A new, empty Lakebase database no longer crashes the app. The app keeps its history in its own schema (
genie_ontology_readiness). Existing installs keep their tables inpublic. - A Lakebase error no longer stops the app. The app runs without history and logs the error.
⬆️ Upgrade notes
- From an install made before v1.4.0 (notebook or
bundle deploy+post_deploy.py): see Migrate from an older install in the README. You keep your history, warehouse and grants. Custom settings in the oldapp.yml(for exampleASSESS_CATALOGS,BRAND_NAME) are not copied by a deploy from Git. Write them down first. - After every deploy, check that the app status shows Running. A deployment can succeed while the app fails to start.
- Releases before v1.4.0 cannot be deployed from Git.
The notebook and CLI install paths still work. They are now in the README's Advanced sections.
v1.3.0
v1.3.0 — Compare, PDF export, readiness tiers, and new ways to deploy
✨ New
- Export an assessment as a branded PDF (#59, closes #15).
- Compare two assessments — see per-pillar gains and losses between runs (#61, closes #12).
- Readiness tiers + gap-driven guidance — each assessment maps to a readiness tier, and guidance now follows the gaps it found. Action Plan links are fixed (#63).
- Schema-level scope — when you select a single catalog, the assessment can scope to its schemas (#94).
- Genie Code readiness skill — run a readiness assessment from Genie Code without deploying the app (#76).
- Notebook installer — deploy the app from inside the workspace with a notebook (#90).
🛠 Deploy & operations
- Per-environment bundle targets —
dev,stgandprodeach have their own bundle state and app name, so deploying one target can never rename or remove another target's app.scripts/post_deploy.pytakesTARGET=dev|stg|prod. databricks-sdkis now documented as a post-deploy prerequisite.- The app sets a descriptive User-Agent on its Databricks API calls (#66, #67).
⬆️ Dependencies
- Frontend majors: React 19, Recharts 3, Vite 8, TypeScript 7 (#54); Tailwind CSS v4 (#96).
- The lockfile uses the public npm registry, pinned via
.npmrc(#56). - Backend: databricks-sdk
~=0.146.0, fastapi~=0.142.2, starlette==1.10.0, aiohttp~=3.14.5, uvicorn~=0.54.0, pydantic~=2.13, markdown>=3.11, xhtml2pdf>=0.2.28(#46, #47, #49, #95, #115). - Dependabot now groups version updates into one PR per ecosystem each week.
⚠️ Upgrade notes
- If you deploy with the bundle, use a target:
databricks bundle deploy -t <dev|stg|prod>. Theapp_namevariable was removed; each target sets its own app name. - A
bundle deploydoes not attach the Lakebase database resource. Runscripts/post_deploy.pyafterward if you use Lakebase history.
Full changelog: v1.2.1...v1.3.0
v1.2.1
v1.2.1 — Security hardening & dependency patches
A security-focused patch release. No new user-facing features; existing flows (Assess / Plan / Learn) are unchanged.
🔒 Security hardening (#45, supersedes #33)
- Genie test endpoints fail closed —
GENIE_ALLOW_SP_FALLBACKnow defaults tofalse, so a user who cannot reach a Genie space no longer silently falls back to the app service principal. OBO-only rejections return 403 (GENIE_IDENTITY_REQUIRED) instead of a generic 500. (Assessment SP-based signals are a separate path and are unaffected.) - Error-text sanitization (CWE-209) — failed probes and API errors now return a generic message plus a reference id; raw SQL, exception text, and stack details are no longer leaked to the client.
- PDF export LFI/SSRF hardening (CWE-22/918) —
/api/plan/pdfsanitizes the HTML fragment and blocks external /file://resource loads during rendering. - Header-spoof ownership (CWE-269/863) —
resolve_principalverifies the forwarded token against SCIM/Me; per-user history can no longer be spoofed via headers. - Log redaction (CWE-532) — redaction filter now also attaches to uvicorn / gunicorn loggers.
- SQL identifier/literal quoting (CWE-89) —
quote_ident/quote_literalescape backslashes before quotes across probes and the AI-comments accelerator. starlette==1.6.0pin to clear the advisory affecting the transitive range.
🐛 Fixes
- PDF plan export (#44) — plan title now renders once, with executive-ready polish.
⬆️ Dependency advisories (Dependabot)
- fastapi
~=0.141.1(#35), aiohttp~=3.14.3(#40), uvicorn~=0.52.4(#37), xhtml2pdf>=0.2.18(#38), asyncpg~=0.31.0(#42), react-markdown10.1.0(#41), lucide-react1.45.0(#43), autoprefixer10.5.6(#34).
🙏 Thanks
Security hardening based on a coordinated disclosure and PR from @Vivek-Kommareddy — thank you.
Full changelog: v1.2.0...v1.2.1
v1.2.0
Makes an assessment scopeable, explainable, and exportable, and tightens the surrounding UX.
Highlights
- Workspace scoping — assessments scope to the deployed workspace (a read-only "Scoped to …" label), so activity signals aren't counted account-wide on a shared metastore. Adds a pre-run catalog filter for the metadata pillars.
- Drill-down + explainability — every attributable pillar gets a sortable drill-down table (slice by workspace / catalog / schema, Export CSV) and a View SQL overlay showing the exact query behind each score; plus Export all to CSV (a ZIP with a summary + one CSV per pillar).
- Availability reasons — unreadable pillars report an explicit reason (insufficient permission / not enabled / scan failed) instead of a confident 0.
- Plan & UX — the generated plan leads with a deterministic score summary (renders as a table in-app and in the PDF); a grouped model picker organizes models by Proprietary / Open source and family; the assessment-score card was restructured.
Full changes in #27.
v1.1.1
Patch release — field-reliability fixes for the optional history path and the Genie Agents pillar, since v1.1.0.
Fixes
- Lakebase Autoscaling history — mint per-user history credentials for Autoscaling Lakebase endpoints (
POST /api/2.0/postgres/credentialsvia a newLAKEBASE_ENDPOINT_NAME), so assessment/plan history persists on the Lakebase shape new workspaces get, not just Provisioned instances. The Provisioned path is unchanged. (#18, closes #16) - Bounded Genie Agents audit scan — bound the pillar-5
system.access.audit(aibiGenie) scan to a 30-day window, plus an optional workspace filter whenWORKSPACE_IDis set, so/api/assess/streamcompletes before the Databricks Apps SSE gateway timeout on large accounts. Graceful degradation on a warehouse timeout is preserved. (#19, closes #17)
Full Changelog: v1.1.0...v1.1.1
v1.1.0
Minor release — features and fixes since v1.0.0.
Features
- OBO-first identity — all signals default to OBO (on-behalf-of user) with SP fallback + a
FORCE_SPoverride; each signal is attributed to the identity that served it (#5) - Plan without saved history — generate a plan from the in-session assessment when Lakebase history isn't available; live streaming + inline validation (#6)
- Product naming refresh — Genie Spaces→Agents, Semantic Layer→Metrics, Glossary→Pages (#3)
Fixes
- Wide-metastore scan — chunk + parallelize the metadata scan to fix the hang/network-error on very large metastores (#9)
- Omit unsupported
temperatureparam → fixes HTTP 400 on newer Claude models (#8) - Resolve assessment sources per-request when an OBO user token is present (#1)
Full Changelog: v1.0.0...v1.1.0
v1.0.0
First public release of Genie Ontology Readiness — a self-contained, customer-deployable Databricks App.
- Assess — read-only 7-pillar readiness scorecard (Unity Catalog, metadata, relationships, semantic layer, Genie Spaces, domains & stewardship, adoption) → overall 0–100 score + maturity stage.
- Plan — a tailored, prioritized action plan generated via the workspace's own Foundation Model API, naming the public Databricks accelerators that close each gap.
- Learn — per-capability enablement (technical + business), best practices, and a downloadable AI-ready-semantics methodology handbook.
Deployed as a Databricks App via Asset Bundles; optional Lakebase history (runs stateless otherwise). See README for install and the permissions it needs.