v2.2.0 — design-pillar reliability + precision hardening
[2.2.0] — 2026-05-30 · design-pillar reliability + precision hardening
Post-release hardening of the v2.1.0 design pillar. A validation pass found the absorption architecturally sound but with concrete reliability/precision gaps in the deterministic lane: an undeclared impeccable dependency that silently no-ops, 42 browser-rendered rows mislabeled deterministic, and regex rules that false-positive on the token definitions they protect. Fixed across five epics (docs/integrations/impeccable/improvements/), each gated by a new permanent test suite.
Added
scripts/design/preflight.sh— design-lane availability gate. Resolves impeccable from the target project (not the plugin; it's a browser/puppeteer-class dep), emits a machine-readableDESIGN_LANE_STATUSline, and fails loud (DESIGN_LANE_UNAVAILABLE+npm i -D impeccable@2.3.2hint) instead of silent-green when the semantic lane can't run. Exit 0 — the deterministic regex lane is never blocked.scripts/detect-stack.shnormalizedDESIGN_ADAPTER primary=… variant=… secondary=… incompat=… confidence=…token — single parseable line consumers read instead of the prose block.- 8 native blitz deterministic static rules (key-free, browser-free grep approximations of the impeccable slop tells):
bounce-easing-static,thin-border-wide-shadow-static,repeating-stripes-static,gradient-text-static,extreme-negative-tracking-static,tiny-text-static,all-caps-body-static,overused-font-static. check-registry.jsontop-leveldesign.exclude— token-definition exclusion set (file globs + content guards + line guards) applied to every deterministic design regex row before reporting; eliminates within-stack false positives on@theme/tailwind.config/quasar.variables/Vuetify-theme surfaces, comments, and SVG paint (measured 75%→0% FP on the raw-color-literal fixture).hooks/tests/design-pillar.bats— 22-test permanent gate: adapter-detection matrix, layer-gating selection harness, reconciliation suppression, FP exclusions, lane integrity, and the preflight loud-failure contract.
Changed
- 41 vendored impeccable rows re-laned
deterministic→semantic. They are browser-rendered (require the impeccable package + a rendered DOM) — the deterministic tag was false. The genuinely deterministic design lane is now the blitz-authored grep rows only ({ semantic: 41, deterministic: 19 }; zero deterministic rows shell out tonpx). - Gemini routing — stripped impeccable's
--gpt --geminiprovider flags from all detector commands (the deterministic run is now key-free); the provider-gated tells route throughdesign-critic's gemini CLI, reusing the adversarial critic'sBLITZ_GEMINI_BIN/BLITZ_GEMINI_MODELenv instead of a separate Gemini API key. /blitz:review --only design+/blitz:audit --pillar design— run the preflight first, parse theDESIGN_ADAPTERtoken + inclusion map, applydesign.exclude+ FP-verify before reporting.scripts/maint/design/gen-design-rows.mjs— dropped the silent/tmp/impeccable-srcdefault (non-reproducible); the impeccable source path is now a required explicit arg.skills/setup+skills/bootstraprecommendnpm i -D impeccable@2.3.2to the target project (the plugin never installs it).
Removed
- 5 near-duplicate color rules (
tw-arbitrary-color,md3-role-conformance,vuetify-hardcoded-color,quasar-inline-hex,quasar-color-outside-brand) folded into a single consolidateddesign-raw-color-literalcarrying per-adapter messaging (perAdapter) + the*.htmlcoverage. Design rows 57→60 (−5 color, +8 static).
Fixed
installer/install.shcurl install one-liner +installer/src/index.jsdocs link — corrected stalelasswellt/blitz→lasswellt/blitz-cc(the one-liner 404'd as written; the live remote/npm/homepage were alreadyblitz-cc).hooks/tests/_helpers.bash—fake_tool_input/fake_edit_inputwere missingtool_name, soblock-test-deletion.sh(which dispatches on it) fell through to allow instead of block — two long-standing test failures. Fullhooks/testssuite now 57/57.