Skip to content

feat: expose backup consistency and captured volume coverage - #767

Open
Baylem wants to merge 14 commits into
GameplanePanel:masterfrom
Baylem:fix/audit-backup-metadata
Open

Baylem wants to merge 14 commits into
GameplanePanel:masterfrom
Baylem:fix/audit-backup-metadata

Conversation

@Baylem

@Baylem Baylem commented Oct 21, 2026

Copy link
Copy Markdown
Member

Successful backups now report the consistency actually achieved and a capture-time list of included and excluded persistent volumes. The backup details drawer shows that stored evidence, so a primary-world backup cannot be mistaken for a complete copy of extra installation or mod volumes.

The manifest is recorded before capture and survives later template edits. Extra volumes can optionally declare backupRole: data or rebuildable; both remain excluded from the current primary-volume copy. Historical captures retain unknown coverage. Consistency distinguishes agent-confirmed quiesce, an already-stopped/drained source, unsupported or unavailable agent raw copies, and crash-consistent CSI snapshots. Failed captures and completed Jobs without a snapshot ID cannot claim an achieved guarantee.

Depends on #760 and #766 (included in this branch). The UI build also needs #759's unrelated existing CreateServer correction. Closes #720. This implements the maintainer's first-step scope; no automatic stop/copy/restart policy or multi-volume backup is introduced.

Validation: operator production and controller ordinary/envtest source compilation passed. UI TypeScript compilation passed with #759 applied temporarily. CRDs, deepcopy and localization outputs were regenerated. Added coverage/legacy/immutability/consistency/reconcile and UI regressions for CI; tests were not run locally under repository policy. Quiesce still depends on each module's commands and does not establish application-wide consistency.

Baylem added 11 commits October 21, 2026 10:59
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 52 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: GameplanePanel/Gameplane/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7c5f2d5c-2cd2-460b-8fd4-e747fea02d16
📥 Commits

Reviewing files that changed from the base of the PR and between df1e371 and 8307bb7.

📒 Files selected for processing: 70
  • agent/cmd/main.go
  • agent/internal/quiesce/quiesce_test.go
  • agent/internal/target/target.go
  • agent/specs.md
  • api/internal/handlers/resources_annotations_test.go
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml
  • charts/gameplane/crd-manifests/gameplane.local_backups.yaml
  • charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml
  • charts/gameplane/crd-manifests/gameplane.local_clusters.yaml
  • charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml
  • charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml
  • charts/gameplane/crd-manifests/gameplane.local_modules.yaml
  • charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml
  • charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml
  • charts/gameplane/crd-manifests/gameplane.local_restores.yaml
  • docs/module-authoring.md
  • docs/operator-operations.md
  • i18n/locales/en/app.json
  • operator/api/v1alpha1/backup_types.go
  • operator/api/v1alpha1/gametemplate_types.go
  • operator/api/v1alpha1/zz_generated.deepcopy.go
  • operator/cmd/main.go
  • operator/config/crd/gameplane.local_backups.yaml
  • operator/config/crd/gameplane.local_gameservers.yaml
  • operator/config/crd/gameplane.local_gametemplates.yaml
  • operator/hack/condition-ids/main.go
  • operator/internal/agent/client.go
  • operator/internal/agent/client_test.go
  • operator/internal/controller/backup_controller.go
  • operator/internal/controller/backup_envtest_test.go
  • operator/internal/controller/backup_forget_envtest_test.go
  • operator/internal/controller/backup_forget_test.go
  • operator/internal/controller/backup_guard.go
  • operator/internal/controller/backup_guard_test.go
  • operator/internal/controller/backup_manifest.go
  • operator/internal/controller/backup_manifest_test.go
  • operator/internal/controller/backup_preparation.go
  • operator/internal/controller/backup_stopped_test.go
  • operator/internal/controller/backup_volumesnapshot.go
  • operator/internal/controller/gameserver_controller.go
  • operator/internal/controller/gameserver_idle.go
  • operator/internal/controller/gameserver_restart.go
  • operator/internal/controller/gameserver_wipe.go
  • operator/internal/controller/gameserver_wipe_guard.go
  • operator/internal/controller/helpers.go
  • operator/internal/controller/helpers_envtest_test.go
  • operator/internal/controller/helpers_extra_test.go
  • operator/internal/controller/lifecycle_operation.go
  • operator/internal/controller/lifecycle_operation_envtest_test.go
  • operator/internal/controller/lifecycle_operation_test.go
  • operator/internal/controller/restore_controller.go
  • operator/internal/controller/restore_lifecycle.go
  • operator/internal/controller/restore_volumesnapshot.go
  • operator/internal/controller/restore_volumesnapshot_dispatch_test.go
  • operator/internal/controller/restore_volumesnapshot_requeue_test.go
  • operator/specs.md
  • test/e2e/backup_stopped_e2e_test.go
  • test/e2e/buckets.sh
  • web/src/components/backups/BackupDetailDrawer.test.tsx
  • web/src/components/backups/BackupDetailDrawer.tsx
  • web/src/routes/CreateServer.tsx
  • web/src/types.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
@github-actions github-actions Bot added area: agent in-pod sidecar area: api REST/WebSocket gateway area: chart Helm chart and deployment area: e2e kind-based end-to-end suite area: modules game template OCI bundles area: operator controller-runtime operator and CRDs area: shared netguard, gameaction, gameproto, svcutil and other shared packages area: web React dashboard type: feature New capability or user-facing addition labels Oct 21, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: agent in-pod sidecar area: api REST/WebSocket gateway area: chart Helm chart and deployment area: e2e kind-based end-to-end suite area: modules game template OCI bundles area: operator controller-runtime operator and CRDs area: shared netguard, gameaction, gameproto, svcutil and other shared packages area: web React dashboard type: feature New capability or user-facing addition

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(backups): declare consistency guarantees and covered volumes for backup and restore

1 participant