Skip to content

Register catalog packages on first release#44

Merged
eric-tramel merged 1 commit intomainfrom
codex/first-release-catalog-registration
May 8, 2026
Merged

Register catalog packages on first release#44
eric-tramel merged 1 commit intomainfrom
codex/first-release-catalog-registration

Conversation

@eric-tramel
Copy link
Copy Markdown
Contributor

What

Changes the catalog maintenance model from broad full-repo sync as the normal path to targeted first-release registration.

  • Adds ddp catalog register <plugin> to add one package to catalog/plugins.json.
  • Keeps ddp new scaffold-only, so experimental or unreleased packages are not catalog-visible by default.
  • Changes make catalog to require PLUGIN=<package> and call targeted registration.
  • Changes make check-catalog to validate the checked-in catalog JSON instead of requiring every local package to be synced.
  • Keeps full ddp sync catalog available as an explicit escape hatch.
  • Updates release validation, tests, docs, and the PR checklist for the first-release registration model.

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:

uv run ddp new my-plugin

When preparing the package's first release, register it once:

make catalog PLUGIN=data-designer-my-plugin

For later version releases, reuse the existing registration. If registration metadata must be corrected intentionally:

uv run ddp catalog register data-designer-my-plugin --replace

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] --> G
Loading

How

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 --replace is passed.

ddp catalog check reads and validates the checked-in catalog contract. The old full regeneration path remains available through ddp sync catalog, but it is no longer the Makefile's normal catalog check or update path.

Validation

  • make lint
  • make test-devtools
  • make check
  • make docs

@eric-tramel eric-tramel marked this pull request as ready for review May 8, 2026 20:49
@eric-tramel eric-tramel requested a review from a team as a code owner May 8, 2026 20:49
Copy link
Copy Markdown
Contributor

@johnnygreco johnnygreco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@eric-tramel eric-tramel merged commit d805c54 into main May 8, 2026
6 checks passed
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.

2 participants