code wiki / _hdl_build / nx_job_launch_bound.nx
nx_job_launch_bound.nx
buildroot/runtime/_hdl_build/nx_job_launch_bound.nx
about
nx_job_launch_bound.nx -- the never-brick bound on which organs may be ASYNC-LAUNCHED.
WHY THIS EXISTS: nx_job_run refused every organ whose name did not contain "research_fetch", with
its own comment naming the broader set a filed rung. That single substring is why the API-first
doctrine still has no route that runs a general organ, and why every generator in the ecosystem
falls back to shell. Widening it is the fix; widening it WITHOUT a bound would be the brick.
THE REAL SECURITY BOUNDARY IS NOT HERE. nx_job_run already requires the name to match a row in
tool_allowlist.conf -- a human vetted every launchable organ GREEN -- and already confines output
to /tmp with no "..". This lib adds the missing NEVER-BRICK half: refuse the CLASSES that either
outlive the call (daemons/servers never exit, so an async launch wedges the slot forever) or
reach the control plane (deploy/promote/restart/kill/mgmt/hostctl/supervisor). That is the same
reasoning /api/gate_run states for bounding itself to verifiers, applied to generators.
DENY-BY-CLASS, not allow-by-one-name: a new generator is launchable the day it is allowlisted,
with no edit here, while a new daemon is refused by default. A rule nothing has to remember beats
a list somebody must maintain.
license_tier: ORIGINAL No hw writes (Rule 26).
dependencies 1 imports · 2 importers
imports: nx_syscalls.nx
imported by: nx_job_launch_bound_gate.nxnx_job_run.nx
structs
| none |
consts
| 30 | const JLB_US: i64 = 95 |
| 31 | const JLB_NUL: i64 = 0 |
functions
| 34 | func jlb_seg_starts(hay: *u8, s: i64, stem: *u8) -> i64 called by 1: jlb_seg_prefix |
| 44 | func jlb_seg_prefix(name: *u8, stem: *u8) -> i64 |
| 59 | func jlb_denied(name: *u8) -> i64 |