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}