CARD R-B  written 2026-09-26 01:24:49 -0700  (before compile; applied on top of R-A)
unit: source/rasterizer/xbox/rasterizer_xbox (source-review debt, admission criterion 'no caller-local views')
observed: (1) TU-local 'struct rasterizer_debug_options' view with reserved spans + local extern of that type, while
  rasterizer_debug_options.h owns 'struct rasterizer_debug_options_definition' + its extern; every field the TU names
  (stats 0x02, mode 0x04, wireframe 0x06, stencil_mask 0x0F, environment_decals 0x15, fog_atmosphere 0x27, fog_plane
  0x28, bump_mapping 0x29, pad3 0x32, model_lighting_ambient 0x38, DXTC_noise 0x49, soft_filter 0x4A,
  secondary_render_target_debug 0x4B) has the same name and offset there; dynavobgeom already made this move in
  canonical. (2) 'extern struct pixel_shader_definition pixel_shader;' duplicates rasterizer_xbox.h's owner
  declaration, which the TU already includes. (3) 'extern pixel32 global_vector_palette[...]' duplicates
  bitmaps_internal.h ('narrow interface owned by BITMAPS.C'); the TU already includes two sibling *_internal.h headers.
correction: include rasterizer/rasterizer_debug_options.h and bitmaps/bitmaps_internal.h; delete the view struct and
  the three local externs. Field spellings unchanged.
prediction: 95/95 EXACT vs split_RA (no symbol names change, so split_RA applies); object bytes identical to rx_RA
  (objeq --norm-labels) unless a declaration-count tie flips (TU gains ~90 member names + header prototypes, loses the
  view's names); if a flip occurs, bisect the three items.
decisive: revgate root_RB, gate_obj vs split_RA, objeq vs rx_RA.
