Skip to content

fix(plugin): migrate legacy resource storage - #209

Merged
qiankunli merged 3 commits into
mainfrom
worktree-one-stop-fixes
Jul 28, 2026
Merged

fix(plugin): migrate legacy resource storage#209
qiankunli merged 3 commits into
mainfrom
worktree-one-stop-fixes

Conversation

@qiankunli

@qiankunli qiankunli commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Preserve persisted Plugin Resources when upgrading to the versioned
Resource envelope. Carry status, generation, resourceVersion, and the
reconcile schedule into the new path, then archive the legacy file.

Add regression coverage for migration and conflict-safe persistence.

Introduce a ResourceSource contract that lets plugins discover and continuously
contribute resources through a Baton-owned lifecycle context. Wait for initial
source synchronization before reconciliation, materialize resources
idempotently, and cancel live subscriptions with controller registration.

Keep CronSource focused on scheduling existing resources and remove the old
discovery compatibility path. Update the public plugin package, documentation,
and tests for the ideal 0-to-1 API.

Move the public Source contract and Baton-owned Source lifecycle into dedicated
modules. Rename ResourceSource to the implementable Source interface while
keeping CronSource as the host-owned fixed resync configuration.

Keep Resource as the data boundary, Source as discovery and wake input,
Controller as convergence, and Manager as lifecycle orchestration. Document
the model and pin class-based Source implementations with a contract test.

Preserve persisted Plugin Resources when upgrading to the versioned
Resource envelope. Carry status, generation, resourceVersion, and the
reconcile schedule into the new path, then archive the legacy file.

Add regression coverage for migration and conflict-safe persistence.
Introduce a ResourceSource contract that lets plugins discover and continuously
contribute resources through a Baton-owned lifecycle context. Wait for initial
source synchronization before reconciliation, materialize resources
idempotently, and cancel live subscriptions with controller registration.

Keep CronSource focused on scheduling existing resources and remove the old
discovery compatibility path. Update the public plugin package, documentation,
and tests for the ideal 0-to-1 API.
Move the public Source contract and Baton-owned Source lifecycle into dedicated
modules. Rename ResourceSource to the implementable Source interface while
keeping CronSource as the host-owned fixed resync configuration.

Keep Resource as the data boundary, Source as discovery and wake input,
Controller as convergence, and Manager as lifecycle orchestration. Document
the model and pin class-based Source implementations with a contract test.
@qiankunli
qiankunli merged commit f66181a into main Jul 28, 2026
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