Summary
autobot-slm-backend/api/memory_lifecycle_proxy.py reports why a node could not be read using bare string literals:
node_unreachable · node_timeout · node_status_<code> · node_bad_payload · node_url_not_configured · internal_api_key_not_configured
These are deliberately distinct — 403 means the key is wrong, 404 means the node predates #12631, a timeout means alive but slow, and an operator acts differently on each. That design is right; the representation is weak.
Why now rather than later
#12632's frontend half has to switch on these values to show a useful cause instead of a generic error, and the handoff comment on that issue lists them as the contract. The moment that lands, a typo in either place produces a UI that silently falls through to a default branch — the failure mode being a monitoring surface that tells an operator less than it knows, which is what this whole area exists to fix.
Right now the strings exist in exactly one place and nothing consumes them, so this is the cheapest it will ever be to make explicit.
Work
Acceptance
A cause the proxy can return and the tab cannot render fails a test rather than rendering as "unknown error".
Related: #12632, #14653.
Summary
autobot-slm-backend/api/memory_lifecycle_proxy.pyreports why a node could not be read using bare string literals:These are deliberately distinct — 403 means the key is wrong, 404 means the node predates #12631, a timeout means alive but slow, and an operator acts differently on each. That design is right; the representation is weak.
Why now rather than later
#12632's frontend half has to switch on these values to show a useful cause instead of a generic error, and the handoff comment on that issue lists them as the contract. The moment that lands, a typo in either place produces a UI that silently falls through to a default branch — the failure mode being a monitoring surface that tells an operator less than it knows, which is what this whole area exists to fix.
Right now the strings exist in exactly one place and nothing consumes them, so this is the cheapest it will ever be to make explicit.
Work
node_status_<code>composable — the status code is data, not a separate causeAcceptance
A cause the proxy can return and the tab cannot render fails a test rather than rendering as "unknown error".
Related: #12632, #14653.