diff --git a/server/src/reducer.rs b/server/src/reducer.rs index 0e36979abe0f051493038ff7e652efc7f7a0ac80..efbf7f67ff24c7a2989102fe62879b2794a27c5f 100644 --- a/server/src/reducer.rs +++ b/server/src/reducer.rs @@ -112,11 +112,6 @@ impl GroupState { if vote.ratio_right < 0 { vote.ratio_right = 0; } - if vote.ratio_left == 0 || vote.ratio_right == 0 { - // Zero on either side produces no valid edge; drop before registering items or pair. - return; - } - let a_idx = self.ensure_item(&vote.a); let b_idx = self.ensure_item(&vote.b); diff --git a/server/tests/basic.rs b/server/tests/basic.rs index 08159f4a7f0850fd165817a4a1af4f31ced2ad76..1748769ccf7196b2d81cf556d5368c7e723f6a4e 100644 --- a/server/tests/basic.rs +++ b/server/tests/basic.rs @@ -533,7 +533,7 @@ fn dsl_parse_rejects_zero_zero_vote_ratio() { #[test] fn reducer_negative_ratio_clamped_to_zero() { let _state = ReducerState::default(); - // GroupState::apply_vote clamps negatives to 0; when either side is 0 the vote is dropped. + // apply_vote clamps negatives to 0; add_edge_weight skips zero-weight edges. let mut group = GroupState::new(); group.apply_vote(slugsocial_server::reducer::VoteData { ts: 1, @@ -546,10 +546,9 @@ fn reducer_negative_ratio_clamped_to_zero() { delegate: Some("00000000-0000-0000-0000-000000000000:test:local/test".to_string()), thread_tag: "t".to_string(), }); - // Nothing registered: zero-clamped vote is dropped before ensure_item. - assert!(group.idx_to_item.is_empty()); + // Items and pair are registered; edges are absent because weight 0 is skipped. + assert_eq!(group.idx_to_item.len(), 2); assert!(group.edges.is_empty()); - assert!(group.voted_pairs.is_empty()); }