OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      e0491bd14a4c
DATE      2025-08-04
SUBJECT   nix: cap at 50 rankings
FILES     1 CHANGED
HASH      e0491bd14a4c
DATE      2025-08-04
SUBJECT   nix: cap at 50 rankings
FILES     1 CHANGED
 

diff --git a/nix/apps/challenge-mode-parser.nix b/nix/apps/challenge-mode-parser.n
ix
index a17b0a1..17ef588 100644
--- a/nix/apps/challenge-mode-parser.nix
+++ b/nix/apps/challenge-mode-parser.nix
@@ -21,6 +21,8 @@
       OUTPUT_ROOT = "./web/public/data/leaderboards"
       # The number of top runs to collect from each realm's file.
       TOP_N_PER_REALM = 50
+      # The number of top runs to keep in final aggregated leaderboards.
+      TOP_N_FINAL = 50
 
       def parse_and_aggregate_data():
           # finds all fetched leaderboard files, parses them, and aggregates the 
data
@@ -115,14 +117,18 @@
                   # Deduplicate and sort regional runs
                   print(f"    Deduplicating {region.upper()} runs ({len(runs)} ->
 ", end="")
                   deduplicated_runs = deduplicate_runs(runs)
-                  print(f"{len(deduplicated_runs)})")
+                  print(f"{len(deduplicated_runs)} -> ", end="")
                   deduplicated_runs.sort(key=sort_key)
                   
+                  # Limit to top N runs for regional leaderboard
+                  final_runs = deduplicated_runs[:TOP_N_FINAL]
+                  print(f"{len(final_runs)})")
+                  
                   # Re-rank runs for regional leaderboard
-                  for i, run in enumerate(deduplicated_runs):
+                  for i, run in enumerate(final_runs):
                       run["ranking"] = i + 1
                   
-                  all_regional_runs.extend(deduplicated_runs)
+                  all_regional_runs.extend(final_runs)
                   output_dir = os.path.join(regional_path, region, dungeon_slug)
                   os.makedirs(output_dir, exist_ok=True)
                   output_file = os.path.join(output_dir, "leaderboard.json")
@@ -132,7 +138,7 @@
                           "dungeon_name": data["dungeon_name"],
                           "dungeon_slug": dungeon_slug,
                           "region": region,
-                          "leaderboard": deduplicated_runs,
+                          "leaderboard": final_runs,
                       }, f, indent=2)
 
               # 2. Generate and save GLOBAL leaderboard
@@ -142,11 +148,15 @@
               # Deduplicate global runs (cross-region duplicates)
               print(f"    Deduplicating global runs ({len(all_regional_runs)} -> 
", end="")
               deduplicated_global = deduplicate_runs(all_regional_runs)
-              print(f"{len(deduplicated_global)})")
+              print(f"{len(deduplicated_global)} -> ", end="")
               deduplicated_global.sort(key=sort_key)
               
+              # Limit to top N runs for global leaderboard
+              final_global = deduplicated_global[:TOP_N_FINAL]
+              print(f"{len(final_global)})")
+              
               # Re-rank runs for global leaderboard
-              for i, run in enumerate(deduplicated_global):
+              for i, run in enumerate(final_global):
                   run["ranking"] = i + 1
               
               global_path = os.path.join(OUTPUT_ROOT, "global", dungeon_slug)
@@ -157,7 +167,7 @@
                   json.dump({
                       "dungeon_name": data["dungeon_name"],
                       "dungeon_slug": dungeon_slug,
-                      "leaderboard": deduplicated_global,
+                      "leaderboard": final_global,
                   }, f, indent=2)
 
       def main():

diff --git a/nix/apps/challenge-mode-parser.
nix b/nix/apps/challenge-mode-parser.nix
index a17b0a1..17ef588 100644
--- a/nix/apps/challenge-mode-parser.nix
+++ b/nix/apps/challenge-mode-parser.nix
@@ -21,6 +21,8 @@
       OUTPUT_ROOT = "./web/public/data/lead
erboards"
       # The number of top runs to collect f
rom each realm's file.
       TOP_N_PER_REALM = 50
+      # The number of top runs to keep in f
inal aggregated leaderboards.
+      TOP_N_FINAL = 50
 
       def parse_and_aggregate_data():
           # finds all fetched leaderboard f
iles, parses them, and aggregates the data
@@ -115,14 +117,18 @@
                   # Deduplicate and sort re
gional runs
                   print(f"    Deduplicating
 {region.upper()} runs ({len(runs)} -> ", en
d="")
                   deduplicated_runs = dedup
licate_runs(runs)
-                  print(f"{len(deduplicated
_runs)})")
+                  print(f"{len(deduplicated
_runs)} -> ", end="")
                   deduplicated_runs.sort(ke
y=sort_key)
                   
+                  # Limit to top N runs for
 regional leaderboard
+                  final_runs = deduplicated
_runs[:TOP_N_FINAL]
+                  print(f"{len(final_runs)}
)")
+                  
                   # Re-rank runs for region
al leaderboard
-                  for i, run in enumerate(d
eduplicated_runs):
+                  for i, run in enumerate(f
inal_runs):
                       run["ranking"] = i + 
1
                   
-                  all_regional_runs.extend(
deduplicated_runs)
+                  all_regional_runs.extend(
final_runs)
                   output_dir = os.path.join
(regional_path, region, dungeon_slug)
                   os.makedirs(output_dir, e
xist_ok=True)
                   output_file = os.path.joi
n(output_dir, "leaderboard.json")
@@ -132,7 +138,7 @@
                           "dungeon_name": d
ata["dungeon_name"],
                           "dungeon_slug": d
ungeon_slug,
                           "region": region,
-                          "leaderboard": de
duplicated_runs,
+                          "leaderboard": fi
nal_runs,
                       }, f, indent=2)
 
               # 2. Generate and save GLOBAL
 leaderboard
@@ -142,11 +148,15 @@
               # Deduplicate global runs (cr
oss-region duplicates)
               print(f"    Deduplicating glo
bal runs ({len(all_regional_runs)} -> ", end
="")
               deduplicated_global = dedupli
cate_runs(all_regional_runs)
-              print(f"{len(deduplicated_glo
bal)})")
+              print(f"{len(deduplicated_glo
bal)} -> ", end="")
               deduplicated_global.sort(key=
sort_key)
               
+              # Limit to top N runs for glo
bal leaderboard
+              final_global = deduplicated_g
lobal[:TOP_N_FINAL]
+              print(f"{len(final_global)})"
)
+              
               # Re-rank runs for global lea
derboard
-              for i, run in enumerate(dedup
licated_global):
+              for i, run in enumerate(final
_global):
                   run["ranking"] = i + 1
               
               global_path = os.path.join(OU
TPUT_ROOT, "global", dungeon_slug)
@@ -157,7 +167,7 @@
                   json.dump({
                       "dungeon_name": data[
"dungeon_name"],
                       "dungeon_slug": dunge
on_slug,
-                      "leaderboard": dedupl
icated_global,
+                      "leaderboard": final_
global,
                   }, f, indent=2)
 
       def main():
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET