← back to the board
[[378,26,10]] d ≤
n
378
k
26
d
10
kd²/n
6.878
w
6
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 10, d_Z ≤ 10 · w_X = 6, w_Z = 6 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 10 · witness weight 10 (claimed upper_bound)
witness operator (support, 10 qubits)
[33, 61, 99, 134, 142, 248, 265, 296, 300, 319]
d_Z 10 · witness weight 10 (claimed upper_bound)
witness operator (support, 10 qubits)
[44, 79, 100, 105, 159, 202, 210, 266, 349, 374]
certificate none yet · distance stands as a self-certified upper bound (d ≤)

Diagnostics

computed by the verifier from the parity checks, the layout, and the stored witnesses; shown as evidence, not used for ranking
girth H_X 8 · H_Z 8 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 6 · H_Z 6
qubit degrees H_X 3 · H_Z 3
trapping sets H_X (1,3)×378 (2,4)×2835 (3,5)×28350 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,3): 378 (2,4): 2835 (3,5): 28350 (3,7): 3780
trapping sets H_Z (1,3)×378 (2,4)×2835 (3,5)×28350 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,3): 378 (2,4): 2835 (3,5): 28350 (3,7): 3780

Construction & provenance

authors @FarLab
provenance submitted through the challenge
novelty novelty not audited
construction two-block group algebra code on ZSZ(63,3,25) (kit group_algebra Cayley-table indices): a = [0, 35, 94], b = [0, 23, 52]; H_X = [L(a) | R(b)], H_Z = [R(b)^T | L(a)^T]
model Claude Claude Fable 5.1 (claimed, not verified)
date 2026-10-17
family generalized bicycle (a tag, not a ranking)
locality unrestricted (computed from the layout)
weight class weight ≤ 6 (computed)

How this code was found

the research note submitted with this code · raw markdown · all notes

[[378,26,10]] — two-block group-algebra code over C63 ⋊ C3 (ZSZ(63,3,25))

Direction & hypothesis

Cell weight-6 x unrestricted, CSS board, n between 330 and 400. Before this campaign the weight-6 frontier in the high-rate corner there was 330-68-6, 360-38-8 and 382-36-10: no weight-6 entry with n <= 380 and k >= 20 reached d = 10. The hypothesis was that two-block group-algebra (2BGA) codes on split metacyclic groups C_l1 ⋊ C_l2 of order 150 to 200 could reach d = 10 below n = 382 at k in the mid twenties. [[378,26,10]] does: no board entry has n <= 378, k >= 26, d >= 10 and check weight <= 6, and the k - 2 margin holds ([[378,24,10]] is not dominated either). It trades distance for rate against the [[378,24,16]] on a different presentation of C63 ⋊ C3 filed from the same campaign.

What was searched

Random-support 2BGA codes H_X = [L(a) | R(b)], H_Z = [R(b)^T | L(a)^T] with a, b three group elements each, both containing the identity (no loss of generality). The group menu was every non-abelian group of order 150 to 200 the kit builds from Cayley-table constructors: dihedral D_n, metacyclic C_n ⋊_r C_k (up to two actions r per (n, k)), C_m x D_k, C_m x A4, C_m x S4, D_a x D_b, C_m x (C_n ⋊ C_k) for eight small metacyclic factors, and the split metacyclic presentations ZSZ(l1, l2, q), l2 <= 8, of research/kit/nonabelian_lp.py.

A generic weight-3 element is invertible on most irreducible blocks of F_2[G], so k >= 20 is rare: the sweep ran a parallel generate-and-rank prefilter over 400,000 draws (seed 62), of which 239 had k >= 20 and a connected Tanner graph. Those went through research/kit/search.screen with the gf2_fast backend at 400 trials; 31 advanced the board frontier at screen depth and were confirmed at 20,000 / 200,000 / 2,000,000 fast trials (research/kit/surrogate.distance_rand_witness, pair depth 8). Three different draws (on ZSZ(63,3,25), ZSZ(63,3,16) and MC(63,3,16)) gave [[378,26,10]] at screen depth. The other survivors were [[310,20,12]], [[336,20,16]], [[336,24,12]] and [[378,24,16]], filed separately, and points those dominate.

Evidence trail

Witness-backed upper bound d <= 10, not an exact distance. The bound was 10 at 400 trials and never moved; both sides have a weight-10 logical.

| stage | trials per candidate | lightest logical | |---|---|---| | screen (gf2_fast, seed from fingerprint) | 400 | 10 | | confirm | 20,000 | 10 | | confirm | 200,000 | 10 | | confirm | 2,000,000 | 10 | | numpy lightest_logical, both sides, seeds 62 / 63 | 1,500 | X 10, Z 10 | | deep ladder, 3 fresh seeds (51729, 59648, 67567), gf2_fast | 10,000,000 each | 10, 10, 10 |

verify/validate_candidate.py (through research/kit/coordination.py's gate wrapper) returned passed: true, board_advancing: true, `d_only_gain: false`, label "advances the weight-6 x unrestricted board". Literature novelty is unverified; board-relative novelty comes from verify/validate_candidate.py (fingerprint and Weisfeiler-Leman dedup against every board entry found nothing).

Dead ends

  • None of the 27 prefiltered 2BGA draws with k >= 28 (up to k = 48)
  • advanced the frontier even at 400 screen trials: above k = 26 the weight-6 corner stays with 330-68-6, 360-38-8 and 382-36-10.

  • Cyclic generalized-bicycle codes with a designed divisor g | x^m - 1 at
  • check weight 6 (weight-3 a and b): at odd m from 111 to 200 and deg g >= 8 there are essentially no weight-3 multiples of g; the few that exist are lifts from a subring Z_{m/s} and give direct sums.

  • Random-support bivariate bicycle codes at check weight 6: 200,000
  • prefiltered draws (185 with k >= 12) gave only points dominated by the 2BGA finds of this campaign.

  • Non-abelian lifted products with 1 x 2 bases and weight-(2,2) entries
  • (check weight 6) give k = |G| + 6 at d = 6, already dominated by the board's 258-88-6.

Tools

Model: Claude Fable 5.1 (Claude Code agent, contributor-driven workflow). Compute: one Brev n2d-highcpu-64 box; gf2_fast at 30 threads for the confirmation rungs and the ladder, 30 forked processes for the generate + rank prefilter. Kit modules: research/kit/nonabelian_lp.py (zsz), research/kit/group_algebra.py (build_2bga), research/kit/search.py (screen), research/kit/surrogate.py (distance_rand_witness, lightest_logical), research/kit/prescreen.py (direct-sum and board dedup), research/kit/submit.py, research/kit/coordination.py. About 0.3 CPU-hours on this code; about 12 CPU-hours on the sweeps above.

Reproduction

The group is research/kit/nonabelian_lp.py's zsz(63, 3, 25): C_63 ⋊ C_3 with y x = x^25 y (25 has order 3 mod 63), element x^i y^j at index 3 i + j, identity at 0; order 189, n = 378. With x = (1, 0), y = (0, 1):

a = 1 + x^11 y^2 + x^31 y (indices 0, 35, 94), b = 1 + x^7 y^2 + x^17 y (indices 0, 23, 52).

import sys; sys.path[:0] = ["research/kit", "verify"]
from nonabelian_lp import zsz
from group_algebra import build_2bga
from css import compute_k
mul = zsz(63, 3, 25)
HX, HZ = build_2bga(mul, [0, 35, 94], [0, 23, 52])   # n = 378, k = 26
assert compute_k(HX, HZ) == 26

Check sets match codes/378-26-10.json row for row in this order. The numpy surrogate.lightest_logical at 1,500 trials with seeds 62 (X side, pass (HX, HZ)) and 63 (Z side, pass (HZ, HX)) returns a weight-10 logical on each side.

Parity checks

X-checks 189 (max weight 6) · Z-checks 189 (max weight 6)
H_X (189 checks, sparse supports)
[0, 89, 121, 189, 232, 257] [1, 87, 122, 190, 296, 327] [2, 88, 120, 191, 238, 357] [3, 7, 74, 192, 235, 260] [4, 8, 72, 193, 299, 330] [5, 6, 73, 194, 241, 360] [6, 59, 82, 195, 238, 263] [7, 57, 83, 196, 302, 333] [8, 58, 81, 197, 244, 363] [9, 44, 157, 198, 241, 266] [10, 42, 158, 199, 305, 336] [11, 43, 156, 200, 247, 366] [12, 29, 43, 201, 244, 269] [13, 27, 44, 202, 308, 339] [14, 28, 42, 203, 250, 369] [14, 15, 118, 204, 247, 272] [12, 16, 119, 205, 311, 342] [13, 17, 117, 206, 253, 372] [4, 18, 188, 207, 250, 275] [5, 19, 186, 208, 314, 345] [3, 20, 187, 209, 256, 375] [21, 79, 173, 210, 253, 278] [22, 80, 171, 211, 317, 348] [23, 78, 172, 189, 212, 259] [24, 154, 158, 213, 256, 281] [25, 155, 156, 214, 320, 351] [26, 153, 157, 192, 215, 262] [27, 40, 143, 216, 259, 284] [28, 41, 141, 217, 323, 354] [29, 39, 142, 195, 218, 265] [30, 115, 128, 219, 262, 287] [31, 116, 126, 220, 326, 357] [32, 114, 127, 198, 221, 268] [1, 33, 113, 222, 265, 290] [2, 34, 111, 223, 329, 360] [0, 35, 112, 201, 224, 271] [36, 76, 98, 225, 268, 293] [37, 77, 96, 226, 332, 363] [38, 75, 97, 204, 227, 274] [39, 83, 151, 228, 271, 296] [40, 81, 152, 229, 335, 366] [41, 82, 150, 207, 230, 277] [37, 42, 68, 231, 274, 299] [38, 43, 66, 232, 338, 369] [36, 44, 67, 210, 233, 280] [45, 53, 112, 234, 277, 302] [46, 51, 113, 235, 341, 372] [47, 52, 111, 213, 236, 283] [38, 48, 187, 237, 280, 305] [36, 49, 188, 238, 344, 375] [37, 50, 186, 216, 239, 286] [23, 51, 73, 240, 283, 308] [21, 52, 74, 189, 241, 347] [22, 53, 72, 219, 242, 289] [8, 54, 148, 243, 286, 311] [6, 55, 149, 192, 244, 350] [7, 56, 147, 222, 245, 292] [34, 57, 182, 246, 289, 314] [35, 58, 180, 195, 247, 353] [33, 59, 181, 225, 248, 295] [60, 109, 167, 249, 292, 317] [61, 110, 165, 198, 250, 356] [62, 108, 166, 228, 251, 298] [63, 152, 184, 252, 295, 320] [64, 150, 185, 201, 253, 359] [65, 151, 183, 231, 254, 301] [66, 70, 137, 255, 298, 323] [67, 71, 135, 204, 256, 362] [68, 69, 136, 234, 257, 304] [69, 122, 145, 258, 301, 326] [70, 120, 146, 207, 259, 365] [71, 121, 144, 237, 260, 307] [31, 72, 107, 261, 304, 329] [32, 73, 105, 210, 262, 368] [30, 74, 106, 240, 263, 310] [75, 92, 106, 264, 307, 332] [76, 90, 107, 213, 265, 371] [77, 91, 105, 243, 266, 313] [77, 78, 181, 267, 310, 335] [75, 79, 182, 216, 268, 374] [76, 80, 180, 246, 269, 316] [62, 67, 81, 270, 313, 338] [60, 68, 82, 219, 271, 377] [61, 66, 83, 249, 272, 319] [47, 84, 142, 273, 316, 341] [45, 85, 143, 191, 222, 274] [46, 86, 141, 252, 275, 322] [28, 32, 87, 276, 319, 344] [29, 30, 88, 194, 225, 277] [27, 31, 89, 255, 278, 325] [17, 90, 103, 279, 322, 347] [15, 91, 104, 197, 228, 280] [16, 92, 102, 258, 281, 328] [2, 93, 178, 282, 325, 350] [0, 94, 179, 200, 231, 283] [1, 95, 177, 261, 284, 331] [64, 96, 176, 285, 328, 353] [65, 97, 174, 203, 234, 286] [63, 98, 175, 264, 287, 334] [99, 139, 161, 288, 331, 356] [100, 140, 159, 206, 237, 289] [101, 138, 160, 267, 290, 337] [25, 102, 146, 291, 334, 359] [26, 103, 144, 209, 240, 292] [24, 104, 145, 270, 293, 340] [100, 105, 131, 294, 337, 362] [101, 106, 129, 212, 243, 295] [99, 107, 130, 273, 296, 343] [108, 116, 175, 297, 340, 365] [109, 114, 176, 215, 246, 298] [110, 115, 174, 276, 299, 346] [61, 101, 111, 300, 343, 368] [62, 99, 112, 218, 249, 301] [60, 100, 113, 279, 302, 349] [86, 114, 136, 303, 346, 371] [84, 115, 137, 221, 252, 304] [85, 116, 135, 282, 305, 352] [22, 71, 117, 306, 349, 374] [23, 69, 118, 224, 255, 307] [21, 70, 119, 285, 308, 355] [56, 97, 120, 309, 352, 377] [54, 98, 121, 227, 258, 310] [55, 96, 122, 288, 311, 358] [41, 123, 172, 191, 312, 355] [39, 124, 173, 230, 261, 313] [40, 125, 171, 291, 314, 361] [26, 58, 126, 194, 315, 358] [24, 59, 127, 233, 264, 316] [25, 57, 128, 294, 317, 364] [11, 129, 133, 197, 318, 361] [9, 130, 134, 236, 267, 319] [10, 131, 132, 297, 320, 367] [19, 132, 185, 200, 321, 364] [20, 133, 183, 239, 270, 322] [18, 134, 184, 300, 323, 370] [94, 135, 170, 203, 324, 367] [95, 136, 168, 242, 273, 325] [93, 137, 169, 303, 326, 373] [138, 155, 169, 206, 327, 370] [139, 153, 170, 245, 276, 328] [140, 154, 168, 306, 329, 376] [55, 140, 141, 209, 330, 373] [56, 138, 142, 248, 279, 331] [54, 139, 143, 190, 309, 332] [125, 130, 144, 212, 333, 376] [123, 131, 145, 251, 282, 334] [124, 129, 146, 193, 312, 335] [16, 110, 147, 190, 215, 336] [17, 108, 148, 254, 285, 337] [15, 109, 149, 196, 315, 338] [91, 95, 150, 193, 218, 339] [92, 93, 151, 257, 288, 340] [90, 94, 152, 199, 318, 341] [80, 153, 166, 196, 221, 342] [78, 154, 167, 260, 291, 343] [79, 155, 165, 202, 321, 344] [52, 65, 156, 199, 224, 345] [53, 63, 157, 263, 294, 346] [51, 64, 158, 205, 324, 347] [50, 127, 159, 202, 227, 348] [48, 128, 160, 266, 297, 349] [49, 126, 161, 208, 327, 350] [13, 35, 162, 205, 230, 351] [14, 33, 163, 269, 300, 352] [12, 34, 164, 211, 330, 353] [20, 88, 165, 208, 233, 354] [18, 89, 166, 272, 303, 355] [19, 87, 167, 214, 333, 356] [5, 163, 168, 211, 236, 357] [3, 164, 169, 275, 306, 358] [4, 162, 170, 217, 336, 359] [49, 171, 179, 214, 239, 360] [50, 172, 177, 278, 309, 361] [48, 173, 178, 220, 339, 362] [124, 164, 174, 217, 242, 363] [125, 162, 175, 281, 312, 364] [123, 163, 176, 223, 342, 365] [10, 149, 177, 220, 245, 366] [11, 147, 178, 284, 315, 367] [9, 148, 179, 226, 345, 368] [85, 134, 180, 223, 248, 369] [86, 132, 181, 287, 318, 370] [84, 133, 182, 229, 348, 371] [119, 160, 183, 226, 251, 372] [117, 161, 184, 290, 321, 373] [118, 159, 185, 232, 351, 374] [46, 104, 186, 229, 254, 375] [47, 102, 187, 293, 324, 376] [45, 103, 188, 235, 354, 377]
H_Z (189 checks, sparse supports)
[0, 23, 52, 189, 224, 283] [1, 143, 147, 190, 222, 284] [2, 85, 123, 191, 223, 282] [3, 26, 55, 192, 209, 358] [4, 146, 150, 193, 207, 359] [5, 88, 126, 194, 208, 357] [6, 29, 58, 194, 195, 244] [7, 149, 153, 192, 196, 245] [8, 91, 129, 193, 197, 243] [9, 32, 61, 198, 319, 368] [10, 152, 156, 199, 320, 366] [11, 94, 132, 200, 318, 367] [12, 35, 64, 201, 205, 353] [13, 155, 159, 202, 206, 351] [14, 97, 135, 203, 204, 352] [15, 38, 67, 204, 280, 338] [16, 158, 162, 205, 281, 336] [17, 100, 138, 206, 279, 337] [18, 41, 70, 207, 323, 355] [19, 161, 165, 208, 321, 356] [20, 103, 141, 209, 322, 354] [21, 44, 73, 210, 241, 308] [22, 164, 168, 211, 242, 306] [23, 106, 144, 212, 240, 307] [24, 47, 76, 213, 293, 316] [25, 167, 171, 214, 291, 317] [26, 109, 147, 215, 292, 315] [27, 50, 79, 202, 216, 278] [28, 170, 174, 203, 217, 276] [29, 112, 150, 201, 218, 277] [30, 53, 82, 219, 263, 277] [31, 173, 177, 220, 261, 278] [32, 115, 153, 221, 262, 276] [33, 56, 85, 222, 248, 352] [34, 176, 180, 223, 246, 353] [35, 118, 156, 224, 247, 351] [36, 59, 88, 225, 233, 238] [37, 179, 183, 226, 231, 239] [38, 121, 159, 227, 232, 237] [39, 62, 91, 218, 228, 313] [40, 182, 186, 216, 229, 314] [41, 124, 162, 217, 230, 312] [42, 65, 94, 199, 203, 231] [0, 43, 185, 200, 201, 232] [44, 127, 165, 198, 202, 233] [45, 68, 97, 234, 274, 377] [3, 46, 188, 235, 275, 375] [47, 130, 168, 236, 273, 376] [48, 71, 100, 237, 349, 362] [2, 6, 49, 238, 350, 360] [50, 133, 171, 239, 348, 361] [51, 74, 103, 235, 240, 347] [5, 9, 52, 236, 241, 345] [53, 136, 174, 234, 242, 346] [54, 77, 106, 243, 310, 332] [8, 12, 55, 244, 311, 330] [56, 139, 177, 245, 309, 331] [57, 80, 109, 196, 246, 317] [11, 15, 58, 197, 247, 315] [59, 142, 180, 195, 248, 316] [60, 83, 112, 249, 271, 302] [14, 18, 61, 250, 272, 300] [62, 145, 183, 251, 270, 301] [63, 86, 115, 252, 287, 346] [17, 21, 64, 253, 285, 347] [65, 148, 186, 254, 286, 345] [66, 89, 118, 232, 255, 272] [20, 24, 67, 233, 256, 270] [0, 68, 151, 231, 257, 271] [69, 92, 121, 257, 258, 307] [23, 27, 70, 255, 259, 308] [3, 71, 154, 256, 260, 306] [72, 95, 124, 193, 242, 261] [26, 30, 73, 194, 240, 262] [6, 74, 157, 192, 241, 263] [75, 98, 127, 227, 264, 268] [29, 33, 76, 225, 265, 269] [9, 77, 160, 226, 266, 267] [78, 101, 130, 212, 267, 343] [32, 36, 79, 210, 268, 344] [12, 80, 163, 211, 269, 342] [81, 104, 133, 197, 229, 270] [35, 39, 82, 195, 230, 271] [15, 83, 166, 196, 228, 272] [84, 107, 136, 273, 304, 371] [38, 42, 85, 274, 305, 369] [18, 86, 169, 275, 303, 370] [87, 110, 139, 190, 276, 356] [41, 45, 88, 191, 277, 354] [21, 89, 172, 189, 278, 355] [90, 113, 142, 265, 279, 341] [44, 48, 91, 266, 280, 339] [24, 92, 175, 264, 281, 340] [93, 116, 145, 282, 326, 340] [47, 51, 94, 283, 324, 341] [27, 95, 178, 284, 325, 339] [96, 119, 148, 226, 285, 311] [50, 54, 97, 227, 286, 309] [30, 98, 181, 225, 287, 310] [99, 122, 151, 288, 296, 301] [53, 57, 100, 289, 294, 302] [33, 101, 184, 290, 295, 300] [102, 125, 154, 281, 291, 376] [56, 60, 103, 279, 292, 377] [36, 104, 187, 280, 293, 375] [105, 128, 157, 262, 266, 294] [59, 63, 106, 263, 264, 295] [1, 39, 107, 261, 265, 296] [108, 131, 160, 251, 297, 337] [62, 66, 109, 249, 298, 338] [4, 42, 110, 250, 299, 336] [111, 134, 163, 223, 236, 300] [65, 69, 112, 224, 234, 301] [7, 45, 113, 222, 235, 302] [114, 137, 166, 221, 298, 303] [68, 72, 115, 219, 299, 304] [10, 48, 116, 220, 297, 305] [117, 140, 169, 206, 306, 373] [71, 75, 118, 204, 307, 374] [13, 51, 119, 205, 308, 372] [120, 143, 172, 191, 259, 309] [74, 78, 121, 189, 260, 310] [16, 54, 122, 190, 258, 311] [123, 146, 175, 312, 334, 365] [77, 81, 124, 313, 335, 363] [19, 57, 125, 314, 333, 364] [126, 149, 178, 220, 315, 350] [80, 84, 127, 221, 316, 348] [22, 60, 128, 219, 317, 349] [129, 152, 181, 295, 318, 335] [83, 87, 130, 296, 319, 333] [25, 63, 131, 294, 320, 334] [132, 155, 184, 320, 321, 370] [86, 90, 133, 318, 322, 371] [28, 66, 134, 319, 323, 369] [135, 158, 187, 256, 305, 324] [89, 93, 136, 257, 303, 325] [31, 69, 137, 255, 304, 326] [1, 138, 161, 290, 327, 331] [92, 96, 139, 288, 328, 332] [34, 72, 140, 289, 329, 330] [4, 141, 164, 217, 275, 330] [95, 99, 142, 218, 273, 331] [37, 75, 143, 216, 274, 332] [7, 144, 167, 260, 292, 333] [98, 102, 145, 258, 293, 334] [40, 78, 146, 259, 291, 335] [10, 147, 170, 245, 336, 367] [101, 105, 148, 243, 337, 368] [43, 81, 149, 244, 338, 366] [13, 150, 173, 230, 253, 339] [104, 108, 151, 228, 254, 340] [46, 84, 152, 229, 252, 341] [16, 153, 176, 215, 328, 342] [107, 111, 154, 213, 329, 343] [49, 87, 155, 214, 327, 344] [19, 156, 179, 200, 214, 345] [110, 114, 157, 198, 215, 346] [52, 90, 158, 199, 213, 347] [22, 159, 182, 289, 348, 374] [113, 117, 160, 290, 349, 372] [55, 93, 161, 288, 350, 373] [25, 162, 185, 351, 359, 364] [116, 120, 163, 352, 357, 365] [58, 96, 164, 353, 358, 363] [28, 165, 188, 250, 344, 354] [119, 123, 166, 251, 342, 355] [61, 99, 167, 249, 343, 356] [2, 31, 168, 325, 329, 357] [122, 126, 169, 326, 327, 358] [64, 102, 170, 324, 328, 359] [5, 34, 171, 211, 314, 360] [125, 129, 172, 212, 312, 361] [67, 105, 173, 210, 313, 362] [8, 37, 174, 286, 299, 363] [128, 132, 175, 287, 297, 364] [70, 108, 176, 285, 298, 365] [11, 40, 177, 284, 361, 366] [131, 135, 178, 282, 362, 367] [73, 111, 179, 283, 360, 368] [14, 43, 180, 247, 269, 369] [134, 138, 181, 248, 267, 370] [76, 114, 182, 246, 268, 371] [17, 46, 183, 254, 322, 372] [137, 141, 184, 252, 323, 373] [79, 117, 185, 253, 321, 374] [20, 49, 186, 208, 239, 375] [140, 144, 187, 209, 237, 376] [82, 120, 188, 207, 238, 377]
Code ID 378-26-10 · download JSON · raw on GitHub