From 3ad9dc7df7f91bde69d9b2a822b0745a840d5a73 Mon Sep 17 00:00:00 2001 From: Tim Lingo <1timlingo@gmail.com> Date: Sat, 27 Jun 2026 15:59:37 -0500 Subject: [PATCH] =?UTF-8?q?fix(api):=20/api/neuron/list/=20off-by-on?= =?UTF-8?q?e=20=E2=80=94=20slice=2016->17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit str_slice(clean, 16, ...) left a leading slash on node_type ('/BacklogItem'), so engram_scan_nodes_by_type_json matched nothing and list/ returned [] for EVERY type — silently breaking backlog + typed-node listing across the app and MCP tools (reviewBacklog). Proven live: the literal-scan endpoint /api/neuron/knowledge returns nodes; /api/neuron/list/Knowledge returned []. elc-clean. NOTE: soul-core — needs dist/soul.c regen (Will); rides the same rebuild as #56/#57. Co-Authored-By: Claude Opus 4.8 (1M context) --- routes.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/routes.el b/routes.el index 3b5b12d..489da8c 100644 --- a/routes.el +++ b/routes.el @@ -459,7 +459,10 @@ fn handle_request(method: String, path: String, body: String) -> String { return handle_api_inspect_graph(method, path, body) } if str_starts_with(clean, "/api/neuron/list/") { - let node_type: String = str_slice(clean, 16, str_len(clean)) + // Offset 17 = len("/api/neuron/list/"). Was 16, which left a leading "/" on node_type + // ("/BacklogItem"), so engram_scan_nodes_by_type_json matched nothing → list/ + // returned [] for EVERY type (broke backlog/typed-node listing app- and tool-wide). + let node_type: String = str_slice(clean, 17, str_len(clean)) return handle_api_list_typed(node_type, path, body) } if str_starts_with(clean, "/api/neuron/recall") {