Remove stats from .runtime/*.json observable state (gt-lfi2d)
Remove Stats fields from witness and refinery types that tracked observable metrics (total counts, today counts). These are now handled by the activity stream/beads system instead. Removed: - WitnessStats type and Stats field from Witness - RefineryStats type and Stats field from Refinery - LastCheckAt field from Witness - Stats display from gt witness status - Stats display from gt refinery status - Stats increment code from refinery.completeMR() Kept minimal process state: - RigName, State, PID, StartedAt (both) - MonitoredPolecats, Config, SpawnedIssues (witness) - CurrentMR, PendingMRs, LastMergeAt (refinery) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -277,12 +277,6 @@ func runRefineryStatus(cmd *cobra.Command, args []string) error {
|
|||||||
fmt.Printf(" Last merge: %s\n", ref.LastMergeAt.Format("2006-01-02 15:04:05"))
|
fmt.Printf(" Last merge: %s\n", ref.LastMergeAt.Format("2006-01-02 15:04:05"))
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("\n %s\n", style.Bold.Render("Statistics:"))
|
|
||||||
fmt.Printf(" Merged today: %d\n", ref.Stats.TodayMerged)
|
|
||||||
fmt.Printf(" Failed today: %d\n", ref.Stats.TodayFailed)
|
|
||||||
fmt.Printf(" Total merged: %d\n", ref.Stats.TotalMerged)
|
|
||||||
fmt.Printf(" Total failed: %d\n", ref.Stats.TotalFailed)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -259,10 +259,6 @@ func runWitnessStatus(cmd *cobra.Command, args []string) error {
|
|||||||
fmt.Printf(" Started: %s\n", w.StartedAt.Format("2006-01-02 15:04:05"))
|
fmt.Printf(" Started: %s\n", w.StartedAt.Format("2006-01-02 15:04:05"))
|
||||||
}
|
}
|
||||||
|
|
||||||
if w.LastCheckAt != nil {
|
|
||||||
fmt.Printf(" Last check: %s\n", w.LastCheckAt.Format("2006-01-02 15:04:05"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show monitored polecats
|
// Show monitored polecats
|
||||||
fmt.Printf("\n %s\n", style.Bold.Render("Monitored Polecats:"))
|
fmt.Printf("\n %s\n", style.Bold.Render("Monitored Polecats:"))
|
||||||
if len(w.MonitoredPolecats) == 0 {
|
if len(w.MonitoredPolecats) == 0 {
|
||||||
@@ -273,13 +269,6 @@ func runWitnessStatus(cmd *cobra.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("\n %s\n", style.Bold.Render("Statistics:"))
|
|
||||||
fmt.Printf(" Checks today: %d\n", w.Stats.TodayChecks)
|
|
||||||
fmt.Printf(" Nudges today: %d\n", w.Stats.TodayNudges)
|
|
||||||
fmt.Printf(" Total checks: %d\n", w.Stats.TotalChecks)
|
|
||||||
fmt.Printf(" Total nudges: %d\n", w.Stats.TotalNudges)
|
|
||||||
fmt.Printf(" Total escalations: %d\n", w.Stats.TotalEscalations)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -492,7 +492,7 @@ func (m *Manager) ProcessMR(mr *MergeRequest) MergeResult {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// completeMR marks an MR as complete and updates stats.
|
// completeMR marks an MR as complete.
|
||||||
// For success, pass closeReason (e.g., CloseReasonMerged).
|
// For success, pass closeReason (e.g., CloseReasonMerged).
|
||||||
// For failures that should return to open, pass empty closeReason.
|
// For failures that should return to open, pass empty closeReason.
|
||||||
func (m *Manager) completeMR(mr *MergeRequest, closeReason CloseReason, errMsg string) {
|
func (m *Manager) completeMR(mr *MergeRequest, closeReason CloseReason, errMsg string) {
|
||||||
@@ -512,16 +512,9 @@ func (m *Manager) completeMR(mr *MergeRequest, closeReason CloseReason, errMsg s
|
|||||||
switch closeReason {
|
switch closeReason {
|
||||||
case CloseReasonMerged:
|
case CloseReasonMerged:
|
||||||
ref.LastMergeAt = &now
|
ref.LastMergeAt = &now
|
||||||
ref.Stats.TotalMerged++
|
|
||||||
ref.Stats.TodayMerged++
|
|
||||||
case CloseReasonSuperseded:
|
case CloseReasonSuperseded:
|
||||||
ref.Stats.TotalSkipped++
|
|
||||||
// Emit merge_skipped event
|
// Emit merge_skipped event
|
||||||
_ = events.LogFeed(events.TypeMergeSkipped, actor, events.MergePayload(mr.ID, mr.Worker, mr.Branch, "superseded"))
|
_ = events.LogFeed(events.TypeMergeSkipped, actor, events.MergePayload(mr.ID, mr.Worker, mr.Branch, "superseded"))
|
||||||
default:
|
|
||||||
// Other close reasons (rejected, conflict) count as failed
|
|
||||||
ref.Stats.TotalFailed++
|
|
||||||
ref.Stats.TodayFailed++
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Reopen the MR for rework (in_progress → open)
|
// Reopen the MR for rework (in_progress → open)
|
||||||
@@ -529,8 +522,6 @@ func (m *Manager) completeMR(mr *MergeRequest, closeReason CloseReason, errMsg s
|
|||||||
// Log error but continue
|
// Log error but continue
|
||||||
fmt.Fprintf(m.output, "Warning: failed to reopen MR: %v\n", err)
|
fmt.Fprintf(m.output, "Warning: failed to reopen MR: %v\n", err)
|
||||||
}
|
}
|
||||||
ref.Stats.TotalFailed++
|
|
||||||
ref.Stats.TodayFailed++
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = m.saveState(ref) // non-fatal: state file update
|
_ = m.saveState(ref) // non-fatal: state file update
|
||||||
|
|||||||
@@ -44,9 +44,6 @@ type Refinery struct {
|
|||||||
|
|
||||||
// LastMergeAt is when the last successful merge happened.
|
// LastMergeAt is when the last successful merge happened.
|
||||||
LastMergeAt *time.Time `json:"last_merge_at,omitempty"`
|
LastMergeAt *time.Time `json:"last_merge_at,omitempty"`
|
||||||
|
|
||||||
// Stats contains cumulative statistics.
|
|
||||||
Stats RefineryStats `json:"stats"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MergeRequest represents a branch waiting to be merged.
|
// MergeRequest represents a branch waiting to be merged.
|
||||||
@@ -150,24 +147,6 @@ func DefaultMergeConfig() MergeConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RefineryStats contains cumulative refinery statistics.
|
|
||||||
type RefineryStats struct {
|
|
||||||
// TotalMerged is the total number of successful merges.
|
|
||||||
TotalMerged int `json:"total_merged"`
|
|
||||||
|
|
||||||
// TotalFailed is the total number of failed merges.
|
|
||||||
TotalFailed int `json:"total_failed"`
|
|
||||||
|
|
||||||
// TotalSkipped is the total number of skipped MRs.
|
|
||||||
TotalSkipped int `json:"total_skipped"`
|
|
||||||
|
|
||||||
// TodayMerged is the number of merges today.
|
|
||||||
TodayMerged int `json:"today_merged"`
|
|
||||||
|
|
||||||
// TodayFailed is the number of failures today.
|
|
||||||
TodayFailed int `json:"today_failed"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueueItem represents an item in the merge queue for display.
|
// QueueItem represents an item in the merge queue for display.
|
||||||
type QueueItem struct {
|
type QueueItem struct {
|
||||||
Position int `json:"position"`
|
Position int `json:"position"`
|
||||||
|
|||||||
@@ -36,12 +36,6 @@ type Witness struct {
|
|||||||
// MonitoredPolecats tracks polecats being monitored.
|
// MonitoredPolecats tracks polecats being monitored.
|
||||||
MonitoredPolecats []string `json:"monitored_polecats,omitempty"`
|
MonitoredPolecats []string `json:"monitored_polecats,omitempty"`
|
||||||
|
|
||||||
// LastCheckAt is when the last health check was performed.
|
|
||||||
LastCheckAt *time.Time `json:"last_check_at,omitempty"`
|
|
||||||
|
|
||||||
// Stats contains cumulative statistics.
|
|
||||||
Stats WitnessStats `json:"stats"`
|
|
||||||
|
|
||||||
// Config contains auto-spawn configuration.
|
// Config contains auto-spawn configuration.
|
||||||
Config WitnessConfig `json:"config"`
|
Config WitnessConfig `json:"config"`
|
||||||
|
|
||||||
@@ -67,21 +61,4 @@ type WitnessConfig struct {
|
|||||||
IssuePrefix string `json:"issue_prefix,omitempty"`
|
IssuePrefix string `json:"issue_prefix,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// WitnessStats contains cumulative witness statistics.
|
|
||||||
type WitnessStats struct {
|
|
||||||
// TotalChecks is the total number of health checks performed.
|
|
||||||
TotalChecks int `json:"total_checks"`
|
|
||||||
|
|
||||||
// TotalNudges is the total number of nudges sent to polecats.
|
|
||||||
TotalNudges int `json:"total_nudges"`
|
|
||||||
|
|
||||||
// TotalEscalations is the total number of escalations to mayor.
|
|
||||||
TotalEscalations int `json:"total_escalations"`
|
|
||||||
|
|
||||||
// TodayChecks is the number of checks today.
|
|
||||||
TodayChecks int `json:"today_checks"`
|
|
||||||
|
|
||||||
// TodayNudges is the number of nudges today.
|
|
||||||
TodayNudges int `json:"today_nudges"`
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user