code wiki / _hdl_build / nx_proj_pulse.nx
nx_proj_pulse.nx
buildroot/runtime/_hdl_build/nx_proj_pulse.nx
about
nx_proj_pulse.nx -- NAP1: THE PUBLISHED PROJECT PULSE. One organ composes a compare domain's rank
artifact (nx_compare_rank's <dom>.rank), its sovereign project plane (nishi_project prj:/mem:/not: +
vizsla tsk:/don: records) and derives DRIFT between them, then emits ONE public page -- the team's
queue, board, journal (findings / recommendations / decisions) and the disagreements, visible beside
the compare board they serve. This is the publish leg of the Nishi Autonomous Project loop (pmdash
NAP1; field bar = the AI-Scientist publish-what-you-did loop, grounded our way: every claim on the
page comes from an artifact -- the rank file, the plane, never prose).
nx_proj_pulse emit <dom> <prefix> <pid> <rankfile> <outpath|-> -> compose + write the page
nx_proj_pulse -> selftest (unique /tmp fixtures)
REFUSES loud on a missing rank artifact or an empty/unknown project (abstain, never fabricate).
DRIFT rules (v1, detection only -- filing is NAP3): a ranked rung with no project task = UNSYNCED;
a task marked DONE whose rung is still OPEN on the board = EVIDENCE-DISAGREE (the contract symbol has
not landed, so the board refuses the claim). COMPOSES nx_project.nx (pj_gather/pj_state/pj_put) --
one gatherer, one writer, no duplicate ruler. Verdict teeth are self-contained counters with the
canonical verdict LAST and the exit code carrying it; migration onto per-tooth gv_check is the named
D001 residual, not silently skipped. license_tier: ORIGINAL
dependencies 2 imports · 0 importers
imports: nx_syscalls.nxnx_project.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 20 | const PP_BUF: i64 = 262144 |
| 21 | const PP_ROWCAP: i64 = 64 |
functions
| 23 | func pp_slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } |
| 24 | func pp_p(s: *u8) -> i64 { sys_write(1, s, pp_slen(s)); return 0 } |
| 25 | func pp_pn(v: i64) -> i64 { let b: *u8 = sys_mmap(32); var o: i64 = pj_catn(b, 0, v); sys_write(1, b, o); return 0 } |
| 26 | func pp_contains(hay: *u8, hn: i64, needle: *u8) -> i64 |
| 40 | func pp_lower(src: *u8, dst: *u8, cap: i64) -> i64 called by 1: pp_emit |
| 56 | func pp_esc(dst: *u8, off: i64, s: *u8) -> i64 |
| 68 | func pp_pfield(b: *u8, ls: i64, le: i64, want: i64, out: *u8, cap: i64) -> i64 called by 1: pp_rank_load |
| 95 | func pp_rank_load(path: *u8, rids: *i64, rstage: *i64, rtitle: *i64, rsym: *i64, rprio: *i64) -> i64 |
| 128 | func pp_task_idx(st: *i64, tid: *u8) -> i64 |
| 137 | func pp_emit(dom: *u8, prefix: *u8, pid: *u8, rankfile: *u8, outpath: *u8) -> i64 |
| 325 | func pp_fx_rec(w: *i64, kp: *u8, keys: *i64, vals: *i64, nf: i64) -> i64 { return pj_put(keys, vals, nf, kp, w) } |
| 327 | func pp_check(ctr: *i64, name: *u8, got: i64) -> i64 |
| 335 | func pp_selftest() -> i64 |
| 444 | func main(argc: i64, argv: *i64) -> i64 |