code wiki / _hdl_build / nx_ark_push.nx

nx_ark_push.nx source

↩ module page · 112 lines · 4160 B

1// nx_ark_push.nx -- X-ARK-010: the ark leaves the laptop (crash lesson 2// 2026-06-11: June layer sat unpushed locally; session died at 7:53PM). 3// Each beat: git add -A (retry x3 -- live beats rotate status files 4// mid-scan, the secret_audit.log stat race), git commit (nonzero rc = 5// nothing-to-commit, logged FINE), git push (THE verdict: rc==0 = GREEN). 6// Child stdout/stderr -> /dev/null (banners are not evidence; the log row is). 7// BORROWED RUNG FLAGGED: /usr/bin/git binary (named replacement = sovereign 8// pack/push lane on own torrent stack, X-REP ladder). Paths = consts v1 9// (house precedent nx_conductor C_ACTIVE; conf-ification rides X-PULSE-101). 10// license_tier: ORIGINAL 11import "nx_syscalls.nx" 12 13const C_GIT: *u8 = "/usr/bin/git" 14const C_REPO: *u8 = "/mnt/c/Users/elder/nishi-core" 15const C_BRANCH: *u8 = "agents/invention-engine" 16const C_LOG: *u8 = "knowledge/status/ark_push.log" 17const C_MSG: *u8 = "ark beat: auto-push (X-ARK-010)" 18const C_MODE_FILE: i64 = 420 19 20func ap_w(fd: i64, s: *u8) -> i64 { 21 var n: i64 = 0 22 while s[n] != 0 as u8 { n = n + 1 } 23 sys_write(fd, s, n) 24 return 0 25} 26 27func ap_wn(fd: i64, n: i64) -> i64 { 28 if n == 0 { sys_write(fd, "0" as *u8, 1); return 0 } 29 var m: i64 = n 30 let d: *u8 = sys_mmap(24) 31 var k: i64 = 0 32 while m > 0 { d[k] = (0x30 + (m % 10)) as u8; m = m / 10; k = k + 1 } 33 var i: i64 = k - 1 34 while i >= 0 { let o: *u8 = sys_mmap(1); o[0] = d[i]; sys_write(fd, o, 1); i = i - 1 } 35 return 0 36} 37 38// run argv[] (NULL-terminated), child muted to /dev/null; returns wait4 status. 39func ap_run(argv: *i64) -> i64 { 40 let pid: i64 = sys_fork() 41 if pid == 0 { 42 let dn: i64 = sys_openat_wr("/dev/null" as *u8, C_MODE_FILE) 43 if dn >= 0 { sys_dup3(dn, 1, 0); sys_dup3(dn, 2, 0) } 44 sys_execve(argv[0] as *u8, argv, sys_mmap(16) as *i64) 45 sys_exit(127) 46 } 47 let st: *i64 = sys_mmap(16) as *i64 48 sys_wait4(pid, st, 0) 49 return st[0] 50} 51 52// git -C <repo> add -A 53func ap_git_add() -> i64 { 54 let argv: *i64 = sys_mmap(64) as *i64 55 let a1: *u8 = "-C" as *u8 56 let a3: *u8 = "add" as *u8 57 let a4: *u8 = "-A" as *u8 58 argv[0] = C_GIT as i64; argv[1] = a1 as i64; argv[2] = C_REPO as i64 59 argv[3] = a3 as i64; argv[4] = a4 as i64; argv[5] = 0 60 return ap_run(argv) 61} 62 63// git -C <repo> commit -q -m <msg> 64func ap_git_commit() -> i64 { 65 let argv: *i64 = sys_mmap(80) as *i64 66 let a1: *u8 = "-C" as *u8 67 let a3: *u8 = "commit" as *u8 68 let a4: *u8 = "-q" as *u8 69 let a5: *u8 = "-m" as *u8 70 argv[0] = C_GIT as i64; argv[1] = a1 as i64; argv[2] = C_REPO as i64 71 argv[3] = a3 as i64; argv[4] = a4 as i64; argv[5] = a5 as i64 72 argv[6] = C_MSG as i64; argv[7] = 0 73 return ap_run(argv) 74} 75 76// git -C <repo> push -q origin <branch> 77func ap_git_push() -> i64 { 78 let argv: *i64 = sys_mmap(80) as *i64 79 let a1: *u8 = "-C" as *u8 80 let a3: *u8 = "push" as *u8 81 let a4: *u8 = "-q" as *u8 82 let a5: *u8 = "origin" as *u8 83 argv[0] = C_GIT as i64; argv[1] = a1 as i64; argv[2] = C_REPO as i64 84 argv[3] = a3 as i64; argv[4] = a4 as i64; argv[5] = a5 as i64 85 argv[6] = C_BRANCH as i64; argv[7] = 0 86 return ap_run(argv) 87} 88 89func main() -> i64 { 90 var add_rc: i64 = 1 91 var tries: i64 = 0 92 while tries < 3 { 93 add_rc = ap_git_add() 94 if add_rc == 0 { tries = 3 } else { tries = tries + 1 } 95 } 96 let commit_rc: i64 = ap_git_commit() 97 let push_rc: i64 = ap_git_push() 98 let lfd: i64 = sys_openat_append(C_LOG, C_MODE_FILE) 99 if lfd >= 0 { 100 ap_w(lfd, "ARKPUSH epoch=" as *u8); ap_wn(lfd, sys_now_realtime_sec()) 101 ap_w(lfd, " add_rc=" as *u8); ap_wn(lfd, add_rc) 102 ap_w(lfd, " commit_rc=" as *u8); ap_wn(lfd, commit_rc) 103 ap_w(lfd, " push_rc=" as *u8); ap_wn(lfd, push_rc) 104 if push_rc == 0 { ap_w(lfd, " verdict=GREEN\n" as *u8) } else { ap_w(lfd, " verdict=RED\n" as *u8) } 105 sys_close(lfd) 106 } 107 ap_w(1, "ARKPUSH push_rc=" as *u8); ap_wn(1, push_rc) 108 if push_rc == 0 { ap_w(1, " verdict=GREEN\n" as *u8) } else { ap_w(1, " verdict=RED\n" as *u8) } 109 if push_rc != 0 { sys_exit(1) } 110 sys_exit(0) 111 return 0 112}