fix(kanban-dashboard): restore implementations dropped during salvages (#28481)

Four kanban dashboard test failures, all from PR salvages that picked up
the test additions but dropped the corresponding implementations.

- BOARD_COLUMNS: add 'review' (status added by PR f55d94a1e but the
  board API never grew the column → test_board_empty failed because
  VALID_STATUSES - {archived} mismatched the rendered columns).
- update_task: enrich the 'ready' 409 detail with the blocking parent
  list (id, title, status) and add _parents_blocking_ready helper.
  Implementation lost in the #26744 salvage (commit e215558ba) which
  pinned the test but not the server-side code.
- dist/index.js: add parseApiErrorMessage helper, wire it through the
  drag/drop banner, add patchErr state to the TaskDrawer and surface
  it inline by the action row. Lost in the same #26744 salvage.
- test_diagnostics_endpoint_severity_filter: update to at-or-above
  semantics (PR a94ddd807 changed the filter from exact-match so the
  warning filter now correctly includes error+critical too).
This commit is contained in:
Teknium 2026-05-18 21:54:56 -07:00 committed by GitHub
parent b58b4188f6
commit 362ef912ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 76 additions and 7 deletions

View file

@ -1939,7 +1939,8 @@ def test_diagnostics_endpoint_surfaces_blocked_hallucination(client):
def test_diagnostics_endpoint_severity_filter(client):
"""Warning-severity filter excludes error-severity entries."""
"""Severity filter is at-or-above: warning includes warning+error+critical,
error includes error+critical, critical is exact (no higher level)."""
conn = kb.connect()
try:
# A warning-severity diagnostic (prose phantom) on one task.
@ -1958,12 +1959,15 @@ def test_diagnostics_endpoint_severity_filter(client):
finally:
conn.close()
# warning filter is at-or-above → both the warning AND the error pass.
r = client.get("/api/plugins/kanban/diagnostics?severity=warning")
assert r.status_code == 200
data = r.json()
assert data["count"] == 1
assert data["diagnostics"][0]["task_id"] == p1
assert data["count"] == 2
task_ids = {row["task_id"] for row in data["diagnostics"]}
assert task_ids == {p1, p2}
# error filter is at-or-above → only the error passes (warning is below).
r = client.get("/api/plugins/kanban/diagnostics?severity=error")
data = r.json()
assert data["count"] == 1