code wiki / _hdl_build / nx_leaderboard_gate.nx
nx_leaderboard_gate.nx source
↩ module page · 87 lines · 7081 B
1// nx_leaderboard_gate.nx -- referee for nx_leaderboard_lib (ecosystem EC44, 2026-09-15): the leaderboard ruler on a
2// PLANTED file with hand-worked answers -- the score parser (one fractional digit, held x10), the board list, the
3// counts partition, the leader, the rank arithmetic (a tie ranks with the tied), the estate's latest row by date and
4// its leap, plus the neg-controls: an absent board, a malformed row, a row whose score does not parse, a foreign
5// board's row. Fixture dir /tmp/nx_leaderboard_gate/, rewritten at SETUP. license_tier: ORIGINAL
6import "nx_leaderboard_lib.nx"
7import "nx_syscalls.nx"
8import "nx_gate_verdict.nx"
9
10const G_DIR: *u8 = "/tmp/nx_leaderboard_gate/"
11const G_DOM: *u8 = "lbgate"
12const G_MODE_644: i64 = 420
13const G_DIR_MODE: i64 = 493
14const G_BOARD: *u8 = "bright"
15const G_ABSENT_BOARD: *u8 = "nosuchboard"
16const G_BOARDS_CAP: i64 = 8
17const G_FIXTURE: *u8 = "# planted leaderboard\nhead|bright|https://example.test/board|knowledge/fetched/cmp_x_board.html|h00|2026-09-14|average nDCG at 10\nlb|bright|1|Alpha|A org|66.9|2026-04-22|https://a.test\nlb|bright|2|Beta|B org|63.4|2025-12-20|https://b.test\nlb|bright|3|Gamma|G org|52.4|2026-03-20|https://g.test\nlb|bright|4|Delta|D org|50|2026-03-13|https://d.test\nlb|bright|5|Epsilon|E org|46.8|2025-11-13|https://e.test\nlb|bright|99|nishi-search|Nishi|14.5|2026-09-14|https://n.test\nlb|bright|99|nishi-search|Nishi|16.1|2026-09-15|https://n.test\nhead|other|https://example.test/other|knowledge/fetched/cmp_x_other.html|h01|2026-09-01|accuracy\nlb|other|1|Zeta|Z org|99.9|2026-01-01|https://z.test\nmalformed|bright|x\nlb|bright|3|Broken|B org|abc|2026-01-01|https://broken.test\n"
18
19func g_write(path: *u8, body: *u8) -> i64 { let fd: i64 = sys_openat_wr(path, G_MODE_644); if fd < 0 { return 0 } sys_write(fd, body, lb_slen(body)); sys_close(fd); return 1 }
20
21func main() -> i64 {
22 let ctr: *i64 = gv_ctr()
23 gv_head("=== NX-LEADERBOARD GATE -- the leaderboard ruler on a planted board with hand-worked answers ===" as *u8)
24 sys_mkdir(G_DIR, G_DIR_MODE)
25 let path: *u8 = sys_mmap(LB_PATH_CAP)
26 lb_path(G_DIR, G_DOM, path)
27 gv_check("S0-fixture-written" as *u8, g_write(path, G_FIXTURE), ctr)
28 let nb: *i64 = sys_mmap(LB_I64_BYTES * 2) as *i64
29 nb[0] = 0
30 let buf: *u8 = sys_read_file(path, nb)
31 let n: i64 = nb[0]
32 gv_check("S0a-fixture-readable" as *u8, ((buf as i64) != 0) as i64, ctr)
33 // T1: the score parser
34 gv_check_eq("T1-score-66.9-is-669" as *u8, lb_score_x10("66.9" as *u8, 4), 669, ctr)
35 gv_check_eq("T1a-score-14.5-is-145" as *u8, lb_score_x10("14.5" as *u8, 4), 145, ctr)
36 gv_check_eq("T1b-score-integer-7-is-70" as *u8, lb_score_x10("7" as *u8, 1), 70, ctr)
37 gv_check_eq("T1c-score-40-is-400" as *u8, lb_score_x10("40" as *u8, 2), 400, ctr)
38 gv_check_eq("T1d-second-fractional-digit-dropped" as *u8, lb_score_x10("12.34" as *u8, 5), 123, ctr)
39 gv_check_eq("T1e-NEG-letters-are-NONE" as *u8, lb_score_x10("abc" as *u8, 3), LB_NONE, ctr)
40 gv_check_eq("T1f-NEG-empty-is-NONE" as *u8, lb_score_x10("" as *u8, 0), LB_NONE, ctr)
41 // T2: the boards named by head rows, in file order
42 let boff: *i64 = sys_mmap(G_BOARDS_CAP * LB_I64_BYTES) as *i64
43 let blen: *i64 = sys_mmap(G_BOARDS_CAP * LB_I64_BYTES) as *i64
44 gv_check_eq("T2-two-boards-declared" as *u8, lb_boards(buf, n, boff, blen, G_BOARDS_CAP), 2, ctr)
45 gv_check("T2a-first-board-is-bright" as *u8, lb_eq_n(G_BOARD, (buf as i64 + boff[0]) as *u8, blen[0]), ctr)
46 // T3: the counts partition for bright: 1 head, 5 rivals, 2 estate rows; the malformed rows vote nowhere
47 let heads: *i64 = sys_mmap(LB_I64_BYTES) as *i64
48 let rivals: *i64 = sys_mmap(LB_I64_BYTES) as *i64
49 let estate: *i64 = sys_mmap(LB_I64_BYTES) as *i64
50 let rows: i64 = lb_count(buf, n, G_BOARD, heads, rivals, estate)
51 gv_check_eq("T3-rows-rival-plus-estate" as *u8, rows, 7, ctr)
52 gv_check_eq("T3a-one-head" as *u8, heads[0], 1, ctr)
53 gv_check_eq("T3b-five-rivals-malformed-excluded" as *u8, rivals[0], 5, ctr)
54 gv_check_eq("T3c-two-estate-rows" as *u8, estate[0], 2, ctr)
55 // T4: the leader and the rank arithmetic (rank = 1 + rivals strictly above; a tie ranks with the tied)
56 gv_check_eq("T4-leader-is-669" as *u8, lb_leader(buf, n, G_BOARD), 669, ctr)
57 gv_check_eq("T4a-rank-of-145-is-6" as *u8, lb_rank_of(buf, n, G_BOARD, 145), 6, ctr)
58 gv_check_eq("T4b-rank-of-the-leader-score-is-1" as *u8, lb_rank_of(buf, n, G_BOARD, 669), 1, ctr)
59 gv_check_eq("T4c-rank-above-the-leader-is-1" as *u8, lb_rank_of(buf, n, G_BOARD, 700), 1, ctr)
60 gv_check_eq("T4d-rank-of-500-is-4" as *u8, lb_rank_of(buf, n, G_BOARD, 500), 4, ctr)
61 // T5: the estate's latest row (by date) and its leap since its earliest
62 let roff: *i64 = sys_mmap(LB_I64_BYTES) as *i64
63 let rlen: *i64 = sys_mmap(LB_I64_BYTES) as *i64
64 gv_check_eq("T5-estate-latest-is-161" as *u8, lb_estate_latest(buf, n, G_BOARD, roff, rlen), 161, ctr)
65 gv_check_eq("T5a-estate-leap-is-16" as *u8, lb_estate_leap(buf, n, G_BOARD), 16, ctr)
66 gv_check_eq("T5b-estate-rank-from-latest" as *u8, lb_rank_of(buf, n, G_BOARD, 161), 6, ctr)
67 gv_check_eq("T5c-gap-to-leader" as *u8, lb_leader(buf, n, G_BOARD) - 161, 508, ctr)
68 // T6: NEG -- an absent board has no rows, no leader, no estate row, no leap
69 gv_check_eq("T6-NEG-absent-board-rows-0" as *u8, lb_count(buf, n, G_ABSENT_BOARD, heads, rivals, estate), 0, ctr)
70 gv_check_eq("T6a-NEG-absent-board-leader-NONE" as *u8, lb_leader(buf, n, G_ABSENT_BOARD), LB_NONE, ctr)
71 gv_check_eq("T6b-NEG-absent-board-estate-NONE" as *u8, lb_estate_latest(buf, n, G_ABSENT_BOARD, roff, rlen), LB_NONE, ctr)
72 gv_check_eq("T6c-NEG-absent-board-leap-NONE" as *u8, lb_estate_leap(buf, n, G_ABSENT_BOARD), LB_NONE, ctr)
73 // T7: the foreign board is its own population
74 let rows_o: i64 = lb_count(buf, n, "other" as *u8, heads, rivals, estate)
75 gv_check_eq("T7-other-board-one-row" as *u8, rows_o, 1, ctr)
76 gv_check_eq("T7a-other-board-leader-999" as *u8, lb_leader(buf, n, "other" as *u8), 999, ctr)
77 gv_check_eq("T7b-NEG-other-board-has-no-estate-row" as *u8, estate[0], 0, ctr)
78 // T8: the date order
79 gv_check_eq("T8-later-date-ge" as *u8, lb_date_ge("2026-09-15" as *u8, 10, "2026-09-14" as *u8, 10), 1, ctr)
80 gv_check_eq("T8a-NEG-earlier-date-not-ge" as *u8, lb_date_ge("2026-09-14" as *u8, 10, "2026-09-15" as *u8, 10), 0, ctr)
81 gv_check_eq("T8b-equal-date-ge" as *u8, lb_date_ge("2026-09-15" as *u8, 10, "2026-09-15" as *u8, 10), 1, ctr)
82 gv_kv("leader_x10" as *u8, lb_leader(buf, n, G_BOARD))
83 gv_kv("estate_latest_x10" as *u8, lb_estate_latest(buf, n, G_BOARD, roff, rlen))
84 gv_kv("estate_rank" as *u8, lb_rank_of(buf, n, G_BOARD, 161))
85 gv_kv("estate_leap_x10" as *u8, lb_estate_leap(buf, n, G_BOARD))
86 return gv_verdict("nx_leaderboard_gate" as *u8, ctr, "the leaderboard ruler on a planted board: score parser, board list, counts partition, leader, tie-aware rank, the estate's latest row and leap, an absent board, malformed rows and a foreign board as controls" as *u8)
87}