feat(tasks): adopt canonical task statuses

This commit is contained in:
2026-05-26 01:32:50 +02:00
parent da5aee6e38
commit 38835e9e79
61 changed files with 692 additions and 342 deletions

View File

@@ -16,7 +16,7 @@ from api.services.lifecycle import (
def test_task_start_activates_planning_parent(parent_status):
assert should_activate_parent_for_task_start(
previous_task_status="todo",
new_task_status="in_progress",
new_task_status="progress",
parent_workstream_status=parent_status,
)
@@ -25,15 +25,15 @@ def test_task_start_activates_planning_parent(parent_status):
def test_task_start_does_not_rewrite_non_planning_parent(parent_status):
assert not should_activate_parent_for_task_start(
previous_task_status="todo",
new_task_status="in_progress",
new_task_status="progress",
parent_workstream_status=parent_status,
)
def test_task_start_requires_todo_to_in_progress_transition():
def test_task_start_requires_todo_to_progress_transition():
assert not should_activate_parent_for_task_start(
previous_task_status="in_progress",
new_task_status="in_progress",
previous_task_status="progress",
new_task_status="progress",
parent_workstream_status="ready",
)
assert not should_activate_parent_for_task_start(
@@ -44,22 +44,22 @@ def test_task_start_requires_todo_to_in_progress_transition():
def test_has_active_task_status_ignores_terminal_and_todo_statuses():
assert has_active_task_status(["todo", "done", "cancelled"]) is False
assert has_active_task_status(["todo", "blocked"]) is True
assert has_active_task_status(["in_progress"]) is True
assert has_active_task_status(["todo", "done", "cancel"]) is False
assert has_active_task_status(["todo", "wait"]) is True
assert has_active_task_status(["progress"]) is True
def test_active_task_state_activates_planning_parent_for_renormalization():
assert should_activate_parent_for_active_tasks(
parent_workstream_status="proposed",
task_statuses=["todo", "in_progress"],
task_statuses=["todo", "progress"],
)
def test_active_task_state_does_not_unblock_blocked_parent():
assert not should_activate_parent_for_active_tasks(
parent_workstream_status="blocked",
task_statuses=["in_progress"],
task_statuses=["progress"],
)
@@ -67,7 +67,7 @@ def test_status_value_unwraps_enum_like_values():
class Status:
value = "In_Progress"
assert status_value(Status()) == "in_progress"
assert status_value(Status()) == "progress"
def test_transition_workstream_status_normalizes_aliases():
@@ -92,10 +92,10 @@ def test_transition_task_status_activates_parent_once():
task = Task()
ws = Workstream()
result = transition_task_status(task, "in_progress", parent_workstream=ws)
result = transition_task_status(task, "progress", parent_workstream=ws)
assert task.status == "in_progress"
assert task.status == "progress"
assert ws.status == "active"
assert result.parent_activated is True
assert result.previous_status == "todo"
assert result.target_status == "in_progress"
assert result.target_status == "progress"