mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-26 03:30:36 +00:00
f3b56d8793
PR #1837's new `_kanban_unknown_endpoint` wrapper was triggered for any falsy bridge return — but `handle_kanban_*` returns `None` (not `True`) when an inner handler calls `bad(...)` to send an error response. The wrapper then sent a SECOND 404 on top of the bridge's response, producing concatenated JSON bodies on the wire. Concrete reproducer (caught by behavioural harness, not the merged tests): GET /api/kanban/tasks/<missing-id>/log → '{"error":"task not found"}{"error":"unknown Kanban endpoint: GET ..."}' This affected every `bad(...)`-shaped error path in the bridge: - task-not-found returns from `_task_log_payload` / `_task_detail_payload` - exception handlers for ImportError (503), LookupError (404), ValueError (400), RuntimeError (409) across all four method handlers - the `_handle_events_sse_stream` board-resolution failure path The fix: distinguish an explicit `False` (truly unmatched path) from `None` (handled, response already sent). Only `False` should trigger the unknown-endpoint diagnostic. Adds a regression test that exercises the task-not-found path through `routes.handle_get` and asserts only one JSON body is on the wire. Follow-on to #1837 (already merged into master at v0.51.20). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>