# Unit Sprite Batch Output Checklist Use this checklist for every unit and every batch before approval, commit, push, or deploy. Pipeline reference: `unit-sprite-handpaint-pipeline-guide.md`. Review state manifest: `unit-sprite-rework-manifest.json`. ## Per-Unit Required Artifacts - Production spec for the unit, when one exists in `docs/unit-sprite-batch*-*-spec.md`. - Source image on flat chroma-key background. - Base sheet in `src/assets/images/units/.png`. - Action sheet in `src/assets/images/units/-actions.png`. - Contact sheet in `docs/`. - Idle/walk/action GIF in `docs/`. - Previous/new comparison image in `docs/`. - 50px/72px scale comparison image in `docs/`. - Battle map composite in `docs/`. - Debug sprite preview battle screenshot in `docs/` for the current pending sample. - Per-unit report in `docs/`. ## Per-Unit Technical Checks - Base sheet size is exactly `5008x1252`. - Action sheet size is exactly `11268x1252`. - Frame size remains `313x313`. - Base partial alpha is `0`. - Action partial alpha is `0`. - No idle/walk frame touches the frame border. - No detached fragments in idle/walk frames. - Body scale and foot line are stable during idle/walk. - Action frames may have larger silhouettes, but must not visibly clip in game scale. - Unit appears as `ok` in `docs/unit-sprite-rework-audit.json`. - Unit review stage is correct: - approved units use `approved-baseline` - current sample uses `pending-approval` - untouched future units remain `queued-rework` ## Per-Unit Visual Checks - The unit reads clearly at 50px. - The 50px/72px comparison is checked against approved units, not only against the old placeholder. - Weapon/class reads from silhouette: - sword/infantry - spear - bow - horse/cavalry - fan/scroll/strategist - officer/banner - Faction palette reads clearly. - The sprite itself solves readability; no rings, base plates, badges, glows, or UI decorations are used to compensate. - Style remains aligned with approved hand-painted batch 1 and the current `unit-shu-infantry` approval candidate. ## Per-Batch Checks - `python scripts/audit-unit-sprite-sheets.py` - `python scripts/render-unit-sprite-review-boards.py` - `python scripts/check-unit-sprite-art-quality.py` - `python scripts/check-unit-sprite-approval-gate.py --mode sample` - `python scripts/write-unit-sprite-next-steps.py` - `python scripts/check-unit-sprite-workflow-consistency.py` - Review the relevant `docs/unit-sprite-review-.png` by eye. - `pnpm build` - Local PC browser check at an explicit 1920x1080 CSS viewport, 100% browser zoom, and DPR 1, following `docs/desktop-browser-qa-standard.md`. - For pending samples, run the same 1920x1080 CSS viewport, 100% zoom, DPR 1 check with `?debug&debugSpritePreview=`. - Console errors: `0`. - Approval received for the batch before commit/push/deploy. ## Commit/Deploy Gate Do not commit, push, or deploy when: - The current sample is still awaiting approval. - Any unit in the batch has failed the technical checks. - Any newly edited unit is still marked `pending-approval`. - Any untouched unit is accidentally counted as approved because it is only technically `ok`. - The review board shows the new unit is not visibly better than the old placeholder. - The browser check has not been run at the required 1920x1080 CSS viewport, 100% browser zoom, and DPR 1. - Console errors are present. After approval and successful verification: - Run `python scripts\promote-unit-sprite-approval.py --unit --expected-version ` so approved units move from `pendingApproval` to `approvedBaseline`. - Regenerate audit and review boards after the manifest update. - Run `python scripts/check-unit-sprite-approval-gate.py --mode release`. - Commit the batch changes. - Push to the Gitea remote. - Deploy to the NAS-hosted URL. - Provide the deployed URL and representative review images.