# garment-qa — chromakey garment-clipping QA (T-1089) Automatically detects clothing clip-through. The capture scene paints the body segments a garment *claims to cover* (coverage.json `hides`) flat **unshaded magenta**, leaves the garment and uncovered segments (head/hands/etc.) normal, then cycles animation clips × sampled frames × 4 camera yaws and saves a PNG per view. Any magenta the camera sees = body poking through cloth. The analyzer counts connected magenta pixels per capture and flags clips. **Run:** `tooling/garment-qa/run-garment-qa [config.json]` (defaults to `configs/peasant.json`). It launches Godot (`~/bin/godot4`, `opengl3`, `xvfb-run` when headless) on the capture scene, then runs the analyzer. **Config** (path passed to the scene via `GARMENT_QA_CONFIG`): `garments` (`{item_id,slot}` catalogue items, or `{glb,slot,covers[]}` for a raw WIP garment), `body_types`, `clips`, `frames_per_clip`, `yaws`, `head_id/hair_id/eyebrow_id/skin_tone`, `out_dir`. **Read the report:** `/report.json` — per-capture `key_pixels`, `largest_component`, `fail`, plus a `by_group` (body__clip) roll-up; the same summary prints to stdout. A capture FAILS when its largest connected magenta blob ≥ `--min-pixels` (default 8, tolerating AA edges). Failing frames are copied to `/failures/` with clip pixels recoloured lime and each blob boxed red. **Note:** the Godot scene lives at `client/tools/garment_qa/chromakey_scene.gd` (not here) because Godot `res://` paths cannot leave the client project root.