diff --git a/src/ClaudeDo.Worker/Planning/PlanningChainCoordinator.cs b/src/ClaudeDo.Worker/Planning/PlanningChainCoordinator.cs index 2421257..ce608ea 100644 --- a/src/ClaudeDo.Worker/Planning/PlanningChainCoordinator.cs +++ b/src/ClaudeDo.Worker/Planning/PlanningChainCoordinator.cs @@ -19,6 +19,7 @@ public sealed class PlanningChainCoordinator ?? throw new InvalidOperationException($"Task {parentTaskId} not found."); var children = await ctx.Tasks + .Include(t => t.Tags) .Where(t => t.ParentTaskId == parentTaskId) .OrderBy(t => t.SortOrder).ThenBy(t => t.CreatedAt) .ToListAsync(ct); @@ -31,8 +32,14 @@ public sealed class PlanningChainCoordinator throw new InvalidOperationException( $"Child {bad.Id} is in status {bad.Status}; expected Manual or Planned."); + // Worker queue picker requires the "agent" tag — attach it so children are pickable. + var agentTag = await ctx.Tags.FirstOrDefaultAsync(t => t.Name == "agent", ct); for (int i = 0; i < children.Count; i++) + { children[i].Status = i == 0 ? TaskStatus.Queued : TaskStatus.Waiting; + if (agentTag is not null && !children[i].Tags.Any(t => t.Id == agentTag.Id)) + children[i].Tags.Add(agentTag); + } await ctx.SaveChangesAsync(ct); }