Skip to content

feat(app-platform): Add app data migrations#1345

Merged
leumor merged 4 commits into
developfrom
feature/app-data-migrations
Jun 7, 2026
Merged

feat(app-platform): Add app data migrations#1345
leumor merged 4 commits into
developfrom
feature/app-data-migrations

Conversation

@leumor

@leumor leumor commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add signed manifest app-data schema and migration declarations, including path-safe migration command validation.
  • Integrate app-data migration planning, dry-runs, internal update snapshots, apply/rollback handling, and redacted migration summaries into the app update lifecycle.
  • Surface migration status through Platform API/Web Shell, update first-party staged apps with deterministic migration examples, and add release-certification/docs coverage.
  • Preserve PR-248 catalog channel policy while keeping PR-250+ backup/restore and later feature scope deferred.

Test Plan

  • ./gradlew spotlessApply
  • ./gradlew :platform-api:test --tests '*AppDataServiceTest.advanceUpdateMigrationDryRunPayload_whenTargetManifestLowersQuota_expectQuotaError' --tests '*AppUpdateServiceTest.apply_whenRunningMigrationApplyFailsAndRollbackSucceeds_expectRolledBackAppRestarted'
  • ./gradlew :platform-api:test --tests '*AppDataServiceTest' --tests '*AppUpdateServiceTest'
  • ./gradlew :platform-api:test

Notes

  • Base branch: develop
  • Head branch: feature/app-data-migrations
  • Latest local fix commit: 113cb68e3d fix(app-updates): Harden migration failure handling

leumor added 4 commits June 6, 2026 21:49
Add signed app-data schema and migration metadata to app manifests and update planning.

- Parse and validate app-data migration declarations in signed bundles
- Add migration planning, dry-run execution, snapshots, rollback restore, and write barriers
- Expose path-free migration state through Platform API and Web Shell
- Add first-party Feed Reader and Trust Graph migration examples
- Update release certification evidence and docs for PR-249
Align project docs and agent skills with the app-data migration contract added after 56b9cb7.

- Document signed app-data migration rollback and snapshot boundaries
- Correct migration command validation wording for host-independent bundle checks
- Add migration evidence and ownership notes to app-platform, build, release, and certification skills
Require the local app-data migration runner to fail closed when a full process-lifetime containment boundary is unavailable, instead of relying on process-group cleanup that detached children can escape.

Preflight combined dry-run migration outputs across namespaces before apply so aggregate app-data quotas fail before bundle replacement. Update focused tests and release-certification evidence probes for the new containment and dry-run behavior.
Enforce target manifest data quotas against projected migration output, including quota-lowering candidates that do not grow app data.

Restart previously running apps after a migration apply failure when bundle rollback and app-data restore complete successfully.
@sonarqubecloud

sonarqubecloud Bot commented Jun 7, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
78.8% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@leumor leumor merged commit 8469d92 into develop Jun 7, 2026
18 of 19 checks passed
@leumor leumor deleted the feature/app-data-migrations branch June 7, 2026 14:47
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