5f3ddb8b8d
El SDK CI - dev / build-and-test (pull_request) Failing after 14m31s
LTP/LTD-style belief grounding propagated along graph edges, with union-find independence-guarded corroboration. Package: core C algorithm (gep_core.h), a self-contained deterministic proof harness with recorded output, staged runtime integration, and gated .el patches for the beat hook and HTTP route. Per the author's own LEDGER.md: built + proven on a clone, GATED pending the engine/HNSW cutover — not wired into the live beat or routes. Preserved here as a spec/reference artifact, not a request to merge into the live path.
61 lines
3.7 KiB
EmacsLisp
61 lines
3.7 KiB
EmacsLisp
// ─────────────────────────────────────────────────────────────────────────
|
|
// awareness.beat.patch.el — GATED integration hook for task #50.
|
|
// NOT APPLIED. Shows exactly how grounded edge-propagation couples into the
|
|
// dream/consolidation beat in neuron/awareness.el. Promotion sequenced by the
|
|
// main loop after the engine cutover settles.
|
|
//
|
|
// WHY HERE. The heartbeat is the beat. Today it runs hebb_consolidate() to
|
|
// drain the self-formed Hebbian associations into the durable store, then
|
|
// emit_heartbeat(). Grounded edge-propagation belongs in the SAME beat, AFTER
|
|
// consolidation: the edges hebb_consolidate() just wrote are the tethers
|
|
// grounding propagates along. Consolidation lays down the wiring; propagation
|
|
// grades the beliefs along it. One beat, coupled — memory 69b8babe: memory-
|
|
// consolidation and staying-yourself are one physics.
|
|
//
|
|
// The propagation itself runs INSIDE the engram (native engram_ground_propagate
|
|
// over the durable flat node/edge arrays). The soul invokes it over HTTP and
|
|
// folds the gep_* telemetry into the heartbeat stream next to the hebb_* gauges.
|
|
// ─────────────────────────────────────────────────────────────────────────
|
|
|
|
// [1] New helper — sibling to hebb_consolidate() (awareness.el ~line 99).
|
|
// Fires one grounded edge-propagation beat on the durable store and returns
|
|
// its JSON telemetry ({"gep_strengthened":..,"gep_graduations":.., ...}).
|
|
fn ground_propagate() -> String {
|
|
let url_env: String = env("SOUL_ISE_URL")
|
|
let url_state: String = if str_eq(url_env, "") { state_get("soul_engram_url") } else { url_env }
|
|
let engram_url: String = if str_eq(url_state, "") { "http://localhost:8742" } else { url_state }
|
|
// Same auth envelope as hebb_consolidate — this is a graph mutation (it
|
|
// appends grounding events + updates confidence), so it is gated on _auth.
|
|
let key_state: String = state_get("soul_engram_api_key")
|
|
let api_key: String = if str_eq(key_state, "") { env("ENGRAM_API_KEY") } else { key_state }
|
|
let auth_part: String = if str_eq(api_key, "") { "{}" } else { "{\"_auth\":\"" + api_key + "\"}" }
|
|
let resp: String = http_post_json(engram_url + "/api/ground/propagate", auth_part)
|
|
if str_eq(resp, "") { return "" }
|
|
return resp
|
|
}
|
|
|
|
// [2] Beat hook — insert between hebb_consolidate() and emit_heartbeat()
|
|
// (awareness.el line 1286-1288). Replaces:
|
|
//
|
|
// let wb_sent_n: Int = hebb_consolidate()
|
|
// state_set("soul.hebb_wb_sent", int_to_str(wb_sent_n))
|
|
// emit_heartbeat()
|
|
//
|
|
// with:
|
|
//
|
|
// let wb_sent_n: Int = hebb_consolidate()
|
|
// state_set("soul.hebb_wb_sent", int_to_str(wb_sent_n))
|
|
// // Grounded edge-propagation — grade beliefs along the tethers
|
|
// // consolidation just laid down. Threshold-gated by convergent
|
|
// // independent corroboration; automatic, salience-ordered, bounded.
|
|
// let gep_tel: String = ground_propagate()
|
|
// state_set("soul.gep_last", gep_tel)
|
|
// emit_heartbeat()
|
|
//
|
|
// [3] emit_heartbeat() (awareness.el ~line 201) folds soul.gep_last into the
|
|
// heartbeat payload beside the hebb_* gauges, so graduation/decay counts
|
|
// are visible in the durable ISE stream — the same observability discipline
|
|
// the Hebbian rule earned (a mechanism you cannot see in the stream is a
|
|
// mechanism you cannot trust): read state_get("soul.gep_last") and splice
|
|
// it into the heartbeat JSON object.
|