code wiki / _hdl_build / nx_neuro.nx
nx_neuro.nx
buildroot/runtime/_hdl_build/nx_neuro.nx
about
nx_neuro.nx -- ★THE INNERVATION PLANE: the nervous system as a MAPPED TOPOLOGY, and autonomic
responses (arousal among them) COMPUTED FROM IT rather than painted on top.
★THE GAP THIS CLOSES, measured 2026-07-27 by nx_bodyatlas_gate: the atlas carries NERVOUS as system 7
with SEVEN ellipsoid proxy parts against 12 cranial + 31 spinal nerve PAIRS = 86 nerves before a
single branch (~8 percent), and -- the part that actually matters -- NOTHING ANYWHERE SAYS WHAT ANY
NERVE CONNECTS TO. A nerve drawn as a blob is scenery. A nerve is a ROUTE: a root level, a division,
and a target it drives. Until the route exists, no response can be caused by anatomy.
★★AND IT CLOSES THE SAME CLASS ONE LEVEL OUT. This lane's standing finding is 'our face is PAINTED,
not sculpted' -- colour where geometry belonged. The physiological equivalent is a response that is a
GLOBAL SCALAR with a suggestive name. Flush, tumescence, sweat and pupil are not one knob: they are
separate effectors on separate outflows, and the proof is that they DISSOCIATE under a lesion. So the
discriminating tooth in this organ is a LESION: cut S2-S4 and genital vasocongestion must fall to
EXACTLY ZERO while cutaneous flush is UNCHANGED. ★A single arousal scalar cannot pass that tooth.
★★★THE MODEL CANNOT EXPRESS AN IMPOSSIBLE NERVOUS SYSTEM, BY CONSTRUCTION. Two structural laws are
checked on every row rather than trusted:
THORACOLUMBAR OUTFLOW -- a SYMPATHETIC fibre leaves the cord only between T1 and L2.
CRANIOSACRAL OUTFLOW -- a PARASYMPATHETIC fibre leaves only via a cranial nerve or S2-S4.
These are not conventions, they are where the preganglionic cell columns physically are. Encoding
them as containment means a sacral sympathetic or a thoracic parasympathetic is REFUSED at the gate,
the way nx_skelgen's joint constraints make a hyperextended knee unrequestable.
★COMPOSES, DOES NOT DUPLICATE (the audit ran FIRST, as it now does every round): nx_myoattach owns
muscle ATTACHMENT; nx_bodyatlas owns the peelable systems; nx_fascia owns soft-tissue transmission.
NONE of them owns INNERVATION. Muscle indices below are nx_myoattach's own 0..20, READ from that
table before a row was written, not assumed.
nx_neuro selftest
license_tier: ORIGINAL expect_exit: 0 No hw writes (Rule 26).
dependencies 1 imports · 0 importers
imports: nx_gate_verdict.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
| 38 | const NR_CN0: i64 = 0 |
| 39 | const NR_C0: i64 = 20 |
| 40 | const NR_T0: i64 = 40 |
| 41 | const NR_L0: i64 = 60 |
| 42 | const NR_S0: i64 = 80 |
| 43 | const NR_CO: i64 = 91 |
| 44 | const NR_MAXLVL: i64 = 96 |
| 45 | const NR_BAD: i64 = 0 - 1 |
| 46 | const NR_ROOTS: i64 = 43 |
| 48 | const NR_MOTOR: i64 = 1 |
| 49 | const NR_SENS: i64 = 2 |
| 50 | const NR_MIXED: i64 = 3 |
| 51 | const NR_SYMP: i64 = 4 |
| 52 | const NR_PARA: i64 = 5 |
| 54 | const NR_TMUSCLE: i64 = 1 |
| 55 | const NR_TEFF: i64 = 2 |
| 56 | const NR_TTERR: i64 = 3 |
| 58 | const NR_NPX: i64 = 10 |
| 59 | const NR_PS: i64 = 2 |
| 110 | const NR_NN: i64 = 37 |
| 111 | const NR_NS: i64 = 8 |
| 154 | const NR_NE: i64 = 9 |
| 155 | const NR_ES: i64 = 8 |
| 228 | const NR_SYMFRAC: i64 = 3 |
functions
| 60 | func nr_pxtable(P: *i64) -> i64 called by 1: main |
| 75 | func nr_root_ok(l: i64) -> i64 |
| 84 | func nr_root_count() -> i64 { return NR_ROOTS } called by 1: main |
| 89 | func nr_check_row(px: i64, lo: i64, hi: i64, kind: i64, P: *i64) -> i64 |
| 112 | func nr_ntable(N: *i64) -> i64 called by 1: main |
| 156 | func nr_etable(E: *i64) -> i64 called by 1: main |
| 170 | func nr_ncount() -> i64 { return NR_NN } called by 1: main |
| 171 | func nr_ecount() -> i64 { return NR_NE } called by 1: main |
| 172 | func nr_nok(n: i64) -> i64 { if n < 0 { return 0 } if n >= NR_NN { return 0 } return 1 } |
| 173 | func nr_eok(e: i64) -> i64 { if e < 0 { return 0 } if e >= NR_NE { return 0 } return 1 } |
| 174 | func nr_nlo(N: *i64, n: i64) -> i64 { if nr_nok(n)==0 { return NR_BAD } return N[n*NR_NS+1] } |
| 175 | func nr_nkind(N: *i64, n: i64) -> i64 { if nr_nok(n)==0 { return NR_BAD } return N[n*NR_NS+3] } |
| 176 | func nr_ebase(E: *i64, e: i64) -> i64 { if nr_eok(e)==0 { return NR_BAD } return E[e*NR_ES] } |
| 181 | func nr_drive(lo: i64, hi: i64, L: *i64) -> i64 |
| 205 | func nr_out(E: *i64, e: i64, sym: i64, pcr: i64, psa: i64, L: *i64) -> i64 |
| 229 | func nr_arousal(E: *i64, stim: i64, L: *i64, out: *i64) -> i64 |
| 250 | func nr_name(id: i64) -> *u8 called by 1: main |
| 297 | func main(argc: i64, argv: *i64) -> i64 |