code wiki / (root) / nx_genp_allow_lib.nx

nx_genp_allow_lib.nx

buildroot/runtime/nx_genp_allow_lib.nx

4942 B103 linesdepth 0pulls 0 transitivereach 310 importersview sourcekind library
docsdependenciesstructsconstsfunctions

about

nx_genp_allow_lib.nx -- THE ONE GEN-TIME RECIPE ALLOWLIST (2026-09-04). WHY THIS FILE EXISTS. Three organs each carried their own copy of "which recipe indices cross into the engine BEFORE genworld reads the spec table": nx_wasm_craft (init_impl_v's gok9 chain), nx_world_snap (its g8 chain) and nx_game_page_emit (the NXGP count pass and write pass). The three drifted three ways. MEASURED 2026-09-04: the engine admitted 0..6, 59..64, 66..68; the snap was blind to 62..68 until 2026-09-01 (debt 1788294505); the page emitter still admitted only 0..6, 59, 60, 61, 64 -- so a recipe's 66, 67 and 68 pairs VALIDATED (the validator had been widened on 2026-08-28) and then reached nothing. WITNESS: sites/nishifamily/world/ridge.html line 108 served const NXGP=[[64,0]] against a recipe of 67:12,68:32 -- the STAGED-PIPELINE world had served legacy two-octave terrain since it shipped, while the capture instrument drew the staged one. A LAW APPLIED IN ONE ORGAN AND NOT ITS SIBLINGS IS HALF A LAW, AND WITH THREE COPIES THE HALF LEFT UNDONE IS THE ONE THAT SHIPS. This lib is the single ruler all three compose: an index added here reaches the engine, the instrument and the page in ONE edit, and nx_wasm_craft_gate pins every engine P_* slot to it so the names and the numbers cannot part. WASM-SAFE BY CONSTRUCTION: pure arithmetic, no allocation, no syscalls (nx_wasm_craft compiles it to wasm). The STYLE lane (7..58, poked post-boot) is deliberately NOT here: gen-time and style are different channels, and blurring them is the silent no-op the engine's whitelist exists to prevent. license_tier: ORIGINAL No hw writes (Rule 26).

dependencies 0 imports · 95 importers

nx_genp_allow_lib.nx nx_craft_before_placement_t316.nx nx_game_page_affine_candidate_t361 nx_game_page_authored_material_t54 nx_game_page_body_t138.nx nx_game_page_canonical_t135.nx nx_game_page_catwalk_lighting_cand nx_game_page_emit.nx nx_game_page_emit_sand_review.nx nx_game_page_eye_t138.nx nx_game_page_gait_candidate_t139.n

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

imports: none

imported by: nx_craft_before_placement_t316.nxnx_game_page_affine_candidate_t361.nxnx_game_page_authored_material_t54.nxnx_game_page_body_t138.nxnx_game_page_canonical_t135.nxnx_game_page_catwalk_lighting_candidate_t316.nxnx_game_page_emit.nxnx_game_page_emit_sand_review.nxnx_game_page_eye_t138.nxnx_game_page_gait_candidate_t139.nxnx_game_page_garment_t132.nxnx_game_page_gpu_timing_current_candidate.nxnx_game_page_gpu_timing_pool_candidate.nxnx_game_page_hair_attachment_candidate_t263.nxnx_game_page_hair_attachment_t283.nxnx_game_page_hair_guides_candidate_t263.nxnx_game_page_hair_t138.nxnx_game_page_host_candidate_t341.nxnx_game_page_identity_candidate.nxnx_game_page_imported_body_t45.nxnx_game_page_imported_t262.nxnx_game_page_inspection_distance_t235.nxnx_game_page_inspection_t142.nxnx_game_page_integrated_t73.nxnx_game_page_knight_bind_t25.nxnx_game_page_knight_feedback_t28.nxnx_game_page_knight_feedback_t29.nxnx_game_page_knight_support_t31.nxnx_game_page_knight_support_t31_before_t44.nxnx_game_page_length_diag_t140.nxnx_game_page_lit_candidate_t181.nxnx_game_page_material_body_t61.nxnx_game_page_material_candidate_t181.nxnx_game_page_material_compose_t55.nxnx_game_page_material_schema_candidate_t181.nxnx_game_page_metadata_candidate_t220.nxnx_game_page_mip_candidate_t241.nxnx_game_page_motion_candidate_t328.nxnx_game_page_motion_inventory_candidate_t330.nxnx_game_page_move_t72.nxnx_game_page_owned_candidate_t181.nxnx_game_page_pipeline_t64.nxnx_game_page_pre_inspection_t142.nxnx_game_page_pre_toon_region_t143.nxnx_game_page_procedural_review_candidate_t333.nxnx_game_page_recovery_feedback_t28.nxnx_game_page_recovery_t23.nxnx_game_page_rig_comparison_t332.nxnx_game_page_rig_inspection_t230.nxnx_game_page_rig_observation_candidate_t331.nxnx_game_page_scene_light_candidate_t364.nxnx_game_page_search_t53.nxnx_game_page_shared_candidate_t340.nxnx_game_page_skin_t138.nxnx_game_page_static_candidate_t338.nxnx_game_page_toon_region_candidate_t143.nxnx_game_page_visitors_inspection_t142.nxnx_game_page_visitors_t140.nxnx_game_page_workbench_candidate_t342.nxnx_game_page_workspace_body_t49.nxnx_game_page_workspace_body_t59.nxnx_game_page_workspace_t48.nxnx_movement_base_engine_t139.nxnx_movement_base_page_t139.nxnx_wasm_craft.nxnx_wasm_craft_body_t137.nxnx_wasm_craft_contact_candidate.nxnx_wasm_craft_dunes_t70.nxnx_wasm_craft_gait_candidate.nxnx_wasm_craft_gait_candidate_t139.nxnx_wasm_craft_imported_body_t41.nxnx_wasm_craft_imported_body_t42.nxnx_wasm_craft_imported_body_t49.nxnx_wasm_craft_imported_t262.nxnx_wasm_craft_inspection_bounds_t181.nxnx_wasm_craft_inspection_distance_t218.nxnx_wasm_craft_inspection_t142.nxnx_wasm_craft_journal_index_t21.nxnx_wasm_craft_journal_index_t21_before_t44.nxnx_wasm_craft_lookup_candidate.nxnx_wasm_craft_move_t72.nxnx_wasm_craft_pre_inspection_t142.nxnx_wasm_craft_recovery_t20.nxnx_wasm_craft_relief_adopt_t143.nxnx_wasm_craft_relief_save_t143.nxnx_wasm_craft_relief_t143.nxnx_wasm_craft_residency_t44.nxnx_wasm_craft_turn_candidate_t139.nxnx_wasm_craft_visitors_canonical_t142.nxnx_wasm_craft_visitors_inspection_t142.nxnx_wasm_craft_visitors_t140.nxnx_world_snap.nxnx_world_snap_dunes_t70.nxnx_worldpipe_core.nxnx_worldpipe_core_relief_t140.nx

structs

none

consts

22const GA_TERRAIN_FIRST: i64 = 0 // P_TBASE .. P_CAVETH: the terrain-shape block
23const GA_TERRAIN_LAST: i64 = 6
24const GA_TREEMAX: i64 = 59
25const GA_HISTAGE: i64 = 60
26const GA_TREESPEC: i64 = 61
27const GA_BLDG: i64 = 62
28const GA_BLDGSPEC: i64 = 63
29const GA_ERODE: i64 = 64
30const GA_OCEAN: i64 = 66
31const GA_WPIPE: i64 = 67
32const GA_WPSCALE: i64 = 68
34const GA_CENSUS_SPAN: i64 = 128
36const GA_DUNE: i64 = 79
37const GA_ADMITTED: i64 = 16
65const GA_DUNE_AMP_MASK: i64 = 4095
66const GA_DUNE_WAVE_MASK: i64 = 255
67const GA_DUNE_WAVE_SHIFT: i64 = 12
68const GA_DUNE_HEADING_SHIFT: i64 = 20
69const GA_DUNE_PACK_MAX: i64 = 268435455
70const GA_DUNE_MIN_WAVE: i64 = 4

functions

40func genp_gen_ok(idx: i64) -> i64
55func genp_gen_count() -> i64
calls 1: genp_gen_ok
71func genp_dune_valid(packed: i64) -> i64
81func genp_dune_decimal(text: *u8, pos: *i64) -> i64
100func genp_dune_gen_ok(idx: i64) -> i64