diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fe5c9670..eb2c33b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,6 +88,9 @@ jobs: - name: Tests if: needs.scope.outputs.lane == 'full' run: uv run pytest + - name: Catalog compatibility with minimum packaging version + if: needs.scope.outputs.lane == 'full' + run: uv run --isolated --frozen --extra dev --with packaging==24.0 pytest tests/plugins/test_catalog.py -q - name: Dependency audit if: needs.scope.outputs.lane == 'full' run: | diff --git a/HANDOFF.md b/HANDOFF.md index 7d6d0f1c..246e4dfa 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -6,7 +6,7 @@ - Merged selected-date output repair from retained raw data with single-task Cloud Run and BigQuery through [PR #548](https://github.com/harrisonoconnorhover/dander/pull/548). - Reused durable run identity, cancellation, history, replay, lease fencing, and conditional cleanup. - Added preview/start contracts, publication measurements, and operator documentation with explicit support limits. -- Updated the curated catalog, Salesforce starter, and setup docs for Salesforce `0.3.2` and ServiceNow `0.2.3`; producer merge waits for verified publication. +- Published and verified Salesforce `0.3.2` and ServiceNow `0.2.3`; merged the matching catalog, starter, and documentation through PR #550. ## Try It @@ -20,7 +20,7 @@ Use the API examples in `docs/control-contracts.md` and `docs/output-repair.md`. - No live repair workload or paid qualification ran. - RC33 preparation: 4 release metadata tests, Ruff lint/format, metadata consistency, and contract drift checks passed; lockfile dependencies stayed fixed. - CI exposed 5 historical Redshift fixture failures after the version bump. Fixtures now explicitly bind RC32; all 32 focused benchmark/metadata tests pass. Candidate CI must rerun. -- The corrected version candidate passed full protected CI. Catalog/starter changes passed 42 focused checks plus all 10 catalog cases, Ruff, strict typing, metadata, and unchanged regenerated contracts; final combined CI remains required. +- PR #550 passed combined protected CI. A follow-up explicitly includes installed prereleases when checking compatibility; the catalog suite also runs against the declared minimum `packaging` version in CI. ## Decisions @@ -33,7 +33,7 @@ Use the API examples in `docs/control-contracts.md` and `docs/output-repair.md`. - Complete current aggregate billing reconciliation and bounded live repair; AWS sign-in now works. - Finish Druff's guided flow. The user approved its repository work and protected delivery. - Publish and consume the verified RC33 GitHub integration candidate after protected merge and exact-main CI; public PyPI RC20 stays unchanged. -- Finish the approved Salesforce/ServiceNow compatibility releases; advertised pins still target Dander 0.7. +- Complete the protected prerelease comparison fix and final RC33 combined package check. Both connector releases are published and their downloaded wheels passed the existing 93 Salesforce and 23 ServiceNow tests. ## Review First diff --git a/src/dander/plugins/catalog.py b/src/dander/plugins/catalog.py index 8779ed92..9a3e01e6 100644 --- a/src/dander/plugins/catalog.py +++ b/src/dander/plugins/catalog.py @@ -54,7 +54,9 @@ def as_dict( ) -> dict[str, object]: """Project the catalog entry into the stable HTTP/CLI data shape.""" try: - compatible = Version(dander_version) in SpecifierSet(self.dander_specifier) + compatible = SpecifierSet(self.dander_specifier).contains( + Version(dander_version), prereleases=True + ) except InvalidVersion: compatible = False return {