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}