refactor(plugins): move the duplicate-resolution catalog to the host#144
Merged
Merged
Conversation
Removes PluginRuntimeCatalog from the SDK. The catalog resolved duplicate
plugin ids across folders by authoritative -> compatibility -> version ->
folder priority — that resolution is host policy, not a plugin-facing
mechanism, so it moves to the app (pj_runtime). The SDK is left as a thin
discovery + loader layer.
Removed:
- plugin_runtime_catalog.{hpp,cpp} and its pj_plugin_runtime_catalog target
(plus its slot in the pj_plugin_host umbrella and the install set).
- The three mocks only its tests used (moved to the host with the class).
- plugin_catalog_test keeps the scanPluginDsos / inspectPluginDso coverage;
the duplicate-resolution + compareSemver tests move with the class.
Kept (the SDK's discovery primitives): scanPluginDsos, inspectPluginDso,
the RAII loaders (DataSourceLibrary::load, ...), and the C ABI.
test_package and a data_source_plugin_base comment updated to the surviving
surface.
No plugin-ABI impact: no plugin links PluginRuntimeCatalog (host-side only);
abi/baseline.abi unchanged. By the SDK's plugin-impact definition of MAJOR
this is not a MAJOR — but it removes host-facing public API. Version bump
not applied here; propose deciding it at release (candidate: MINOR).
Pairs with the host-side change that adds the catalog to pj_runtime; both
must land together.
facontidavide
added a commit
that referenced
this pull request
Jul 10, 2026
Version bump 0.15.0 -> 0.16.0 (MINOR) covering #144, which removed the host-side PluginRuntimeCatalog (moved to the app, pj_runtime). No plugin links it and abi/baseline.abi is unchanged, so per the plugin-impact rule this is not a MAJOR — but it does remove host-facing public API, hence the CCI seed moves to 0.16.0 so the index never publishes API a later 0.x removes. - Bump the three version sources (conanfile.py, PJ_PACKAGE_VERSION in CMakeLists.txt, recipe.yaml) + the conanfile docstring example. - CHANGELOG: relabel the shipped-but-still-[Unreleased] per-topic-pause section to [0.15.0] (missed by the 0.15.0 release) and add the [0.16.0] entry for #144. - CCI recipe: re-seed config.yml/conandata.yml/README at 0.16.0. The sha256 is a placeholder until v0.16.0 is tagged (the digest of a tag tarball cannot exist before the tag); README documents the post-tag fill-in step. - Drop pj_plugin_runtime_catalog from the plugin_host component libs in BOTH conanfiles (root + CCI recipe) — #144 removed the library from the build/install but left it declared, which breaks conan create/consume. Build (debug+ASAN) + 49/49 tests pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
facontidavide
added a commit
that referenced
this pull request
Jul 10, 2026
….0 (#143) Version bump 0.15.0 -> 0.16.0 (MINOR) covering #144, which removed the host-side PluginRuntimeCatalog (moved to the app, pj_runtime). No plugin links it and abi/baseline.abi is unchanged, so per the plugin-impact rule this is not a MAJOR — but it does remove host-facing public API, hence the CCI seed moves to 0.16.0 so the index never publishes API a later 0.x removes. - Bump the three version sources (conanfile.py, PJ_PACKAGE_VERSION in CMakeLists.txt, recipe.yaml) + the conanfile docstring example. - CHANGELOG: relabel the shipped-but-still-[Unreleased] per-topic-pause section to [0.15.0] (missed by the 0.15.0 release) and add the [0.16.0] entry for #144. - CCI recipe: re-seed config.yml/conandata.yml/README at 0.16.0. The sha256 is a placeholder until v0.16.0 is tagged (the digest of a tag tarball cannot exist before the tag); README documents the post-tag fill-in step. - Drop pj_plugin_runtime_catalog from the plugin_host component libs in BOTH conanfiles (root + CCI recipe) — #144 removed the library from the build/install but left it declared, which breaks conan create/consume. Build (debug+ASAN) + 49/49 tests pass. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Removes
PluginRuntimeCatalogfrom the SDK. The catalog resolved duplicate plugin ids across folders by authoritative → compatibility → version → folder priority — that resolution is host policy, not a plugin-facing mechanism, so it moves to the app (pj_runtime). The SDK is left as a thin discovery + loader layer.Removed:
plugin_runtime_catalog.{hpp,cpp}and itspj_plugin_runtime_catalogtarget (plus its slot in thepj_plugin_hostumbrella and the install set).plugin_catalog_testkeeps thescanPluginDsos/inspectPluginDsocoverage; the duplicate-resolution +compareSemvertests move with the class.Kept (the SDK's discovery primitives):
scanPluginDsos,inspectPluginDso, the RAII loaders (DataSourceLibrary::load, …), and the C ABI.test_packageand adata_source_plugin_basecomment updated to the surviving surface.Why
Client feedback: the SDK should stay thin and serve plugins; catalog / priority policy belongs in the app.
Impact
PluginRuntimeCatalog(host-side only);abi/baseline.abiunchanged. By the SDK's plugin-impact definition of MAJOR this is not a MAJOR — but it removes host-facing public API. Version bump not applied here; propose deciding it at release (candidate: MINOR).Testing
cmake --build build+ctest→ 49/49 pass../build.sh --debug && ./test.sh).Pairs with
PlotJuggler/PJ4 companion PR (adds the catalog to
pj_runtime). Must land together — the host branch builds against this SDK branch.