x-algorithm changelog (unofficial)

Unofficial, community-maintained project. Not affiliated with, endorsed by, or operated by X Corp. or xAI. Notes are generated from the public git history of xai-org/x-algorithm and may contain mistakes; the upstream diff is the source of truth.

· b412112 · 148 files, +9,128/−2,356

Popular-posts candidate source added (off by default); brand-safety verdict v2 back on

candidate hydratorscandidate sourcesconstantsfeature flagsnumeric tweaksparamsside effects
  • New candidate source PopularPostsSource (home-mixer/sources/popular_posts_source.rs), behind EnablePopularPostsSource (default off). It fetches recent posts by popular authors (PopularPostsTopAuthors = 1000) from Thunder, capped at PopularPostsMaxResults = 500 and PopularPostsMaxPerAuthor = 3, with no replies or reposts (PopularPostsMaxRepliesRepostsPerAuthor = 0).
  • EnableAdsBrandSafetyVerdictV2 goes back to on (it was switched off on Sep 16).
  • New flags/params, all off or zero by default: EnablePhoenixOonReplies, AuthorExplorationBonus = 0.0, EnableAdsAuthorBrandSafetyFallback, VMRankerSendPacingInputs.
  • New phoenix_reply_ancestors_hydrator and a served_event_kafka side effect.
  • The README's Brazil-filter note now reads "Account list updated September 29, 2026."

Full analysis → Summary: hand-written notes, checked against the diff

Automatic analysis

Config parameters (param! defaults)

ParameterFeature-switch keyOldNew
EnableAdsBrandSafetyVerdictV2
home-mixer/params/param.rs
rust_home_mixer_ads_bs_v2_exp_enabledfalsetrue
Added parameterTypeDefaultFile
EnableAdsAuthorBrandSafetyFallbackboolfalsehome-mixer/params/param.rs
EnablePhoenixOonRepliesboolfalsehome-mixer/params/param.rs
EnablePopularPostsSourceboolfalsehome-mixer/params/param.rs
PopularPostsMaxPerAuthoru323home-mixer/params/param.rs
PopularPostsMaxRepliesRepostsPerAuthoru320home-mixer/params/param.rs
PopularPostsMaxResultsu32500home-mixer/params/param.rs
PopularPostsTopAuthorsu321000home-mixer/params/param.rs
VMRankerSendPacingInputsboolfalsehome-mixer/params/param.rs
AuthorExplorationBonusf640.0vm-ranker/params.rs

Pipeline components

KindChangeFile
Candidate hydratoraddedhome-mixer/candidate_hydrators/phoenix_reply_ancestors_hydrator.rs
Side effectaddedhome-mixer/side_effects/served_event_kafka_side_effect.rs
Candidate sourceaddedhome-mixer/sources/popular_posts_source.rs
Candidate hydratormodifiedhome-mixer/candidate_hydrators/ads_brand_safety_vf_hydrator.rs
Filtermodifiedhome-mixer/filters/oon_retweet_reply_filter.rs
Scorermodifiedhome-mixer/scorers/author_cold_start.rs
Scorermodifiedhome-mixer/scorers/value_model.rs
Scorermodifiedhome-mixer/scorers/vm_ranker_debias_payload.rs
Scorermodifiedhome-mixer/scorers/vm_ranker_request.rs
Side effectmodifiedhome-mixer/side_effects/author_served_metrics_side_effect.rs
Side effectmodifiedhome-mixer/side_effects/client_events_kafka_side_effect.rs
Candidate sourcemodifiedhome-mixer/sources/simclusters_source.rs
Candidate sourcemodifiedhome-mixer/sources/thunder_source.rs

Changed constants & literal values

NameOldNewFile
RISKY_HIGH_VIZ_REPLY_EXEMPT_MIN_PAGE_RANK_SCORE6062grox/flows/reply_spam/constants.py
Old lineNew lineFile
if arch == 90:if arch == 80:phoenix/xrex/cutedsl/ranker_attention_varlen_fa4.py
if arch == 90:if arch == 80:phoenix/xrex/cutedsl/ranker_attention_varlen_fa4.py
if arch == 90:if arch == 80:phoenix/xrex/cutedsl/ranker_attention_varlen_fa4.py
splits = jnp.split(table.x, np.cumsum(lengths[:-1]), axis=1)splits = jnp.split(table.x, np.cumsum(lengths[:-1]), axis=-2)phoenix/xrex/train/trainer_recsys.py

Modules touched

ModuleFiles addedModifiedRemovedLines +Lines −
phoenix/15441+4,251−1,607
visibility-filtering/7350+2,430−541
home-mixer/7230+2,101−174
vm-ranker/050+237−12
thunder/020+35−16
phoenix-rankall-strato/020+46−0
xai-value-model/030+18−3
phoenix-rankall/010+4−1
(repo root)/010+3−1
grox/020+3−1

Files (148)

Show file list
PathLinesNote
MREADME.md+3/−1
Mgrox/config/config.py+2/−0
Mgrox/flows/reply_spam/constants.py+1/−1
Mhome-mixer/candidate_hydrators/ads_brand_safety_vf_hydrator.rs+275/−20
Mhome-mixer/candidate_hydrators/mod.rs+1/−0
Ahome-mixer/candidate_hydrators/phoenix_reply_ancestors_hydrator.rs+108/−0
Mhome-mixer/candidate_pipeline/following_candidate_pipeline.rs+8/−0
Mhome-mixer/candidate_pipeline/for_you_candidate_pipeline.rs+8/−0
Mhome-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs+63/−1
Mhome-mixer/candidate_pipeline/ranked_following_candidate_pipeline.rs+8/−0
Mhome-mixer/candidate_pipeline/reverse_chron_posts_pipeline.rs+1/−0
Ahome-mixer/clients/author_brand_safety_client.rs+281/−0
Mhome-mixer/clients/mod.rs+3/−0
Ahome-mixer/clients/popular_authors_store_client.rs+79/−0
Ahome-mixer/clients/simclusters_ann_cache_client.rs+211/−0
Mhome-mixer/filters/oon_retweet_reply_filter.rs+7/−2
Mhome-mixer/main.rs+42/−0
Mhome-mixer/models/brand_safety.rs+102/−25
Mhome-mixer/params/param.rs+50/−1
Mhome-mixer/scorers/author_cold_start.rs+53/−0
Mhome-mixer/scorers/value_model.rs+1/−0
Mhome-mixer/scorers/vm_ranker_debias_payload.rs+15/−8
Mhome-mixer/scorers/vm_ranker_request.rs+4/−2
Mhome-mixer/side_effects/author_served_metrics_side_effect.rs+159/−22
Mhome-mixer/side_effects/client_events_kafka_side_effect.rs+42/−54
Mhome-mixer/side_effects/mod.rs+1/−0
Ahome-mixer/side_effects/served_event_kafka_side_effect.rs+65/−0
Mhome-mixer/sources/mod.rs+1/−0
Ahome-mixer/sources/popular_posts_source.rs+116/−0
Mhome-mixer/sources/simclusters_source.rs+166/−39
Mhome-mixer/sources/thunder_source.rs+1/−0
Mhome-mixer/util/mod.rs+1/−0
Ahome-mixer/util/popular_authors.rs+229/−0
Mphoenix-rankall-strato/columns/phoenix_rank_all/phoenixRankAllCandidateProcessor.strato+34/−0
Mphoenix-rankall-strato/lib/eventProcessing.strato+12/−0
Mphoenix-rankall/src/config/mod.rs+4/−1
Mphoenix/Cargo.lock+110/−0
Mphoenix/Cargo.toml+7/−0
Mphoenix/crates/serving/xai-recsys-engine/src/grpc_compression.rs+48/−1
Aphoenix/crates/serving/xai-recsys-engine/src/grpc_server_latency.rs+361/−0
Mphoenix/crates/serving/xai-recsys-engine/src/lib.rs+1/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval-proto/Cargo.toml+17/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval-proto/build.rs+6/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval-proto/proto/sid_retrieval.proto+46/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval-proto/src/lib.rs+3/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/Cargo.toml+32/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/src/http_api.rs+109/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/src/index.rs+223/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/src/loader.rs+170/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/src/main.rs+115/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/src/metrics.rs+79/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/src/seed_sids.rs+114/−0
Aphoenix/crates/serving/xai-recsys-sid-retrieval/src/service.rs+208/−0
Mphoenix/reference/world.py+0/−1formatting only
Mphoenix/xrex/configs/xrecsys.py+20/−1
Mphoenix/xrex/cuda/__init__.py+15/−40comments only
Mphoenix/xrex/cuda/adler32/src/adler32_kernel.cuh+0/−4formatting only
Mphoenix/xrex/cuda/row_emb/src/row_emb_api.cc+1/−0
Mphoenix/xrex/cuda/row_emb/src/row_emb_kernel.cu+0/−2formatting only
Mphoenix/xrex/cuda/top_k_by_key/src/top_k_by_key_api.cc+0/−1formatting only
Mphoenix/xrex/cuda/top_k_by_key/src/top_k_by_key_radix_select_api.cc+0/−1formatting only
Mphoenix/xrex/cuda/top_k_by_key/src/top_k_by_key_radix_select_kernel.cu+0/−1formatting only
Mphoenix/xrex/cuda/unique/src/unique_kernel.cu+0/−1formatting only
Mphoenix/xrex/cutedsl/ranker_attention_fa4.py+0/−1formatting only
Mphoenix/xrex/cutedsl/ranker_attention_varlen_fa4.py+62/−4
Mphoenix/xrex/data/grpc_recsys.py+3/−0
Mphoenix/xrex/data/parquet_recsys.py+325/−1
Mphoenix/xrex/data/recsys/constants.py+12/−0
Mphoenix/xrex/data/recsys/feature_config.py+7/−0
Mphoenix/xrex/data/recsys/recsys_batch.py+49/−0
Mphoenix/xrex/data/rust_kafka_recsys.py+18/−3
Mphoenix/xrex/data/rust_parquet_recsys.py+8/−0
Mphoenix/xrex/driver/core.py+1/−5comments only
Mphoenix/xrex/models/attention.py+3/−4
Mphoenix/xrex/models/layers.py+4/−5
Mphoenix/xrex/models/loss_recsys.py+74/−46
Mphoenix/xrex/models/normalization.py+1/−1
Mphoenix/xrex/models/recsys_attention.py+10/−11
Mphoenix/xrex/models/recsys_feature_prep.py+31/−0
Mphoenix/xrex/models/recsys_gen_recs_model.py+0/−1formatting only
Mphoenix/xrex/models/recsys_model.py+786/−431
Mphoenix/xrex/models/recsys_sid_retrieval_model.py+0/−1formatting only
Mphoenix/xrex/models/recsys_two_tower_model.py+1/−1
Mphoenix/xrex/models/transformer.py+8/−51
Mphoenix/xrex/optimizers/optim.py+0/−1formatting only
Mphoenix/xrex/optimizers/recsys/muon.py+1/−1formatting only
Mphoenix/xrex/pallas/ranker_attention_v2.py+0/−1formatting only
Mphoenix/xrex/train/recsys_bundle_export.py+154/−30
Aphoenix/xrex/train/row_embedding_restore.py+488/−0
Mphoenix/xrex/train/trainer.py+21/−16
Mphoenix/xrex/train/trainer_recsys.py+376/−853
Mphoenix/xrex/utils/aot.py+0/−2formatting only
Dphoenix/xrex/utils/checkpoint_cloud.py+0/−73
Mphoenix/xrex/utils/metadata.py+3/−3
Mphoenix/xrex/utils/recsys_async_emb.py+49/−8
Aphoenix/xrex/utils/sharding.py+71/−0
Mthunder/posts/post_store.rs+17/−15
Mthunder/thunder_service.rs+18/−1
Mvisibility-filtering/caller_identity.rs+18/−12
Mvisibility-filtering/clients/gizmoduck_client.rs+3/−2
Mvisibility-filtering/clients/socialgraph_client.rs+2/−2
Mvisibility-filtering/config.rs+9/−5
Mvisibility-filtering/evaluate_tweets.rs+9/−6
Mvisibility-filtering/filter.rs+4/−1
Mvisibility-filtering/filter_tweets.rs+94/−22
Mvisibility-filtering/hydration/execute.rs+3/−3
Mvisibility-filtering/hydration/mod.rs+7/−7
Mvisibility-filtering/hydration/plan.rs+32/−18
Mvisibility-filtering/hydration/sources.rs+125/−22
Mvisibility-filtering/hydration/store.rs+11/−4
Mvisibility-filtering/hydration/tweet_source.rs+15/−16
Mvisibility-filtering/lib.rs+21/−3
Mvisibility-filtering/main.rs+20/−31
Mvisibility-filtering/models/tweet.rs+12/−2
Mvisibility-filtering/models/viewer.rs+6/−2
Mvisibility-filtering/params.rs+30/−1
Mvisibility-filtering/retweet.rs+51/−24
Mvisibility-filtering/rules/golden_corpus/mod.rs+2/−0
Avisibility-filtering/rules/golden_corpus/trusted_friends.rs+31/−0
Mvisibility-filtering/rules/registry.rs+4/−0
Mvisibility-filtering/rules/rule_spec.rs+20/−1
Mvisibility-filtering/rules/tweet_rules.rs+84/−94
Mvisibility-filtering/safety_label_source/cached_value.rs+1/−4
Mvisibility-filtering/safety_label_source/lookup.rs+7/−6
Mvisibility-filtering/safety_label_source/proto.rs+4/−0
Mvisibility-filtering/safety_label_source/source.rs+3/−3
Mvisibility-filtering/safety_label_source/twemcache.rs+4/−0
Mvisibility-filtering/safety_label_source/warmer.rs+1/−1
Mvisibility-filtering/server.rs+41/−7
Mvisibility-filtering/server_deps.rs+107/−49
Avisibility-filtering/staging/capture.rs+220/−0
Avisibility-filtering/staging/main.rs+39/−0
Avisibility-filtering/staging/mod.rs+6/−0
Avisibility-filtering/staging/recording.rs+743/−0
Rvisibility-filtering/staging/reference/mod.rs+35/−72
Rvisibility-filtering/staging/reference/tweetypie.rs+204/−81
Rvisibility-filtering/staging/reference_compare.rs+63/−39
Avisibility-filtering/staging/replay_corpus.rs+298/−0
Avisibility-filtering/staging/serve.rs+28/−0
Mvisibility-filtering/treatment.rs+13/−1
Mvm-ranker/metrics.rs+33/−0
Mvm-ranker/params.rs+6/−0
Mvm-ranker/ranking_config.rs+17/−5
Mvm-ranker/scoring/mod.rs+85/−2
Mvm-ranker/scoring/value_model.rs+96/−5
Mxai-value-model/inputs.rs+1/−0
Mxai-value-model/proto.rs+1/−0
Mxai-value-model/scoring.rs+16/−3