Refinery emits activity events for MQ lifecycle (gt-ytsxp)
Add merge queue activity events to the refinery: - merge_started: When refinery begins processing an MR - merged: When MR successfully merged to main - merge_failed: When merge fails (conflict, tests, push, etc.) - merge_skipped: When MR skipped (superseded) Events include MR ID, worker, branch, and reason (for failures). Implemented in both Manager.ProcessMR and Engineer.ProcessMRFromQueue. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,6 +45,12 @@ const (
|
||||
TypeNudge = "nudge"
|
||||
TypeBoot = "boot"
|
||||
TypeHalt = "halt"
|
||||
|
||||
// Merge queue events (emitted by refinery)
|
||||
TypeMergeStarted = "merge_started"
|
||||
TypeMerged = "merged"
|
||||
TypeMergeFailed = "merge_failed"
|
||||
TypeMergeSkipped = "merge_skipped"
|
||||
)
|
||||
|
||||
// EventsFile is the name of the raw events log.
|
||||
@@ -172,3 +178,20 @@ func BootPayload(rig string, agents []string) map[string]interface{} {
|
||||
"agents": agents,
|
||||
}
|
||||
}
|
||||
|
||||
// MergePayload creates a payload for merge queue events.
|
||||
// mrID: merge request ID
|
||||
// worker: polecat name that submitted the work
|
||||
// branch: source branch being merged
|
||||
// reason: failure reason (for merge_failed/merge_skipped events)
|
||||
func MergePayload(mrID, worker, branch, reason string) map[string]interface{} {
|
||||
p := map[string]interface{}{
|
||||
"mr": mrID,
|
||||
"worker": worker,
|
||||
"branch": branch,
|
||||
}
|
||||
if reason != "" {
|
||||
p["reason"] = reason
|
||||
}
|
||||
return p
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user