/api/graph/nodes emits raw non-UTF-8 bytes AND grows ~2MB per call (6.9→9.3→11.3MB, no writes between) #126

Open
opened 2026-08-07 01:02:34 +00:00 by tim.lingo · 0 comments
Member

Two defects in /api/graph/nodes, both measured today against the ROUND-9 SHIPPED brain (15cf7d1b…) on a scratch profile — neither is a 9.1 regression; both are live in what users have.

1. The route emits raw non-UTF-8 bytes. The genesis root node's id and tags contain byte sequences that are not valid UTF-8, so the response is not decodable as text. This is not cosmetic: it takes down ordinary shell/text tooling downstream. It surfaced because our own contract probe used tr -d '\n', which aborts on invalid UTF-8 under a UTF-8 locale and emits nothing — so every check downstream silently read false and the gate reported a soul with 5 hard-deleting write routes. A false red, caused entirely by this route's output. (Probe fixed on our side; the route's output is the underlying fault.)

2. The route's response grows on every call. Three successive requests to one live brain, no writes in between: 6.9 MB → 9.3 MB → 11.3 MB. Something is accumulating per-request rather than reflecting graph state. Growth of ~2 MB per call means a client that polls this route degrades the daemon over a session, and any consumer sizing a buffer from an earlier call is wrong by the next one.

Why it matters: this is the route the app's graph/Mind surface reads. Both defects are silent — the first corrupts anything treating the response as text, the second inflates without bound — and both were found only because a gate that was supposed to check something else broke on them.

Evidence: DMG-extracted round-9 brain, scratch HOME, free port, three sequential GET /api/graph/nodes; byte-level inspection of the genesis root node's id/tags. Reproduced during round-9.1 packaging, 2026-08-06.

What done looks like: the route emits valid UTF-8 for every field (see also neuron#87, non-ASCII mangling on the store side — same family, opposite direction), and a repeated call with no intervening writes returns a response of stable size.

**Two defects in `/api/graph/nodes`, both measured today against the ROUND-9 SHIPPED brain (`15cf7d1b…`) on a scratch profile — neither is a 9.1 regression; both are live in what users have.** **1. The route emits raw non-UTF-8 bytes.** The genesis root node's `id` and `tags` contain byte sequences that are not valid UTF-8, so the response is not decodable as text. This is not cosmetic: it takes down ordinary shell/text tooling downstream. It surfaced because our own contract probe used `tr -d '\n'`, which **aborts on invalid UTF-8 under a UTF-8 locale and emits nothing** — so every check downstream silently read false and the gate reported a soul with 5 hard-deleting write routes. A false red, caused entirely by this route's output. (Probe fixed on our side; the route's output is the underlying fault.) **2. The route's response grows on every call.** Three successive requests to one live brain, no writes in between: **6.9 MB → 9.3 MB → 11.3 MB**. Something is accumulating per-request rather than reflecting graph state. Growth of ~2 MB per call means a client that polls this route degrades the daemon over a session, and any consumer sizing a buffer from an earlier call is wrong by the next one. **Why it matters:** this is the route the app's graph/Mind surface reads. Both defects are silent — the first corrupts anything treating the response as text, the second inflates without bound — and both were found only because a gate that was *supposed* to check something else broke on them. **Evidence:** DMG-extracted round-9 brain, scratch HOME, free port, three sequential `GET /api/graph/nodes`; byte-level inspection of the genesis root node's `id`/`tags`. Reproduced during round-9.1 packaging, 2026-08-06. **What done looks like:** the route emits valid UTF-8 for every field (see also neuron#87, non-ASCII mangling on the store side — same family, opposite direction), and a repeated call with no intervening writes returns a response of stable size.
tim.lingo added the BETA-CRITICAL label 2026-08-07 13:51:47 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: neuron-technologies/neuron#126