@@ -287,17 +287,17 @@ fn update_subsubnet_counts_decreases_and_cleans_on_superblock() {
287287 let netuid = NetUid :: from ( 42u16 ) ;
288288 NetworksAdded :: < Test > :: insert ( NetUid :: from ( 42u16 ) , true ) ;
289289
290- // super_block = SuperBlockTempos() * Tempo(netuid)
291- Tempo :: < Test > :: insert ( netuid, 1u16 ) ;
290+ // super_block = SuperBlockTempos() * Tempo(netuid) - netuid
291+ Tempo :: < Test > :: insert ( netuid, 360u16 ) ;
292292 let super_block =
293- u64:: from ( SuperBlockTempos :: < Test > :: get ( ) ) * u64:: from ( Tempo :: < Test > :: get ( netuid) ) ;
293+ u64:: from ( SuperBlockTempos :: < Test > :: get ( ) ) * u64:: from ( Tempo :: < Test > :: get ( netuid) ) - u16 :: from ( netuid ) as u64 ;
294294
295295 // Choose counts so result is deterministic for ANY decrease-per-superblock.
296296 // Let dec = GlobalSubsubnetDecreasePerSuperblock(); set old = dec + 3.
297297 let dec: u8 = u8:: from ( GlobalSubsubnetDecreasePerSuperblock :: < Test > :: get ( ) ) ;
298- let old = SubId :: from ( dec. saturating_add ( 3 ) ) ; // ≥3
298+ let old = SubId :: from ( dec. saturating_add ( 3 ) ) ;
299299 let desired = SubId :: from ( 1u8 ) ;
300- // min_possible = max(old - dec, 1) = 3 → new_count = 3
300+ // min_capped = max(old - dec, 1) = 3 => new_count = 3
301301 SubsubnetCountCurrent :: < Test > :: insert ( netuid, old) ;
302302 SubsubnetCountDesired :: < Test > :: insert ( netuid, desired) ;
303303
@@ -336,7 +336,7 @@ fn update_subsubnet_counts_decreases_and_cleans_on_superblock() {
336336 ) ;
337337
338338 // Act exactly on a super-block boundary
339- SubtensorModule :: update_subsubnet_counts_if_needed ( 2 * super_block) ;
339+ SubtensorModule :: update_subsubnet_counts_if_needed ( super_block) ;
340340
341341 // New count is 3
342342 assert_eq ! ( SubsubnetCountCurrent :: <Test >:: get( netuid) , SubId :: from( 3u8 ) ) ;
@@ -363,6 +363,33 @@ fn update_subsubnet_counts_decreases_and_cleans_on_superblock() {
363363 } ) ;
364364}
365365
366+ #[ test]
367+ fn update_subsubnet_counts_increases_on_superblock ( ) {
368+ new_test_ext ( 1 ) . execute_with ( || {
369+ // Base subnet exists
370+ let netuid = NetUid :: from ( 42u16 ) ;
371+ NetworksAdded :: < Test > :: insert ( NetUid :: from ( 42u16 ) , true ) ;
372+
373+ // super_block = SuperBlockTempos() * Tempo(netuid) - netuid
374+ Tempo :: < Test > :: insert ( netuid, 360u16 ) ;
375+ let super_block =
376+ u64:: from ( SuperBlockTempos :: < Test > :: get ( ) ) * u64:: from ( Tempo :: < Test > :: get ( netuid) ) - u16:: from ( netuid) as u64 ;
377+
378+ // Choose counts so result is deterministic for ANY increase-per-superblock.
379+ let inc: u8 = u8:: from ( GlobalSubsubnetDecreasePerSuperblock :: < Test > :: get ( ) ) ;
380+ let old = SubId :: from ( 1u8 ) ;
381+ let desired = SubId :: from ( 5u8 ) ;
382+ SubsubnetCountCurrent :: < Test > :: insert ( netuid, old) ;
383+ SubsubnetCountDesired :: < Test > :: insert ( netuid, desired) ;
384+
385+ // Act exactly on a super-block boundary
386+ SubtensorModule :: update_subsubnet_counts_if_needed ( super_block) ;
387+
388+ // New count is old + inc
389+ assert_eq ! ( SubsubnetCountCurrent :: <Test >:: get( netuid) , SubId :: from( 1 + inc) ) ;
390+ } ) ;
391+ }
392+
366393#[ test]
367394fn update_subsubnet_counts_no_change_when_not_superblock ( ) {
368395 new_test_ext ( 1 ) . execute_with ( || {
0 commit comments