Run each workflow stage as its own task, with fan-out and fan-in

This commit is contained in:
Ian Gulliver
2026-10-15 22:53:54 -07:00
parent f7a0ffcd4c
commit 2180a7e824
15 changed files with 739 additions and 408 deletions
+8 -7
View File
@@ -44,12 +44,14 @@ func (m *Manager) Fork(ctx context.Context, src api.Task, project api.Project, n
}
t, err := m.createTask(ctx, project, api.Task{
Title: fmt.Sprintf("%s (fork of #%d)", src.Title, n),
MergeTitle: src.MergeTitle,
CreatedBy: creator.Login,
TodoItem: src.TodoItem,
ForkedFrom: &src.Id,
ForkedAt: &n,
Title: fmt.Sprintf("%s (fork of #%d)", src.Title, n),
MergeTitle: src.MergeTitle,
CreatedBy: creator.Login,
TodoItem: src.TodoItem,
ForkedFrom: &src.Id,
ForkedAt: &n,
WorkflowRun: src.WorkflowRun,
WorkflowStage: src.WorkflowStage,
}, frozen, snap.CommitSha, creator.Login)
if err != nil {
return api.Task{}, err
@@ -68,7 +70,6 @@ func (m *Manager) Fork(ctx context.Context, src api.Task, project api.Project, n
CreatedAt: time.Now().UTC(),
ForkedFrom: &srcSess.VendorSessionId,
ForkedAt: &at,
WorkflowStage: srcSess.WorkflowStage,
}, t.ProjectId)
if err != nil {
return api.Task{}, fmt.Errorf("task %s created, but its agent session was not: %w", t.Id, err)