MCPcopy Create free account
hub / github.com/compozy/agh / ForceFailRun

Method ForceFailRun

internal/task/force_ops.go:145–208  ·  view source on GitHub ↗

ForceFailRun marks one queued or claimed run failed without requiring the raw claim token.

(
	ctx context.Context,
	runID string,
	failure ForceFailRun,
	actor ActorContext,
)

Source from the content-addressed store, hash-verified

143
144// ForceFailRun marks one queued or claimed run failed without requiring the raw claim token.
145func (m *Service) ForceFailRun(
146 ctx context.Context,
147 runID string,
148 failure ForceFailRun,
149 actor ActorContext,
150) (*Run, error) {
151 if err := m.requireForceRunAuthority(actor); err != nil {
152 return nil, err
153 }
154 normalized, err := normalizeForceFailRun(failure)
155 if err != nil {
156 return nil, err
157 }
158 previous, taskRecord, err := m.loadRunWithTask(ctx, runID)
159 if err != nil {
160 return nil, err
161 }
162 if err := m.requireForceRunRate(actor, taskRecord.ID); err != nil {
163 return nil, err
164 }
165 if err := requireForceFailStatus(previous); err != nil {
166 return nil, err
167 }
168
169 mutation, err := m.store.ForceFailTaskRun(ctx, ForceFailRunMutation{
170 RunID: previous.ID,
171 Reason: normalized.Reason,
172 Now: m.now().UTC(),
173 })
174 if err != nil {
175 return nil, err
176 }
177 queueGeneration, canceledInputs, err := m.invalidateForceRunInputs(ctx, mutation.Previous)
178 if err != nil {
179 return nil, err
180 }
181 reconciledTask, err := m.reconcileTaskCascade(ctx, taskRecord.ID)
182 if err != nil {
183 return nil, err
184 }
185 if err := m.recordTaskEvent(
186 ctx,
187 mutation.Run.TaskID,
188 mutation.Run.ID,
189 taskEventRunOperatorForcedFail,
190 actor,
191 operatorForcedFailPayload{
192 Manual: true,
193 ActorKind: actor.Actor.Kind.Normalize(),
194 ActorID: actor.Actor.Ref,
195 PreviousStatus: mutation.Previous.Status,
196 Status: mutation.Run.Status,
197 TaskStatus: reconciledTask.Status,
198 Reason: normalized.Reason,
199 SessionID: mutation.Previous.SessionID,
200 QueueGeneration: queueGeneration,
201 CanceledQueuedInputs: canceledInputs,
202 Metadata: cloneRawJSON(normalized.Metadata),

Callers 1

BulkForceFailRunsMethod · 0.95

Calls 12

loadRunWithTaskMethod · 0.95
requireForceRunRateMethod · 0.95
reconcileTaskCascadeMethod · 0.95
recordTaskEventMethod · 0.95
normalizeForceFailRunFunction · 0.85
requireForceFailStatusFunction · 0.85
cloneRawJSONFunction · 0.70
ForceFailTaskRunMethod · 0.65
nowMethod · 0.45
NormalizeMethod · 0.45

Tested by

no test coverage detected