nx_visual_arc.nx
buildroot/runtime/nx_visual_arc.nx
about
nx_visual_arc.nx -- the VISUAL SPINE for Elder AI image generation: fixes the "clothes stayed the same,
arcs never shifted" defect. The prior work had a rich identity (character DNA) and a rich wardrobe, but a
single default_outfit and no advancing state -- so every render reused the same outfit and scene. This organ
separates the two axes correctly:
* IDENTITY ANCHOR (constant) -- the appearance description that keeps it the SAME PERSON across every
render, grounded in our scenes. Never rotates.
* ARC STATE (advancing) -- a per-persona step counter that indexes the wardrobe x scenes x activities
as an ODOMETER, so each varc_advance() yields a NEW combination (a different outfit AND, as the wardrobe
cycles, a different scene AND activity) with NO repeat until the whole space is exhausted.
varc_prompt() composes IDENTITY (constant) + the current outfit/scene/activity (varying) into the exact text
the sovereign generator conditions on. Integrated with the persona (one visual identity per persona id).
Stored in nx_registry over seg_store (additive; rule 13). Wardrobe/scenes/activities are DATA (rule 11/25):
the persona's own closet and world -- no global content policy, whatever the record holds is what renders.
license_tier: ORIGINAL
dependencies 2 imports · 3 importers
imports: nx_registry.nxnx_tabrec.nx
imported by: nx_companion_render.nxnx_elder_seed.nxnx_visual_arc_gate.nx
structs
| none |
consts
| 18 | const VID_PREFIX: *u8 = "knowledge/visualid-" as *u8 |
| 19 | const VID_KP: *u8 = "vid:" as *u8 |
| 20 | const VID_IDX: *u8 = "__vididx__" as *u8 |
| 21 | const VARC_KP: *u8 = "varc:" as *u8 |
| 22 | const VARC_IDX: *u8 = "__varcidx__" as *u8 |
| 25 | const VF_ANCHOR: i64 = 0 |
| 26 | const VF_WARDROBE: i64 = 1 |
| 27 | const VF_SCENES: i64 = 2 |
| 28 | const VF_ACTS: i64 = 3 |
functions
| 31 | func vitem_count(buf: *u8, off: i64, len: i64) -> i64 |
| 39 | func vitem_at(buf: *u8, off: i64, len: i64, idx: i64, out2: *i64) -> i64 |
| 53 | func vid_put_pfx(prefix: *u8, persona: *u8, anchor: *u8, wardrobe: *u8, scenes: *u8, acts: *u8) -> i64 |
| 61 | func vid_get_pfx(prefix: *u8, persona: *u8, ptrout: *i64, lenout: *i64) -> i64 { return reg_get(prefix, VID_KP, persona, ptrout, lenout) } |
| 64 | func varc_step_pfx(prefix: *u8, persona: *u8) -> i64 |
| 70 | func varc_set_step_pfx(prefix: *u8, persona: *u8, step: i64) -> i64 |
| 77 | func varc_advance_pfx(prefix: *u8, persona: *u8) -> i64 |
| 82 | func varc_reset_pfx(prefix: *u8, persona: *u8) -> i64 { return varc_set_step_pfx(prefix, persona, 0) } |
| 87 | func varc_indices_pfx(prefix: *u8, persona: *u8, step: i64, out3: *i64) -> i64 |
| 105 | func varc_prompt_at_pfx(prefix: *u8, persona: *u8, step: i64, out: *u8, cap: i64) -> i64 |
| 127 | func vcatn(d: *u8, o: i64, src: *u8, off: i64, len: i64) -> i64 { var i: i64=0; while i<len { d[o+i]=src[off+i]; i=i+1 } return o+len } |
| 130 | func varc_prompt_pfx(prefix: *u8, persona: *u8, out: *u8, cap: i64) -> i64 |
| 136 | func varc_caption_at_pfx(prefix: *u8, persona: *u8, step: i64, out: *u8, cap: i64) -> i64 |
| 152 | func varc_caption_at(persona: *u8, step: i64, out: *u8, cap: i64) -> i64 { return varc_caption_at_pfx(VID_PREFIX, persona, step, out, cap) } calls 1: varc_caption_at_pfx |
| 155 | func vid_put(persona: *u8, anchor: *u8, wardrobe: *u8, scenes: *u8, acts: *u8) -> i64 { return vid_put_pfx(VID_PREFIX, persona, anchor, wardrobe, scenes, acts) } |
| 156 | func varc_step(persona: *u8) -> i64 { return varc_step_pfx(VID_PREFIX, persona) } calls 1: varc_step_pfx |
| 157 | func varc_advance(persona: *u8) -> i64 { return varc_advance_pfx(VID_PREFIX, persona) } calls 1: varc_advance_pfx |
| 158 | func varc_reset(persona: *u8) -> i64 { return varc_reset_pfx(VID_PREFIX, persona) } |
| 159 | func varc_prompt(persona: *u8, out: *u8, cap: i64) -> i64 { return varc_prompt_pfx(VID_PREFIX, persona, out, cap) } calls 1: varc_prompt_pfx |
| 160 | func varc_prompt_at(persona: *u8, step: i64, out: *u8, cap: i64) -> i64 { return varc_prompt_at_pfx(VID_PREFIX, persona, step, out, cap) } |