# Source-identified CARSKIN surfaces inside lamp assemblies

The exporter previously classified untextured runs by their containing part
name before recognizing the source body-paint material. Eight active stock
primitives on four cars therefore used a lamp fallback even though their
material hash is `0xd6d6080a` (`CARSKIN`).

The source evidence is the executable's body-paint handoff: draw code
`0x63065e..0x630670` supplies render-owner `+0x384` and exact material key
`0xd6d6080a` to replacement helper `0x48d860`. The generic car-part renderer
uses the same key. See [the handoff audit](player-paint-runtime-gap-r267.md).
The retail name hash also reproduces `CARSKIN -> 0xd6d6080a`.

`part_color` now recognizes that exact hash before applying the containing
assembly's lamp fallback. These source-identified surfaces use the existing
unresolved body-paint role and the viewer's selected preview paint:

| Car | Source assembly | Changed triangles |
| --- | --- | ---: |
| 240SX | Pop-up headlight covers, three exported primitives | 84 |
| Corolla | Left and right headlight covers | 36 |
| RX7 | Left and right headlight covers | 66 |
| Skyline | Rear lamp surround | 240 |

The four focused stock GLB rebuilds change exactly these eight primitive
materials. Their binary chunks remain byte-identical, preserving geometry,
normals, UVs, vertex colors, indices and embedded images. All other primitive
materials, including actual lamp lenses, glass, defroster overlays and the
240SX wiper preview, are unchanged. The garage manifest is byte-identical;
its powertrain and wheel-anchor metadata is preserved. The rebuilt GLBs and
viewer asset-version update are synchronized into `dist`.

The [material comparison](carskin-body-material-comparison.json) records every
changed primitive. No traffic or review-feed file was changed.

## Loaded packaged capture

One cache-disabled Chrome view used the packaged Skyline at L4RA route 736,
distance 107, radius 220 and an 800x600 viewport. It reached `City scene ready`
with 67,700 nearby triangles, 190 nearby textures, a ready reflection cube,
an empty page-error readout and no runtime exceptions. Live vehicle metadata
reports `SKYLINE` and `paint_body (missing 3eda2ca3)`.

The [loaded screenshot](../webgl-city/review/images/skyline-carskin-body-material.png)
shows the rear surround in the same gray paint as the body while retaining
four red lamp lenses. The rear window still reads as a broad pale blue pane.
This capture establishes the corrected role, not a retail shader match.

## Remaining paint and glass inputs

No additional body-paint or pane image was recovered. The affected source
slots remain unresolved; replacing them with unrelated shared textures would
not be justified. The installed paint-state records provide effect parameters,
not a recovered selected RGB. The player's live selected state, body/pane
texture bindings, harmonic-light packet, chosen technique and glass layer
BlendState remain necessary to reproduce retail appearance. See the
[paint payload audit](paint-state-payload-audit-r357.md) and
[paint/window handoff](player-paint-window-runtime-handoff-r334.md).

No automated tests were added or run.
