code wiki / _hdl_build / nx_brick_compose_gate.nx

nx_brick_compose_gate.nx source

↩ module page · 83 lines · 3932 B

1// nx_brick_compose_gate.nx -- referee for R-BRICKS-COMPOSE (sa_brick_n + the SA_GRIDN hook): consumed part: 2// bricks drive grid richness in corpus-driven composition. Wrapper pre-authored fixtures + ran nx_tpl_parts.elf: 3// /tmp/brickstore/ <- a gallery brick with 4 headings (from a 4-item template) 4// /tmp/brickstore2/ <- a gallery brick with 9 headings (clamp case) 5// Proves: median derivation, brick-driven card count in the composed page, default fallback with no store, 6// clamp at 6, and no-bricks-of-kind -> 0 (fixed sections unaffected). GREEN iff 5/5. 7// license_tier: ORIGINAL expect_exit: 0 8import "nx_gate.nx" 9import "nx_site_archetype.nx" 10 11func bg_count(hay: *u8, hn: i64, needle: *u8) -> i64 { 12 if (hay as i64)==0 { return 0 } 13 var nl: i64=0; while needle[nl]!=(0 as u8){nl=nl+1} 14 if nl==0 { return 0 } 15 var c: i64=0 16 var i: i64=0 17 while i+nl<=hn { var j: i64=0; var ok: i64=1; while j<nl { if (hay[i+j] as i64)!=(needle[j] as i64) { ok=0; j=nl } else { j=j+1 } } if ok==1 { c=c+1; i=i+nl } else { i=i+1 } } 18 return c 19} 20func bg_row(name: *u8, ok: i64) -> i64 { gw(" " as *u8); gw(name); if ok==1 { gw(" PASS\n" as *u8) } else { gw(" FAIL\n" as *u8) } return 0 } 21 22func main() -> i64 { 23 let buf: *u8 = sys_mmap(262144) 24 // T1: median heads of the 4-heading gallery brick 25 let h1: *i64 = ss_open("/tmp/brickstore/" as *u8) 26 var t1: i64=0 27 if (h1 as i64)!=0 { 28 SA_STOREH = h1 as i64 29 if sa_brick_n("gal" as *u8) == 4 { t1=1 } 30 } 31 // T2: the composed seq page's gallery grid has EXACTLY 4 cards (brick-driven) 32 var t2: i64=0 33 if (h1 as i64)!=0 { 34 SA_STOREH = h1 as i64 35 let o: i64 = sa_recipe_seq(1, "gal" as *u8, 0, "Nishi" as *u8, "brick test" as *u8, buf) 36 if bg_count(buf, o, "<article class=\"card\"" as *u8) == 4 { t2=1 } 37 } 38 // T3: default fallback -- no store -> 6 cards 39 SA_STOREH = 0 40 let o3: i64 = sa_recipe_seq(1, "gal" as *u8, 0, "Nishi" as *u8, "brick test" as *u8, buf) 41 var t3: i64=0 42 if bg_count(buf, o3, "<article class=\"card\"" as *u8) == 6 { if sa_brick_n("gal" as *u8) == 0 { t3=1 } } 43 // T4: clamp -- the 9-heading brick clamps to 6 44 let h2: *i64 = ss_open("/tmp/brickstore2/" as *u8) 45 var t4: i64=0 46 if (h2 as i64)!=0 { 47 SA_STOREH = h2 as i64 48 if sa_brick_n("gal" as *u8) == 6 { t4=1 } 49 } 50 // T5 (NEG): no bricks of a kind -> 0, and fixed sections stay fixed (faq emits exactly 3 cards) 51 var t5: i64=0 52 if (h1 as i64)!=0 { 53 SA_STOREH = h1 as i64 54 if sa_brick_n("faq" as *u8) == 0 { 55 let o5: i64 = sa_recipe_seq(1, "faq" as *u8, 0, "Nishi" as *u8, "brick test" as *u8, buf) 56 if bg_count(buf, o5, "<article class=\"card\"" as *u8) == 3 { t5=1 } 57 } 58 } 59 SA_STOREH = 0 60 61 var passes: i64=0 62 if t1==1 { passes=passes+1 } if t2==1 { passes=passes+1 } if t3==1 { passes=passes+1 } 63 if t4==1 { passes=passes+1 } if t5==1 { passes=passes+1 } 64 var green: i64=0; if passes==5 { green=1 } 65 66 gw("=== nx_brick_compose_gate -- R-BRICKS consumed bricks drive section richness ===\n" as *u8) 67 bg_row("T1-brick-median-derived " as *u8, t1) 68 bg_row("T2-grid-count-brick-driven " as *u8, t2) 69 bg_row("T3-default-6-without-store " as *u8, t3) 70 bg_row("T4-clamped-at-6 " as *u8, t4) 71 bg_row("T5-no-kind-bricks-fixed-3(neg) " as *u8, t5) 72 gw("verdict=" as *u8); if green==1 { gw("GREEN" as *u8) } else { gw("RED" as *u8) } 73 gw(" passes=" as *u8); gn(passes); gw("/5\n" as *u8) 74 75 let lg: i64 = sys_openat_append("knowledge/status/brick_compose.log" as *u8, 0x1a4) 76 if lg >= 0 { 77 if green==1 { let m: *u8 = "BRICK-COMPOSE rows=5 pass=5 verdict=GREEN\n" as *u8; sys_write(lg, m, 42) } 78 else { let m2: *u8 = "BRICK-COMPOSE verdict=RED\n" as *u8; sys_write(lg, m2, 26) } 79 sys_close(lg) 80 } 81 if green==1 { return 0 } 82 return 1 83}