nx_research_page.nx
buildroot/runtime/nx_research_page.nx
about
nx_research_page.nx -- EMIT the live nishifamily.com/research page.
The beyond-SOTA frontier board + the fetch doctrine. Content is the researcher's; this organ
authors document structure and design tokens only, and NEVER rewrites a claim.
license_tier: ORIGINAL
genealogy_id: nishi_research_board
lineage_id: nx_research_page_v1
WHY THIS ORGAN EXISTS AT ALL. Before today /research was a HAND-WRITTEN file in the docroot with
no emitter anywhere in the estate: proven 2026-08-25 by nx_absent over all 23,239 .nx sources
(coverage_complete=1 corpus_complete=1) for the page's own prose -- an emitter must contain the
strings it emits, and none did. nx_games_page.nx already states the law this violated:
"HTML is never hand-written into a docroot", and
***A TOKEN SSOT THAT NO PAGE EMITTER CALLS IS A SECOND DESIGN SYSTEM, NOT A SHARED ONE.***
So the page was raised by giving it an OWNER, not by hand-editing it a second time. Editing the
HTML directly would have hardcoded a second copy of the palette into the docroot -- the
duplicate-ruler defect wearing a colour.
MEASURED BEFORE (nx_ui_audit, live, 2026-08-25): score 3/12 DEV-GRADE --
design-tokens 2/3 (15 var(--) uses) . theme-aware 0/2 . responsive 0/3 (0 @media, viewport=1)
. type-scale 1/2 (8 font-size, clamp=0) . polish 0/2 (0 transition/animation/:focus)
Each of the five is a real missing ingredient, and each is fixed below by a real mechanism:
theme-aware -- the page was DARK-ONLY. A prefers-color-scheme block on an already-dark page is
a NO-OP that buys the point and changes nothing for a user, so the palette was
inverted properly: light default + a real dark override from the SSOT.
responsive -- 0 breakpoints and a 4-column table with white-space:nowrap on its label column.
That table could not reflow. Fixed by removing the nowrap and by scrolling wide
content in its OWN container, so the page body can never scroll sideways.
type-scale -- six ad-hoc sizes (15/13.5/13/12.5/12/11px) collapsed onto a 4-step token scale,
with a FLUID h1 whose max is the incumbent 25px, so desktop is unchanged.
polish -- :focus-visible rings (WCAG 2.1 SC 2.4.7, an external bar) + a colour transition,
wrapped in prefers-reduced-motion:no-preference so motion-sensitive users opt out.
***A SCORE IS NOT A GOAL. Every point above is the receipt of a change a visitor can feel; none of
it is padding, and the one dimension that CANNOT be read as evidence is named next.***
***explicit_colors WILL READ 0 AND THAT IS NOT EVIDENCE OF ANYTHING.*** nx_ui_audit counts the
substring ":#" while bt_emit_root_buf emits ": " and then the value, i.e. ": #f6f7f4". Every
SSOT-emitted colour is invisible to that counter whether or not hardcoded colours were removed.
Do not report the 8 -> 0 move as "hardcoded colours removed".
dependencies 1 imports · 0 importers
imports: nx_brand_tokens.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
| 42 | const RP_OUT: *u8 = "sites/nishifamily/research.html" |
| 43 | const RP_TMP: *u8 = "sites/nishifamily/research.html.tmp" |
| 46 | const RP_CAP: i64 = 65536 |
| 52 | const RP_TOKCAP: i64 = 8192 |
| 56 | const RP_BP_MD: i64 = 860 |
| 57 | const RP_BP_SM: i64 = 640 |
| 58 | const RP_MODE_0644: i64 = 0x1a4 |
functions
| 62 | func rp_err(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(2, s, n); return 0 } called by 1: main |
| 63 | func rp_out(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } |
| 67 | func rp_s(out: *u8, pos: i64, s: *u8) -> i64 { return bt_app(out, pos, RP_CAP, s) } |
| 71 | func rp_num(out: *u8, pos: i64, cap: i64, v: i64) -> i64 |
| 84 | func rp_blk(out: *u8, pos: i64, tb: *u8, n: i64) -> i64 |
| 119 | func rp_brand() -> *u8 called by 1: main |
| 123 | func main() -> i64 |