You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In your Stack Effect write-up, you mentioned opening the module registry so the community can contribute targets and modules.
I've been looking at what it would take to build on that direction without adding another architecture branch or a parallel scaffolding system. Before implementing anything, I'd like to check whether the boundary below matches what you had in mind for Community Catalogs.
What seems to be missing today
The existing target, module, and contribution models already cover most of the interesting behavior. Blueprint and Plan also work from catalog definitions rather than knowing about individual modules.
The closed part appears to be catalog assembly:
CatalogService is built from the fixed target and module registries.
Adding a module still requires changing the core registry aggregation.
Several service layers provide the built-in catalog internally, so supplying a composed catalog at only one boundary may not reach the full pipeline.
There is no defined collision policy for independently authored definitions.
A possible first step
My suggestion is to start with explicitly imported catalog fragments rather than package discovery or dynamic plugins.
A host application could import a trusted fragment containing declarative target and module definitions, combine it with the built-in catalog, validate the result, and provide that catalog to the existing services.
For the first slice, I would keep the rules intentionally strict:
Composition is additive. Duplicate target kinds or module IDs are rejected.
The complete catalog is validated before it can be used.
Fragment definitions use the existing declarative contribution model.
Fragment definitions cannot add Finalize scripts yet.
With no fragments, Stack Effect behaves exactly as it does today.
A small synthetic fragment could prove that a contributed target, a module for an existing target, or both can reach one real Selection -> Blueprint -> Plan path without editing the built-in registries.
This would only establish the composition boundary. It would not decide how catalogs are published, discovered, installed, trusted, or updated.
Feedback I'd appreciate
Does explicit local import feel like a useful first step toward the Community Catalog you described?
Would you prefer the initial public surface to include a catalog fragment plus composition/validation factory, or should it begin by exposing only the existing definition contracts?
Does additive-only composition with duplicate rejection fit the intended model?
Should Finalize scripts remain built-in-only until there is a clearer trust model?
If this is close to the direction you have in mind, I can turn it into a smaller implementation proposal and validate it with a minimal fragment before touching broader distribution concerns.
Not part of this proposal
A marketplace or remote registry.
Package discovery or configuration-driven loading.
Dynamic plugins or arbitrary code execution.
Version resolution, signatures, sandboxing, or provenance UI.
Overrides of built-in targets or modules.
Custom target layouts or new contribution kinds.
Any DDD, deployment, or other feature-specific catalog.
Context
In your Stack Effect write-up, you mentioned opening the module registry so the community can contribute targets and modules.
I've been looking at what it would take to build on that direction without adding another architecture branch or a parallel scaffolding system. Before implementing anything, I'd like to check whether the boundary below matches what you had in mind for Community Catalogs.
What seems to be missing today
The existing target, module, and contribution models already cover most of the interesting behavior. Blueprint and Plan also work from catalog definitions rather than knowing about individual modules.
The closed part appears to be catalog assembly:
CatalogServiceis built from the fixed target and module registries.A possible first step
My suggestion is to start with explicitly imported catalog fragments rather than package discovery or dynamic plugins.
A host application could import a trusted fragment containing declarative target and module definitions, combine it with the built-in catalog, validate the result, and provide that catalog to the existing services.
For the first slice, I would keep the rules intentionally strict:
A small synthetic fragment could prove that a contributed target, a module for an existing target, or both can reach one real
Selection -> Blueprint -> Planpath without editing the built-in registries.This would only establish the composition boundary. It would not decide how catalogs are published, discovered, installed, trusted, or updated.
Feedback I'd appreciate
If this is close to the direction you have in mind, I can turn it into a smaller implementation proposal and validate it with a minimal fragment before touching broader distribution concerns.
Not part of this proposal
Related context