What's new
Semantic category wired: v42 + v43. The semantic category carried a reserved weight (12) since v0.3.0 with zero checks scoring it — dead weight in the category table. Two deterministic checks now fill it:
- v42 — Semantic color vocabulary: classifies every color-valued token in
:rootas role-named (ink,paper,surface,danger,success…) vs hue-named (blue-500,slate-900…). PASS at ≥60% role share with ≥3 distinct roles. Grounded in the contract's own role-named palette and role-based naming best practice (zeroheight naming guide, Material 3). - v43 — Semantic status colors: checks status-state coverage (ok/success, warn/warning, error/danger, info/notice) among color token names. PASS at ≥3 of 4 families.
Both checks are WARN-only (style craft, not user harm), self-SKIP when a site has no color tokens, and site-agnostic (no scope-tier registration). Wired identically in the standalone @designesy/score engine for CLI/site parity.
Engine grows 40 → 42 checks. The semantic category's weight 12 now enters the weighted denominator. Methodology page's reserved-weight note replaced with the live category description; all engine-count copy true-upped to 42 across ~55 files (historical surfaces keep their original counts).
Fixed
- Weekly-leaderboard write path un-rotted (six rot points fixed across this cycle): missing PR labels, seed-writer field stripping,
CI /-prefixed protection contexts, Actions PR-creation permission disabled, first-time-actor CI gating, and the 15-min job timeout killing the auto-merge wait (now 25 min). First fully-unattended weekly cycle lands Monday 2026-09-07. - Standalone
@designesy/scoreengine v25/v34 category drift corrected (v25 → accessibility, v34 → identity).
Surfaces
- PyPI: designesy-mcp 1.12.0 — wheel + sdist, OIDC trusted publishing
- MCP registry: io.github.LE-VAI/designesy-org 1.12.0 — server.json republished
- Live: designesy.org — 42 checks, self-score 93 A