Status: Accepted
This document freezes the canonical ownership model for shared extension-facing domains so architecture rules are explicit, reviewable, and testable.
Shared contracts that are consumed across platform and extension boundaries must have exactly one canonical implementation area in the repository.
| Domain | Canonical ownership | Notes |
|---|---|---|
provider |
internal/provider/contracts and platform/extensions/providerpolicy |
providerpolicy is the single platform-side root extensions/... import entrypoint. |
router |
extensions/routers for plugin implementation, platform/workflow/app for app DTO mapping |
No internal bridge package owns router contracts. |
runtime |
extensions/runtimes |
Platform consumes runtime registries through platform/extensions/providerpolicy and platform/extensions/registry/resolution. |
simulator |
extensions/simulators |
Platform consumes simulator registries through platform/extensions/providerpolicy and platform/extensions/registry/resolution. |
cli-orchestration |
platform/workflow/app |
internal/cli/... command packages must call app boundary functions, not lifecycle/recovery/source internals directly. |
platform/... -> internal/...platform/extensions/providerpolicy/providers.go -> extensions/...platform/extensions/providerpolicy/builtin_*.go -> extensions/...platform/extensions/registry/resolution/... -> platform/extensions/providerpolicyextensions/... -> packages/go/plugin-sdk/...extensions/... -> Go standard library or external vendor SDKsextensions/... -> internal/...extensions/... -> platform/...internal/... -> extensions/...internal/cli/... -> platform/workflow/lifecycleinternal/cli/... -> platform/workflow/recoveryinternal/cli/... -> platform/deploy/sourceplatform/extensions/providerpolicy/ importing root extensions/...internal/extensions/...internal and extensionsextensions/... packages own built-in plugin implementations for router, runtime, and simulator domains.platform/extensions/providerpolicy/ is the only allowed non-test importer of root extensions/... from inside platform/extensions.platform/workflow/app owns app-facing DTO translation and must not push those DTOs back into extension implementation packages.internal/extensions/... is not a canonical shared-contract layer and must not be used to reintroduce bridge packages.make check-boundarymake check-architecturego test ./platform/core/policy/architecture/...