code wiki / _hdl_build / nx_yt_basejs_gate.nx
nx_yt_basejs_gate.nx source
↩ module page · 63 lines · 4085 B
1import "nx_gate_gn.nx"
2import "nx_gate_base.nx"
3// nx_yt_basejs_gate.nx -- proves the NATIVE base.js name-finder + the full LIVE-SHAPE pipeline: locate the
4// n-function name from real base.js shape (array-indexed `Wma[0]` resolved through `var Wma=[...]`, and the
5// direct `c=lha(c)` form) -> hand the name to nx_yt_nsolve -> run the function on our engine -> transformed n.
6// This is the "robust name-find in real base.js" rung, gated on realistic minified structure (no live YT).
7// license_tier: ORIGINAL expect_exit: 0
8import "nx_syscalls.nx"
9import "nx_media_signal.nx"
10import "nx_yt_basejs.nx"
11import "nx_yt_nsolve.nx"
12import "nx_gate_verdict.nx"
13
14func grow(name: *u8, ok: i64) -> i64 { if ok==1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw("
15" as *u8); return ok }
16func gsl(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n }
17func streq(a: *u8, al: i64, b: *u8) -> i64 { if al != gsl(b) { return 0 } var i: i64=0; while i<al { if (a[i]&0xff) != (b[i]&0xff) { return 0 } i=i+1 } return 1 }
18
19func main() -> i64 {
20 gw("yt-basejs SOVEREIGN gate (native n-fn name-find incl array-indexed -> hand to solver -> transformed n)\n" as *u8)
21 var pass: i64 = 0
22 var ttl: i64 = 0
23 let out: *u8 = sys_mmap(256)
24
25 // base.js-shape fixture: array-indexed ref `b=Wma[0](b)`, the array `var Wma=[Qzx,Yaa]`, and the real fn defs.
26 let base: *u8 = "d;var pp=ns.get(\"n\"))&&(b=Wma[0](b),g=1;var Wma=[Qzx,Yaa];Qzx=function(a){var b=a.split(\"\");b.reverse();b.splice(0,2);return b.join(\"\")};Yaa=function(a){var b=a.split(\"\");b.reverse();return b.join(\"\")};more=9" as *u8
27 let bl: i64 = gsl(base)
28
29 // B1: array-indexed name resolves Wma[0] -> Qzx
30 let l1: i64 = bjs_find_nfunc_name(base, bl, out, 256)
31 ttl=ttl+1; pass=pass+grow("B1 name-find resolves Wma[0] -> 'Qzx'\x00" as *u8, ((l1 == 3)) as i64 * (streq(out, l1, "Qzx" as *u8)))
32
33 // B2: DIRECT-form ref `c=lha(c)` -> lha
34 let base2: *u8 = "z;q.get(\"n\"))&&(c=lha(c));lha=function(a){var b=a.split(\"\");b.reverse();return b.join(\"\")};end" as *u8
35 let l2: i64 = bjs_find_nfunc_name(base2, gsl(base2), out, 256)
36 ttl=ttl+1; pass=pass+grow("B2 direct-form name-find -> 'lha'\x00" as *u8, ((l2 == 3)) as i64 * (streq(out, l2, "lha" as *u8)))
37
38 // B3: array element index 1 resolves correctly (resolution isn't hardcoded to 0)
39 let l3: i64 = bjs_resolve_array_elem(base, bl, "Wma" as *u8, 3, 1, out, 256)
40 ttl=ttl+1; pass=pass+grow("B3 Wma[1] -> 'Yaa' (index resolution correct)\x00" as *u8, ((l3 == 3)) as i64 * (streq(out, l3, "Yaa" as *u8)))
41
42 // B4: END-TO-END -- find the name in base.js, then SOLVE (run the fn) on our engine
43 let nm: i64 = bjs_find_nfunc_name(base, bl, out, 256) // -> "Qzx"
44 let res: *u8 = sys_mmap(4096)
45 let r4: i64 = ns_solve(base, bl, out, nm, "abcdef" as *u8, 6, res, 4096)
46 // Qzx('abcdef'): reverse->fedcba, splice(0,2)->dcba, join->"dcba"
47 ttl=ttl+1; pass=pass+grow("B4 END-TO-END base.js -> name -> solve('abcdef') = 'dcba'\x00" as *u8, ((r4 == 4)) as i64 * (streq(res, r4, "dcba" as *u8)))
48
49 // B5: no n-param anchor -> 0 (a MISS = a self-heal learn signal, graceful not crash)
50 let l5: i64 = bjs_find_nfunc_name("var x=1;function f(){return 2}" as *u8, gsl("var x=1;function f(){return 2}" as *u8), out, 256)
51 ttl=ttl+1; pass=pass+grow("B5 no .get(\"n\") anchor -> 0 (graceful miss)\x00" as *u8, (l5 == 0) as i64)
52
53 gw("pass=" as *u8); gn(pass); gw("/" as *u8); gn(ttl); gw("\n" as *u8)
54 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check
55 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled
56 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify.
57 let ctr__dry: *i64 = gv_ctr()
58 ctr__dry[0] = pass
59 ctr__dry[1] = ttl
60 let rc__dry: i64 = gv_verdict("YT-BASEJS-GATE" as *u8, ctr__dry, "native base.js name-finder resolves the n-fn incl array-indexed form + drives the solver end-to-end)" as *u8)
61 sys_exit(rc__dry)
62 return rc__dry
63}