Skip to content

Install optional plugin code only into DSPs that use it - #5

Merged
dillonlille merged 3 commits into
mainfrom
feat/selective-plugin-delivery
Sep 13, 2026
Merged

Install optional plugin code only into DSPs that use it#5
dillonlille merged 3 commits into
mainfrom
feat/selective-plugin-delivery

Conversation

@dillonlille

@dillonlille dillonlille commented Sep 13, 2026

Copy link
Copy Markdown
Owner

DSP releases previously copied every optional plugin package into every DSP's runtime release directory, including plugins the DSP never installed. Core now copies only runtime files and catalog metadata. Install copies the selected sealed plugin into that DSP's plugin directory. Plugins remain in dispatch-dsp and update through the same DSP release, Update Dev and sequential rollout.

Per-DSP approvals select the exact plugin versions available for installation, including an empty catalog with no global fallback. Rollout upgrades enabled and disabled installed plugins, preserves their state, and skips uninstalled plugins. A delayed installation uses that DSP's selected release, even while Dev tests a newer one. Session bootstrap and the Plugins API use the same per-DSP catalog, so new plugins remain hidden from production DSPs (including signed owner DSP views) until each receives the rollout.

The original release manifest authenticates the exact runtime subset. Existing full copies remain valid for rollback. New DSP creation and newly prepared DSP releases use the smaller layout after Core activation. Credentials, settings, databases and retained recovery packages are preserved; historical copies are not deleted.

Validation:

  • Source checks passed: 680 scripts and 24 manifests; Core development build passed.
  • 134 unit tests and 135 integration tests passed, including four DSPs exercising provisioning, delayed installation, enabled/disabled rollout, rollback and empty approvals.
  • Native Linux/systemd acceptance passed: Cortex-only fresh startup without Paycom payloads, real Paycom installation, DSP/Paycom version upgrade, sleeping-runtime activation and private-state rollback.
  • HTTP regression coverage verifies new-plugin visibility before Dev activation, after Update Dev and after every sequential rollout step; direct early installation is rejected. The regression reproduces the previous session bootstrap leak.
  • GitHub checks passed for 9c4edc6, including the owner Updates browser workflow.
  • The selective-copy regression test fails against the previous implementation because optional plugin payloads are present.

This is a Core-only implementation. No DSP source change, SDK package version change or release-format change is required. No published release or live installation was changed.

@dillonlille
dillonlille marked this pull request as ready for review September 13, 2026 02:19
@dillonlille
dillonlille merged commit d36c4f8 into main Sep 13, 2026
1 check passed
@dillonlille
dillonlille deleted the feat/selective-plugin-delivery branch September 13, 2026 03:04
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.

1 participant