namespace ControlPlane.Core.Models; public enum PromotionStatus { Pending, Running, Succeeded, Failed } /// /// Represents a request to promote (merge) one environment branch into the next. /// e.g. develop → staging, staging → uat, uat → main /// public class PromotionRequest { public string Id { get; set; } = Guid.NewGuid().ToString("N")[..8]; public string FromBranch { get; set; } = string.Empty; public string ToBranch { get; set; } = string.Empty; public string RequestedBy { get; set; } = "system"; public string? Note { get; set; } public PromotionStatus Status { get; set; } = PromotionStatus.Pending; public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow; public DateTimeOffset? CompletedAt { get; set; } public List Log { get; set; } = []; public int CommitCount { get; set; } // commits in from that are not in to public string[] CommitLines { get; set; } = []; // oneline summary of those commits }