Clear superseded session stage result details

This commit is contained in:
2026-08-10 02:53:28 +00:00
parent b99bd38eb4
commit b556fc2f4f
6 changed files with 127 additions and 21 deletions

View File

@@ -88,6 +88,7 @@ func New(sessionID string, now time.Time) *Manifest {
// MarkStageRunning marks a stage as running and updates timestamps.
func (m *Manifest) MarkStageRunning(name string, at time.Time) {
s := m.ensureStage(name, at)
s.clearResultDetails()
s.Status = StatusRunning
s.StartedAt = timePtr(at)
s.CompletedAt = nil
@@ -110,6 +111,7 @@ func (m *Manifest) MarkStageSucceeded(name string, at time.Time, outputs []Artif
// MarkStageFailed marks a stage as failed and records error metadata.
func (m *Manifest) MarkStageFailed(name string, at time.Time, message string) {
s := m.ensureStage(name, at)
s.clearResultDetails()
s.Status = StatusFailed
s.CompletedAt = timePtr(at)
s.Error = &ErrorRecord{Message: strings.TrimSpace(message), At: timePtr(at)}
@@ -121,10 +123,10 @@ func (m *Manifest) MarkStageFailed(name string, at time.Time, message string) {
// MarkStageSkipped marks a stage as skipped and records the skip reason.
func (m *Manifest) MarkStageSkipped(name string, at time.Time, reason string) {
s := m.ensureStage(name, at)
s.clearResultDetails()
s.Status = StatusSkipped
s.CompletedAt = timePtr(at)
s.Error = &ErrorRecord{Message: strings.TrimSpace(reason), Code: "skipped", At: timePtr(at)}
s.Outputs = nil
s.UpdatedAt = at
m.UpdatedAt = at
}
@@ -138,6 +140,13 @@ func (m *Manifest) MarkStageStale(name string, at time.Time, reason string) {
m.UpdatedAt = at
}
func (s *StageRecord) clearResultDetails() {
s.Outputs = nil
s.Logs = nil
s.GeneratedConfigs = nil
s.Metadata = nil
}
func (m *Manifest) ensureStage(name string, at time.Time) *StageRecord {
if m.Stages == nil {
m.Stages = map[string]*StageRecord{}