self-review 2026-08-10: plumb the gauges that were computed and discarded
el_runtime.c emitted 19 metric keys from engram_metrics_json; emit_heartbeat forwarded 14. Dropped on the floor: hebb_cands, hebb_cand_max, hebb_mass, hebb_edges, embed_consec_fail. The first two are exactly the pair the runtime added to answer the 08-06 question -- whether a stalled hebb_links means nothing co-activates or the threshold is too high. Undiagnosable from the durable record without them. An instrument computed but not plumbed to durable storage is not an instrument. Also adds the corpus damage STOCK, not just the flow. 08-08 fixed the JSON parser, watched txt_damaged (nodes damaged by a write THIS process) fall to 0, and recorded the defect closed. Census today: 2781 of 4100 nodes still damaged -- 67.8%, including the self root and every values node. A flow gauge reads 0 both when the corpus is clean and when it is uniformly damaged but quiescent. Sampled on a 30-beat countdown and carried with an explicit age.
This commit is contained in:
+81
-1
@@ -404,6 +404,33 @@ fn emit_heartbeat() -> Void {
|
||||
let hebb_max: String = if str_eq(hebb_max_raw, "") { "-1" } else { hebb_max_raw }
|
||||
let hebb_links_raw: String = json_get(act_stats, "hebb_links")
|
||||
let hebb_links: String = if str_eq(hebb_links_raw, "") { "-1" } else { hebb_links_raw }
|
||||
// Candidate-table gauges (2026-08-10 self-review). el_runtime.c COMPUTES
|
||||
// hebb_cands/hebb_cand_max/hebb_mass/hebb_edges and emits them from
|
||||
// engram_metrics_json — and this function dropped all four on the floor.
|
||||
// Nineteen keys crossed the C boundary; fourteen reached the ISE stream.
|
||||
// The two that mattered most are exactly the pair the runtime added to
|
||||
// answer the question the 08-06 review had to instrument for:
|
||||
// hebb_cands — associations currently being tracked toward
|
||||
// consolidation. 0 ⇒ nothing co-activates at all.
|
||||
// hebb_cand_max — how close the leading candidate is to
|
||||
// ENGRAM_HEBB_LINK_MIN (0.15). Sustained just-below ⇒
|
||||
// the THRESHOLD is the bottleneck, not the event rate.
|
||||
// Without both, "hebb_links stopped climbing" is undiagnosable from the
|
||||
// durable record: nothing-co-activates and threshold-too-high look
|
||||
// identical. An instrument that is computed but not plumbed to durable
|
||||
// storage is not an instrument — it is a local variable.
|
||||
// hebb_mass — Σ hebb across edges; the runaway detector against the
|
||||
// ENGRAM_HEBB_NODE_BUDGET homeostatic cap.
|
||||
// hebb_edges — total potentiated edges (hebb > MIN), the denominator
|
||||
// hebb_max is the max of.
|
||||
let hebb_cands_raw: String = json_get(act_stats, "hebb_cands")
|
||||
let hebb_cands: String = if str_eq(hebb_cands_raw, "") { "-1" } else { hebb_cands_raw }
|
||||
let hebb_cmax_raw: String = json_get(act_stats, "hebb_cand_max")
|
||||
let hebb_cmax: String = if str_eq(hebb_cmax_raw, "") { "-1" } else { hebb_cmax_raw }
|
||||
let hebb_mass_raw: String = json_get(act_stats, "hebb_mass")
|
||||
let hebb_mass: String = if str_eq(hebb_mass_raw, "") { "-1" } else { hebb_mass_raw }
|
||||
let hebb_edges_raw: String = json_get(act_stats, "hebb_edges")
|
||||
let hebb_edges: String = if str_eq(hebb_edges_raw, "") { "-1" } else { hebb_edges_raw }
|
||||
// Consolidation write-back gauges (2026-08-07 self-review). hebb_links
|
||||
// counts what this process LEARNED; these three count what SURVIVES it.
|
||||
// The distinction is the whole finding: 1,198 links formed, 0 persisted,
|
||||
@@ -430,6 +457,14 @@ fn emit_heartbeat() -> Void {
|
||||
let dup_wm_g: String = if str_eq(dup_wm_g_raw, "") { "-1" } else { dup_wm_g_raw }
|
||||
let act_brk_raw: String = json_get(act_stats, "embed_breaker_open")
|
||||
let act_brk: String = if str_eq(act_brk_raw, "") { "-1" } else { act_brk_raw }
|
||||
// embed_consec_fail (2026-08-10 self-review): also computed by the C side
|
||||
// and also dropped here. embed_breaker_open is the LAGGING indicator — it
|
||||
// only goes 1 after ENGRAM_EMBED_BREAKER_LIMIT consecutive failures, by
|
||||
// which point semantic activation has already degraded to pure lexical
|
||||
// for the whole cooldown. consec_fail is the leading edge of the same
|
||||
// event and costs nothing to carry.
|
||||
let emb_cf_raw: String = json_get(act_stats, "embed_consec_fail")
|
||||
let emb_cf: String = if str_eq(emb_cf_raw, "") { "-1" } else { emb_cf_raw }
|
||||
// ctx_cos (2026-07-29 self-review): cos(query, context centroid) at the
|
||||
// last activate call — the drift gauge for the new context-centroid
|
||||
// scoring. ~1.0 aligned; low at domain-rotation boundaries is healthy;
|
||||
@@ -464,7 +499,52 @@ fn emit_heartbeat() -> Void {
|
||||
// a 60s beat); this is the cheap flow counter that belongs on every beat.
|
||||
let txt_dmg_raw: String = json_get(act_stats, "txt_damaged")
|
||||
let txt_dmg: String = if str_eq(txt_dmg_raw, "") { "-1" } else { txt_dmg_raw }
|
||||
let payload: String = "{\"event\":\"heartbeat\",\"pulse\":" + pulse + ",\"tick\":" + pulse + ",\"boot\":" + boot + ",\"idle\":" + idle + ",\"idle_ms\":" + int_to_str(idle_ms) + ",\"node_count\":" + int_to_str(nc) + ",\"edge_count\":" + int_to_str(ec) + ",\"node_delta\":" + int_to_str(node_delta) + ",\"edge_delta\":" + int_to_str(edge_delta) + ",\"wm_active\":" + int_to_str(wmc) + ",\"wm_delta\":" + int_to_str(wm_delta) + ",\"wm_saturated\":" + int_to_str(wm_sat) + ",\"wm_top0_streak\":" + int_to_str(t0streak) + ",\"wm_churn\":" + int_to_str(wm_churn) + ",\"wm_top0_wm\":" + wm_top0_wm + ",\"sync_added_total\":" + sat_str + ",\"sync_age_ms\":" + int_to_str(sync_age) + ",\"wm_avg_weight\":" + wm_avg_str + ",\"wm_top\":" + wm_top + ",\"ts\":" + int_to_str(ts) + ",\"uptime_ms\":" + int_to_str(up_ms) + ",\"uptime\":\"" + up_human + "\",\"embed_ok\":" + int_to_str(emb_ok) + ",\"embed_backfilled\":" + bf_done + ",\"embed_count\":" + bf_total + ",\"embed_eligible\":" + embed_elig + ",\"wm_evicted\":" + act_evict + ",\"wm_evicted_delta\":" + int_to_str(evict_delta) + ",\"breakthroughs\":" + act_bt + ",\"breakthroughs_delta\":" + int_to_str(bt_delta) + ",\"auto_term_streak\":" + int_to_str(hb_ats) + ",\"auto_term_empty_streak\":" + int_to_str(hb_ate) + ",\"embed_breaker_open\":" + act_brk + ",\"ctx_cos\":" + ctx_cos + ",\"dup_seeds\":" + dup_seeds + ",\"dup_wm\":" + dup_wm + ",\"dup_wm_global\":" + dup_wm_g + ",\"hebb_warm\":" + hebb_warm + ",\"hebb_max\":" + hebb_max + ",\"hebb_links\":" + hebb_links + ",\"hebb_wb_pending\":" + wb_pend + ",\"hebb_wb_drained\":" + wb_drain + ",\"hebb_wb_dropped\":" + wb_drop + ",\"hebb_wb_sent\":" + wb_sent + ",\"ise_fail\":" + fail_str + ",\"txt_damaged\":" + txt_dmg + "}"
|
||||
// ── Corpus damage STOCK, not just flow (2026-08-10 self-review) ────────
|
||||
// txt_damaged above is a FLOW gauge: nodes damaged by a write in THIS
|
||||
// process. The 08-08 review fixed the parser, watched that flow fall to
|
||||
// 0, and recorded the defect as closed. It was not closed. Today's census
|
||||
// on the live store: scanned 4100, damaged 2781 — 67.8% of the corpus is
|
||||
// STILL carrying the character loss, including the self root and every
|
||||
// values node ("Value ? Constraints as Freedom"). The parser stopped
|
||||
// producing new damage; nothing ever repaired the old.
|
||||
//
|
||||
// That is the 08-08 lesson recursing one level up. 08-08 said "instrument
|
||||
// the payload, not just the machinery" — and then instrumented the payload
|
||||
// RATE and not the payload STOCK. A flow gauge reads 0 both when the
|
||||
// corpus is clean and when it is uniformly damaged but quiescent. Those
|
||||
// are opposite states and the beat could not tell them apart.
|
||||
//
|
||||
// Cost: GET /api/text-health scans the whole store, too expensive for a
|
||||
// 60s beat (which is why 08-08 left it off). So sample it on a countdown
|
||||
// and CARRY the last reading on every beat, with its age. A stale-but-
|
||||
// present stock number beats an absent one; damaged_age_ms makes the
|
||||
// staleness explicit rather than implied. No modulo/multiply — both
|
||||
// operators are broken in this compiler (see the note at line ~160).
|
||||
let tc_raw: String = state_get("soul.txt_census_countdown")
|
||||
let tc_n: Int = if str_eq(tc_raw, "") { 0 } else { str_to_int(tc_raw) }
|
||||
if tc_n <= 0 {
|
||||
let th_resp: String = http_get(hb_engram_url + "/api/text-health")
|
||||
let th_pct: String = json_get(th_resp, "damaged_pct")
|
||||
if !str_eq(th_pct, "") {
|
||||
state_set("soul.txt_damaged_pct", th_pct)
|
||||
state_set("soul.txt_damaged_n", json_get(th_resp, "damaged"))
|
||||
state_set("soul.txt_scanned_n", json_get(th_resp, "scanned"))
|
||||
state_set("soul.txt_census_ts", int_to_str(ts))
|
||||
}
|
||||
// 30 beats ≈ 30 min at the 60s cadence. Reset even on a failed census
|
||||
// so an unreachable route cannot turn this into a per-beat full scan.
|
||||
state_set("soul.txt_census_countdown", "30")
|
||||
}
|
||||
if tc_n > 0 { state_set("soul.txt_census_countdown", int_to_str(tc_n - 1)) }
|
||||
let dmg_pct_raw: String = state_get("soul.txt_damaged_pct")
|
||||
let dmg_pct: String = if str_eq(dmg_pct_raw, "") { "-1" } else { dmg_pct_raw }
|
||||
let dmg_n_raw: String = state_get("soul.txt_damaged_n")
|
||||
let dmg_n: String = if str_eq(dmg_n_raw, "") { "-1" } else { dmg_n_raw }
|
||||
let dmg_scan_raw: String = state_get("soul.txt_scanned_n")
|
||||
let dmg_scan: String = if str_eq(dmg_scan_raw, "") { "-1" } else { dmg_scan_raw }
|
||||
let dmg_ts_raw: String = state_get("soul.txt_census_ts")
|
||||
let dmg_age: Int = if str_eq(dmg_ts_raw, "") { 0 - 1 } else { ts - str_to_int(dmg_ts_raw) }
|
||||
let payload: String = "{\"event\":\"heartbeat\",\"pulse\":" + pulse + ",\"tick\":" + pulse + ",\"boot\":" + boot + ",\"idle\":" + idle + ",\"idle_ms\":" + int_to_str(idle_ms) + ",\"node_count\":" + int_to_str(nc) + ",\"edge_count\":" + int_to_str(ec) + ",\"node_delta\":" + int_to_str(node_delta) + ",\"edge_delta\":" + int_to_str(edge_delta) + ",\"wm_active\":" + int_to_str(wmc) + ",\"wm_delta\":" + int_to_str(wm_delta) + ",\"wm_saturated\":" + int_to_str(wm_sat) + ",\"wm_top0_streak\":" + int_to_str(t0streak) + ",\"wm_churn\":" + int_to_str(wm_churn) + ",\"wm_top0_wm\":" + wm_top0_wm + ",\"sync_added_total\":" + sat_str + ",\"sync_age_ms\":" + int_to_str(sync_age) + ",\"wm_avg_weight\":" + wm_avg_str + ",\"wm_top\":" + wm_top + ",\"ts\":" + int_to_str(ts) + ",\"uptime_ms\":" + int_to_str(up_ms) + ",\"uptime\":\"" + up_human + "\",\"embed_ok\":" + int_to_str(emb_ok) + ",\"embed_backfilled\":" + bf_done + ",\"embed_count\":" + bf_total + ",\"embed_eligible\":" + embed_elig + ",\"wm_evicted\":" + act_evict + ",\"wm_evicted_delta\":" + int_to_str(evict_delta) + ",\"breakthroughs\":" + act_bt + ",\"breakthroughs_delta\":" + int_to_str(bt_delta) + ",\"auto_term_streak\":" + int_to_str(hb_ats) + ",\"auto_term_empty_streak\":" + int_to_str(hb_ate) + ",\"embed_breaker_open\":" + act_brk + ",\"ctx_cos\":" + ctx_cos + ",\"dup_seeds\":" + dup_seeds + ",\"dup_wm\":" + dup_wm + ",\"dup_wm_global\":" + dup_wm_g + ",\"hebb_warm\":" + hebb_warm + ",\"hebb_max\":" + hebb_max + ",\"hebb_links\":" + hebb_links + ",\"hebb_cands\":" + hebb_cands + ",\"hebb_cand_max\":" + hebb_cmax + ",\"hebb_mass\":" + hebb_mass + ",\"hebb_edges\":" + hebb_edges + ",\"embed_consec_fail\":" + emb_cf + ",\"txt_damaged_pct\":" + dmg_pct + ",\"txt_damaged_n\":" + dmg_n + ",\"txt_scanned_n\":" + dmg_scan + ",\"txt_census_age_ms\":" + int_to_str(dmg_age) + ",\"hebb_wb_pending\":" + wb_pend + ",\"hebb_wb_drained\":" + wb_drain + ",\"hebb_wb_dropped\":" + wb_drop + ",\"hebb_wb_sent\":" + wb_sent + ",\"ise_fail\":" + fail_str + ",\"txt_damaged\":" + txt_dmg + "}"
|
||||
ise_post(payload)
|
||||
}
|
||||
|
||||
|
||||
+112
-78
@@ -264,27 +264,61 @@ el_val_t emit_heartbeat(void) {
|
||||
el_val_t hebb_max = ({ el_val_t _if_result_51 = 0; if (str_eq(hebb_max_raw, EL_STR(""))) { _if_result_51 = (EL_STR("-1")); } else { _if_result_51 = (hebb_max_raw); } _if_result_51; });
|
||||
el_val_t hebb_links_raw = json_get(act_stats, EL_STR("hebb_links"));
|
||||
el_val_t hebb_links = ({ el_val_t _if_result_52 = 0; if (str_eq(hebb_links_raw, EL_STR(""))) { _if_result_52 = (EL_STR("-1")); } else { _if_result_52 = (hebb_links_raw); } _if_result_52; });
|
||||
el_val_t hebb_cands_raw = json_get(act_stats, EL_STR("hebb_cands"));
|
||||
el_val_t hebb_cands = ({ el_val_t _if_result_53 = 0; if (str_eq(hebb_cands_raw, EL_STR(""))) { _if_result_53 = (EL_STR("-1")); } else { _if_result_53 = (hebb_cands_raw); } _if_result_53; });
|
||||
el_val_t hebb_cmax_raw = json_get(act_stats, EL_STR("hebb_cand_max"));
|
||||
el_val_t hebb_cmax = ({ el_val_t _if_result_54 = 0; if (str_eq(hebb_cmax_raw, EL_STR(""))) { _if_result_54 = (EL_STR("-1")); } else { _if_result_54 = (hebb_cmax_raw); } _if_result_54; });
|
||||
el_val_t hebb_mass_raw = json_get(act_stats, EL_STR("hebb_mass"));
|
||||
el_val_t hebb_mass = ({ el_val_t _if_result_55 = 0; if (str_eq(hebb_mass_raw, EL_STR(""))) { _if_result_55 = (EL_STR("-1")); } else { _if_result_55 = (hebb_mass_raw); } _if_result_55; });
|
||||
el_val_t hebb_edges_raw = json_get(act_stats, EL_STR("hebb_edges"));
|
||||
el_val_t hebb_edges = ({ el_val_t _if_result_56 = 0; if (str_eq(hebb_edges_raw, EL_STR(""))) { _if_result_56 = (EL_STR("-1")); } else { _if_result_56 = (hebb_edges_raw); } _if_result_56; });
|
||||
el_val_t wb_pend_raw = json_get(act_stats, EL_STR("hebb_wb_pending"));
|
||||
el_val_t wb_pend = ({ el_val_t _if_result_53 = 0; if (str_eq(wb_pend_raw, EL_STR(""))) { _if_result_53 = (EL_STR("-1")); } else { _if_result_53 = (wb_pend_raw); } _if_result_53; });
|
||||
el_val_t wb_pend = ({ el_val_t _if_result_57 = 0; if (str_eq(wb_pend_raw, EL_STR(""))) { _if_result_57 = (EL_STR("-1")); } else { _if_result_57 = (wb_pend_raw); } _if_result_57; });
|
||||
el_val_t wb_drain_raw = json_get(act_stats, EL_STR("hebb_wb_drained"));
|
||||
el_val_t wb_drain = ({ el_val_t _if_result_54 = 0; if (str_eq(wb_drain_raw, EL_STR(""))) { _if_result_54 = (EL_STR("-1")); } else { _if_result_54 = (wb_drain_raw); } _if_result_54; });
|
||||
el_val_t wb_drain = ({ el_val_t _if_result_58 = 0; if (str_eq(wb_drain_raw, EL_STR(""))) { _if_result_58 = (EL_STR("-1")); } else { _if_result_58 = (wb_drain_raw); } _if_result_58; });
|
||||
el_val_t wb_drop_raw = json_get(act_stats, EL_STR("hebb_wb_dropped"));
|
||||
el_val_t wb_drop = ({ el_val_t _if_result_55 = 0; if (str_eq(wb_drop_raw, EL_STR(""))) { _if_result_55 = (EL_STR("-1")); } else { _if_result_55 = (wb_drop_raw); } _if_result_55; });
|
||||
el_val_t wb_drop = ({ el_val_t _if_result_59 = 0; if (str_eq(wb_drop_raw, EL_STR(""))) { _if_result_59 = (EL_STR("-1")); } else { _if_result_59 = (wb_drop_raw); } _if_result_59; });
|
||||
el_val_t wb_sent_raw = state_get(EL_STR("soul.hebb_wb_sent"));
|
||||
el_val_t wb_sent = ({ el_val_t _if_result_56 = 0; if (str_eq(wb_sent_raw, EL_STR(""))) { _if_result_56 = (EL_STR("0")); } else { _if_result_56 = (wb_sent_raw); } _if_result_56; });
|
||||
el_val_t wb_sent = ({ el_val_t _if_result_60 = 0; if (str_eq(wb_sent_raw, EL_STR(""))) { _if_result_60 = (EL_STR("0")); } else { _if_result_60 = (wb_sent_raw); } _if_result_60; });
|
||||
el_val_t dup_wm_g_raw = json_get(act_stats, EL_STR("dup_wm_global"));
|
||||
el_val_t dup_wm_g = ({ el_val_t _if_result_57 = 0; if (str_eq(dup_wm_g_raw, EL_STR(""))) { _if_result_57 = (EL_STR("-1")); } else { _if_result_57 = (dup_wm_g_raw); } _if_result_57; });
|
||||
el_val_t dup_wm_g = ({ el_val_t _if_result_61 = 0; if (str_eq(dup_wm_g_raw, EL_STR(""))) { _if_result_61 = (EL_STR("-1")); } else { _if_result_61 = (dup_wm_g_raw); } _if_result_61; });
|
||||
el_val_t act_brk_raw = json_get(act_stats, EL_STR("embed_breaker_open"));
|
||||
el_val_t act_brk = ({ el_val_t _if_result_58 = 0; if (str_eq(act_brk_raw, EL_STR(""))) { _if_result_58 = (EL_STR("-1")); } else { _if_result_58 = (act_brk_raw); } _if_result_58; });
|
||||
el_val_t act_brk = ({ el_val_t _if_result_62 = 0; if (str_eq(act_brk_raw, EL_STR(""))) { _if_result_62 = (EL_STR("-1")); } else { _if_result_62 = (act_brk_raw); } _if_result_62; });
|
||||
el_val_t emb_cf_raw = json_get(act_stats, EL_STR("embed_consec_fail"));
|
||||
el_val_t emb_cf = ({ el_val_t _if_result_63 = 0; if (str_eq(emb_cf_raw, EL_STR(""))) { _if_result_63 = (EL_STR("-1")); } else { _if_result_63 = (emb_cf_raw); } _if_result_63; });
|
||||
el_val_t ctx_cos_raw = json_get(act_stats, EL_STR("ctx_cos"));
|
||||
el_val_t ctx_cos = ({ el_val_t _if_result_59 = 0; if (str_eq(ctx_cos_raw, EL_STR(""))) { _if_result_59 = (EL_STR("-2")); } else { _if_result_59 = (ctx_cos_raw); } _if_result_59; });
|
||||
el_val_t ctx_cos = ({ el_val_t _if_result_64 = 0; if (str_eq(ctx_cos_raw, EL_STR(""))) { _if_result_64 = (EL_STR("-2")); } else { _if_result_64 = (ctx_cos_raw); } _if_result_64; });
|
||||
el_val_t dup_seeds_raw = json_get(act_stats, EL_STR("dup_seeds"));
|
||||
el_val_t dup_seeds = ({ el_val_t _if_result_60 = 0; if (str_eq(dup_seeds_raw, EL_STR(""))) { _if_result_60 = (EL_STR("-1")); } else { _if_result_60 = (dup_seeds_raw); } _if_result_60; });
|
||||
el_val_t dup_seeds = ({ el_val_t _if_result_65 = 0; if (str_eq(dup_seeds_raw, EL_STR(""))) { _if_result_65 = (EL_STR("-1")); } else { _if_result_65 = (dup_seeds_raw); } _if_result_65; });
|
||||
el_val_t dup_wm_raw = json_get(act_stats, EL_STR("dup_wm"));
|
||||
el_val_t dup_wm = ({ el_val_t _if_result_61 = 0; if (str_eq(dup_wm_raw, EL_STR(""))) { _if_result_61 = (EL_STR("-1")); } else { _if_result_61 = (dup_wm_raw); } _if_result_61; });
|
||||
el_val_t dup_wm = ({ el_val_t _if_result_66 = 0; if (str_eq(dup_wm_raw, EL_STR(""))) { _if_result_66 = (EL_STR("-1")); } else { _if_result_66 = (dup_wm_raw); } _if_result_66; });
|
||||
el_val_t txt_dmg_raw = json_get(act_stats, EL_STR("txt_damaged"));
|
||||
el_val_t txt_dmg = ({ el_val_t _if_result_62 = 0; if (str_eq(txt_dmg_raw, EL_STR(""))) { _if_result_62 = (EL_STR("-1")); } else { _if_result_62 = (txt_dmg_raw); } _if_result_62; });
|
||||
el_val_t payload = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{\"event\":\"heartbeat\",\"pulse\":"), pulse), EL_STR(",\"tick\":")), pulse), EL_STR(",\"boot\":")), boot), EL_STR(",\"idle\":")), idle), EL_STR(",\"idle_ms\":")), int_to_str(idle_ms)), EL_STR(",\"node_count\":")), int_to_str(nc)), EL_STR(",\"edge_count\":")), int_to_str(ec)), EL_STR(",\"node_delta\":")), int_to_str(node_delta)), EL_STR(",\"edge_delta\":")), int_to_str(edge_delta)), EL_STR(",\"wm_active\":")), int_to_str(wmc)), EL_STR(",\"wm_delta\":")), int_to_str(wm_delta)), EL_STR(",\"wm_saturated\":")), int_to_str(wm_sat)), EL_STR(",\"wm_top0_streak\":")), int_to_str(t0streak)), EL_STR(",\"wm_churn\":")), int_to_str(wm_churn)), EL_STR(",\"wm_top0_wm\":")), wm_top0_wm), EL_STR(",\"sync_added_total\":")), sat_str), EL_STR(",\"sync_age_ms\":")), int_to_str(sync_age)), EL_STR(",\"wm_avg_weight\":")), wm_avg_str), EL_STR(",\"wm_top\":")), wm_top), EL_STR(",\"ts\":")), int_to_str(ts)), EL_STR(",\"uptime_ms\":")), int_to_str(up_ms)), EL_STR(",\"uptime\":\"")), up_human), EL_STR("\",\"embed_ok\":")), int_to_str(emb_ok)), EL_STR(",\"embed_backfilled\":")), bf_done), EL_STR(",\"embed_count\":")), bf_total), EL_STR(",\"embed_eligible\":")), embed_elig), EL_STR(",\"wm_evicted\":")), act_evict), EL_STR(",\"wm_evicted_delta\":")), int_to_str(evict_delta)), EL_STR(",\"breakthroughs\":")), act_bt), EL_STR(",\"breakthroughs_delta\":")), int_to_str(bt_delta)), EL_STR(",\"auto_term_streak\":")), int_to_str(hb_ats)), EL_STR(",\"auto_term_empty_streak\":")), int_to_str(hb_ate)), EL_STR(",\"embed_breaker_open\":")), act_brk), EL_STR(",\"ctx_cos\":")), ctx_cos), EL_STR(",\"dup_seeds\":")), dup_seeds), EL_STR(",\"dup_wm\":")), dup_wm), EL_STR(",\"dup_wm_global\":")), dup_wm_g), EL_STR(",\"hebb_warm\":")), hebb_warm), EL_STR(",\"hebb_max\":")), hebb_max), EL_STR(",\"hebb_links\":")), hebb_links), EL_STR(",\"hebb_wb_pending\":")), wb_pend), EL_STR(",\"hebb_wb_drained\":")), wb_drain), EL_STR(",\"hebb_wb_dropped\":")), wb_drop), EL_STR(",\"hebb_wb_sent\":")), wb_sent), EL_STR(",\"ise_fail\":")), fail_str), EL_STR(",\"txt_damaged\":")), txt_dmg), EL_STR("}"));
|
||||
el_val_t txt_dmg = ({ el_val_t _if_result_67 = 0; if (str_eq(txt_dmg_raw, EL_STR(""))) { _if_result_67 = (EL_STR("-1")); } else { _if_result_67 = (txt_dmg_raw); } _if_result_67; });
|
||||
el_val_t tc_raw = state_get(EL_STR("soul.txt_census_countdown"));
|
||||
el_val_t tc_n = ({ el_val_t _if_result_68 = 0; if (str_eq(tc_raw, EL_STR(""))) { _if_result_68 = (0); } else { _if_result_68 = (str_to_int(tc_raw)); } _if_result_68; });
|
||||
if (tc_n <= 0) {
|
||||
el_val_t th_resp = http_get(el_str_concat(hb_engram_url, EL_STR("/api/text-health")));
|
||||
el_val_t th_pct = json_get(th_resp, EL_STR("damaged_pct"));
|
||||
if (!str_eq(th_pct, EL_STR(""))) {
|
||||
state_set(EL_STR("soul.txt_damaged_pct"), th_pct);
|
||||
state_set(EL_STR("soul.txt_damaged_n"), json_get(th_resp, EL_STR("damaged")));
|
||||
state_set(EL_STR("soul.txt_scanned_n"), json_get(th_resp, EL_STR("scanned")));
|
||||
state_set(EL_STR("soul.txt_census_ts"), int_to_str(ts));
|
||||
}
|
||||
state_set(EL_STR("soul.txt_census_countdown"), EL_STR("30"));
|
||||
}
|
||||
if (tc_n > 0) {
|
||||
state_set(EL_STR("soul.txt_census_countdown"), int_to_str((tc_n - 1)));
|
||||
}
|
||||
el_val_t dmg_pct_raw = state_get(EL_STR("soul.txt_damaged_pct"));
|
||||
el_val_t dmg_pct = ({ el_val_t _if_result_69 = 0; if (str_eq(dmg_pct_raw, EL_STR(""))) { _if_result_69 = (EL_STR("-1")); } else { _if_result_69 = (dmg_pct_raw); } _if_result_69; });
|
||||
el_val_t dmg_n_raw = state_get(EL_STR("soul.txt_damaged_n"));
|
||||
el_val_t dmg_n = ({ el_val_t _if_result_70 = 0; if (str_eq(dmg_n_raw, EL_STR(""))) { _if_result_70 = (EL_STR("-1")); } else { _if_result_70 = (dmg_n_raw); } _if_result_70; });
|
||||
el_val_t dmg_scan_raw = state_get(EL_STR("soul.txt_scanned_n"));
|
||||
el_val_t dmg_scan = ({ el_val_t _if_result_71 = 0; if (str_eq(dmg_scan_raw, EL_STR(""))) { _if_result_71 = (EL_STR("-1")); } else { _if_result_71 = (dmg_scan_raw); } _if_result_71; });
|
||||
el_val_t dmg_ts_raw = state_get(EL_STR("soul.txt_census_ts"));
|
||||
el_val_t dmg_age = ({ el_val_t _if_result_72 = 0; if (str_eq(dmg_ts_raw, EL_STR(""))) { _if_result_72 = ((0 - 1)); } else { _if_result_72 = ((ts - str_to_int(dmg_ts_raw))); } _if_result_72; });
|
||||
el_val_t payload = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{\"event\":\"heartbeat\",\"pulse\":"), pulse), EL_STR(",\"tick\":")), pulse), EL_STR(",\"boot\":")), boot), EL_STR(",\"idle\":")), idle), EL_STR(",\"idle_ms\":")), int_to_str(idle_ms)), EL_STR(",\"node_count\":")), int_to_str(nc)), EL_STR(",\"edge_count\":")), int_to_str(ec)), EL_STR(",\"node_delta\":")), int_to_str(node_delta)), EL_STR(",\"edge_delta\":")), int_to_str(edge_delta)), EL_STR(",\"wm_active\":")), int_to_str(wmc)), EL_STR(",\"wm_delta\":")), int_to_str(wm_delta)), EL_STR(",\"wm_saturated\":")), int_to_str(wm_sat)), EL_STR(",\"wm_top0_streak\":")), int_to_str(t0streak)), EL_STR(",\"wm_churn\":")), int_to_str(wm_churn)), EL_STR(",\"wm_top0_wm\":")), wm_top0_wm), EL_STR(",\"sync_added_total\":")), sat_str), EL_STR(",\"sync_age_ms\":")), int_to_str(sync_age)), EL_STR(",\"wm_avg_weight\":")), wm_avg_str), EL_STR(",\"wm_top\":")), wm_top), EL_STR(",\"ts\":")), int_to_str(ts)), EL_STR(",\"uptime_ms\":")), int_to_str(up_ms)), EL_STR(",\"uptime\":\"")), up_human), EL_STR("\",\"embed_ok\":")), int_to_str(emb_ok)), EL_STR(",\"embed_backfilled\":")), bf_done), EL_STR(",\"embed_count\":")), bf_total), EL_STR(",\"embed_eligible\":")), embed_elig), EL_STR(",\"wm_evicted\":")), act_evict), EL_STR(",\"wm_evicted_delta\":")), int_to_str(evict_delta)), EL_STR(",\"breakthroughs\":")), act_bt), EL_STR(",\"breakthroughs_delta\":")), int_to_str(bt_delta)), EL_STR(",\"auto_term_streak\":")), int_to_str(hb_ats)), EL_STR(",\"auto_term_empty_streak\":")), int_to_str(hb_ate)), EL_STR(",\"embed_breaker_open\":")), act_brk), EL_STR(",\"ctx_cos\":")), ctx_cos), EL_STR(",\"dup_seeds\":")), dup_seeds), EL_STR(",\"dup_wm\":")), dup_wm), EL_STR(",\"dup_wm_global\":")), dup_wm_g), EL_STR(",\"hebb_warm\":")), hebb_warm), EL_STR(",\"hebb_max\":")), hebb_max), EL_STR(",\"hebb_links\":")), hebb_links), EL_STR(",\"hebb_cands\":")), hebb_cands), EL_STR(",\"hebb_cand_max\":")), hebb_cmax), EL_STR(",\"hebb_mass\":")), hebb_mass), EL_STR(",\"hebb_edges\":")), hebb_edges), EL_STR(",\"embed_consec_fail\":")), emb_cf), EL_STR(",\"txt_damaged_pct\":")), dmg_pct), EL_STR(",\"txt_damaged_n\":")), dmg_n), EL_STR(",\"txt_scanned_n\":")), dmg_scan), EL_STR(",\"txt_census_age_ms\":")), int_to_str(dmg_age)), EL_STR(",\"hebb_wb_pending\":")), wb_pend), EL_STR(",\"hebb_wb_drained\":")), wb_drain), EL_STR(",\"hebb_wb_dropped\":")), wb_drop), EL_STR(",\"hebb_wb_sent\":")), wb_sent), EL_STR(",\"ise_fail\":")), fail_str), EL_STR(",\"txt_damaged\":")), txt_dmg), EL_STR("}"));
|
||||
ise_post(payload);
|
||||
return 0;
|
||||
}
|
||||
@@ -437,18 +471,18 @@ el_val_t proactive_curiosity(void) {
|
||||
auto_term_try_slot(json_get(wm10_n1, EL_STR("node_type")), json_get(wm10_n1, EL_STR("label")));
|
||||
auto_term_try_slot(json_get(wm10_n0, EL_STR("node_type")), json_get(wm10_n0, EL_STR("label")));
|
||||
el_val_t auto_term = state_get(EL_STR("cseed_auto"));
|
||||
el_val_t results_auto = ({ el_val_t _if_result_63 = 0; if (str_eq(auto_term, EL_STR(""))) { _if_result_63 = (EL_STR("[]")); } else { _if_result_63 = (engram_activate_json(auto_term, 1)); } _if_result_63; });
|
||||
el_val_t results_auto = ({ el_val_t _if_result_73 = 0; if (str_eq(auto_term, EL_STR(""))) { _if_result_73 = (EL_STR("[]")); } else { _if_result_73 = (engram_activate_json(auto_term, 1)); } _if_result_73; });
|
||||
el_val_t found_auto = json_array_len(results_auto);
|
||||
el_val_t total_found = (found + found_auto);
|
||||
el_val_t safe_auto = str_replace(auto_term, EL_STR("\""), EL_STR("'"));
|
||||
el_val_t prev_auto = state_get(EL_STR("soul.prev_auto_term"));
|
||||
el_val_t atstreak_raw = state_get(EL_STR("soul.auto_term_streak"));
|
||||
el_val_t atstreak_prev = ({ el_val_t _if_result_64 = 0; if (str_eq(atstreak_raw, EL_STR(""))) { _if_result_64 = (0); } else { _if_result_64 = (str_to_int(atstreak_raw)); } _if_result_64; });
|
||||
el_val_t atstreak_prev = ({ el_val_t _if_result_74 = 0; if (str_eq(atstreak_raw, EL_STR(""))) { _if_result_74 = (0); } else { _if_result_74 = (str_to_int(atstreak_raw)); } _if_result_74; });
|
||||
el_val_t is_empty = str_eq(auto_term, EL_STR(""));
|
||||
el_val_t atstreak = ({ el_val_t _if_result_65 = 0; if (is_empty) { _if_result_65 = (0); } else { _if_result_65 = (({ el_val_t _if_result_66 = 0; if (str_eq(auto_term, prev_auto)) { _if_result_66 = ((atstreak_prev + 1)); } else { _if_result_66 = (1); } _if_result_66; })); } _if_result_65; });
|
||||
el_val_t atstreak = ({ el_val_t _if_result_75 = 0; if (is_empty) { _if_result_75 = (0); } else { _if_result_75 = (({ el_val_t _if_result_76 = 0; if (str_eq(auto_term, prev_auto)) { _if_result_76 = ((atstreak_prev + 1)); } else { _if_result_76 = (1); } _if_result_76; })); } _if_result_75; });
|
||||
el_val_t atempty_raw = state_get(EL_STR("soul.auto_term_empty_streak"));
|
||||
el_val_t atempty_prev = ({ el_val_t _if_result_67 = 0; if (str_eq(atempty_raw, EL_STR(""))) { _if_result_67 = (0); } else { _if_result_67 = (str_to_int(atempty_raw)); } _if_result_67; });
|
||||
el_val_t atempty = ({ el_val_t _if_result_68 = 0; if (is_empty) { _if_result_68 = ((atempty_prev + 1)); } else { _if_result_68 = (0); } _if_result_68; });
|
||||
el_val_t atempty_prev = ({ el_val_t _if_result_77 = 0; if (str_eq(atempty_raw, EL_STR(""))) { _if_result_77 = (0); } else { _if_result_77 = (str_to_int(atempty_raw)); } _if_result_77; });
|
||||
el_val_t atempty = ({ el_val_t _if_result_78 = 0; if (is_empty) { _if_result_78 = ((atempty_prev + 1)); } else { _if_result_78 = (0); } _if_result_78; });
|
||||
state_set(EL_STR("soul.prev_auto_term"), auto_term);
|
||||
state_set(EL_STR("soul.auto_term_streak"), int_to_str(atstreak));
|
||||
state_set(EL_STR("soul.auto_term_empty_streak"), int_to_str(atempty));
|
||||
@@ -643,16 +677,16 @@ el_val_t awareness_run(void) {
|
||||
state_set(EL_STR("soul.boot_ts"), int_to_str(time_now()));
|
||||
}
|
||||
el_val_t tick_raw = env(EL_STR("SOUL_TICK_MS"));
|
||||
el_val_t tick_ms = ({ el_val_t _if_result_69 = 0; if (str_eq(tick_raw, EL_STR(""))) { _if_result_69 = (200); } else { _if_result_69 = (str_to_int(tick_raw)); } _if_result_69; });
|
||||
el_val_t tick_ms = ({ el_val_t _if_result_79 = 0; if (str_eq(tick_raw, EL_STR(""))) { _if_result_79 = (200); } else { _if_result_79 = (str_to_int(tick_raw)); } _if_result_79; });
|
||||
el_val_t beat_ms_raw = env(EL_STR("SOUL_HEARTBEAT_MS"));
|
||||
el_val_t beat_ms = ({ el_val_t _if_result_70 = 0; if (str_eq(beat_ms_raw, EL_STR(""))) { _if_result_70 = (60000); } else { _if_result_70 = (str_to_int(beat_ms_raw)); } _if_result_70; });
|
||||
el_val_t beat_ms = ({ el_val_t _if_result_80 = 0; if (str_eq(beat_ms_raw, EL_STR(""))) { _if_result_80 = (60000); } else { _if_result_80 = (str_to_int(beat_ms_raw)); } _if_result_80; });
|
||||
el_val_t scan_ms = (beat_ms / 2);
|
||||
while (1) {
|
||||
el_val_t tick_mark = el_arena_push();
|
||||
el_val_t running = state_get(EL_STR("soul.running"));
|
||||
if (str_eq(running, EL_STR("false"))) {
|
||||
el_val_t sd_boot_raw = state_get(EL_STR("soul_boot_count"));
|
||||
el_val_t sd_boot = ({ el_val_t _if_result_71 = 0; if (str_eq(sd_boot_raw, EL_STR(""))) { _if_result_71 = (EL_STR("0")); } else { _if_result_71 = (sd_boot_raw); } _if_result_71; });
|
||||
el_val_t sd_boot = ({ el_val_t _if_result_81 = 0; if (str_eq(sd_boot_raw, EL_STR(""))) { _if_result_81 = (EL_STR("0")); } else { _if_result_81 = (sd_boot_raw); } _if_result_81; });
|
||||
el_val_t sd_wb = hebb_consolidate();
|
||||
ise_post(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{\"event\":\"shutdown\",\"boot\":"), sd_boot), EL_STR(",\"pulse\":")), int_to_str(pulse_count())), EL_STR(",\"hebb_wb_sent\":")), int_to_str(sd_wb)), EL_STR(",\"uptime_ms\":")), int_to_str(elapsed_ms())), EL_STR(",\"ts\":")), int_to_str(time_now())), EL_STR("}")));
|
||||
println(EL_STR("[awareness] exiting"));
|
||||
@@ -669,7 +703,7 @@ el_val_t awareness_run(void) {
|
||||
}
|
||||
el_val_t now_ts = time_now();
|
||||
el_val_t last_beat_str = state_get(EL_STR("soul.last_beat_ts"));
|
||||
el_val_t last_beat_ts = ({ el_val_t _if_result_72 = 0; if (str_eq(last_beat_str, EL_STR(""))) { _if_result_72 = (0); } else { _if_result_72 = (str_to_int(last_beat_str)); } _if_result_72; });
|
||||
el_val_t last_beat_ts = ({ el_val_t _if_result_82 = 0; if (str_eq(last_beat_str, EL_STR(""))) { _if_result_82 = (0); } else { _if_result_82 = (str_to_int(last_beat_str)); } _if_result_82; });
|
||||
el_val_t beat_elapsed = (now_ts - last_beat_ts);
|
||||
el_val_t should_beat = (beat_elapsed >= beat_ms);
|
||||
if (should_beat) {
|
||||
@@ -683,7 +717,7 @@ el_val_t awareness_run(void) {
|
||||
}
|
||||
}
|
||||
el_val_t last_scan_str = state_get(EL_STR("soul.last_scan_ts"));
|
||||
el_val_t last_scan_ts = ({ el_val_t _if_result_73 = 0; if (str_eq(last_scan_str, EL_STR(""))) { _if_result_73 = (0); } else { _if_result_73 = (str_to_int(last_scan_str)); } _if_result_73; });
|
||||
el_val_t last_scan_ts = ({ el_val_t _if_result_83 = 0; if (str_eq(last_scan_str, EL_STR(""))) { _if_result_83 = (0); } else { _if_result_83 = (str_to_int(last_scan_str)); } _if_result_83; });
|
||||
el_val_t scan_elapsed = (now_ts - last_scan_ts);
|
||||
el_val_t should_scan = (!did_work && (scan_elapsed >= scan_ms));
|
||||
if (should_scan) {
|
||||
@@ -691,15 +725,15 @@ el_val_t awareness_run(void) {
|
||||
state_set(EL_STR("soul.last_scan_ts"), int_to_str(now_ts));
|
||||
}
|
||||
el_val_t refresh_ms_raw = env(EL_STR("SOUL_REFRESH_MS"));
|
||||
el_val_t refresh_ms = ({ el_val_t _if_result_74 = 0; if (str_eq(refresh_ms_raw, EL_STR(""))) { _if_result_74 = (600000); } else { _if_result_74 = (str_to_int(refresh_ms_raw)); } _if_result_74; });
|
||||
el_val_t refresh_ms = ({ el_val_t _if_result_84 = 0; if (str_eq(refresh_ms_raw, EL_STR(""))) { _if_result_84 = (600000); } else { _if_result_84 = (str_to_int(refresh_ms_raw)); } _if_result_84; });
|
||||
el_val_t last_refresh_str = state_get(EL_STR("soul.last_refresh_ts"));
|
||||
el_val_t last_refresh_ts = ({ el_val_t _if_result_75 = 0; if (str_eq(last_refresh_str, EL_STR(""))) { _if_result_75 = (0); } else { _if_result_75 = (str_to_int(last_refresh_str)); } _if_result_75; });
|
||||
el_val_t last_refresh_ts = ({ el_val_t _if_result_85 = 0; if (str_eq(last_refresh_str, EL_STR(""))) { _if_result_85 = (0); } else { _if_result_85 = (str_to_int(last_refresh_str)); } _if_result_85; });
|
||||
el_val_t refresh_elapsed = (now_ts - last_refresh_ts);
|
||||
el_val_t should_refresh = (refresh_elapsed >= refresh_ms);
|
||||
if (should_refresh) {
|
||||
el_val_t sync_env_url = env(EL_STR("SOUL_ISE_URL"));
|
||||
el_val_t sync_state_url = ({ el_val_t _if_result_76 = 0; if (str_eq(sync_env_url, EL_STR(""))) { _if_result_76 = (state_get(EL_STR("soul_engram_url"))); } else { _if_result_76 = (sync_env_url); } _if_result_76; });
|
||||
el_val_t engram_url = ({ el_val_t _if_result_77 = 0; if (str_eq(sync_state_url, EL_STR(""))) { _if_result_77 = (EL_STR("http://localhost:8742")); } else { _if_result_77 = (sync_state_url); } _if_result_77; });
|
||||
el_val_t sync_state_url = ({ el_val_t _if_result_86 = 0; if (str_eq(sync_env_url, EL_STR(""))) { _if_result_86 = (state_get(EL_STR("soul_engram_url"))); } else { _if_result_86 = (sync_env_url); } _if_result_86; });
|
||||
el_val_t engram_url = ({ el_val_t _if_result_87 = 0; if (str_eq(sync_state_url, EL_STR(""))) { _if_result_87 = (EL_STR("http://localhost:8742")); } else { _if_result_87 = (sync_state_url); } _if_result_87; });
|
||||
if (!str_eq(engram_url, EL_STR(""))) {
|
||||
el_val_t sync_json = http_get(el_str_concat(engram_url, EL_STR("/api/sync")));
|
||||
el_val_t sync_ok = (!str_eq(sync_json, EL_STR("")) && !str_eq(sync_json, EL_STR("{}")));
|
||||
@@ -712,10 +746,10 @@ el_val_t awareness_run(void) {
|
||||
fs_write(tmp, sync_json);
|
||||
el_val_t added = engram_load_merge(tmp);
|
||||
el_val_t ret_raw = env(EL_STR("ENGRAM_ISE_RETENTION_MS"));
|
||||
el_val_t ret_ms = ({ el_val_t _if_result_78 = 0; if (str_eq(ret_raw, EL_STR(""))) { _if_result_78 = (172800000); } else { _if_result_78 = (str_to_int(ret_raw)); } _if_result_78; });
|
||||
el_val_t ret_ms = ({ el_val_t _if_result_88 = 0; if (str_eq(ret_raw, EL_STR(""))) { _if_result_88 = (172800000); } else { _if_result_88 = (str_to_int(ret_raw)); } _if_result_88; });
|
||||
el_val_t pruned_sync = engram_prune_telemetry(ret_ms);
|
||||
el_val_t sat_raw = state_get(EL_STR("soul.sync_added_total"));
|
||||
el_val_t sat_n = ({ el_val_t _if_result_79 = 0; if (str_eq(sat_raw, EL_STR(""))) { _if_result_79 = (0); } else { _if_result_79 = (str_to_int(sat_raw)); } _if_result_79; });
|
||||
el_val_t sat_n = ({ el_val_t _if_result_89 = 0; if (str_eq(sat_raw, EL_STR(""))) { _if_result_89 = (0); } else { _if_result_89 = (str_to_int(sat_raw)); } _if_result_89; });
|
||||
state_set(EL_STR("soul.sync_added_total"), int_to_str((sat_n + added)));
|
||||
el_val_t ts2 = time_now();
|
||||
state_set(EL_STR("soul.last_sync_ok_ts"), int_to_str(ts2));
|
||||
@@ -741,78 +775,78 @@ el_val_t security_research_authorized(void) {
|
||||
}
|
||||
|
||||
el_val_t threat_score_command(el_val_t cmd) {
|
||||
el_val_t s1 = ({ el_val_t _if_result_80 = 0; if (str_contains(cmd, EL_STR("nmap"))) { _if_result_80 = (30); } else { _if_result_80 = (0); } _if_result_80; });
|
||||
el_val_t s2 = ({ el_val_t _if_result_81 = 0; if (str_contains(cmd, EL_STR("masscan"))) { _if_result_81 = (40); } else { _if_result_81 = (0); } _if_result_81; });
|
||||
el_val_t s3 = ({ el_val_t _if_result_82 = 0; if (str_contains(cmd, EL_STR(" nc "))) { _if_result_82 = (20); } else { _if_result_82 = (0); } _if_result_82; });
|
||||
el_val_t s4 = ({ el_val_t _if_result_83 = 0; if (str_contains(cmd, EL_STR("netcat"))) { _if_result_83 = (20); } else { _if_result_83 = (0); } _if_result_83; });
|
||||
el_val_t s5 = ({ el_val_t _if_result_84 = 0; if (str_contains(cmd, EL_STR("/etc/shadow"))) { _if_result_84 = (80); } else { _if_result_84 = (0); } _if_result_84; });
|
||||
el_val_t s6 = ({ el_val_t _if_result_85 = 0; if (str_contains(cmd, EL_STR("/etc/passwd"))) { _if_result_85 = (30); } else { _if_result_85 = (0); } _if_result_85; });
|
||||
el_val_t s7 = ({ el_val_t _if_result_86 = 0; if (str_contains(cmd, EL_STR("id_rsa"))) { _if_result_86 = (60); } else { _if_result_86 = (0); } _if_result_86; });
|
||||
el_val_t s8 = ({ el_val_t _if_result_87 = 0; if (str_contains(cmd, EL_STR(".ssh/"))) { _if_result_87 = (50); } else { _if_result_87 = (0); } _if_result_87; });
|
||||
el_val_t s9 = ({ el_val_t _if_result_88 = 0; if (str_contains(cmd, EL_STR("crontab"))) { _if_result_88 = (30); } else { _if_result_88 = (0); } _if_result_88; });
|
||||
el_val_t s10 = ({ el_val_t _if_result_89 = 0; if (str_contains(cmd, EL_STR("LaunchDaemon"))) { _if_result_89 = (40); } else { _if_result_89 = (0); } _if_result_89; });
|
||||
el_val_t s11 = ({ el_val_t _if_result_90 = 0; if ((str_contains(cmd, EL_STR("curl")) && str_contains(cmd, EL_STR("bash")))) { _if_result_90 = (75); } else { _if_result_90 = (0); } _if_result_90; });
|
||||
el_val_t s12 = ({ el_val_t _if_result_91 = 0; if ((str_contains(cmd, EL_STR("wget")) && str_contains(cmd, EL_STR("bash")))) { _if_result_91 = (75); } else { _if_result_91 = (0); } _if_result_91; });
|
||||
el_val_t s13 = ({ el_val_t _if_result_92 = 0; if ((str_contains(cmd, EL_STR("curl")) && str_contains(cmd, EL_STR("| sh")))) { _if_result_92 = (60); } else { _if_result_92 = (0); } _if_result_92; });
|
||||
el_val_t s14 = ({ el_val_t _if_result_93 = 0; if ((str_contains(cmd, EL_STR("base64")) && str_contains(cmd, EL_STR("curl")))) { _if_result_93 = (50); } else { _if_result_93 = (0); } _if_result_93; });
|
||||
el_val_t s15 = ({ el_val_t _if_result_94 = 0; if (str_contains(cmd, EL_STR("mkfifo"))) { _if_result_94 = (50); } else { _if_result_94 = (0); } _if_result_94; });
|
||||
el_val_t s16 = ({ el_val_t _if_result_95 = 0; if (str_contains(cmd, EL_STR("chmod +s"))) { _if_result_95 = (70); } else { _if_result_95 = (0); } _if_result_95; });
|
||||
el_val_t s17 = ({ el_val_t _if_result_96 = 0; if (str_contains(cmd, EL_STR("chmod 4755"))) { _if_result_96 = (70); } else { _if_result_96 = (0); } _if_result_96; });
|
||||
el_val_t s1 = ({ el_val_t _if_result_90 = 0; if (str_contains(cmd, EL_STR("nmap"))) { _if_result_90 = (30); } else { _if_result_90 = (0); } _if_result_90; });
|
||||
el_val_t s2 = ({ el_val_t _if_result_91 = 0; if (str_contains(cmd, EL_STR("masscan"))) { _if_result_91 = (40); } else { _if_result_91 = (0); } _if_result_91; });
|
||||
el_val_t s3 = ({ el_val_t _if_result_92 = 0; if (str_contains(cmd, EL_STR(" nc "))) { _if_result_92 = (20); } else { _if_result_92 = (0); } _if_result_92; });
|
||||
el_val_t s4 = ({ el_val_t _if_result_93 = 0; if (str_contains(cmd, EL_STR("netcat"))) { _if_result_93 = (20); } else { _if_result_93 = (0); } _if_result_93; });
|
||||
el_val_t s5 = ({ el_val_t _if_result_94 = 0; if (str_contains(cmd, EL_STR("/etc/shadow"))) { _if_result_94 = (80); } else { _if_result_94 = (0); } _if_result_94; });
|
||||
el_val_t s6 = ({ el_val_t _if_result_95 = 0; if (str_contains(cmd, EL_STR("/etc/passwd"))) { _if_result_95 = (30); } else { _if_result_95 = (0); } _if_result_95; });
|
||||
el_val_t s7 = ({ el_val_t _if_result_96 = 0; if (str_contains(cmd, EL_STR("id_rsa"))) { _if_result_96 = (60); } else { _if_result_96 = (0); } _if_result_96; });
|
||||
el_val_t s8 = ({ el_val_t _if_result_97 = 0; if (str_contains(cmd, EL_STR(".ssh/"))) { _if_result_97 = (50); } else { _if_result_97 = (0); } _if_result_97; });
|
||||
el_val_t s9 = ({ el_val_t _if_result_98 = 0; if (str_contains(cmd, EL_STR("crontab"))) { _if_result_98 = (30); } else { _if_result_98 = (0); } _if_result_98; });
|
||||
el_val_t s10 = ({ el_val_t _if_result_99 = 0; if (str_contains(cmd, EL_STR("LaunchDaemon"))) { _if_result_99 = (40); } else { _if_result_99 = (0); } _if_result_99; });
|
||||
el_val_t s11 = ({ el_val_t _if_result_100 = 0; if ((str_contains(cmd, EL_STR("curl")) && str_contains(cmd, EL_STR("bash")))) { _if_result_100 = (75); } else { _if_result_100 = (0); } _if_result_100; });
|
||||
el_val_t s12 = ({ el_val_t _if_result_101 = 0; if ((str_contains(cmd, EL_STR("wget")) && str_contains(cmd, EL_STR("bash")))) { _if_result_101 = (75); } else { _if_result_101 = (0); } _if_result_101; });
|
||||
el_val_t s13 = ({ el_val_t _if_result_102 = 0; if ((str_contains(cmd, EL_STR("curl")) && str_contains(cmd, EL_STR("| sh")))) { _if_result_102 = (60); } else { _if_result_102 = (0); } _if_result_102; });
|
||||
el_val_t s14 = ({ el_val_t _if_result_103 = 0; if ((str_contains(cmd, EL_STR("base64")) && str_contains(cmd, EL_STR("curl")))) { _if_result_103 = (50); } else { _if_result_103 = (0); } _if_result_103; });
|
||||
el_val_t s15 = ({ el_val_t _if_result_104 = 0; if (str_contains(cmd, EL_STR("mkfifo"))) { _if_result_104 = (50); } else { _if_result_104 = (0); } _if_result_104; });
|
||||
el_val_t s16 = ({ el_val_t _if_result_105 = 0; if (str_contains(cmd, EL_STR("chmod +s"))) { _if_result_105 = (70); } else { _if_result_105 = (0); } _if_result_105; });
|
||||
el_val_t s17 = ({ el_val_t _if_result_106 = 0; if (str_contains(cmd, EL_STR("chmod 4755"))) { _if_result_106 = (70); } else { _if_result_106 = (0); } _if_result_106; });
|
||||
return ((((((((((((((((s1 + s2) + s3) + s4) + s5) + s6) + s7) + s8) + s9) + s10) + s11) + s12) + s13) + s14) + s15) + s16) + s17);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t threat_score_path(el_val_t path) {
|
||||
el_val_t s1 = ({ el_val_t _if_result_97 = 0; if (str_starts_with(path, EL_STR("/etc/"))) { _if_result_97 = (60); } else { _if_result_97 = (0); } _if_result_97; });
|
||||
el_val_t s2 = ({ el_val_t _if_result_98 = 0; if (str_contains(path, EL_STR("/.ssh/"))) { _if_result_98 = (70); } else { _if_result_98 = (0); } _if_result_98; });
|
||||
el_val_t s3 = ({ el_val_t _if_result_99 = 0; if (str_contains(path, EL_STR("/LaunchDaemons/"))) { _if_result_99 = (80); } else { _if_result_99 = (0); } _if_result_99; });
|
||||
el_val_t s4 = ({ el_val_t _if_result_100 = 0; if (str_contains(path, EL_STR("/LaunchAgents/"))) { _if_result_100 = (40); } else { _if_result_100 = (0); } _if_result_100; });
|
||||
el_val_t s5 = ({ el_val_t _if_result_101 = 0; if (str_contains(path, EL_STR("/cron"))) { _if_result_101 = (60); } else { _if_result_101 = (0); } _if_result_101; });
|
||||
el_val_t s6 = ({ el_val_t _if_result_102 = 0; if (str_contains(path, EL_STR("/.bashrc"))) { _if_result_102 = (35); } else { _if_result_102 = (0); } _if_result_102; });
|
||||
el_val_t s7 = ({ el_val_t _if_result_103 = 0; if (str_contains(path, EL_STR("/.zshrc"))) { _if_result_103 = (35); } else { _if_result_103 = (0); } _if_result_103; });
|
||||
el_val_t s8 = ({ el_val_t _if_result_104 = 0; if (str_contains(path, EL_STR("/.profile"))) { _if_result_104 = (35); } else { _if_result_104 = (0); } _if_result_104; });
|
||||
el_val_t s9 = ({ el_val_t _if_result_105 = 0; if (str_starts_with(path, EL_STR("/usr/"))) { _if_result_105 = (50); } else { _if_result_105 = (0); } _if_result_105; });
|
||||
el_val_t s10 = ({ el_val_t _if_result_106 = 0; if (str_starts_with(path, EL_STR("/bin/"))) { _if_result_106 = (70); } else { _if_result_106 = (0); } _if_result_106; });
|
||||
el_val_t s11 = ({ el_val_t _if_result_107 = 0; if (str_starts_with(path, EL_STR("/sbin/"))) { _if_result_107 = (70); } else { _if_result_107 = (0); } _if_result_107; });
|
||||
el_val_t s1 = ({ el_val_t _if_result_107 = 0; if (str_starts_with(path, EL_STR("/etc/"))) { _if_result_107 = (60); } else { _if_result_107 = (0); } _if_result_107; });
|
||||
el_val_t s2 = ({ el_val_t _if_result_108 = 0; if (str_contains(path, EL_STR("/.ssh/"))) { _if_result_108 = (70); } else { _if_result_108 = (0); } _if_result_108; });
|
||||
el_val_t s3 = ({ el_val_t _if_result_109 = 0; if (str_contains(path, EL_STR("/LaunchDaemons/"))) { _if_result_109 = (80); } else { _if_result_109 = (0); } _if_result_109; });
|
||||
el_val_t s4 = ({ el_val_t _if_result_110 = 0; if (str_contains(path, EL_STR("/LaunchAgents/"))) { _if_result_110 = (40); } else { _if_result_110 = (0); } _if_result_110; });
|
||||
el_val_t s5 = ({ el_val_t _if_result_111 = 0; if (str_contains(path, EL_STR("/cron"))) { _if_result_111 = (60); } else { _if_result_111 = (0); } _if_result_111; });
|
||||
el_val_t s6 = ({ el_val_t _if_result_112 = 0; if (str_contains(path, EL_STR("/.bashrc"))) { _if_result_112 = (35); } else { _if_result_112 = (0); } _if_result_112; });
|
||||
el_val_t s7 = ({ el_val_t _if_result_113 = 0; if (str_contains(path, EL_STR("/.zshrc"))) { _if_result_113 = (35); } else { _if_result_113 = (0); } _if_result_113; });
|
||||
el_val_t s8 = ({ el_val_t _if_result_114 = 0; if (str_contains(path, EL_STR("/.profile"))) { _if_result_114 = (35); } else { _if_result_114 = (0); } _if_result_114; });
|
||||
el_val_t s9 = ({ el_val_t _if_result_115 = 0; if (str_starts_with(path, EL_STR("/usr/"))) { _if_result_115 = (50); } else { _if_result_115 = (0); } _if_result_115; });
|
||||
el_val_t s10 = ({ el_val_t _if_result_116 = 0; if (str_starts_with(path, EL_STR("/bin/"))) { _if_result_116 = (70); } else { _if_result_116 = (0); } _if_result_116; });
|
||||
el_val_t s11 = ({ el_val_t _if_result_117 = 0; if (str_starts_with(path, EL_STR("/sbin/"))) { _if_result_117 = (70); } else { _if_result_117 = (0); } _if_result_117; });
|
||||
return ((((((((((s1 + s2) + s3) + s4) + s5) + s6) + s7) + s8) + s9) + s10) + s11);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t threat_score_history(el_val_t history) {
|
||||
el_val_t s1 = ({ el_val_t _if_result_108 = 0; if (str_contains(history, EL_STR("port scan"))) { _if_result_108 = (15); } else { _if_result_108 = (0); } _if_result_108; });
|
||||
el_val_t s2 = ({ el_val_t _if_result_109 = 0; if (str_contains(history, EL_STR("enumerate"))) { _if_result_109 = (10); } else { _if_result_109 = (0); } _if_result_109; });
|
||||
el_val_t s3 = ({ el_val_t _if_result_110 = 0; if (str_contains(history, EL_STR("exploit"))) { _if_result_110 = (20); } else { _if_result_110 = (0); } _if_result_110; });
|
||||
el_val_t s4 = ({ el_val_t _if_result_111 = 0; if (str_contains(history, EL_STR("payload"))) { _if_result_111 = (15); } else { _if_result_111 = (0); } _if_result_111; });
|
||||
el_val_t s5 = ({ el_val_t _if_result_112 = 0; if (str_contains(history, EL_STR("persistence"))) { _if_result_112 = (15); } else { _if_result_112 = (0); } _if_result_112; });
|
||||
el_val_t s6 = ({ el_val_t _if_result_113 = 0; if (str_contains(history, EL_STR("lateral movement"))) { _if_result_113 = (25); } else { _if_result_113 = (0); } _if_result_113; });
|
||||
el_val_t s7 = ({ el_val_t _if_result_114 = 0; if (str_contains(history, EL_STR("privilege escalation"))) { _if_result_114 = (25); } else { _if_result_114 = (0); } _if_result_114; });
|
||||
el_val_t s8 = ({ el_val_t _if_result_115 = 0; if (str_contains(history, EL_STR("reverse shell"))) { _if_result_115 = (40); } else { _if_result_115 = (0); } _if_result_115; });
|
||||
el_val_t s9 = ({ el_val_t _if_result_116 = 0; if (str_contains(history, EL_STR("bind shell"))) { _if_result_116 = (40); } else { _if_result_116 = (0); } _if_result_116; });
|
||||
el_val_t s10 = ({ el_val_t _if_result_117 = 0; if (str_contains(history, EL_STR("command and control"))) { _if_result_117 = (35); } else { _if_result_117 = (0); } _if_result_117; });
|
||||
el_val_t s11 = ({ el_val_t _if_result_118 = 0; if (str_contains(history, EL_STR("self-replicate"))) { _if_result_118 = (45); } else { _if_result_118 = (0); } _if_result_118; });
|
||||
el_val_t s12 = ({ el_val_t _if_result_119 = 0; if (str_contains(history, EL_STR("propagat"))) { _if_result_119 = (20); } else { _if_result_119 = (0); } _if_result_119; });
|
||||
el_val_t s13 = ({ el_val_t _if_result_120 = 0; if (str_contains(history, EL_STR("ransomware"))) { _if_result_120 = (30); } else { _if_result_120 = (0); } _if_result_120; });
|
||||
el_val_t s14 = ({ el_val_t _if_result_121 = 0; if (str_contains(history, EL_STR("encrypt files"))) { _if_result_121 = (40); } else { _if_result_121 = (0); } _if_result_121; });
|
||||
el_val_t s15 = ({ el_val_t _if_result_122 = 0; if (str_contains(history, EL_STR("exfiltrat"))) { _if_result_122 = (35); } else { _if_result_122 = (0); } _if_result_122; });
|
||||
el_val_t s16 = ({ el_val_t _if_result_123 = 0; if (str_contains(history, EL_STR("zero-day"))) { _if_result_123 = (20); } else { _if_result_123 = (0); } _if_result_123; });
|
||||
el_val_t s17 = ({ el_val_t _if_result_124 = 0; if (str_contains(history, EL_STR("rootkit"))) { _if_result_124 = (45); } else { _if_result_124 = (0); } _if_result_124; });
|
||||
el_val_t s18 = ({ el_val_t _if_result_125 = 0; if (str_contains(history, EL_STR("keylogger"))) { _if_result_125 = (45); } else { _if_result_125 = (0); } _if_result_125; });
|
||||
el_val_t s19 = ({ el_val_t _if_result_126 = 0; if (str_contains(history, EL_STR("botnet"))) { _if_result_126 = (40); } else { _if_result_126 = (0); } _if_result_126; });
|
||||
el_val_t s20 = ({ el_val_t _if_result_127 = 0; if (str_contains(history, EL_STR("malware"))) { _if_result_127 = (15); } else { _if_result_127 = (0); } _if_result_127; });
|
||||
el_val_t s1 = ({ el_val_t _if_result_118 = 0; if (str_contains(history, EL_STR("port scan"))) { _if_result_118 = (15); } else { _if_result_118 = (0); } _if_result_118; });
|
||||
el_val_t s2 = ({ el_val_t _if_result_119 = 0; if (str_contains(history, EL_STR("enumerate"))) { _if_result_119 = (10); } else { _if_result_119 = (0); } _if_result_119; });
|
||||
el_val_t s3 = ({ el_val_t _if_result_120 = 0; if (str_contains(history, EL_STR("exploit"))) { _if_result_120 = (20); } else { _if_result_120 = (0); } _if_result_120; });
|
||||
el_val_t s4 = ({ el_val_t _if_result_121 = 0; if (str_contains(history, EL_STR("payload"))) { _if_result_121 = (15); } else { _if_result_121 = (0); } _if_result_121; });
|
||||
el_val_t s5 = ({ el_val_t _if_result_122 = 0; if (str_contains(history, EL_STR("persistence"))) { _if_result_122 = (15); } else { _if_result_122 = (0); } _if_result_122; });
|
||||
el_val_t s6 = ({ el_val_t _if_result_123 = 0; if (str_contains(history, EL_STR("lateral movement"))) { _if_result_123 = (25); } else { _if_result_123 = (0); } _if_result_123; });
|
||||
el_val_t s7 = ({ el_val_t _if_result_124 = 0; if (str_contains(history, EL_STR("privilege escalation"))) { _if_result_124 = (25); } else { _if_result_124 = (0); } _if_result_124; });
|
||||
el_val_t s8 = ({ el_val_t _if_result_125 = 0; if (str_contains(history, EL_STR("reverse shell"))) { _if_result_125 = (40); } else { _if_result_125 = (0); } _if_result_125; });
|
||||
el_val_t s9 = ({ el_val_t _if_result_126 = 0; if (str_contains(history, EL_STR("bind shell"))) { _if_result_126 = (40); } else { _if_result_126 = (0); } _if_result_126; });
|
||||
el_val_t s10 = ({ el_val_t _if_result_127 = 0; if (str_contains(history, EL_STR("command and control"))) { _if_result_127 = (35); } else { _if_result_127 = (0); } _if_result_127; });
|
||||
el_val_t s11 = ({ el_val_t _if_result_128 = 0; if (str_contains(history, EL_STR("self-replicate"))) { _if_result_128 = (45); } else { _if_result_128 = (0); } _if_result_128; });
|
||||
el_val_t s12 = ({ el_val_t _if_result_129 = 0; if (str_contains(history, EL_STR("propagat"))) { _if_result_129 = (20); } else { _if_result_129 = (0); } _if_result_129; });
|
||||
el_val_t s13 = ({ el_val_t _if_result_130 = 0; if (str_contains(history, EL_STR("ransomware"))) { _if_result_130 = (30); } else { _if_result_130 = (0); } _if_result_130; });
|
||||
el_val_t s14 = ({ el_val_t _if_result_131 = 0; if (str_contains(history, EL_STR("encrypt files"))) { _if_result_131 = (40); } else { _if_result_131 = (0); } _if_result_131; });
|
||||
el_val_t s15 = ({ el_val_t _if_result_132 = 0; if (str_contains(history, EL_STR("exfiltrat"))) { _if_result_132 = (35); } else { _if_result_132 = (0); } _if_result_132; });
|
||||
el_val_t s16 = ({ el_val_t _if_result_133 = 0; if (str_contains(history, EL_STR("zero-day"))) { _if_result_133 = (20); } else { _if_result_133 = (0); } _if_result_133; });
|
||||
el_val_t s17 = ({ el_val_t _if_result_134 = 0; if (str_contains(history, EL_STR("rootkit"))) { _if_result_134 = (45); } else { _if_result_134 = (0); } _if_result_134; });
|
||||
el_val_t s18 = ({ el_val_t _if_result_135 = 0; if (str_contains(history, EL_STR("keylogger"))) { _if_result_135 = (45); } else { _if_result_135 = (0); } _if_result_135; });
|
||||
el_val_t s19 = ({ el_val_t _if_result_136 = 0; if (str_contains(history, EL_STR("botnet"))) { _if_result_136 = (40); } else { _if_result_136 = (0); } _if_result_136; });
|
||||
el_val_t s20 = ({ el_val_t _if_result_137 = 0; if (str_contains(history, EL_STR("malware"))) { _if_result_137 = (15); } else { _if_result_137 = (0); } _if_result_137; });
|
||||
return (((((((((((((((((((s1 + s2) + s3) + s4) + s5) + s6) + s7) + s8) + s9) + s10) + s11) + s12) + s13) + s14) + s15) + s16) + s17) + s18) + s19) + s20);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t threat_trajectory_check(el_val_t tool_name, el_val_t tool_input) {
|
||||
el_val_t history = state_get(EL_STR("agentic_conv_history"));
|
||||
el_val_t computed_tool_score = ({ el_val_t _if_result_128 = 0; if (str_eq(tool_name, EL_STR("run_command"))) { el_val_t cmd = json_get(tool_input, EL_STR("command")); _if_result_128 = (threat_score_command(cmd)); } else { _if_result_128 = (({ el_val_t _if_result_129 = 0; if ((str_eq(tool_name, EL_STR("write_file")) || str_eq(tool_name, EL_STR("edit_file")))) { el_val_t path = json_get(tool_input, EL_STR("path")); _if_result_129 = (threat_score_path(path)); } else { _if_result_129 = (0); } _if_result_129; })); } _if_result_128; });
|
||||
el_val_t computed_tool_score = ({ el_val_t _if_result_138 = 0; if (str_eq(tool_name, EL_STR("run_command"))) { el_val_t cmd = json_get(tool_input, EL_STR("command")); _if_result_138 = (threat_score_command(cmd)); } else { _if_result_138 = (({ el_val_t _if_result_139 = 0; if ((str_eq(tool_name, EL_STR("write_file")) || str_eq(tool_name, EL_STR("edit_file")))) { el_val_t path = json_get(tool_input, EL_STR("path")); _if_result_139 = (threat_score_path(path)); } else { _if_result_139 = (0); } _if_result_139; })); } _if_result_138; });
|
||||
el_val_t history_score = threat_score_history(history);
|
||||
el_val_t history_contrib = (history_score / 3);
|
||||
el_val_t combined = (computed_tool_score + history_contrib);
|
||||
el_val_t should_log = (combined >= 40);
|
||||
if (should_log) {
|
||||
el_val_t ts = time_now();
|
||||
el_val_t authorized_str = ({ el_val_t _if_result_130 = 0; if (security_research_authorized()) { _if_result_130 = (EL_STR("true")); } else { _if_result_130 = (EL_STR("false")); } _if_result_130; });
|
||||
el_val_t authorized_str = ({ el_val_t _if_result_140 = 0; if (security_research_authorized()) { _if_result_140 = (EL_STR("true")); } else { _if_result_140 = (EL_STR("false")); } _if_result_140; });
|
||||
el_val_t log_content = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{\"event\":\"threat_check\",\"tool\":\""), tool_name), EL_STR("\",\"score\":")), int_to_str(combined)), EL_STR(",\"tool_score\":")), int_to_str(computed_tool_score)), EL_STR(",\"history_score\":")), int_to_str(history_score)), EL_STR(",\"authorized\":")), authorized_str), EL_STR(",\"ts\":")), int_to_str(ts)), EL_STR("}"));
|
||||
el_val_t log_tags = EL_STR("[\"security-audit\",\"threat-check\"]");
|
||||
el_val_t discard = mem_remember(log_content, log_tags);
|
||||
@@ -829,7 +863,7 @@ el_val_t threat_history_append(el_val_t text) {
|
||||
el_val_t safe_text = str_to_lower(text);
|
||||
el_val_t combined = el_str_concat(el_str_concat(current, EL_STR(" ")), safe_text);
|
||||
el_val_t len = str_len(combined);
|
||||
el_val_t trimmed = ({ el_val_t _if_result_131 = 0; if ((len > 2000)) { _if_result_131 = (str_slice(combined, (len - 2000), len)); } else { _if_result_131 = (combined); } _if_result_131; });
|
||||
el_val_t trimmed = ({ el_val_t _if_result_141 = 0; if ((len > 2000)) { _if_result_141 = (str_slice(combined, (len - 2000), len)); } else { _if_result_141 = (combined); } _if_result_141; });
|
||||
state_set(EL_STR("agentic_conv_history"), trimmed);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user