fix(cloud): persist configuration and load release-image packages (#18335)

Land the approved Cloud configuration and release-image package stack.

Includes the separately reviewed adapter settings (#18335), external adapters (#18333), bundled plugins (#18336), startup configuration (#18339), and migration/package checks (#18341).

Includes the final image-owned loader and linked-dependency inventory corrections.

Verified stack head: 462716170d.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip authored and GitHub committed 2026-10-30 19:21:33 +00:00
1 parent 36f4422389
commit 8f822bfcf7
57 files changed
+3670 -250

No files matched your search

+36
View File
@@ -34,6 +34,42 @@ Current limitations to keep in mind:
In practice, that means the current implementation is a good fit for local development and self-hosted persistent deployments, but not yet for multi-instance cloud plugin distribution.
### Managed image packages
Managed Cloud provisions only plugins selected from the current release image
catalog. A Cloud tenant token or managed configuration keeps this image-only
policy active. Without an explicit selected package list, Cloud selects no
packages and cannot fall back to local installs. An explicit operator-managed
list also keeps this policy active outside Cloud. The database registration's
plugin key, package name, version and
approved manifest identify that package. Its legacy `packagePath` remains for
local/self-hosted compatibility; Cloud never uses that path to locate code.
Workers, plugin migrations and UI files resolve through the same current-image
package resolver. Cloud does not install npm dependencies, build packages, use
the development UI proxy, or fall back to a server home directory.
Prebuilt workers use the current release's baked CLI `tsx` loader for the SDK's
workspace TypeScript dependencies. The loader is located from the owning server
package in both regular and bundled server layouts. Missing loaders and loader
links outside the release's CLI or root `node_modules` fail activation. This
loads image-supplied code without installing dependencies or building packages.
Equivalent packages at different image roots reuse the existing registration,
configuration, approval status and company scopes without rewriting its stored
path. Concurrent first registration of the same package retains one plugin ID.
Conflicting package identities fail explicitly. Normal maintenance boot retains
the existing bundled manifest/version reconciliation and approval gates.
`createBundledPluginPackageResolver(...).inspect(registration, verifiedManifest)`
is a read-only qualification hook. Resolve the current image path, load its
manifest with the validated plugin loader, and inspect the registration before
normal boot reconciliation. Missing manifest evidence and incompatible packages
produce explicit blockers. Distribution packages retain their catalog digest
verification; built-in packages trust the immutable release image and must bump
their version when their code changes. Qualification supports identical package
sets only. This package-resolution boundary does not coordinate workers,
background jobs, or deployment overlap between servers.
## 1. Scope
This spec covers: