Save-side: 1,032 nodes have unaddressable identifiers (453 binary garbage, one 1.3M chars outranking real answers) #145

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

Found during the ten-iteration retrieval run. Save-side; retrieval only made it visible.

Measured on a 78,768-node copy of the live graph: 1,032 nodes carry identifiers that are not printable ASCII. 453 of those are outright binary garbage. One is 1.3 million characters long, and it was outranking real answers in retrieval results.

Two distinct harms:

  1. Unaddressable records. A node whose id cannot be typed, logged or linked cannot be fetched, superseded or deleted through any route that takes an id. It is in the graph and out of reach.
  2. Ranking corruption. The 1.3M-character record scored above correct answers on length-sensitive scoring.

A guard that refuses to return unaddressable records was measured in iteration 4 of #141 (0 of 317 returned slots affected after). That is containment, not a fix — the records are still being stored, and the guard is on the read side only.

Root cause is not established and is likely shared with #67 (the store keeps node strings in a request arena that is recycled one request later) and #87 (non-ASCII mangled on store). If it is #67, the fix is the 39 el_strdup_persist sites already identified there, and this issue closes with it.

Needs before a fix: confirm the same ratio on the live snapshot, and whether the count grows between boots.

Related: #67, #87, #72, inventory rows B-30/B-32/B-35.

Found during the ten-iteration retrieval run. Save-side; retrieval only made it visible. **Measured on a 78,768-node copy of the live graph:** 1,032 nodes carry identifiers that are not printable ASCII. 453 of those are outright binary garbage. One is **1.3 million characters long**, and it was outranking real answers in retrieval results. Two distinct harms: 1. **Unaddressable records.** A node whose id cannot be typed, logged or linked cannot be fetched, superseded or deleted through any route that takes an id. It is in the graph and out of reach. 2. **Ranking corruption.** The 1.3M-character record scored above correct answers on length-sensitive scoring. A guard that refuses to *return* unaddressable records was measured in iteration 4 of #141 (0 of 317 returned slots affected after). **That is containment, not a fix** — the records are still being stored, and the guard is on the read side only. Root cause is not established and is likely shared with #67 (the store keeps node strings in a request arena that is recycled one request later) and #87 (non-ASCII mangled on store). If it is #67, the fix is the 39 `el_strdup_persist` sites already identified there, and this issue closes with it. **Needs before a fix:** confirm the same ratio on the live snapshot, and whether the count grows between boots. Related: #67, #87, #72, inventory rows B-30/B-32/B-35.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: neuron-technologies/neuron#145