Register catalog packages on first release#44
Merged
eric-tramel merged 1 commit intomainfrom May 8, 2026
Merged
Conversation
johnnygreco
approved these changes
May 8, 2026
Contributor
johnnygreco
left a comment
There was a problem hiding this comment.
Reviewed the catalog registration flow, source-loading path, CLI/Makefile wiring, release validation updates, and docs. Local validation is green (make lint, make test-devtools, make check, make docs), and the PR checks are passing. Looks good to me.
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.
What
Changes the catalog maintenance model from broad full-repo sync as the normal path to targeted first-release registration.
ddp catalog register <plugin>to add one package tocatalog/plugins.json.ddp newscaffold-only, so experimental or unreleased packages are not catalog-visible by default.make catalogto requirePLUGIN=<package>and call targeted registration.make check-catalogto validate the checked-in catalog JSON instead of requiring every local package to be synced.ddp sync catalogavailable as an explicit escape hatch.Why
Package publication is now release-driven, so catalog discoverability should also become release-intentional. A new scaffolded package should not automatically appear in the public catalog; it should be registered only when maintainers are preparing its first installable release.
Usage
For a new package, scaffold and develop normally without touching the catalog:
When preparing the package's first release, register it once:
For later version releases, reuse the existing registration. If registration metadata must be corrected intentionally:
Workflow
flowchart TD A[Scaffold package<br/>uv run ddp new my-plugin] --> B[Develop plugin code, docs, tests] B --> C{Ready for first release?} C -- No --> B C -- Yes --> D[Register catalog package<br/>make catalog PLUGIN=data-designer-my-plugin] D --> E[Review and commit catalog/plugins.json] E --> F[Merge registration to main] F --> G[Run release process<br/>make release PLUGIN=data-designer-my-plugin PUBLISH=1] G --> H[Publish workflow uploads package assets<br/>and updates packages.json] H --> I[Docs workflow deploys Pages<br/>catalog + simple index] I --> J[Users discover package from catalog<br/>and install from static index] K[Subsequent version release] --> GHow
register_catalog_package()builds catalog entries for a single package directory, loads entry points from source so registration does not require a prior editable install, and merges just that package into the existing catalog. Existing registrations are protected unless--replaceis passed.ddp catalog checkreads and validates the checked-in catalog contract. The old full regeneration path remains available throughddp sync catalog, but it is no longer the Makefile's normal catalog check or update path.Validation
make lintmake test-devtoolsmake checkmake docs