Gate texel density and review scorecard coverage
Full build / Import + headless tests (push) Successful in 43s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-03 11:52:19 +01:00
1 parent 88a0793bba
commit fe3ba3054e
4 files changed
+88 -2

No files matched your search

+16
View File
@@ -118,6 +118,22 @@ class TexelDensityTests(unittest.TestCase):
skin = report["slots"]["skin"]
self.assertEqual(skin["td_px_per_m"], skin["td_runtime_px_per_m"])
def test_every_character_reports_a_plausible_density_for_every_slot(self):
# Gate for the 3D review: a new or rebuilt character must keep all five
# tint slots measurable and inside the documented stylized band.
for name in ba.CHARACTERS:
report = ba.texel_density(name)
self.assertIsNotNone(report, name)
for slot in ba.SLOTS:
self.assertIn(slot, report["slots"], f"{name}:{slot}")
td = report["slots"][slot]["td_px_per_m"]
self.assertGreaterEqual(td, 40.0, f"{name}/{slot} below 40 px/m")
self.assertLessEqual(td, 400.0, f"{name}/{slot} above 400 px/m")
for slot in ba.TEXEL_RUNTIME_UV_SCALE:
if slot in report["slots"]:
self.assertGreaterEqual(report["slots"][slot]["td_runtime_px_per_m"],
250.0, f"{name}/{slot} fabric below 250 px/m")
def test_base_fallback_is_measurable_from_its_own_path(self):
from pathlib import Path
path = ba.ROOT / "assets" / "models" / "generated" / "npc_base.glb"