Flat materials: the world without textures (ROADMAP #29). master
Implements wiki/interface/flat-materials.md, all seven criteria. One named palette table (mod palette) sources every world material in both render modes; material families replace per-tile art; the Art resource and every tile-PNG load path are deleted along with assets/pixellab/. Emissive is information: the core brightest, powered machines amber, power hardware and live feeds the cold signal (live feeds breathe via flicker_feeds), dead equipment dark, model state never glows. Blueprint floors carry a subtle plan grid; no decorative noise. The flat sensorium derives from the same table, so F3 changes treatment, never language. Criterion 1 is enforced by a unit test over the whole (tile, fog, part, live) material space and by a fog_audit_3d assertion on every harness capture; the audit stays green (4608 tile entities, 37 pooled handles). material-render.md's structural criteria (cutaway, caps, framing, zoom bounds, pooling, fog contract) re-verified after the restyle; screenshots in the session scratchpad, described in wiki/log/2026-07-08-flat-materials-implemented.md. Dev harness gains a MISALIGNED_SHOT=dark kind and stops clobbering a staged cursor. Terminal untouched. Defense: DESIGN.md "Visual identity: clinical gore", flat-materials refinement (2026-07-08): the renderer realizes the identity with solid-color flat materials under light, not image textures — palette surfaces, emissive accents for machine presence, shader-level detail only where functional, lighting as the mood carrier. This commit is that refinement executed: the world material set is flat palette color with amber strictly machine presence/selection, crimson strictly security information, and one cold signal for power/screens/feeds; the retired Pixel Lab world-tile assets leave the tree per the no-dead-code clause. The fog-lighting contract (unknown=absent, model=unlit, seen=lit) is unchanged and still mechanically asserted.