fix(mcp-wrapper): planWork creates a real BacklogItem; reviewBacklog lists by type #59

Merged
will.anderson merged 1 commits from fix/wrapper-backlog-endpoints into main 2026-06-28 17:15:19 +00:00
Member

Backlog MCP tools use the right endpoints (planWork/reviewBacklog)

planWork fell through create_typed_node to a generic /api/neuron/memory write — storing a
[BacklogItem]-prefixed memory blob with title/project/priority dropped, never a real
BacklogItem. reviewBacklog used a lexical /recall (top-50, untyped), so it never listed backlog items.

Now:

  • planWorkcreate_node_typedPOST /api/neuron/node/create {node_type:"BacklogItem", label:title, content, tier, tags:[project,priority]} — a real typed node.
  • reviewBackloglist_typed("BacklogItem")GET /api/neuron/list/BacklogItem.

elc-clean. Depends on neuron PR #58 (the /api/neuron/list/<type> slice fix) to round-trip, and needs
the wrapper binary rebuilt + :7779 restarted to take effect. Together with #58 this makes the backlog
(and trackWork, a follow-up) actually persist + read back — the L7 open loop.

## Backlog MCP tools use the right endpoints (planWork/reviewBacklog) `planWork` fell through `create_typed_node` to a generic `/api/neuron/memory` write — storing a `[BacklogItem]`-prefixed **memory blob** with title/project/priority **dropped**, never a real `BacklogItem`. `reviewBacklog` used a lexical `/recall` (top-50, untyped), so it never listed backlog items. Now: - `planWork` → `create_node_typed` → `POST /api/neuron/node/create {node_type:"BacklogItem", label:title, content, tier, tags:[project,priority]}` — a real typed node. - `reviewBacklog` → `list_typed("BacklogItem")` → `GET /api/neuron/list/BacklogItem`. elc-clean. **Depends on neuron PR #58** (the `/api/neuron/list/<type>` slice fix) to round-trip, and needs the wrapper binary rebuilt + `:7779` restarted to take effect. Together with #58 this makes the backlog (and `trackWork`, a follow-up) actually persist + read back — the L7 open loop.
tim.lingo added 1 commit 2026-06-27 21:03:26 +00:00
planWork fell through create_typed_node to a generic /api/neuron/memory write — a [BacklogItem]-prefixed
memory blob with title/project/priority DROPPED, never a real BacklogItem. reviewBacklog used a lexical
/recall (top-50, untyped). Now: planWork -> /api/neuron/node/create {node_type:BacklogItem,...} via new
create_node_typed; reviewBacklog -> list_typed('BacklogItem') (GET /api/neuron/list/BacklogItem). elc-clean.
Depends on neuron PR #58 (the list/<type> slice fix) to round-trip; needs the wrapper binary rebuilt +
:7779 restarted to take effect.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author
Member

⚠️ Deploy notes (bundle with #58):

  1. This rides #58. reviewBacklog/api/neuron/list/BacklogItem only round-trips once the list/<type> slice fix (#58) is in the running soul. So deploy this wrapper together with #58's dist/soul.c regen — one coordinated restart, then test the full create→list round-trip.

  2. The wrapper rebuild MUST use -DHAVE_CURL. A bare elb build omits it → every HTTP call becomes a no-curl stub ({"error":"not built with HAVE_CURL"}). A solo deploy attempt hit exactly this and was reverted. Build with the soul recipe's flags, e.g.:
    cc -O2 -DHAVE_CURL -I <runtime> <generated main.c> <runtime>/el_runtime.c -lssl -lcrypto -lcurl -lpthread -lm -o dist/neuron-mcp-wrapper (then restart the ai.neuron.mcp-wrapper LaunchAgent).

  3. Known limitation (separate loop): planWork now creates a real BacklogItem with title/description, but status/priority/project live in node metadata, which engram_node_full can't write — so those show defaults until the backlog metadata model is addressed. trackWork is unchanged for the same reason.

⚠️ **Deploy notes (bundle with #58):** 1. **This rides #58.** `reviewBacklog` → `/api/neuron/list/BacklogItem` only round-trips once the `list/<type>` slice fix (#58) is in the running soul. So deploy this wrapper **together with #58's `dist/soul.c` regen** — one coordinated restart, then test the full create→list round-trip. 2. **The wrapper rebuild MUST use `-DHAVE_CURL`.** A bare `elb` build omits it → every HTTP call becomes a no-curl stub (`{"error":"not built with HAVE_CURL"}`). A solo deploy attempt hit exactly this and was reverted. Build with the soul recipe's flags, e.g.: `cc -O2 -DHAVE_CURL -I <runtime> <generated main.c> <runtime>/el_runtime.c -lssl -lcrypto -lcurl -lpthread -lm -o dist/neuron-mcp-wrapper` (then restart the `ai.neuron.mcp-wrapper` LaunchAgent). 3. **Known limitation (separate loop):** `planWork` now creates a real BacklogItem with title/description, but `status`/`priority`/`project` live in node **metadata**, which `engram_node_full` can't write — so those show defaults until the backlog metadata model is addressed. `trackWork` is unchanged for the same reason.
will.anderson merged commit 99c5ce6e94 into main 2026-06-28 17:15:19 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: neuron-technologies/neuron#59