3.3 KiB
BUGS
Active bugs detected during development. Do not fix until noted otherwise.
BUG-001 — Split-brain model imports across router files (Gemini SQLModel migration)
Detected: 2026-04-09
Status: Open — do not fix, migration in progress
Symptom: from decnet.web.api import app fails with ModuleNotFoundError: No module named 'decnet.web.models'
Root cause: Gemini's SQLModel migration is partially complete. Models were moved to decnet/web/db/models.py, but three router files were not updated and still import from the old decnet.web.models path:
| File | Stale import |
|---|---|
decnet/web/router/auth/api_login.py:12 |
from decnet.web.models import LoginRequest, Token |
decnet/web/router/auth/api_change_pass.py:7 |
from decnet.web.models import ChangePasswordRequest |
decnet/web/router/stats/api_get_stats.py:6 |
from decnet.web.models import StatsResponse |
Fix: Update those three files to import from decnet.web.db.models (consistent with the other router files already migrated).
Impact: All tests/api/ tests fail to collect. Web server cannot start.
BUG-002 — decnet/web/db/sqlite/repository.py depends on sqlalchemy directly
Detected: 2026-04-09
Status: Resolved (dependency installed via pip install -e ".[dev]")
Symptom: ModuleNotFoundError: No module named 'sqlalchemy' before sqlmodel was installed.
Root cause: sqlmodel>=0.0.16 was added to pyproject.toml but pip install -e . had not been re-run in the dev environment.
Fix: Run pip install -e ".[dev]". Already applied.
BUG-003 — SSE /api/v1/stream proxy BrokenPipe storm
Detected: 2026-04-17 Status: Open — do not fix, testing first
Symptom: The web-dashboard CLI proxy hammers BrokenPipeError: [Errno 32] Broken pipe on GET /api/v1/stream and answers with 502s. The SSE client reconnects, a handful succeed (200), then the next chunk write fails again:
decnet.cli - web proxy error GET /api/v1/stream?token=...: [Errno 32] Broken pipe
decnet.cli - web code 502, message API proxy error: [Errno 32] Broken pipe
...
File "/home/anti/Tools/DECNET/decnet/cli.py", line 790, in _proxy
self.wfile.write(chunk)
BrokenPipeError: [Errno 32] Broken pipe
During the failure the proxy also tries to send_error(502, ...) on the already-closed socket, producing a second BrokenPipe and a noisy traceback.
Root cause (suspected, unconfirmed): the stdlib http.server-based proxy in decnet/cli.py:_proxy doesn't handle the browser closing the SSE socket cleanly — any wfile.write(chunk) after the client disconnects raises BrokenPipe, and then the error path itself writes to the dead socket. Upstream uvicorn SSE generator is probably fine; the proxy layer is the fragile piece.
Fix: Deferred. Likely options when we get back to it:
- Catch
BrokenPipeError/ConnectionResetErrorinside_proxyand silently close instead ofsend_error(writing headers to a dead socket is always going to fail). - Replace the threaded stdlib proxy with something that understands streaming and disconnect signals properly.
- Or bypass the proxy for
/api/v1/streamspecifically and let the browser hit the API directly (CORS permitting).
Impact: Dashboard SSE is unusable under any real load; the API itself is unaffected.