You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
algorithm alignment: 19-signal model, author diversity, distribution gate
Updated agent-info + preflight to match the January 2026 xai-org/x-algorithm
source code (weighted_scorer.rs) and April 2026 empirical observations:
agent-info:
- 19 signals (was 15): added cont_dwell_time, quoted_click, share
(separated from share_via_dm/share_via_copy_link), vqv, photo_expand
- source field now explicitly states weights are from the unpublished
params module — magnitudes are community estimates, signal list is
confirmed from actual code
- time_decay_halflife_minutes set to 360 (~6h) with note about the
30-60 min Phoenix distribution gate
- reply signal now documents reply_engaged_by_author = ~150x (the
combined effect of an author replying back to a reply on their post)
- usage hints updated with distribution gate timing, author diversity
mechanics, link suppression Q1 2026 data
- measurement_coverage: url_clicks added to measurable, share split
into 3 variants in proxy_only, cont_dwell_time added
preflight:
- New author_diversity_penalty warning: fires when >=3 posts in 6h,
citing author_diversity_scorer.rs exponential decay behavior
- New recent_post info: fires when >=1 post in last hour, warns about
splitting the 30-60 min traction window
- link_in_body message updated with Q1 2026 suppression data
- reply question prompt now cites reply_engaged_by_author +75
post.rs:
- Cannibalization warnings now included in JSON output (were stderr
only) so agents see them: accelerating_post window + 6h diversity
penalty both surface as [WARN] entries in the warnings array
Grounded in: home-mixer/scorers/weighted_scorer.rs (19 P(action)
terms), author_diversity_scorer.rs (exponential decay + floor),
oon_scorer.rs (OON_WEIGHT_FACTOR), and April 2026 user reports of
30-60 min distribution gate behavior.
source:"xai-org/x-algorithm (January 2026 release, Grok-based transformer in Rust). Weights are in the unpublished `params` module (excluded 'for security reasons'). Numeric values below are community estimates — the signal LIST is confirmed from home-mixer/scorers/weighted_scorer.rs but magnitudes are NOT.".into(),
ProxySignal{ signal:"negative_risk".into(), proxy_method:"sentiment + combative tone analysis".into(), confidence:"medium".into()},
266
+
ProxySignal{ signal:"negative_risk".into(), proxy_method:"sentiment + combative tone analysis (Grok does this live since Jan 2026)".into(), confidence:"medium".into()},
"Always run 'xmaster analyze' before posting — it checks for common issues that hurt reach".into(),
267
276
"Use 'xmaster search-ai' over 'xmaster search' — cheaper and smarter (xAI vs X API). Supports from:username for hard author filtering (e.g. 'xmaster search-ai \"from:elonmusk AI\"')".into(),
268
-
"Reply to larger accounts in your niche — replies are a high-value signal (estimated ~20x a like)".into(),
269
-
"Create content people want to DM to friends — DM shares are estimated ~25x a like".into(),
270
-
"Never put external links in the main tweet body — put them in the first reply".into(),
"Reply to larger accounts in your niche — and REPLY BACK when people reply to you. reply_engaged_by_author (+75) is the single highest algorithmic signal, ~150x a like".into(),
278
+
"Create content people want to DM to friends — share_via_dm is one of the top scoring signals in weighted_scorer.rs".into(),
279
+
"Never put external links in the main tweet body — non-Premium gets near-zero reach, Premium loses 30-50%. Links go in the first reply".into(),
280
+
"Space posts 2+ hours apart — author_diversity_scorer.rs applies exponential decay for repeated authors per feed session. The algorithm only shows your top 2-3 posts; extra posts dilute your average without adding reach".into(),
281
+
"The first 30-60 minutes are critical — Phoenix makes its biggest distribution decision in this window. Each post is shown to ~1500 candidates; if it doesn't get traction it stops being served. Time your posts when your audience is online".into(),
272
282
"Use 'xmaster timeline --sort impressions' to find your best-performing posts".into(),
273
283
"Use 'xmaster timeline --since 24h' to check recent post performance".into(),
"{} posts in the last 6h — author diversity scorer limits you to 2-3 per feed session, extra posts dilute your average without adding reach",
347
+
velocity.posts_6h
348
+
),
349
+
fix:Some("Wait at least 2 hours between posts — fewer, better posts outperform high volume".into()),
350
+
});
351
+
score -= 15;
352
+
}elseif velocity.posts_1h >= 1{
353
+
issues.push(Issue{
354
+
severity:Severity::Info,
355
+
code:"recent_post".into(),
356
+
message:format!(
357
+
"You posted {} time(s) in the last hour — the algorithm's 30-60 min distribution gate means your previous post may still be in its critical traction window",
358
+
velocity.posts_1h
359
+
),
360
+
fix:Some("Consider waiting — posting now may split attention from your previous post's traction window".into()),
0 commit comments