code wiki / _hdl_build / nx_teacher_learn_test.nx
nx_teacher_learn_test.nx source
↩ module page · 45 lines · 3334 B
1// nx_teacher_learn_test.nx -- TEACH THE TEACHER: it learns from handoff outcomes. A capability was
2// advanced M3->M4 but the team then REGRESSED in use (premature handoff). The Teacher must: detect it
3// premature, ROLL BACK to M3, and RAISE its threshold so it is more conservative next time. A handoff
4// that SUSTAINED leaves the rung + threshold unchanged. Exit 0 on 6/6. license_tier: ORIGINAL
5
6import "nx_teacher.nx"
7import "nx_syscalls.nx"
8
9func lt_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
10func lt_num(v: i64) -> i64 { let bb: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m; sys_write(1,"-" as *u8,1)}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=48+(m%10); m=m/10; k=k+1}; var i: i64=0; while i<k {bb[i]=t[k-1-i]; i=i+1}; sys_write(1, bb, k); return 0 }
11
12func main() -> i64 {
13 lt_puts("=== TEACH THE TEACHER: learn from handoff outcomes (rollback + get stricter) ===\n" as *u8)
14 let base: i64 = 60; let step: i64 = 5
15
16 // Case A: advanced M3->M4 but team did NOT sustain (premature)
17 let prem_a: i64 = tch_premature(1, 0)
18 let roll_a: i64 = tch_rollback(TCH_M4, 1, 0) // -> back to M3
19 // Case B: advanced and SUSTAINED (good handoff)
20 let prem_b: i64 = tch_premature(1, 1)
21 let roll_b: i64 = tch_rollback(TCH_M4, 1, 1) // -> stays M4
22
23 // the Teacher learns: 1 premature so far -> raise the bar
24 let new_thr: i64 = tch_learned_threshold(base, 1, step)
25 let stricter: i64 = tch_got_stricter(base, new_thr)
26 // after raising the bar, a capability at the OLD-passing grade 62 no longer advances
27 let adv_after: i64 = tch_next_level(TCH_M3, 62, new_thr, 0) // 62 < 65 -> hold at M3
28
29 lt_puts(" premature handoff? case-A(not-sustained)=" as *u8); lt_num(prem_a); lt_puts(" -> rollback M4->" as *u8); lt_num(roll_a); lt_puts("\n" as *u8)
30 lt_puts(" good handoff? case-B(sustained)=" as *u8); lt_num(prem_b); lt_puts(" -> stays M" as *u8); lt_num(roll_b); lt_puts("\n" as *u8)
31 lt_puts(" LEARNED: threshold " as *u8); lt_num(base); lt_puts(" -> " as *u8); lt_num(new_thr); lt_puts(" stricter=" as *u8); lt_num(stricter); lt_puts(" (grade 62 now HOLDS at M" as *u8); lt_num(adv_after); lt_puts(")\n" as *u8)
32
33 let r: *i64 = sys_mmap(8 * 8) as *i64
34 r[0] = 0; if prem_a == 1 { r[0] = 1 } // detected the premature handoff
35 r[1] = 0; if roll_a == TCH_M3 { r[1] = 1 } // rolled back one rung
36 r[2] = 0; if prem_b == 0 { if roll_b == TCH_M4 { r[2] = 1 } } // sustained handoff held
37 r[3] = 0; if new_thr == 65 { r[3] = 1 } // threshold raised 60->65
38 r[4] = 0; if stricter == 1 { r[4] = 1 } // the Teacher got stricter (it learned)
39 r[5] = 0; if adv_after == TCH_M3 { r[5] = 1 } // grade 62 no longer clears the raised bar
40 var pass: i64 = 0; var i: i64 = 0
41 while i < 6 { pass = pass + r[i]; i = i + 1 }
42 lt_puts("----\n passed " as *u8); lt_num(pass); lt_puts("/6\n" as *u8)
43 if pass == 6 { lt_puts(" TEACHER TAUGHT: a premature handoff is rolled back and RAISES the bar -- the Teacher learns to be more conservative from real outcomes, not a fixed rule.\n" as *u8); sys_exit(0); return 0 }
44 lt_puts(" FAIL\n" as *u8); sys_exit(1); return 1
45}