code wiki / (root) / nx_select.nx

nx_select.nx

buildroot/runtime/nx_select.nx

11317 B290 linesdepth 3pulls 4 transitivereach 19 importersview sourcekind librarytopic select
docsdependenciesstructsconstsfunctions

about

nx_select.nx -- single-class variant selector engine. SA-4 milestone of NISHI_SELF_ASSEMBLY_ROADMAP.md. Consumes (candidates, probe, calibration, policy) and returns the index of the best-match variant under the policy vector subject to the candidate's requires_* constraints intersecting the device's probe. Selection function (single-class, MVP): S(C, P, K, π) = argmin_{v ∈ candidates} Σ_axis π[axis] · cost_axis(v) · K[axis_norm] s.t. requires_isa(v) ⊆ P.actual_isa_family requires_isa_ext(v) ⊆ P.actual_isa_ext requires_ram_min(v) ≤ P.ram_proxy tier_floor(v) ≤ K.inferred_tier tier_ceiling(v) ≥ K.inferred_tier Joint-DAG cross-primitive selection deferred to SA-5 (nx_select_joint). Per-primitive smoke gating deferred to SA-6 (nx_verify). Byzantine N-of-M deferred to SA-7. V1 manifest schema is INTEGER-ENCODED (sealed-enum bitmasks for requires_isa, Q10 fixed-point for cost coefficients) so the selector runs without a manifest-header parser. SA-5 lands the parser that lifts authored headers in `runtime/*.nx` into these integer-encoded records. genealogy_id: petabricks_2009 + halide_schedule_search_2019 + cardinal_2026-05-19_self_assembly lineage_id: substrate_select_v1 nx_capability_manifest: variant_class: capability_select variant_id: capability_select_v1_single_class requires_isa: [rv64imac, x86_64] requires_syscalls: [mmap] requires_ram_min_b: 4096 tier_floor: NX_TIER_MOBILE tier_ceiling: NX_TIER_HPC cost_model:

dependencies 3 imports · 14 importers

nx_syscalls.nx nx_probe.nx nx_calibrate.nx nx_select.nx nx_install_attest_signed_test.nx nx_install_attest_test.nx nx_install_hash_test.nx nx_install_pipeline.nx nx_install_pipeline_test.nx nx_install_plan.nx nx_install_plan_test.nx nx_select_joint.nx nx_select_joint_chain_test.nx nx_select_joint_test.nx

diagram shows first 10 each side; +0 more imports, +4 more importers in the complete lists below.

imports: nx_syscalls.nxnx_probe.nxnx_calibrate.nx

imported by: nx_install_attest_signed_test.nxnx_install_attest_test.nxnx_install_hash_test.nxnx_install_pipeline.nxnx_install_pipeline_test.nxnx_install_plan.nxnx_install_plan_test.nxnx_select_joint.nxnx_select_joint_chain_test.nxnx_select_joint_test.nxnx_select_test.nxnx_spore_up_lifecycle_test.nxnx_spore_up_network_test.nxnx_spore_up_test.nx

structs

116struct NxManifest
137struct NxPolicy

consts

57const NX_MAGIC_1024: i64 = 1024
58const NX_MAGIC_9223372036854775000: i64 = 9223372036854775000
78const NX_LAYOUT_OPAQUE_PASS: i64 = 0
79const NX_LAYOUT_ROW_MAJOR: i64 = 1
80const NX_LAYOUT_COL_MAJOR: i64 = 2
81const NX_LAYOUT_I64_PACKED: i64 = 3
82const NX_LAYOUT_I32_PACKED: i64 = 4
83const NX_LAYOUT_I8_PACKED: i64 = 5
84const NX_LAYOUT_Q10_FIXED: i64 = 6
85const NX_LAYOUT_F16: i64 = 7
86const NX_LAYOUT_F32: i64 = 8
87const NX_LAYOUT_N: i64 = 9
100const NX_ISA_EXT_AVX2: i64 = 0
101const NX_ISA_EXT_AVX512: i64 = 1
102const NX_ISA_EXT_BMI2: i64 = 2
103const NX_ISA_EXT_SHA_NI: i64 = 3
104const NX_ISA_EXT_AES_NI: i64 = 4
105const NX_ISA_EXT_NEON: i64 = 5
106const NX_ISA_EXT_SVE: i64 = 6
107const NX_ISA_EXT_RVV: i64 = 7
108const NX_ISA_EXT_N: i64 = 8
205const NX_SEL_NONE_MATCH: i64 = -1
206const NX_SEL_BAD_INPUT: i64 = -2
207const NX_SEL_OVER_CAPACITY: i64 = -3

functions

64func nx_isa_bit(isa: i64) -> i64
92func nx_layout_compatible(out_layout: i64, in_layout: i64) -> i64
146func nx_policy_throughput_default() -> *NxPolicy
called by 11: mainmainmainmainmainmain+5 calls 1: sys_mmap
156func nx_policy_energy_default() -> *NxPolicy
called by 2: mainmain calls 1: sys_mmap
166func nx_manifest_new(
198func nx_manifest_set_layout(m: *NxManifest, in_layout: i64, out_layout: i64) -> i64
called by 9: _mk_mk_mk_mk_mkmain+3
212func nx_select_variant_fits(
239func nx_select_score(v: *NxManifest, policy: *NxPolicy) -> i64
258func nx_select(