M-INTEROCEPTION P2: chronoception — age the activation field by measured wall-clock delta (ENGRAM_CHRONOCEPTION, default OFF)
The felt passage of time is the cooling of the activation field, not a tick count and not an elapsed-seconds readout. engram_age_field(delta_ms) cools the field (working_memory_weight + background_activation) by the caller's MEASURED wall-clock delta with a pure exponential exp(-dt/TC) — no per-call floor — so it is exactly scale-invariant: N ticks summing to the same elapsed time produce the same total cooling. It returns the cooling MAGNITUDE (1-exp(-dt/TC), a bounded [0,1) drift signal), never elapsed seconds. Reboot = anesthesia: a global last-tick wall-clock stamp is persisted to a sidecar (chrono_last_tick) in the data dir. engram_age_field_catchup() reads it on boot, applies ONE cooling for the whole unconscious gap, refreshes the stamp, and reports the magnitude — timestamps are bookkeeping to COMPUTE the drift, never the felt signal. TC env-tunable via ENGRAM_CHRONO_TC (default 3600s). All inert unless ENGRAM_CHRONOCEPTION is set → OFF path byte-identical. MEASURED on a copy (throwaway HOME, TC=3600s): - Cooling scales with dt, matching 1-exp(-dt/TC) to 1e-6: dt=600s->0.1535, 1800s->0.3935, 3600s->0.6321, 7200s->0.8647. - Scale-invariance EXACT: age(dt) once vs age(dt/N) N times gives identical field sum (|delta|=0.0) for N=2, 10, 100. - Reboot catch-up over a 1h gap cooled the field 0.60->0.4415 in one shot, magnitude 0.6321, bounded in [0,1). - Flag OFF: age & catchup return 0, field untouched (sum 1.2). ASan+UBSan clean.
This commit is contained in:
@@ -623,6 +623,9 @@ el_val_t engram_scan_nodes_json(el_val_t limit, el_val_t offset);
|
||||
el_val_t engram_scan_nodes_by_type_json(el_val_t node_type, el_val_t limit, el_val_t offset);
|
||||
el_val_t engram_scan_nodes_emb_json(el_val_t limit, el_val_t offset);
|
||||
el_val_t engram_consolidate_permanence(el_val_t node_id);
|
||||
el_val_t engram_age_field(el_val_t delta_ms);
|
||||
el_val_t engram_age_field_catchup(void);
|
||||
el_val_t engram_chrono_persist_tick(void);
|
||||
el_val_t engram_neighbors_json(el_val_t node_id, el_val_t max_depth, el_val_t direction);
|
||||
el_val_t engram_activate_json(el_val_t query, el_val_t depth);
|
||||
el_val_t engram_stats_json(void);
|
||||
|
||||
Reference in New Issue
Block a user