edcec3bdf435d6b467dcb84ce261b68d260e9cbd
El SDK Release / build-and-release (pull_request) Failing after 11m24s
Two write paths could put a node in the graph and neither could put a body on an id that already exists. POST /api/nodes mints a fresh id via engram_node_full; POST /api/load-merge honors a declared id but skips anything already present. That is right for the additive case and leaves a hole: a node resident with a truncated body cannot be repaired. Forge's genesis seed sits in that hole. Two of Neuron's identity nodes carry only their own label as content -- 30 and 22 bytes against 4263 and 2590 declared. Their ids are load-bearing (is_protected_node keys on them and 214 declared edges reference them), so recreating them under a new id is not a repair, it is a second break. Engram has no in-place node update, so a replace is forget-then-merge, and engram_forget also drops every incident edge -- 85 and 93 on those two nodes, nearly all tag edges and accumulated hebbian associations the seed does not declare and could not restore. preserve_edges (default true) therefore snapshots before the forget and re-merges after: the replaced node is back by then so it is skipped, and every dropped edge returns through the (from_id,to_id,relation) dedup. The same re-merge is the failure path -- if the seed merge does not produce the node, the backup puts the original back. Rollback, not data loss. With no replace list the route is exactly /api/load-merge. Verified on a sandbox engram seeded to mirror the live graph's state for this seed (15 resident nodes, 694 incident edges): 87 nodes created at their declared ids, 2 replaced in place, 214/214 edges laid, 682/682 non-seed incident edges preserved, and a second run reports 0 added.
Description
The Engram programming language — types as knowledge nodes, quantum-sealed prod target
156 MiB
Releases
5
El SDK (latest)
Latest
Languages
Emacs Lisp
74.5%
C
22.1%
HTML
1.4%
Objective-C
0.6%
Shell
0.6%
Other
0.8%