Finding
The web service can start with no usable model, but the health/UI flow does not make readiness or effective model configuration obvious before a user submits work.
Evidence
load_model() logs failures and sets decompiler = None without failing process startup: web/app.py:337-352.
/api/health always returns status: ok plus only model_loaded and mock_mode: web/app.py:943-950.
- The frontend starts by polling GPU stats, not health/readiness:
web/static/app.js:1122-1126.
- Model config is rendered only after a decompile result arrives:
web/static/app.js:497-510, web/static/app.js:1038-1041.
Impact
Users can paste bytecode and wait through analysis before discovering Solidity generation is unavailable. Operators also cannot use /api/health as a reliable readiness check for inference.
Recommended fix
Add a readiness endpoint/payload with ready, model_loaded, model_path, load error, lookup DB availability/stats, bytecode limits, concurrency limit, and effective generation defaults. Show this in the UI before input and disable or clearly label decompile when only TAC/lookup mode is available.
Acceptance criteria
/api/health distinguishes process liveness from inference readiness.
- Health includes model path/config or last model load error, lookup availability, and request limits.
- UI displays a startup readiness banner/card before the first decompile.
- If no model is loaded, the Decompile button explains expected TAC-only/partial behavior before submission.
Finding
The web service can start with no usable model, but the health/UI flow does not make readiness or effective model configuration obvious before a user submits work.
Evidence
load_model()logs failures and setsdecompiler = Nonewithout failing process startup:web/app.py:337-352./api/healthalways returnsstatus: okplus onlymodel_loadedandmock_mode:web/app.py:943-950.web/static/app.js:1122-1126.web/static/app.js:497-510,web/static/app.js:1038-1041.Impact
Users can paste bytecode and wait through analysis before discovering Solidity generation is unavailable. Operators also cannot use
/api/healthas a reliable readiness check for inference.Recommended fix
Add a readiness endpoint/payload with
ready,model_loaded,model_path, load error, lookup DB availability/stats, bytecode limits, concurrency limit, and effective generation defaults. Show this in the UI before input and disable or clearly label decompile when only TAC/lookup mode is available.Acceptance criteria
/api/healthdistinguishes process liveness from inference readiness.