diff --git a/engram/dist/engram b/engram/dist/engram index 0d9b977..71e459e 100755 Binary files a/engram/dist/engram and b/engram/dist/engram differ diff --git a/lang/releases/v1.0.0-20260501/el_runtime.c b/lang/releases/v1.0.0-20260501/el_runtime.c index 129986c..1253c24 100644 --- a/lang/releases/v1.0.0-20260501/el_runtime.c +++ b/lang/releases/v1.0.0-20260501/el_runtime.c @@ -6882,7 +6882,21 @@ el_val_t engram_activate(el_val_t query, el_val_t depth) { double tbonus = engram_temporal_proximity_bonus(on->created_at, seed_epoch); double tdecay = engram_temporal_decay(on, now_ms); double dampen = engram_activation_dampen(on); - double new_act = f.act * e->weight * SPREAD_DECAY * (1.0 + tbonus) + /* Relation-type boost: causal edges propagate stronger (field-validated + * against Hindsight/SYNAPSE literature: causes/caused_by 2.0×, enables/ + * prevents 1.5×, supersedes 1.3×). Inferred A→C edges are discounted + * (0.7×) so traversal-inference edges don't flood activation paths with + * the same strength as explicit edges. All others neutral (1.0×). */ + double rel_boost = 1.0; + if (e->relation) { + if (strcmp(e->relation, "causes") == 0 || + strcmp(e->relation, "caused_by") == 0) rel_boost = 2.0; + else if (strcmp(e->relation, "enables") == 0 || + strcmp(e->relation, "prevents") == 0) rel_boost = 1.5; + else if (strcmp(e->relation, "supersedes") == 0) rel_boost = 1.3; + else if (strcmp(e->relation, "inferred") == 0) rel_boost = 0.7; + } + double new_act = f.act * e->weight * SPREAD_DECAY * rel_boost * (1.0 + tbonus) * tdecay * dampen; int64_t new_hops = f.hops + 1; if (!reached[oi] || new_act > best_bg[oi]) {