nx_nofloat_propose_chat_gate.nx
buildroot/runtime/nx_nofloat_propose_chat_gate.nx
about
nx_nofloat_propose_chat_gate.nx -- PROPOSE->VERIFY rung 3 (2026-07-15): a BETTER PROPOSER on the SAME
RULER. The raw 3-shot completion proposer measured solve-rate 1/10 on the 10-question inversion ruler
(nx_nofloat_propose_solve_gate -- the model pattern-copies instead of inverting). This gate asks the SAME
10 questions through the serve's CHATML path (gp[12]=1: <|im_start|>user ... <|im_start|>assistant -- the
instruct-tuned surface, natural-language question + answer-format instruction) and measures whether the
prompting MODE alone moves the solve-rate. Same kernel, same questions, same teeth => the delta is the
prompting mode's, honestly. Teeth stay model-IQ-independent (the RATE is data, not a tooth):
T1 mechanism live: >=8/10 proposals parse as integers; zero generation or kernel failures
T2 soundness cross-check: kernel verdict on the instantiation == independent in-gate arithmetic (0 violations)
T3 NEG-CONTROL: all 10 wrong-by-one instantiations (in-grammar: x+1, stepping to x-1 at the operand caps) REFUTED
T4 NEG-CONTROL: the LIVE unsolvable chat question ('2 times what number equals 9?') can NEVER certify
T5 determinism: re-running Q1 reproduces BYTE-IDENTICAL text (greedy no-float exceed, chat path included)
INSTRUMENT v2 (2026-07-15, after the 1.5B first-light): max_new 8->24 (EOS-complete -- chattier models
were TRUNCATED mid-sentence: 'The number is 7 - 3' cut before the result) + LAST-integer extraction
(pvl_last_uint -- the answer position in sentence replies; first-int grabbed operands). Applied uniformly
to every model on this instrument; v1 numbers (0.5B 3/10, first-int, max_new=8) stay banked as v1.
argv[1] = optional gguf path. Requires the gguf. Heavy: ~2-8 min (model-size dependent). Return from
main (pool reap), never sys_exit. No hw writes (Rule 26). expect_exit: 0 license_tier: ORIGINAL
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_propose_verify_lib.nxnx_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
| none |
functions
| 23 | func main(argc: i64, argv: *i64) -> i64 |