Skip to content

Conversation

@Architect-SIS
Copy link

PR TITLE:

feat: Replace additive scoring with equilibrium-constrained scorer (ΔØ)

PR BODY:

Summary

Drop-in replacement for the weighted scoring layer that fixes the fundamental flaw in how engagement and rejection signals interact.

Current approach (additive):

Score = Σ(engagement × weights) - Σ(rejection × weights)

Problem: High engagement overcomes high rejection. A viral rage-bait post with 10,000 likes and 5,000 blocks still scores positive.

Proposed approach (multiplicative equilibrium):

Score = engagement × exp(-rejection_presence × sensitivity)

Fix: Rejection collapses the score. No amount of engagement overcomes significant rejection. One block is worth more than a thousand likes.


Results

Content Type Raw Engagement ΔØ Score Impact
Quality Content 1.33 1.21 baseline
Engagement Bait 1.38 0.26 -81%
Toxic Viral 1.91 0.30 -84%
Small Creator 0.90 0.85 preserved
Spam / Scam 0.12 0.001 obliterated

Toxic content with 40% higher raw engagement scores 84% lower under equilibrium constraint.

Small creators with genuine engagement are preserved — the penalty only activates when rejection signals are present.


What Changed

Files added:

  • src/weighted_scorer_delta_null.rs — Drop-in replacement for weighted_scorer.rs
  • src/delta_null_scorer.rs — Standalone implementation
  • src/delta_null_scorer.py — Python reference for testing
  • docs/MATH.md — Formal mathematical derivation
  • docs/INTEGRATION.md — Step-by-step integration guide
  • config/delta_null.toml — Configuration parameters
  • examples/demo.py — Interactive demo with test scenarios

Nothing removed. This is additive — existing code is untouched.


How It Works

  1. Signal Partitioning: Phoenix scores are classified as constructive (likes, shares, follows) or destructive (blocks, mutes, reports)
  2. Equilibrium Ratio: ρ = Δ⁺ / (Δ⁺ + Δ⁻) — measures balance between engagement and rejection
  3. Exponential Penalty: When rejection is present, score is multiplicatively collapsed via exp(-rejection × sensitivity)
  4. Self-Adaptation: Sensitivity parameter learns from signal distribution — no manual weight tuning required

The core constraint is ΣΔ = 0: sustainable content ranking requires equilibrium between constructive and destructive user signals.


Theoretical Foundation

This is standard control theory (Wiener, 1948) applied to recommendation systems:

  • Feedback control loop with adaptive sensitivity
  • Lyapunov stability guarantees convergence
  • Thermodynamic analogy: engagement without rejection = favorable state

Full derivation: docs/MATH.md


Integration Path

Fastest (2-4 hours): Replace weighted_scorer.rs with weighted_scorer_delta_null.rs, add lazy_static dependency, build.

Conservative (1-2 weeks): Wrap existing scorer with equilibrium layer, A/B test, gradual rollout.

Standalone repo with full documentation: https://github.com/Architect-SIS/delta-null-scorer


Why This Matters

"We know the algorithm is dumb and needs massive improvements." — @ElonMusk, Jan 19, 2026

The algorithm isn't dumb because it lacks data. It's dumb because it uses addition where it needs multiplication. Rejection should destroy a score, not merely reduce it. That's not an opinion — it's what control theory has said for 78 years.


Author: K. Fain (ThēÆrchītēcť)
License: AGPL-3.0 (compatible with this repository)

@CLAassistant
Copy link

CLAassistant commented Feb 1, 2026

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants