package upgrade import "time" // Manifest describes a release version's metadata for upgrade checks. type Manifest struct { Version string `json:"version"` MinVersion string `json:"min_version"` DownloadURL string `json:"download_url"` Changelog string `json:"changelog"` Checksum string `json:"checksum_sha256"` Size int64 `json:"size"` PublishedAt time.Time `json:"published_at"` Critical bool `json:"critical"` } // UpgradeStatus represents the result of an upgrade check. type UpgradeStatus struct { CurrentVersion string `json:"current_version"` LatestVersion string `json:"latest_version"` Available bool `json:"available"` Critical bool `json:"critical"` Manifest *Manifest `json:"manifest,omitempty"` CheckedAt time.Time `json:"checked_at"` } // Checker defines the upgrade check contract. // Implementation is deferred to a later phase. type Checker interface { // Check queries the update source and returns the current upgrade status. Check(currentVersion string) (*UpgradeStatus, error) }