From 79c2920fcfeb917aaf34dc9e963c0e2725d0b39f Mon Sep 17 00:00:00 2001 From: Brian Denis Castelino Date: Fri, 24 Jul 2026 17:27:10 -0500 Subject: [PATCH] fix(registry): prefer configured registry volume over legacy session defaults Registry config now treats env/settings values (catalog, schema, volume) as authoritative before falling back to legacy per-session Unity Catalog values when no bound Volume or Lakebase registry row is selected. Fixes local init selecting the legacy OntoBricksRegistry default despite REGISTRY_VOLUME=ontology. --- .../v0.6.3/briancastelino_2026-07-23.log | 16 ++++++++++ src/back/objects/registry/RegistryService.py | 6 ++-- tests/units/registry/test_registry.py | 29 +++++++++++++++++-- 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 changelogs/v0.6.3/briancastelino_2026-07-23.log diff --git a/changelogs/v0.6.3/briancastelino_2026-07-23.log b/changelogs/v0.6.3/briancastelino_2026-07-23.log new file mode 100644 index 00000000..142d245a --- /dev/null +++ b/changelogs/v0.6.3/briancastelino_2026-07-23.log @@ -0,0 +1,16 @@ +## Prefer configured registry volume over legacy session defaults + +Context: Local Registry initialization kept selecting the legacy `OntoBricksRegistry` session default even though `REGISTRY_VOLUME=ontology` was loaded correctly. Registry configuration now treats environment values as authoritative before falling back to legacy per-session Unity Catalog values when no bound Volume or Lakebase registry row is selected. + +Changes: + +1. src/back/objects/registry/RegistryService.py + Prefer configured catalog, schema, and Volume values over legacy session fallbacks. +2. tests/units/registry/test_registry.py + Add regression coverage for environment configuration overriding the legacy session Volume and preserve raw-session fallback coverage. + +Modified files: +- src/back/objects/registry/RegistryService.py +- tests/units/registry/test_registry.py + +Tests: `python -m pytest tests/units/registry/test_registry.py -q --no-cov` → 55 passed in 3.36s. `python -m pytest -q -m "not scenario" --no-cov` → 3243 passed, 275 skipped, 5 deselected, 5 unrelated pre-existing GraphQL route-contract failures in 130.33s. diff --git a/src/back/objects/registry/RegistryService.py b/src/back/objects/registry/RegistryService.py index dab7c905..560bc484 100644 --- a/src/back/objects/registry/RegistryService.py +++ b/src/back/objects/registry/RegistryService.py @@ -230,9 +230,9 @@ def from_domain( ) return cls( - catalog=reg.get("catalog") or settings.registry_catalog, - schema=reg.get("schema") or settings.registry_schema, - volume=reg.get("volume") or settings.registry_volume or _DEFAULT_VOLUME, + catalog=settings.registry_catalog or reg.get("catalog"), + schema=settings.registry_schema or reg.get("schema"), + volume=settings.registry_volume or reg.get("volume") or _DEFAULT_VOLUME, lakebase_schema=lb_schema, lakebase_database=lb_database, ) diff --git a/tests/units/registry/test_registry.py b/tests/units/registry/test_registry.py index 15711877..afb16589 100644 --- a/tests/units/registry/test_registry.py +++ b/tests/units/registry/test_registry.py @@ -123,12 +123,35 @@ def test_uses_session_registry(self, monkeypatch): domain = _make_domain( registry={"catalog": "s_cat", "schema": "s_sch", "volume": "s_vol"} ) - settings = _make_settings() + settings = _make_settings( + registry_catalog="", registry_schema="", registry_volume="" + ) c = RegistryCfg.from_domain(domain, settings) assert c.catalog == "s_cat" assert c.schema == "s_sch" assert c.volume == "s_vol" + def test_settings_override_legacy_session_registry(self, monkeypatch): + self._patch_no_lakebase_row(monkeypatch) + domain = _make_domain( + registry={ + "catalog": "", + "schema": "", + "volume": "OntoBricksRegistry", + } + ) + settings = _make_settings( + registry_catalog="wl_internal", + registry_schema="ontobricks_registry", + registry_volume="ontology", + ) + c = RegistryCfg.from_domain( + domain, settings, prefer_volume_binding=True + ) + assert c.catalog == "wl_internal" + assert c.schema == "ontobricks_registry" + assert c.volume == "ontology" + def test_falls_back_to_settings(self, monkeypatch): self._patch_no_lakebase_row(monkeypatch) domain = _make_domain(registry={}) @@ -708,7 +731,9 @@ def test_factory(self, mock_creds, monkeypatch): ) mock_creds.return_value = ("https://host", "tok") domain = _make_domain(registry={"catalog": "c", "schema": "s", "volume": "v"}) - settings = _make_settings() + settings = _make_settings( + registry_catalog="", registry_schema="", registry_volume="" + ) with patch.object( RegistryService, "_build_store", return_value=MagicMock()