self-review 2026-06-11: add WM-autobiographical curiosity seed
proactive_curiosity() now uses the top working-memory node's first label word as a 4th activation seed alongside the 4 rotating fixed sets. This breaks deterministic exploration that was reinforcing the same subgraph every cycle and creates a self-referencing loop: curiosity radiates from whatever is most salient right now, mirroring the brain's default-mode- network resting-state dynamics. str_find_chars on " :([" extracts the first meaningful word; sp > 3 guards against bracket-prefixed labels. auto_term field added to curiosity_scan ISE for observability.
This commit is contained in:
+30
-2
@@ -209,14 +209,42 @@ fn proactive_curiosity() -> Bool {
|
||||
let found_b: Int = json_array_len(results_b)
|
||||
let found_c: Int = json_array_len(results_c)
|
||||
let found: Int = found_a + found_b + found_c
|
||||
|
||||
// WM-autobiographical 4th seed: extract the first word from the top working-memory
|
||||
// node's label and activate it as an additional term. This creates a self-referencing
|
||||
// curiosity loop — exploration radiates outward from whatever is most salient right now,
|
||||
// mirroring the brain's default-mode-network resting-state dynamics. Breaks the fixed
|
||||
// 4-set determinism that otherwise reinforces the same subgraph every rotation cycle.
|
||||
//
|
||||
// str_find_chars finds the first space/colon/bracket delimiter. sp > 3 guards against
|
||||
// very short or bracket-prefixed labels like "[BacklogItem]" (sp=0, not > 3 → skipped).
|
||||
// EL scoping: state_set/state_get pattern used because let inside if creates inner scope.
|
||||
// (2026-06-11 self-review)
|
||||
state_set("cseed_auto", "")
|
||||
let wm_top_j: String = engram_wm_top_json(1)
|
||||
let wm_top_n: String = json_array_get(wm_top_j, 0)
|
||||
let wm_top_lbl: String = json_get(wm_top_n, "label")
|
||||
if !str_eq(wm_top_lbl, "") {
|
||||
let sp: Int = str_find_chars(wm_top_lbl, " :([")
|
||||
if sp > 3 {
|
||||
state_set("cseed_auto", str_slice(wm_top_lbl, 0, sp))
|
||||
}
|
||||
}
|
||||
let auto_term: String = state_get("cseed_auto")
|
||||
let results_auto: String = if str_eq(auto_term, "") { "[]" } else { engram_activate_json(auto_term, 1) }
|
||||
let found_auto: Int = json_array_len(results_auto)
|
||||
let total_found: Int = found + found_auto
|
||||
let safe_auto: String = str_replace(auto_term, "\"", "'")
|
||||
|
||||
let wmc: Int = engram_wm_count()
|
||||
let ise: String = "{\"event\":\"curiosity_scan\",\"seed\":\"" + curiosity_seed
|
||||
+ "\",\"auto_term\":\"" + safe_auto
|
||||
+ "\",\"minute_block\":" + int_to_str(minute_block)
|
||||
+ ",\"activated\":" + int_to_str(found)
|
||||
+ ",\"activated\":" + int_to_str(total_found)
|
||||
+ ",\"wm_active\":" + int_to_str(wmc)
|
||||
+ ",\"ts\":" + int_to_str(ts) + "}"
|
||||
ise_post(ise)
|
||||
return found > 0
|
||||
return total_found > 0
|
||||
}
|
||||
|
||||
fn pulse_count() -> Int {
|
||||
|
||||
Reference in New Issue
Block a user