Card CI-T2 - written 2026-09-26 18:04:13 -0700 (clock-read) BEFORE tracing. DIAGNOSTIC readout (stock-equal), zero credit.
HEAD source; RF-L's vnjoin.py (copied to scratch/rf/workers/RF-J/tools/rfl/): IL entry walk 0x10739a28 + every VN
expression-temp creation (0x107029be) in fn 44's pre-MARK window, joined to IL nodes; ildec.py to decode the nodes.
Goal: list the VN temps in creation order with ordinals, locate t442/t444 (effect->direction j/k addresses),
t530/t534 (direction param j/k addresses), t613/t632 (up3d j/k addresses), and name the expressions before t442.
Prediction: the six temps are all kind-0xf VN temps of one arena; ordinal(t) = id - slab base; everything before
t442 comes from the condition block and the impulse-install statements (p 0.7).

OUTCOME (appended 2026-09-26 18:05:01 -0700): vnjoin ran (node join empty; the VN-creation stack words carry the IL
opcode). 304 kind-0xf VN temps, ids 384..687 CONTIGUOUS (slab base 0x180): ordinal = id - 384. t442 = ordinal 58
and t444 = 60 (0x275 ADDs, first VN pass, caller 0x10707987); t530 = 146, t534 = 150 (first pass); t613 = 229,
t632 = 248 (SECOND pass, caller 0x10703bac, after the 0x261/0x287 entries 555-606). One contiguous counter, so +/-n
VN entries anywhere before ordinal 58 shift all six decisive temps by n: January <=> n == 2 (mod 4). Entries 0..57:
time_factor MUL, condition compares/converts, the two inlined magnitude_squared3d (x*x+y*y+z*z) with -1.0/fabs,
the impulse install. Prediction held (one arena, sequential).
