Skip to content

Make DataDesignerPlugins an install-ready plugin tap#36

Open
eric-tramel wants to merge 21 commits intomainfrom
codex/epic-15-plugin-tap
Open

Make DataDesignerPlugins an install-ready plugin tap#36
eric-tramel wants to merge 21 commits intomainfrom
codex/epic-15-plugin-tap

Conversation

@eric-tramel
Copy link
Copy Markdown
Contributor

@eric-tramel eric-tramel commented May 7, 2026

What

Makes this repository consumable as a Data Designer plugin tap by adding a schema v2 catalog contract, source metadata, install-target derivation, scaffold support for multiple plugin types, release validation, contract fixtures, and end-user/maintainer documentation.

The schema v2 contract is now package-first and generic: top-level packages[] entries describe installable Python distributions, and each package lists the runtime Data Designer plugins exposed after installation. Catalog JSON can be hosted from any raw JSON endpoint, while packages can come from PyPI, Git, direct HTTP(S) wheel/sdist URLs, or local paths for authoring.

The epic merge train includes:

Closes #15.

Why

Data Designer needs a predictable plugin discovery surface outside the core package. This gives NDD-style clients a stable catalog to read, a contract to validate, and enough trusted metadata to decide what can be installed without importing arbitrary plugin code first.

The package-first shape avoids baking this repository layout into the public contract. A tap host only needs to serve valid JSON, and each catalog package can point to whichever install source is appropriate for that package.

Usage

Scaffold a plugin by type:

uv run ddp new github-repo-reader --type seed-reader
uv run ddp new normalize-text --type column-generator
uv run ddp new redact-records --type processor

Check generated tap metadata and release readiness:

uv run ddp sync catalog --check
uv run ddp check-release data-designer-template 0.1.0
make validate-release PLUGIN=data-designer-template

A client can read catalog/plugins.json, validate schema v2, list package-level sources, flatten runtime plugins for search/info views, filter by Data Designer compatibility, and derive install targets such as:

data-designer-template==0.1.0
data-designer-git-seed-reader @ git+https://github.com/NVIDIA-NeMo/DataDesignerPlugins.git@data-designer-git-seed-reader/v0.2.0#subdirectory=plugins/data-designer-git-seed-reader
data-designer-url-processor @ https://packages.example.test/data_designer_url_processor-0.2.1-py3-none-any.whl
uv pip install -e /path/to/DataDesignerPlugins/plugins/data-designer-template

How

The implementation centralizes package-first catalog parsing, schema v2 validation, source metadata normalization, compatibility filtering, and install-target derivation in ddp.catalog. Repository tap defaults are loaded through ddp.tap_config, and generated catalog output now groups runtime plugin entries under each installable package.

The scaffold code maps the requested plugin type into the correct Data Designer plugin contract and generated package shape. Release checks verify checked-in schema v2 package entries, source consistency, release-eligible CODEOWNERS, and generated metadata expectations.

Docs cover the catalog schema, default tap URL, plugin tap workflow, governance/trust model, authoring flow, and release workflow.

Validation

Subissue PRs were merged into the epic branch only after targeted checks. The final integrated branch was validated with:

uv run pytest devtools/ddp/tests/test_catalog.py devtools/ddp/tests/test_catalog_fixtures.py devtools/ddp/tests/test_tap_config.py devtools/ddp/tests/test_validate_release.py -q
make docs
make check
make all
git diff --check

The final make all run passed lint, format check, devtools tests, isolated plugin tests, plugin validation, generated artifact checks, and strict docs validation.

I also ran an isolated scratch-space mock NDD CLI QA in /tmp/ddp-epic15-package-first-mock-ndd-qa. That mock client validated the real package-first catalog, listed packages and flattened runtime plugins, exercised search/info/install planning, validated schema fixtures, checked compatibility filtering, verified Git subdirectory and Git root install-target derivation, verified direct URL install-target derivation, rejected invalid fixtures, rewrote the template package to a local path source, installed it editable into a scratch venv, and verified the data_designer.plugins entry point was discoverable.

eric-tramel added 20 commits May 7, 2026 15:25
…ract

Define tap catalog schema v2 contract
@eric-tramel eric-tramel requested a review from a team as a code owner May 7, 2026 20:12
johnnygreco added a commit to NVIDIA-NeMo/DataDesigner that referenced this pull request May 8, 2026
Validate tap catalogs against the schema v2 contract used by
NVIDIA-NeMo/DataDesignerPlugins#36, including source union fields,
docs URLs, package paths, compatibility metadata, and unique runtime
plugin names.

Derive Git install targets as package-qualified PEP 508 direct
references so git tap entries install the package described by the
catalog source metadata.

Refs #617
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Epic: Make DataDesignerPlugins an install-ready Data Designer plugin tap

1 participant