generated from coulomb/repo-seed
feat(tasks): adopt canonical task statuses
This commit is contained in:
@@ -49,6 +49,7 @@ from api.workplan_status import ( # noqa: E402
|
||||
SUPPORTED_WORKSTREAM_STATUSES,
|
||||
normalize_workstream_status,
|
||||
)
|
||||
from api.task_status import CANONICAL_TASK_STATUSES, normalize_task_status # noqa: E402
|
||||
|
||||
try:
|
||||
import yaml as _yaml
|
||||
@@ -70,7 +71,7 @@ except ImportError:
|
||||
REQUIRED_FRONTMATTER = {"id", "type", "title", "domain", "status", "owner", "created"}
|
||||
VALID_WP_STATUSES = set(CANONICAL_WORKSTREAM_STATUSES)
|
||||
SUPPORTED_WP_STATUSES = set(SUPPORTED_WORKSTREAM_STATUSES)
|
||||
VALID_TASK_STATUSES = {"todo", "in_progress", "blocked", "done", "cancelled"}
|
||||
VALID_TASK_STATUSES = set(CANONICAL_TASK_STATUSES)
|
||||
VALID_TASK_PRIORITIES = {"low", "medium", "high", "critical"}
|
||||
|
||||
_WP_ID_RE = re.compile(r"^(?:[A-Z]+-WP-\d+|ADHOC-\d{4}-\d{2}-\d{2})$")
|
||||
@@ -264,10 +265,12 @@ def _check_workplan_file(wp_file: Path, report: Report) -> dict | None:
|
||||
t_status = str(task.get("status", ""))
|
||||
if not t_status:
|
||||
report.add(Level.FAIL, "task-status", "Missing 'status' field", tref)
|
||||
elif t_status not in VALID_TASK_STATUSES:
|
||||
report.add(Level.FAIL, "task-status-value",
|
||||
f"status {t_status!r} not in {sorted(VALID_TASK_STATUSES)}", tref)
|
||||
|
||||
else:
|
||||
try:
|
||||
normalize_task_status(t_status)
|
||||
except ValueError:
|
||||
report.add(Level.FAIL, "task-status-value",
|
||||
f"status {t_status!r} not in {sorted(VALID_TASK_STATUSES)}", tref)
|
||||
t_prio = str(task.get("priority", ""))
|
||||
if not t_prio:
|
||||
report.add(Level.WARN, "task-priority", "Missing 'priority' field", tref)
|
||||
|
||||
Reference in New Issue
Block a user