ObjectStackObjectStack

Package Upgrade

Package Upgrade protocol schemas

Package Upgrade Protocol

Defines the complete lifecycle for upgrading installed packages,

including pre-upgrade analysis, snapshot/backup, execution, validation,

and rollback capabilities.

Architecture Alignment

  • Salesforce: Managed Package upgrade with push upgrades and subscriber control

  • ServiceNow: Update Sets with preview, commit, and back-out support

  • Helm: Helm upgrade with rollback to previous release

  • Kubernetes: Rolling update with readiness probes and automatic rollback

Upgrade Flow


1. PreCheck    → Validate compatibility, check dependencies

2. Plan        → Generate upgrade plan with metadata diff

3. Snapshot    → Backup current state (metadata + customizations)

4. Execute     → Apply new package metadata with 3-way merge

5. Validate    → Run post-upgrade health checks

6. Commit      → Finalize upgrade (or Rollback on failure)

Source: packages/spec/src/kernel/package-upgrade.zod.ts

TypeScript Usage

import { MetadataChangeType, MetadataDiffItem, RollbackPackageRequest, RollbackPackageResponse, UpgradeImpactLevel, UpgradePackageRequest, UpgradePackageResponse, UpgradePhase, UpgradePlan, UpgradeSnapshot } from '@objectstack/spec/kernel';
import type { MetadataChangeType, MetadataDiffItem, RollbackPackageRequest, RollbackPackageResponse, UpgradeImpactLevel, UpgradePackageRequest, UpgradePackageResponse, UpgradePhase, UpgradePlan, UpgradeSnapshot } from '@objectstack/spec/kernel';

// Validate data
const result = MetadataChangeType.parse(data);

MetadataChangeType

Type of metadata change between package versions

Allowed Values

  • added
  • modified
  • removed
  • renamed

MetadataDiffItem

Single metadata change between package versions

Properties

PropertyTypeRequiredDescription
typestringMetadata type
namestringMetadata name
changeTypeEnum<'added' | 'modified' | 'removed' | 'renamed'>Category of metadata modification (added, modified, removed, or renamed)
hasConflictbooleanWhether this change may conflict with customizations
summarystringoptionalHuman-readable change summary
previousNamestringoptionalPrevious name if renamed

RollbackPackageRequest

Rollback package request

Properties

PropertyTypeRequiredDescription
packageIdstringPackage ID to rollback
snapshotIdstringSnapshot ID to restore from
rollbackCustomizationsbooleanWhether to restore pre-upgrade customizations

RollbackPackageResponse

Rollback package response

Properties

PropertyTypeRequiredDescription
successbooleanWhether the rollback succeeded
restoredVersionstringoptionalVersion restored to
messagestringoptionalRollback status message

UpgradeImpactLevel

Severity of upgrade impact

Allowed Values

  • none
  • low
  • medium
  • high
  • critical

UpgradePackageRequest

Upgrade package request

Properties

PropertyTypeRequiredDescription
packageIdstringPackage ID to upgrade
targetVersionstringoptionalTarget version (defaults to latest)
manifestObjectoptionalNew manifest (if installing from local)
createSnapshotbooleanWhether to create a pre-upgrade backup snapshot
mergeStrategyEnum<'keep-custom' | 'accept-incoming' | 'three-way-merge'>How to handle customer customizations
dryRunbooleanPreview upgrade without making changes
skipValidationbooleanSkip pre-upgrade compatibility checks

UpgradePackageResponse

Upgrade package response

Properties

PropertyTypeRequiredDescription
successbooleanWhether the upgrade succeeded
phaseEnum<'pending' | 'analyzing' | 'snapshot' | 'executing' | 'migrating' | 'validating' | 'completed' | 'failed' | 'rolling-back' | 'rolled-back'>Current upgrade phase
planObjectoptionalUpgrade plan
snapshotIdstringoptionalSnapshot ID for rollback
conflictsObject[]optionalUnresolved merge conflicts
errorMessagestringoptionalError message if upgrade failed
messagestringoptionalHuman-readable status message

UpgradePhase

Current phase of the upgrade process

Allowed Values

  • pending
  • analyzing
  • snapshot
  • executing
  • migrating
  • validating
  • completed
  • failed
  • rolling-back
  • rolled-back

UpgradePlan

Upgrade analysis plan generated before execution

Properties

PropertyTypeRequiredDescription
packageIdstringPackage identifier
fromVersionstringCurrently installed version
toVersionstringTarget upgrade version
impactLevelEnum<'none' | 'low' | 'medium' | 'high' | 'critical'>Severity assessment from none (seamless) to critical (breaking changes)
changesObject[]All metadata changes
affectedCustomizationsintegerCount of customizations that may be affected
requiresMigrationbooleanWhether data migration scripts are needed
migrationScriptsstring[]optionalPaths to migration scripts
dependencyUpgradesObject[]optionalDependent packages that also need upgrading
estimatedDurationintegeroptionalEstimated upgrade duration in seconds
summarystringoptionalHuman-readable upgrade summary

UpgradeSnapshot

Pre-upgrade state snapshot for rollback capability

Properties

PropertyTypeRequiredDescription
idstringSnapshot identifier
packageIdstringPackage identifier
fromVersionstringVersion before upgrade
toVersionstringTarget upgrade version
tenantIdstringoptionalTenant identifier
previousManifestObjectComplete manifest of the previous package version
metadataSnapshotObject[]Snapshot of all package metadata
customizationSnapshotRecord<string, any>[]optionalSnapshot of customer customizations
createdAtstringSnapshot creation timestamp
expiresAtstringoptionalSnapshot expiry timestamp

On this page